Quarkus๊ฐ€ ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•

์˜ฌํ•ด๋Š” ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ปจํ…Œ์ด๋„ˆ ํ…Œ๋งˆ ๊ฐœ๋ฐœ์„ ๊ณ„ํšํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ Java ะธ Kubernetes. ์ด๋Ÿฌํ•œ ์ฃผ์ œ์˜ ๋…ผ๋ฆฌ์  ์—ฐ์†์€ ์ด๋ฏธ Quarkus ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์กด๊ฒฝ๋ฐ›๋Š” ํ•˜๋ธŒ๋ ˆ์—. ์˜ค๋Š˜์˜ ๊ธฐ์‚ฌ๋Š” "์•„์›์ž ์ดˆ๊ณ ์† Java"์˜ ์„ค๊ณ„๋ณด๋‹ค๋Š” Quarkus๊ฐ€ Enterprise์— ์ œ๊ณตํ•˜๋Š” ์•ฝ์†์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Quarkus๊ฐ€ ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•

Java์™€ JVM์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋งค์šฐ ์ธ๊ธฐ๊ฐ€ ์žˆ์ง€๋งŒ, ์„œ๋ฒ„๋ฆฌ์Šค ๊ธฐ์ˆ ๊ณผ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ž‘์—…ํ•  ๋•Œ Java ๋ฐ ๊ธฐํƒ€ JVM ์–ธ์–ด๋Š” ๋„ˆ๋ฌด ๋งŽ์€ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ณ  ๋กœ๋“œ ์†๋„๊ฐ€ ๋„ˆ๋ฌด ๋Š๋ ค์„œ ์ ์  ๋œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ˆ˜๋ช…์ด ์งง์€ ์ปจํ…Œ์ด๋„ˆ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ๋„ Quarkus ๋•๋ถ„์— ์ด์ œ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์ด ๋ฐ”๋€Œ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ดˆ๊ณ ์† ์•„์›์ž Java๊ฐ€ ์ƒˆ๋กœ์šด ์ˆ˜์ค€์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค!

42๊ฐœ์˜ ๋ฆด๋ฆฌ์Šค, 8๊ฐœ์›” ๊ฐ„์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ž‘์—…, 177๋ช…์˜ ๋†€๋ผ์šด ๊ฐœ๋ฐœ์ž - ์ด ๋ชจ๋“  ๊ฒƒ์ด 2019๋…„ XNUMX์›”์— ๋ฆด๋ฆฌ์Šค๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฟผ์ปค์Šค 1.0, ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ์˜ ์ค‘์š”ํ•œ ์ด์ •ํ‘œ๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ๋งŽ์€ ๋ฉ‹์ง„ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๋ฆด๋ฆฌ์Šค์ž…๋‹ˆ๋‹ค(์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค). ๋ฐœํ‘œ).

์˜ค๋Š˜์€ Quarkus๊ฐ€ ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ๊ณผ ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์„ ๋‹จ์ผ ๋ฐ˜์‘ํ˜• ์ฝ”์–ด๋กœ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์—ญ์‚ฌ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ ๋‹ค์Œ Quarkus์˜ ๋ฐ˜์‘์„ฑ ํ•ต์‹ฌ ์ด์ค‘์„ฑ์ด ๋ฌด์—‡์ธ์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ์ž๋ฐ”-๊ฐœ๋ฐœ์ž๋Š” ์ด๋Ÿฌํ•œ ์ด์ ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค, ์ด๋ฒคํŠธ ์ค‘์‹ฌ ์•„ํ‚คํ…์ฒ˜ ะธ ์„œ๋ฒ„๋ฆฌ์Šค-๊ธฐ๋Šฅ โ€“ ๊ทธ๋“ค์ด ๋งํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ด ๋ชจ๋“  ๊ฒƒ์ด ์˜ค๋Š˜๋‚  ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ์—๋Š” ํด๋ผ์šฐ๋“œ ์ค‘์‹ฌ ์•„ํ‚คํ…์ฒ˜์˜ ์ƒ์„ฑ์ด ํ›จ์”ฌ ๋” ์‰ฝ๊ณ  ์ ‘๊ทผํ•˜๊ธฐ ์‰ฌ์›Œ์กŒ์ง€๋งŒ ํŠนํžˆ Java ๊ฐœ๋ฐœ์ž์—๊ฒŒ๋Š” ๋ฌธ์ œ๊ฐ€ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์„œ๋ฒ„๋ฆฌ์Šค ๊ธฐ๋Šฅ๊ณผ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ ์‹œ์ž‘ ์‹œ๊ฐ„์„ ์ค„์ด๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ์ค„์ด๋ฉด์„œ ๊ฐœ๋ฐœ์„ ๋”์šฑ ํŽธ๋ฆฌํ•˜๊ณ  ์ฆ๊ฒ๊ฒŒ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ํ•„์š”์„ฑ์ด ์‹œ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. Java๋Š” ์ตœ๊ทผ ๋ช‡ ๋…„๊ฐ„ ์ปจํ…Œ์ด๋„ˆ์˜ ์ธ์ฒด๊ณตํ•™์  ๊ธฐ๋Šฅ ๊ฐœ์„  ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ฐœ์„ ์„ ์ด๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Java๊ฐ€ ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์–ด๋ ค์šด ์ผ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ปจํ…Œ์ด๋„ˆ ์ง€ํ–ฅ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ ํŠนํžˆ ์‹ฌ๊ฐํ•œ Java ๊ณ ์œ ์˜ โ€‹โ€‹๋ณต์žก์„ฑ ์ค‘ ์ผ๋ถ€๋ฅผ ์‚ดํŽด๋ณด๋Š” ๊ฒƒ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋จผ์ € ์—ญ์‚ฌ๋ฅผ ์‚ดํŽด๋ณด์ž.

Quarkus๊ฐ€ ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•

์ŠคํŠธ๋ฆผ ๋ฐ ์ปจํ…Œ์ด๋„ˆ

๋ฒ„์ „ 8u131๋ถ€ํ„ฐ Java๋Š” ์ธ์ฒด๊ณตํ•™ ๊ธฐ๋Šฅ์˜ ๊ฐœ์„ ์œผ๋กœ ์ธํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์–ด๋Š ์ •๋„ ์ง€์›ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ JVM์€ ์ด์ œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์„œ ์ฝ”์–ด ์ˆ˜๋ฅผ ์•Œ๊ณ  ๊ทธ์— ๋”ฐ๋ผ ์Šค๋ ˆ๋“œ ํ’€(์ผ๋ฐ˜์ ์œผ๋กœ ํฌํฌ/์กฐ์ธ ํ’€)์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๊ฒƒ์€ ํ›Œ๋ฅญํ•˜์ง€๋งŒ HTTP ์„œ๋ธ”๋ฆฟ์„ ์‚ฌ์šฉํ•˜๊ณ  Tomcat, Jetty ๋“ฑ์—์„œ ์‹คํ–‰๋˜๋Š” ์ „ํ†ต์ ์ธ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ฐ ์š”์ฒญ์— ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ๋ฅผ ์ œ๊ณตํ•˜๊ณ  I/O ์ž‘์—…(์˜ˆ: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํŒŒ์ผ ๋˜๋Š” ๊ธฐํƒ€ ์„œ๋น„์Šค์— ์•ก์„ธ์Šคํ•  ๋•Œ)์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ์ด ์Šค๋ ˆ๋“œ๋ฅผ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ด๋Ÿฌํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํฌ๊ธฐ๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”์–ด ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ๋™์‹œ ์š”์ฒญ ์ˆ˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด๋Š” Kubernetes์˜ ์ฝ”์–ด ์ˆ˜์— ๋Œ€ํ•œ ํ• ๋‹น๋Ÿ‰์ด๋‚˜ ์ œํ•œ์ด ์—ฌ๊ธฐ์„œ๋Š” ํฐ ๋„์›€์ด ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ฌธ์ œ๋Š” ๊ถ๊ทน์ ์œผ๋กœ ์ œํ•œ์œผ๋กœ ๋๋‚  ๊ฒƒ์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์–ต๋ ฅ ๊ณ ๊ฐˆ

์Šค๋ ˆ๋“œ๋Š” ๋ฉ”๋ชจ๋ฆฌ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปจํ…Œ์ด๋„ˆ ๋‚ด ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ์€ ๊ฒฐ์ฝ” ๋งŒ๋ณ‘ํ†ต์น˜์•ฝ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์Šค๋ ˆ๋“œ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์กฐ๋งŒ๊ฐ„ ์Šค์œ„์นญ ์ฃผํŒŒ์ˆ˜๊ฐ€ ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•˜์—ฌ ๊ฒฐ๊ณผ์ ์œผ๋กœ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๊ธฐ์กด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•˜๊ฑฐ๋‚˜, ์บ์‹ฑ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ JVM ๋‚ด๋ถ€๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ฃฝ์ด์ง€ ์•Š๊ณ  ์–ด๋–ป๊ฒŒ ๊ด€๋ฆฌํ•˜๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. JVM ์ž์ฒด(์˜ˆ: XX:+UseCGroupMemoryLimitForHeap) Java 9 ์ดํ›„๋กœ JVM์€ cgroup์„ ์ˆ˜์šฉํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ ์ ์‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์˜ˆ์•ฝํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๋‹ค์†Œ ๋ณต์žกํ•œ ๋ฌธ์ œ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ• ๋‹น๋Ÿ‰ ๋ฐ ํ•œ๋„

Java 11์—์„œ๋Š” CPU ํ• ๋‹น๋Ÿ‰(์˜ˆ: PreferContainerQuotaForCPUCount)์— ๋Œ€ํ•œ ์ง€์›์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. Kubernetes๋Š” ํ•œ๋„ ๋ฐ ํ• ๋‹น๋Ÿ‰์— ๋Œ€ํ•œ ์ง€์›๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ, ๋ชจ๋‘ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ• ๋‹น๋œ ํ• ๋‹น๋Ÿ‰์„ ๋‹ค์‹œ ์ดˆ๊ณผํ•˜๋ฉด ๊ธฐ์กด Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฝ”์–ด ์ˆ˜์™€ ๊ฐ๊ฐ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ ํ• ๋‹น์— ๋”ฐ๋ผ ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ์š”์ฒญํ•˜๋ฉด ์ด ๋ชจ๋“  ๊ฒƒ์ด ๊ฑฐ์˜ ์˜๋ฏธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ ํ• ๋‹น๋Ÿ‰๊ณผ ์ œํ•œ ๋˜๋Š” Kubernetes ๊ธฐ๋ฐ˜ ํ”Œ๋žซํผ์˜ ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋ฌธ์ œ๊ฐ€ ์ €์ ˆ๋กœ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹จ์ˆœํžˆ ์›๋ž˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋” ๋งŽ์€ ์ž์›์„ ์†Œ๋น„ํ•˜๊ฑฐ๋‚˜ ๊ฒฐ๊ตญ ๊ณผ๋‹ค ์ง€์ถœํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํผ๋ธ”๋ฆญ ํผ๋ธ”๋ฆญ ํด๋ผ์šฐ๋“œ์˜ ๊ณ ๋ถ€ํ•˜ ์‹œ์Šคํ…œ์ด๋ผ๋ฉด ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๊ฒƒ์ด ๊ฑฐ์˜ ํ™•์‹คํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ด ๋ชจ๋“  ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ์š”?

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, Netty์™€ ๊ฐ™์€ ๋น„๋™๊ธฐ ๋ฐ ๋น„์ฐจ๋‹จ I/O ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ˆ˜์ง.x ์•„๋‹ˆ๋ฉด ์•„์นด. ๋ฐ˜์‘์„ฑ์œผ๋กœ ์ธํ•ด ์ปจํ…Œ์ด๋„ˆ์—์„œ ์ž‘์—…ํ•˜๋Š” ๋ฐ ํ›จ์”ฌ ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. ๋น„์ฐจ๋‹จ I/O ๋•๋ถ„์— ๋™์ผํ•œ ์Šค๋ ˆ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๋™์‹œ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ์š”์ฒญ์ด I/O ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์Šค๋ ˆ๋“œ๊ฐ€ ํ•ด์ œ๋˜์–ด ๋‹ค๋ฅธ ์š”์ฒญ์— ์˜ํ•ด ์ธ๊ณ„๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋งˆ์นจ๋‚ด I/O ๊ฒฐ๊ณผ๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ์š”์ฒญ ์ฒ˜๋ฆฌ๊ฐ€ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์Šค๋ ˆ๋“œ ๋‚ด์—์„œ ์š”์ฒญ์„ ์ธํ„ฐ๋ฆฌ๋ธŒ ์ฒ˜๋ฆฌํ•จ์œผ๋กœ์จ ์ „์ฒด ์Šค๋ ˆ๋“œ ์ˆ˜๋ฅผ ์ค„์ด๊ณ  ์š”์ฒญ ์ฒ˜๋ฆฌ์— ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค ์†Œ๋น„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„์ฐจ๋‹จ I/O์˜ ๊ฒฝ์šฐ ์ฝ”์–ด ์ˆ˜๊ฐ€ ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋Š” I/O ์Šค๋ ˆ๋“œ ์ˆ˜๋ฅผ ๊ฒฐ์ •ํ•˜๋ฏ€๋กœ ํ•ต์‹ฌ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”์–ด ๊ฐ„์— ๋กœ๋“œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋ถ„์‚ฐํ•˜๊ณ  ๋” ์ ์€ ๋ฆฌ์†Œ์Šค๋กœ ๋” ๋†’์€ ์›Œํฌ๋กœ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋•Œ, ๊ทธ๊ฒŒ ๋‹ค์•ผ?

์•„๋‹ˆ์š”, ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋” ์ž˜ ํ™œ์šฉํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜์ง€๋งŒ ๊ทธ์— ๋”ฐ๋ฅธ ๋Œ€๊ฐ€๋„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ํŠนํžˆ ์ฝ”๋“œ๋Š” ๋น„์ฐจ๋‹จ ์›์น™์— ๋”ฐ๋ผ ๋‹ค์‹œ ์ž‘์„ฑ๋˜์–ด์•ผ ํ•˜๋ฉฐ I/O ์Šค๋ ˆ๋“œ ์ฐจ๋‹จ์„ ๋ฐฉ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ ๋ฐ ์‹คํ–‰ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์œ ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งŽ์ด ์žˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์ธ ์‚ฌ๊ณ  ๋ฐฉ์‹์—๋Š” ์—ฌ์ „ํžˆ ๊ธ‰๊ฒฉํ•œ ๋ณ€ํ™”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋จผ์ €, ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋น„์ฐจ๋‹จ I/O๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์ด ์ˆ˜์‹ ๋  ๋•Œ ์–ด๋–ค ์ผ์ด ๋ฐœ์ƒํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ช…์‹œ์ ์œผ๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ฐจ๋‹จํ•˜๊ณ  ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์€ ๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์ฝœ๋ฐฑ์„ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋˜๋Š” ์—ฐ์†์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด ์ „๋ถ€๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ๋น„์ฐจ๋‹จ I/O๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋น„์ฐจ๋‹จ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ชจ๋‘ ํ•„์š”ํ•˜๋ฉฐ, ๊ฐ€๊ธ‰์  ๋ชจ๋“  ๊ณณ์—์„œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. HTTP์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํŒŒ์ผ ์‹œ์Šคํ…œ ๋“ฑ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ „์ฒด ์—”๋“œํˆฌ์—”๋“œ ๋ฐ˜์‘์„ฑ์ด ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ณ€ํ™”๋Š” ์‹ค์ œ๋กœ๋Š” ๊ฐ๋‹นํ•˜๊ธฐ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ˜์‘ํ˜• ์ฝ”๋“œ์™€ ๋ช…๋ นํ˜• ์ฝ”๋“œ๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ๋Šฅ๋ ฅ์€ ๋‹ค์Œ์„ ์œ„ํ•œ ์ „์ œ ์กฐ๊ฑด์ด ๋ฉ๋‹ˆ๋‹ค.

  1. ์†Œํ”„ํŠธ์›จ์–ด ์‹œ์Šคํ…œ์—์„œ ๊ฐ€์žฅ ๋ถ€ํ•˜๊ฐ€ ๋งŽ์€ ์˜์—ญ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์—์„œ๋Š” ๋” ๊ฐ„๋‹จํ•œ ์Šคํƒ€์ผ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Quarkus ์†Œ๊ฐœ

์‹ค์ œ๋กœ ์ด๊ฒƒ์ด Quarkus์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. ๋‹จ์ผ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ ๋‚ด์—์„œ ๋ฐ˜์‘ํ˜• ๋ชจ๋ธ๊ณผ ๋ช…๋ นํ˜• ๋ชจ๋ธ์„ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Quarkus๋Š” Vert.x ๋ฐ Netty๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ ๊ฐœ๋ฐœ์ž๋ฅผ ๋•๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ฐ˜์‘ํ˜• ํ”„๋ ˆ์ž„์›Œํฌ์™€ ํ™•์žฅ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Quarkus๋Š” HTTP ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด๋ฒคํŠธ ์ค‘์‹ฌ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์ถ•์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜์‘์  ํŠน์„ฑ์œผ๋กœ ์ธํ•ด ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ(Apache Kafka, AMQP ๋“ฑ)์—์„œ ๋งค์šฐ ํšจ๊ณผ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋น„๊ฒฐ์€ ๋ช…๋ นํ˜• ์ฝ”๋“œ์™€ ๋ฐ˜์‘ํ˜• ์ฝ”๋“œ ๋ชจ๋‘์— ๋™์ผํ•œ ๋ฐ˜์‘ํ˜• ์—”์ง„์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

Quarkus๊ฐ€ ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•

Quarkus๋Š” ์ด๋ฅผ ํ›Œ๋ฅญํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ นํ˜•๊ณผ ๋ฐ˜์‘ํ˜• ์‚ฌ์ด์˜ ์„ ํƒ์€ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค์— ๋ฐ˜์‘ํ˜• ์ปค๋„์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์‹ค์ œ๋กœ ๋„์›€์ด ๋˜๋Š” ๊ฒƒ์€ IO ์Šค๋ ˆ๋“œ๋ผ๊ณ ๋„ ํ•˜๋Š” ์ด๋ฒคํŠธ ๋ฃจํ”„ ์Šค๋ ˆ๋“œ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋น ๋ฅด๊ณ  ๋น„์ฐจ๋‹จ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํด๋ž˜์‹ REST ๋˜๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ Quarkus๋Š” ์ฆ‰์‹œ ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Quarkus์˜ HTTP ์ง€์›์€ ๋น„์ฐจ๋‹จ ๋ฐ ๋ฐ˜์‘ํ˜• ์—”์ง„(Eclipse Vert.x ๋ฐ Netty) ์‚ฌ์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ˆ˜์‹ ํ•œ ๋ชจ๋“  HTTP ์š”์ฒญ์€ ๋จผ์ € ์ด๋ฒคํŠธ ๋ฃจํ”„(IO ์Šค๋ ˆ๋“œ)๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋œ ๋‹ค์Œ ์š”์ฒญ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ฝ”๋“œ ๋ถ€๋ถ„์œผ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ๋Œ€์ƒ์— ๋”ฐ๋ผ ์š”์ฒญ ๊ด€๋ฆฌ ์ฝ”๋“œ๋Š” ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ(์„œ๋ธ”๋ฆฟ ๋ฐ Jax-RS์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ๋˜๋Š” ์†Œ์œ„ ์ž‘์—…์ž ์Šค๋ ˆ๋“œ) ๋‚ด์—์„œ ํ˜ธ์ถœ๋˜๊ฑฐ๋‚˜ ์†Œ์Šค I/O ์Šค๋ ˆ๋“œ(๋ฐ˜์‘ ๊ฒฝ๋กœ)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Quarkus๊ฐ€ ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฒฐํ•ฉํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ ์ปค๋„ฅํ„ฐ๋Š” Vert.x ์—”์ง„ ์œ„์—์„œ ์‹คํ–‰๋˜๋Š” ๋น„์ฐจ๋‹จ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฉ”์‹œ์ง• ๋ฏธ๋“ค์›จ์–ด ์‹œ์Šคํ…œ์—์„œ ๋ฉ”์‹œ์ง€๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋ณด๋‚ด๊ณ  ๋ฐ›๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์ดํŠธ Quarkus.io ๋‹ค์Œ์€ Quarkus๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์œ ์šฉํ•œ ํŠœํ† ๋ฆฌ์–ผ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ IDE๋‚˜ ์ปดํ“จํ„ฐ๊ฐ€ ํ•„์š” ์—†์ด ๋ธŒ๋ผ์šฐ์ €๋งŒ์œผ๋กœ ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋‹ค์–‘ํ•œ ์ธก๋ฉด์„ ๊ฐ€๋ฅด์ณ์ฃผ๋Š” ์˜จ๋ผ์ธ ์‹ค์Šต ํŠœํ† ๋ฆฌ์–ผ๋„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ์—ฌ๊ธฐ์—.

์œ ์šฉํ•œ ์ž๋ฃŒ

์ฃผ์ œ์— ์ต์ˆ™ํ•ด์ง€๊ธฐ ์œ„ํ•œ Quarkus ๊ด€๋ จ 10๊ฐ€์ง€ ๋น„๋””์˜ค ๊ฐ•์˜

ํ™ˆํŽ˜์ด์ง€์— ๋‚˜์™€์žˆ๋Š”๋Œ€๋กœ Quarkus.io, ์ฟผ์ฟ ์Šค -๊ฐ€์š” KubernetesGraalVM ๋ฐ OpenJDK HotSpot์— ๋งž๊ฒŒ ์กฐ์ •๋˜๊ณ  ์ตœ๊ณ ์˜ Java ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ํ‘œ์ค€์œผ๋กœ ์กฐ๋ฆฝ๋œ ์ง€ํ–ฅ์ ์ธ Java ์Šคํƒ์ž…๋‹ˆ๋‹ค.

์ฃผ์ œ์˜ ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด Quarkus์˜ ๋‹ค์–‘ํ•œ ์ธก๋ฉด๊ณผ ์‚ฌ์šฉ ์˜ˆ๋ฅผ ๋‹ค๋ฃจ๋Š” 10๊ฐœ์˜ ๋น„๋””์˜ค ํŠœํ† ๋ฆฌ์–ผ์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

1. Quarkus ์†Œ๊ฐœ: Kubernetes์šฉ ์ฐจ์„ธ๋Œ€ Java ํ”„๋ ˆ์ž„์›Œํฌ

์ €์ž: Thomas Qvarnstrom, Jason Greene
Quarkus ํ”„๋กœ์ ํŠธ์˜ ๋ชฉํ‘œ๋Š” Kubernetes ๋ฐ ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ์„ ์œ„ํ•œ Java ํ”Œ๋žซํผ์„ ๋งŒ๋“ค๊ณ  ๋ฐ˜์‘ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ๊ณผ ๋ช…๋ นํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์„ ๋‹จ์ผ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์œผ๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ด‘๋ฒ”์œ„ํ•œ ๋ถ„์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜๋กœ ์ž‘์—…ํ•  ๋•Œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์œ ์—ฐํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜ ์†Œ๊ฐœ๊ฐ•์˜๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด์„ธ์š”.

2. Quarkus: ์ดˆ๊ณ ์† ์•„์›์ž ์ž๋ฐ”

์ž‘์„ฑ์ž: Burr Sutter
DevNation Live์˜ ์ด ๋น„๋””์˜ค ํŠœํ† ๋ฆฌ์–ผ์€ Quarkus๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Kubernetes/OpenShift ํ™˜๊ฒฝ์—์„œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, API, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ฐ ์„œ๋ฒ„๋ฆฌ์Šค ๊ธฐ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜์—ฌ ํ›จ์”ฌ ๋” ์ž‘๊ณ , ๋น ๋ฅด๊ณ , ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

3. Quarkus ๋ฐ GraalVM: Hibernate๋ฅผ ์ดˆ๊ณ ์†์œผ๋กœ ๊ฐ€์†ํ™”ํ•˜๊ณ  ์›์ž ํฌ๊ธฐ๋กœ ์ถ•์†Œ

์ €์ž: ์‚ฐ๋„ค ๊ทธ๋ฆฌ๋…ธ๋ฒ ๋กœ
ํ”„๋ ˆ์  ํ…Œ์ด์…˜์„ ํ†ตํ•ด Quarkus์˜ ํƒ„์ƒ ๋ฐฉ์‹, ์ž‘๋™ ๋ฐฉ์‹, ๋„ค์ดํ‹ฐ๋ธŒ GraalVM ์ด๋ฏธ์ง€์™€ ํ˜ธํ™˜๋˜๋Š” Hibernate ORM๊ณผ ๊ฐ™์€ ๋ณต์žกํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

4. ์„œ๋ฒ„๋ฆฌ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ

์ €์ž : ๋งˆํ‹ด ๋ฃจํ„ฐ
์•„๋ž˜ ๋™์˜์ƒ์€ Quarkus๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•˜๊ณ  Knative์— ์„œ๋ฒ„๋ฆฌ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

5. Quarkus: ์ฆ๊ฑฐ์šด ์ฝ”๋”ฉ์„ ์ฆ๊ฒจ๋ณด์„ธ์š”

์ €์ž: ์—๋“œ์Šจ ์•ผ๋‚˜๊ฐ€
์ฒซ ๋ฒˆ์งธ Quarkus ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ์„ ์œ„ํ•œ ๋น„๋””์˜ค ๊ฐ€์ด๋“œ๋กœ, Quarkus๊ฐ€ ๊ฐœ๋ฐœ์ž์˜ ๋งˆ์Œ์„ ์‚ฌ๋กœ์žก๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

6. Java์™€ ์ปจํ…Œ์ด๋„ˆ - ๋‘˜์˜ ๋ฏธ๋ž˜๋Š” ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

๊ฒŒ์‹œ์ž: ๋งˆํฌ ๋ฆฌํ‹€
์ด ํ”„๋ ˆ์  ํ…Œ์ด์…˜์—์„œ๋Š” Java์˜ ์—ญ์‚ฌ๋ฅผ ์†Œ๊ฐœํ•˜๊ณ  Quarkus๊ฐ€ Java์˜ ๋ฏธ๋ž˜์ธ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

7. Quarkus: ์ดˆ๊ณ ์† ์•„์›์ž ์ž๋ฐ”

์ €์ž: ๋””๋ฏธํŠธ๋ฆฌ์Šค ์•ˆ๋“œ๋ ˆ์•„๋””์Šค
๊ฐœ๋ฐœ์ž๋กœ๋ถ€ํ„ฐ ์ธ์ •๋ฐ›์€ Quarkus์˜ ์žฅ์ (๋‹จ์ˆœ์„ฑ, ์ดˆ๊ณ ์†, ์ตœ๊ณ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ํ‘œ์ค€)์— ๋Œ€ํ•œ ๊ฐœ์š”์ž…๋‹ˆ๋‹ค.

8. ์ฟผ์ปค์Šค์™€ ์•„์›์ž ๋กœ์ผ“ ์‹œ์Šคํ…œ

์ €์ž : ํด๋ ˆ๋ง ์—์Šค์ฝ”ํ”ผ์—
GraalVM๊ณผ์˜ ํ†ตํ•ฉ์„ ํ†ตํ•ด Quarkus๋Š” ์ดˆ๊ณ ์† ๊ฐœ๋ฐœ ๊ฒฝํ—˜๊ณผ ์›์ž ์ดํ•˜์˜ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ €์ž๋Š” Quarkus์˜ ๋ฐ˜์‘์„ฑ ์ธก๋ฉด๊ณผ ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜์‘์„ฑ ๋ฐ ์ŠคํŠธ๋ฆฌ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

9. Eclipse MicroProfile์„ ์‚ฌ์šฉํ•œ Quarkus ๋ฐ ์‹ ์†ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ

์ €์ž: ์กด ํด๋ง๊ฑด
๊ฐœ๋ฐœ์ž๋Š” Eclipse MicroProfile๊ณผ Quarkus๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ์ˆ˜์‹ญ ๋ฐ€๋ฆฌ์ดˆ ๋‚ด์— ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์ปจํ…Œ์ด๋„ˆํ™”๋œ MicroProfile ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์˜์ƒ์—์„œ๋Š” Kubernetes ํ”Œ๋žซํผ์— ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด ์ปจํ…Œ์ด๋„ˆํ™”๋œ MicroProfile ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

10. ์ž๋ฐ”, "ํ„ฐ๋ณด" ๋ฒ„์ „

์ €์ž: ๋งˆ์ปค์Šค ๋น„์—˜
์ €์ž๋Š” Quarkus๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠนํžˆ ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ์—์„œ ์‹ค์งˆ์ ์ธ ํ˜์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ์ดˆ์†Œํ˜•, ์ดˆ๊ณ ์† Java ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.



์ถœ์ฒ˜ : habr.com

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