Quarkus: JBoss EAP Quickstart์˜ ์˜ˆ๋กœ Helloworld๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜„๋Œ€ํ™”(๊ณ„์†)

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„ โ€“ ์ด๊ฒƒ์€ Quarkus ์‹œ๋ฆฌ์ฆˆ์˜ ๋‹ค์„ฏ ๋ฒˆ์งธ ๊ฒŒ์‹œ๋ฌผ์ž…๋‹ˆ๋‹ค! (๊ทธ๋‚˜์ €๋‚˜ ์›น ์„ธ๋ฏธ๋‚˜๋ฅผ ์‹œ์ฒญํ•ด ๋ณด์„ธ์š”. "์ด๊ฒƒ์ด Quarkus์ž…๋‹ˆ๋‹ค. Kubernetes ๋„ค์ดํ‹ฐ๋ธŒ Java ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.". ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์„ฑ ์†”๋ฃจ์…˜์„ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค)

Quarkus: JBoss EAP Quickstart์˜ ์˜ˆ๋กœ Helloworld๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜„๋Œ€ํ™”(๊ณ„์†)

ะ’ ์ด์ „ ๊ฒŒ์‹œ๋ฌผ ์ €์žฅ์†Œ์˜ helloworld ํ”„๋กœ๊ทธ๋žจ์„ ์˜ˆ๋กœ ์‚ฌ์šฉํ•˜์—ฌ Quarkus ์ง€์› ๊ธฐ์ˆ (CDI ๋ฐ Servlet 3)์„ ์‚ฌ์šฉํ•˜์—ฌ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ˜„๋Œ€ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. Red Hat JBoss Enterprise Application Platform(JBoss EAP) ๋น ๋ฅธ ์‹œ์ž‘. ์˜ค๋Š˜์€ ํ˜„๋Œ€ํ™”๋ผ๋Š” ์ฃผ์ œ๋ฅผ ์ด์–ด๊ฐ€๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋…ผ์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์„ฑ๋Šฅ ์ธก์ •์€ ๊ฑฐ์˜ ๋ชจ๋“  ์—…๊ทธ๋ ˆ์ด๋“œ์˜ ๊ธฐ๋ณธ ๊ธฐ๋ฐ˜์ด๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋ณด๊ณ ๋Š” ์„ฑ๋Šฅ ๋ถ„์„ ํ”„๋กœ์„ธ์Šค์˜ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ˜„๋Œ€ํ™”๋ฅผ ํ†ตํ•ด ๋‹ฌ์„ฑํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์„ ์ •๋Ÿ‰ํ™”ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ด€๋ จ ์ธก์ • ๋„๊ตฌ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ธก์ •์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Quarkus ํŠœํ† ๋ฆฌ์–ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”. ์„ฑ๋Šฅ ์ธก์ • - ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์–ด๋–ป๊ฒŒ ์ธก์ •ํ•ฉ๋‹ˆ๊นŒ?

์•„๋ž˜์—์„œ๋Š” pmap ๋ฐ ps ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Linux์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜์—ฌ ์„ธ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(JBoss EAP, JAR ํŒจํ‚ค์ง€ ๋ฐ ์‹คํ–‰ ํŒŒ์ผ)์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๊ตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ„๋‹จํžˆ ๋ณด์—ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ œ์ด๋ณด์Šค EAP

JBoss EAP ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค("helloworld ๋ฐฐํฌ" ์„น์…˜ ์ฐธ์กฐ). ์ด์ „ ๊ฒŒ์‹œ๋ฌผ) ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค PID(์ด ์˜ˆ์—์„œ๋Š” 7268)๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค.

$ pgrep -lf jboss
7268 java

์žˆ์Šต๋‹ˆ๋‹ค. โ€“a ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜๋ฉด ์ „์ฒด ๋ช…๋ น์ค„์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: $ pgrep -af jboss).

์ด์ œ ps ๋ฐ pmap ๋ช…๋ น์—์„œ PID 7268์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ์ด๋ ‡๊ฒŒ :

$ ps -o pid,rss,command -p 7268
PID RSS COMMAND 
7268 665348 java -D[Standalone] -server -verbose:gc -Xloggc:/home/mrizzi/Tools/jboss-eap-7.2.0/jboss-eap-7.2/standalone/log/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=3M -XX:-TraceClassUnloading -Xms1303m -Xmx1303m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferI

๊ทธ๋ž˜์„œ :

$ pmap -x 7268
7268:   java -D[Standalone] -server -verbose:gc -Xloggc:/home/mrizzi/Tools/jboss-eap-7.2.0/jboss-eap-7.2/standalone/log/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=3M -XX:-TraceClassUnloading -Xms1303m -Xmx1303m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djava.awt.headless=true -Dorg.jboss.boot.log.file=/home/mrizzi/Tools/jboss-eap-7.2.0/jboss-eap-7.2/standa
Address           Kbytes     RSS   Dirty Mode  Mapping
00000000ae800000 1348608  435704  435704 rw---   [ anon ]
0000000100d00000 1035264       0       0 -----   [ anon ]
000055e4d2c2f000       4       4       0 r---- java
000055e4d2c30000       4       4       0 r-x-- java
000055e4d2c31000       4       0       0 r---- java
000055e4d2c32000       4       4       4 r---- java
000055e4d2c33000       4       4       4 rw--- java
[...]
ffffffffff600000       4       0       0 r-x--   [ anon ]
---------------- ------- ------- -------
total kB         3263224  672772  643024

RSS ๊ฐ’์„ ์‚ดํŽด๋ณด๋ฉด JBoss EAP๊ฐ€ ์•ฝ 650MB์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์†Œ๋น„ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JAR ํŒจํ‚ค์ง€

JAR ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค(JAR์— ํŒจํ‚ค์ง€๋œ helloworld ์‹คํ–‰ ์„น์…˜ ์ฐธ์กฐ). ์ด์ „ ๊ฒŒ์‹œ๋ฌผ):

$ java -jar ./target/helloworld-<version>-runner.jar

๋‹ค์‹œ pgrep ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ PID๋ฅผ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค(์ด๋ฒˆ์—๋Š” ์œ„์—์„œ ์„ค๋ช…ํ•œ -a ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค).

$ pgrep -af helloworld
6408 java -jar ./target/helloworld-<version>-runner.jar

๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ธก์ •ํ•˜๊ธฐ ์œ„ํ•ด ps์™€ pmap์„ ์‹คํ–‰ํ•˜์ง€๋งŒ ์ง€๊ธˆ์€ ํ”„๋กœ์„ธ์Šค 6408์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ์ด๋ ‡๊ฒŒ :

$ ps -o pid,rss,command -p 6408
  PID   RSS COMMAND
 6408 125732 java -jar ./target/helloworld-quarkus-runner.jar

๊ทธ๋ž˜์„œ :

$ pmap -x 6408
6408:   java -jar ./target/helloworld-quarkus-runner.jar
Address           Kbytes     RSS   Dirty Mode  Mapping
00000005d3200000  337408       0       0 rw---   [ anon ]
00000005e7b80000 5046272       0       0 -----   [ anon ]
000000071bb80000  168448   57576   57576 rw---   [ anon ]
0000000726000000 2523136       0       0 -----   [ anon ]
00000007c0000000    2176    2088    2088 rw---   [ anon ]
00000007c0220000 1046400       0       0 -----   [ anon ]
00005645b85d6000       4       4       0 r---- java
00005645b85d7000       4       4       0 r-x-- java
00005645b85d8000       4       0       0 r---- java
00005645b85d9000       4       4       4 r---- java
00005645b85da000       4       4       4 rw--- java
[...]
ffffffffff600000       4       0       0 r-x--   [ anon ]
---------------- ------- ------- -------
total kB         12421844  133784  115692

RSS๋ฅผ ๋‹ค์‹œ ์‚ดํŽด๋ณด๋ฉด JAR ํŒจํ‚ค์ง€๊ฐ€ ์•ฝ 130MB๋ฅผ ์†Œ๋น„ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ฐ€๋Šฅ ํŒŒ์ผ

๋„ค์ดํ‹ฐ๋ธŒ ํŒŒ์ผ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค("๋„ค์ดํ‹ฐ๋ธŒ helloworld ์‹คํ–‰ ํŒŒ์ผ ์‹คํ–‰" ์„น์…˜ ์ฐธ์กฐ). ์ด์ „ ๊ฒŒ์‹œ๋ฌผ):

$ ./target/helloworld-<version>-runner

PID๋ฅผ ๋‹ค์‹œ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

$ pgrep -af helloworld
6948 ./target/helloworld-<version>-runner

๊ทธ๋Ÿฐ ๋‹ค์Œ ps ๋ฐ pmap ๋ช…๋ น์—์„œ ๊ฒฐ๊ณผ ํ”„๋กœ์„ธ์Šค ID(6948)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ์ด๋ ‡๊ฒŒ :

$ ps -o pid,rss,command -p 6948
  PID   RSS COMMAND
 6948 19084 ./target/helloworld-quarkus-runner
ะ˜ ะฒะพั‚ ั‚ะฐะบ:
$ pmap -x 6948
6948:   ./target/helloworld-quarkus-runner
Address           Kbytes     RSS   Dirty Mode  Mapping
0000000000400000      12      12       0 r---- helloworld-quarkus-runner
0000000000403000   10736    8368       0 r-x-- helloworld-quarkus-runner
0000000000e7f000    7812    6144       0 r---- helloworld-quarkus-runner
0000000001620000    2024    1448     308 rw--- helloworld-quarkus-runner
000000000181a000       4       4       4 r---- helloworld-quarkus-runner
000000000181b000      16      16      12 rw--- helloworld-quarkus-runner
0000000001e10000    1740     156     156 rw---   [ anon ]
[...]
ffffffffff600000       4       0       0 r-x--   [ anon ]
---------------- ------- ------- -------
total kB         1456800   20592    2684

RSS๋ฅผ ๋ณด๋ฉด ์‹คํ–‰ ํŒŒ์ผ์ด ์•ฝ 20MB์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„ ๋น„๊ต

๋”ฐ๋ผ์„œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์— ๋Œ€ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆซ์ž๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

  • JBoss EAP - 650MB.
  • JAR ํŒจํ‚ค์ง€ โ€“ 130MB.
  • ์‹คํ–‰ ํŒŒ์ผ โ€“ 20MB.

๋ถ„๋ช…ํžˆ ์‹คํ–‰ ํŒŒ์ผ์€ ํ›จ์”ฌ ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.

4๋ฒˆ๊ณผ 5๋ฒˆ ๊ฒŒ์‹œ๋ฌผ์„ ์š”์•ฝํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ๊ฒŒ์‹œ๋ฌผ๊ณผ ์ด์ „ ๊ฒŒ์‹œ๋ฌผ์—์„œ๋Š” Quarkus์—์„œ ์ง€์›๋˜๋Š” ๊ธฐ์ˆ (CDI ๋ฐ Servlet 3)์„ ์‚ฌ์šฉํ•˜์—ฌ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ˜„๋Œ€ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์ด๋Ÿฌํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœ, ๊ตฌ์ถ• ๋ฐ ์‹คํ–‰ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ†ตํ•ด ๋‹ฌ์„ฑํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ๋Š” ์˜ˆ์ œ์˜ ๊ฐ„๋‹จํ•œ helloworld ํ”„๋กœ๊ทธ๋žจ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋“  ํ›จ์”ฌ ๋” ๋ณต์žกํ•œ ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋“  Quarkus์˜ ์ž‘๋™ ๋ฐฉ์‹๊ณผ ์œ ์šฉํ•œ ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

XNUMX์ฃผ ํ›„์— Quarkus์— ๋Œ€ํ•œ ๋งˆ์ง€๋ง‰ ๊ฒŒ์‹œ๋ฌผ์„ ๊ฐ€์ง€๊ณ  ๋‹ค์‹œ ์ฐพ์•„์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์„œ ๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค!

๋งˆ์ง€๋ง‰ ๊ฒŒ์‹œ๋ฌผ์—์„œ๋Š” AMQ Online๊ณผ Quarkus๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ๋‘ ๊ฐ€์ง€ ์ƒˆ๋กœ์šด ๋ฉ”์‹œ์ง• ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์‹  OpenShift ๊ธฐ๋ฐ˜ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฝ์–ด ๋งํฌ.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€