์ฌํด๋ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ปจํ
์ด๋ ํ
๋ง ๊ฐ๋ฐ์ ๊ณํํ๊ณ ์์ผ๋ฉฐ,
Java์ JVM์ ์ฌ์ ํ โโ๋งค์ฐ ์ธ๊ธฐ๊ฐ ์์ง๋ง, ์๋ฒ๋ฆฌ์ค ๊ธฐ์ ๊ณผ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๋ง์ดํฌ๋ก์๋น์ค๋ก ์์
ํ ๋ Java ๋ฐ ๊ธฐํ JVM ์ธ์ด๋ ๋๋ฌด ๋ง์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฐจ์งํ๊ณ ๋ก๋ ์๋๊ฐ ๋๋ฌด ๋๋ ค์ ์ ์ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ช
์ด ์งง์ ์ปจํ
์ด๋์ ํจ๊ป ์ฌ์ฉํ๊ธฐ์๋ ์ ํฉํ์ง ์์ต๋๋ค. ๋คํํ๋ Quarkus ๋๋ถ์ ์ด์ ์ด๋ฌํ ์ํฉ์ด ๋ฐ๋๊ธฐ ์์ํ์ต๋๋ค.
์ด๊ณ ์ ์์์ Java๊ฐ ์๋ก์ด ์์ค์ ๋๋ฌํ์ต๋๋ค!
42๊ฐ์ ๋ฆด๋ฆฌ์ค, 8๊ฐ์ ๊ฐ์ ์ปค๋ฎค๋ํฐ ์์
, 177๋ช
์ ๋๋ผ์ด ๊ฐ๋ฐ์ - ์ด ๋ชจ๋ ๊ฒ์ด 2019๋
XNUMX์์ ๋ฆด๋ฆฌ์ค๋์์ต๋๋ค.
์ค๋์ Quarkus๊ฐ ๋ช
๋ นํ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ๊ณผ ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ๋จ์ผ ๋ฐ์ํ ์ฝ์ด๋ก ๊ฒฐํฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ ๋๋ฆฌ๊ฒ ์ต๋๋ค. ๊ฐ๋จํ ์ญ์ฌ๋ถํฐ ์์ํ ๋ค์ 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 ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ธ์.
๋น์ฐจ๋จ I/O์ ๊ฒฝ์ฐ ์ฝ์ด ์๊ฐ ๋ณ๋ ฌ๋ก ์คํ๋ ์ ์๋ I/O ์ค๋ ๋ ์๋ฅผ ๊ฒฐ์ ํ๋ฏ๋ก ํต์ฌ ๋งค๊ฐ๋ณ์๊ฐ ๋ฉ๋๋ค. ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ฉด ์ฝ์ด ๊ฐ์ ๋ก๋๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋ถ์ฐํ๊ณ ๋ ์ ์ ๋ฆฌ์์ค๋ก ๋ ๋์ ์ํฌ๋ก๋๋ฅผ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ด๋, ๊ทธ๊ฒ ๋ค์ผ?
์๋์, ๋ค๋ฅธ ๊ฒ์ด ์์ต๋๋ค. ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ฆฌ์์ค๋ฅผ ๋ ์ ํ์ฉํ๋ ๋ฐ ๋์์ด ๋์ง๋ง ๊ทธ์ ๋ฐ๋ฅธ ๋๊ฐ๋ ๋ฐ๋ฆ ๋๋ค. ํนํ ์ฝ๋๋ ๋น์ฐจ๋จ ์์น์ ๋ฐ๋ผ ๋ค์ ์์ฑ๋์ด์ผ ํ๋ฉฐ I/O ์ค๋ ๋ ์ฐจ๋จ์ ๋ฐฉ์งํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์์ ํ ๋ค๋ฅธ ๊ฐ๋ฐ ๋ฐ ์คํ ๋ชจ๋ธ์ ๋๋ค. ์ฌ๊ธฐ์๋ ์ ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ง์ด ์์ง๋ง ์ผ๋ฐ์ ์ธ ์ฌ๊ณ ๋ฐฉ์์๋ ์ฌ์ ํ ๊ธ๊ฒฉํ ๋ณํ๊ฐ ์์ต๋๋ค.
๋จผ์ , ๋น๋๊ธฐ์ ์ผ๋ก ์คํ๋๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์์ผ ํฉ๋๋ค. ๋น์ฐจ๋จ I/O๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ๋ฉด ์์ฒญ์ ๋ํ ์๋ต์ด ์์ ๋ ๋ ์ด๋ค ์ผ์ด ๋ฐ์ํด์ผ ํ๋์ง ๋ช ์์ ์ผ๋ก ์ง์ ํด์ผ ํฉ๋๋ค. ๋จ์ํ ์ฐจ๋จํ๊ณ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ๋ ์ด์ ์๋ํ์ง ์์ต๋๋ค. ๋์ ์ฝ๋ฐฑ์ ์ ๋ฌํ๊ฑฐ๋ ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ ๋๋ ์ฐ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ด ์ ๋ถ๋ ์๋๋๋ค. ๋น์ฐจ๋จ I/O๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋น์ฐจ๋จ ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ชจ๋ ํ์ํ๋ฉฐ, ๊ฐ๊ธ์ ๋ชจ๋ ๊ณณ์์ ํ์ํฉ๋๋ค. HTTP์ ๊ฒฝ์ฐ ๋ชจ๋ ๊ฒ์ด ๊ฐ๋จํ์ง๋ง ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ์ผ ์์คํ ๋ฑ๋ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์ฒด ์๋ํฌ์๋ ๋ฐ์์ฑ์ด ํจ์จ์ฑ์ ๊ทน๋ํํ์ง๋ง ์ด๋ฌํ ๋ณํ๋ ์ค์ ๋ก๋ ๊ฐ๋นํ๊ธฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ํ ์ฝ๋์ ๋ช ๋ นํ ์ฝ๋๋ฅผ ๊ฒฐํฉํ๋ ๋ฅ๋ ฅ์ ๋ค์์ ์ํ ์ ์ ์กฐ๊ฑด์ด ๋ฉ๋๋ค.
- ์ํํธ์จ์ด ์์คํ ์์ ๊ฐ์ฅ ๋ถํ๊ฐ ๋ง์ ์์ญ์ ๋ฆฌ์์ค๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
- ๋๋จธ์ง ๋ถ๋ถ์์๋ ๋ ๊ฐ๋จํ ์คํ์ผ ์ฝ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Quarkus ์๊ฐ
์ค์ ๋ก ์ด๊ฒ์ด Quarkus์ ํต์ฌ์ ๋๋ค. ๋จ์ผ ๋ฐํ์ ํ๊ฒฝ ๋ด์์ ๋ฐ์ํ ๋ชจ๋ธ๊ณผ ๋ช ๋ นํ ๋ชจ๋ธ์ ๊ฒฐํฉํ๋ ๊ฒ์ ๋๋ค.
Quarkus๋ Vert.x ๋ฐ Netty๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ ๊ฐ๋ฐ์๋ฅผ ๋๊ธฐ ์ํ ๋ค์ํ ๋ฐ์ํ ํ๋ ์์ํฌ์ ํ์ฅ ๊ธฐ๋ฅ์ ๊ฐ์ถ๊ณ ์์ต๋๋ค. Quarkus๋ HTTP ๋ง์ดํฌ๋ก์๋น์ค๋ฟ๋ง ์๋๋ผ ์ด๋ฒคํธ ์ค์ฌ ์ํคํ ์ฒ ๊ตฌ์ถ์ ์ํด ์ค๊ณ๋์์ต๋๋ค. ๋ฐ์์ ํน์ฑ์ผ๋ก ์ธํด ๋ฉ์์ง ์์คํ (Apache Kafka, AMQP ๋ฑ)์์ ๋งค์ฐ ํจ๊ณผ์ ์ผ๋ก ์๋ํฉ๋๋ค.
๋น๊ฒฐ์ ๋ช ๋ นํ ์ฝ๋์ ๋ฐ์ํ ์ฝ๋ ๋ชจ๋์ ๋์ผํ ๋ฐ์ํ ์์ง์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
Quarkus๋ ์ด๋ฅผ ํ๋ฅญํ๊ฒ ์ํํฉ๋๋ค. ๋ช ๋ นํ๊ณผ ๋ฐ์ํ ์ฌ์ด์ ์ ํ์ ๋ถ๋ช ํฉ๋๋ค. ๋ ๋ค์ ๋ฐ์ํ ์ปค๋์ ์ฌ์ฉํ์ธ์. ์ค์ ๋ก ๋์์ด ๋๋ ๊ฒ์ IO ์ค๋ ๋๋ผ๊ณ ๋ ํ๋ ์ด๋ฒคํธ ๋ฃจํ ์ค๋ ๋๋ฅผ ํต๊ณผํ๋ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ ์ฒ๋ฆฌํ๋ ๋น ๋ฅด๊ณ ๋น์ฐจ๋จ ์ฝ๋์ ๋๋ค. ํ์ง๋ง ํด๋์ REST ๋๋ ํด๋ผ์ด์ธํธ ์ธก ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ ๊ฒฝ์ฐ Quarkus๋ ์ฆ์ ๋ช ๋ นํ ํ๋ก๊ทธ๋๋ฐ ๋ชจ๋ธ์ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด, Quarkus์ HTTP ์ง์์ ๋น์ฐจ๋จ ๋ฐ ๋ฐ์ํ ์์ง(Eclipse Vert.x ๋ฐ Netty) ์ฌ์ฉ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์ ํ ๋ชจ๋ HTTP ์์ฒญ์ ๋จผ์ ์ด๋ฒคํธ ๋ฃจํ(IO ์ค๋ ๋)๋ฅผ ํตํด ์ ๋ฌ๋ ๋ค์ ์์ฒญ์ ๊ด๋ฆฌํ๋ ์ฝ๋ ๋ถ๋ถ์ผ๋ก ์ ์ก๋ฉ๋๋ค. ๋์์ ๋ฐ๋ผ ์์ฒญ ๊ด๋ฆฌ ์ฝ๋๋ ๋ณ๋์ ์ค๋ ๋(์๋ธ๋ฆฟ ๋ฐ Jax-RS์ ๊ฒฝ์ฐ ์ฌ์ฉ๋๋ ์์ ์์ ์ ์ค๋ ๋) ๋ด์์ ํธ์ถ๋๊ฑฐ๋ ์์ค I/O ์ค๋ ๋(๋ฐ์ ๊ฒฝ๋ก)๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฉ์์ง ์์คํ ์ปค๋ฅํฐ๋ Vert.x ์์ง ์์์ ์คํ๋๋ ๋น์ฐจ๋จ ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฉ์์ง ๋ฏธ๋ค์จ์ด ์์คํ ์์ ๋ฉ์์ง๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๋ณด๋ด๊ณ ๋ฐ๊ณ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ฌ์ดํธ
๋ฐ์ ๊ฒฝ๋ก ์ฌ์ฉ ๋ฐ์ํ SQL ํด๋ผ์ด์ธํธ ๋ฐ์ํ ๋ฉ์์ง๊ณผ ํจ๊ป Apache Kafka ์ฌ์ฉ ๋ฐ์ํ ๋ฉ์์ง์ AMQP ์ฌ์ฉ Vertx API ์ฌ์ฉ
๋ํ IDE๋ ์ปดํจํฐ๊ฐ ํ์ ์์ด ๋ธ๋ผ์ฐ์ ๋ง์ผ๋ก ๋ฐ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ค์ํ ์ธก๋ฉด์ ๊ฐ๋ฅด์ณ์ฃผ๋ ์จ๋ผ์ธ ์ค์ต ํํ ๋ฆฌ์ผ๋ ๋ง๋ค์์ต๋๋ค. ์ด๋ฐ ๊ฐ์๋ฅผ ๋ง๋๋ณด์ค ์ ์์ต๋๋ค
์ ์ฉํ ์๋ฃ
Quarkus๋ฅผ ์ฌ์ฉํด ๋ด์ผ ํ๋ 4๊ฐ์ง ์ด์ - Quarkus ํ๋ก์ ํธ ์น์ฌ์ดํธ โ
quarkus.io - GitHub์ Quarkus ํ๋ก์ ํธ โ
github.com/quarkusio/quarkus - Quarkus ํ๋ก์ ํธ ํธ์ํฐ โ
twitter.com/QuarkusIO - Quarkus ํ๋ก์ ํธ ์ฑํ
โ
quarkusio.zulipchat.com - Quarkus ํ๋ก์ ํธ ํฌ๋ผ โ
groups.google.com/forum/# !ํฌ๋ผ/quarkus-dev
์ฃผ์ ์ ์ต์ํด์ง๊ธฐ ์ํ Quarkus ๊ด๋ จ 10๊ฐ์ง ๋น๋์ค ๊ฐ์
ํํ์ด์ง์ ๋์์๋๋๋ก
์ฃผ์ ์ ์ดํด๋ฅผ ๋๊ธฐ ์ํด 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