๋ง์ดํฌ๋ก๋์ผ๋ก ๋ ๋น ๋ฅด๊ฒ, ๋ ๊ฐ๋ ฅํ๊ฒ!
ํด๋ผ์ฐ๋ ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ์ฌ์ธ์ ๐ฉ
์, ์ง๊ธ ๋ง์ดํฌ๋ก๋์
๋ฐฐ์์ผ ํ ๊น์? ๐ก
์ธ๊ฐ์ด ์ฌ์ฉํ๋ ๊ฐ๋ฐ ์ธ์ด์ ๊ธฐ๊ณ๊ฐ ์ธ์ํ๋ ์ปดํจํฐ ์ธ์ด ์ฌ์ด์ ๋งค๊ฐ์ฒด ์ญํ ์ ํ๋ ํ๋ก๊ทธ๋จ ๊ฐ๋ฐ ์ธ์ด๋ฅผ ์ธ์ํ๊ณ ์ต๋ํ๋ ๋ฐ๋ ํ๊ณ๊ฐ ์๊ธฐ ๋ง๋ จ์
๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐ์ ์ํ ์คํ์์ค JVM ๊ธฐ๋ฐ ํ๋ ์์ํฌ, ๋ง์ดํฌ๋ก๋(Micronaut)์ ํตํด ๋ณด๋ค ์์ฝ๊ณ ๊ฐ๋ ฅํ ๋ง์ดํฌ๋ก์๋น์ค ์ดํ๋ฆฌ์ผ์ด์
์ ์ ์ํ ์ ์์ต๋๋ค.
๋ง์ดํฌ๋ก๋ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ๊ด
JVM-Based Micronaut(๋ง์ดํฌ๋ก๋)์ JVM-Based ์ดํ๋ฆฌ์ผ์ด์
์ ์์ ์์ด ์๋ฐ์คํฌ๋ฆฝํธ์ R, Ruby, Python ์ธ์ด๊น์ง GraamVM ๊ธฐ์ ๊ณผ ์ ๋ชฉ์ํจ, ๋งค๋ ฅ์ ์ผ ์๋ฐ์ ์๋ ์ ๋ํฌํ ๊ธฐ์ ์
๋๋ค. ์ด ๊ฐ์์์๋ ์ด๋ฌํ ๋ค์ํ ์ธ์ด (All-in-one language)๋ค์ ์๊ฐํ๋ ์ ๋๋ก ๊ทธ์น์ง๋ง, ๋ค์ํ ์ธ์ด๋ฅผ ํ ๋ฒ์ ์ค์น๋ก ๊ฐ๋ฐํ ์ ์๋ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋ ๋งํผ ๋ค์ํ ์๋น์ค์์์ ์์๋ฅผ ๋ง์กฑ์ํฌ ๊ฒ์
๋๋ค.
๋ง์ดํฌ๋ก๋์ผ๋ก ๊ฐ๋ฐํ๋
์๋ฐ ํด๋ผ์ฐ๋ ์ ํ๋ฆฌ์ผ์ด์
๐ฉ
์ค๋ผํด์์ ์ผ์ฌ์ฐจ๊ฒ ๋ด๋์ ๋ง์ดํฌ๋ก๋ ํ๋ ์์ํฌ๋ ๊ตญ๋ด๋ณด๋ค๋ ๊ตญ์ธ์์ ๋์ฑ ํ๋ฐํ๊ฒ ์ฌ์ฉ๋๊ณ ์์ต๋๋ค. ๋์ฑ์ด ๊ตญ๋ด์์๋ ๊ด๋ จ ๊ฐ์๋ฅผ ์ฐพ์๋ณด๊ธฐ ์ด๋ ค์ ์ฝ๊ฒ ์ ๊ทผํ์ง ๋ชปํ๋ ๊ฒ์ด ํ์ค์
๋๋ค.
JVM-Based Micronaut(๋ง์ดํฌ๋ก๋)์ ์ปดํจํฐ ์ง์นจ์์ธ Computer Instruction ๋ฐํ ์์ ์ ์ํ ์๋ฐ ์ธํฐํ๋ฆฌํฐ์ JavaC ์ปดํ์ผ๋ฌ์ ํ๊ณ๋ฅผ ๋์ด ์ต๋จ ์ปดํ์ผ๊ณผ ์ธํฐํ๋ฆฌํฐ ๊ธฐ์ ์ ๊ฐ์ง ์ปดํ๋ ์ด์
ํ์(Compilation Time)์ ํต์ฌ ํค๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋ฟ๋ง ์๋๋ผ ๋ฏธ๋ฆฌ ์ ์๋ ์๋ฐ ๋น ํด๋์ค๋ค์ ์์ฐํ ์๋ ์์ผ๋ฉฐ, AOT ์ปดํ๋ ์ด์
์ ํฅํ์ฌ ์ต์ ํ๋ ๋ฐํ์ ๊ธฐ์ ์ ๊ฒฝํํ ์ ์์ต๋๋ค.
๋งค๋ ฅ์ ์ธ ๋ง์ดํฌ๋ก๋ ๊ธฐ์ ์ ๋๋๊ณ ์ ๊ฐ์๋ฅผ ๊ธฐํํ์์ต๋๋ค. ๊ตญ๋ด์ ์ต์ด๋ก ๋ง์ดํฌ๋ก๋์ ์๊ฐํ๋ ์ง๋ฆฟํ ๊ฐ๋์ ํจ๊ป ๋๋ฆฌ์๊ธธ ๋ฐ๋ผ๋ ๋ง์๋ ์ด ๊ฐ์๋ฅผ ํตํด ํจ๊ป ์ ํ๊ณ ์ ํฉ๋๋ค.
์ด ๊ฐ์์์๋
์ธ ๊ฐ์ง ํ๋ ์์ํฌ ๊ธฐ๋ฐ ๊ณง ๋ชจ๋ ๊ธฐ์ (Modern), ์๋ฐ ๋ฒ์ถ์ผ ๊ธฐ๋ฐ(JVM-Based), ํ์คํ(Full-Stack) ๊ธฐ๋ฐ ํ๋ ์์ํฌ ๊ธฐ๋ฐ์ผ๋ก ๋ชจ๋๋ฌ ๋น๋ฉํ๋ฉฐ, ๊ฐ๊ฒฐํ ํ
์คํธ ๊ธฐ๋ฐ์ ๋ง์ดํฌ๋ก์๋น์ค ๊ทธ๋ฆฌ๊ณ ์๋ฒ๋ฆฌ์ค ์ดํ๋ฆฌ์ผ์ด์
์ ์ ์ํ๋ ๊ธฐ์ ๋ค์ ๋ฐฐ์ธ ์์ ์
๋๋ค.
๋ชจ๋
ธ๋ฆฌ์ค ์ดํ๋ฆฌ์ผ์ด์
์์ ๋ง์ดํฌ๋ก์๋น์ค ์ดํ๋ฆฌ์ผ์ด์
์ผ๋ก์ ๋ณํ
๋ค์ ๋ด์ฉ์
ํ์ตํฉ๋๋ค ๐
Oracle GraalVM Enterprise Edition 21.2.0 and Java,
Javascript, R, Ruby, Python ๊ธฐ์ ์ ๋์์ ์ ์ํ๋
All-in-one Technology
- 1๏ธโฃ ์ค๋ผํด์์ ์ ๊ณตํ๋ ๋ค์ดํฐ๋ธ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์น ์ดํ๋ฆฌ์ผ์ด์
์ ์
- 2๏ธโฃ ๋ฐฑ์๋ ํด๋ผ์ฐ๋ ๋ฐํ์ ๊ธฐ๋ฐ ์์ ์ค๋ผํด ์์จ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋์ผ๋ก ์น ์ดํ๋ฆฌ์ผ์ด์
์ ์
- 3๏ธโฃ ๋ง์ดํฌ๋ก๋ 3.x ๋ฒ์ ์ ๋ชจ๋ ํ๋ ์์ํฌ ์ต์ ๊ธฐ์ ์ต๋
- 4๏ธโฃ ์๋์ฐ ์ค๋ผํด ๋ฒ์ถ์ผ๋ฐ์ค ์ค์น ๋ฐ ์ฐ๋ถํฌ 20.04 LTS ์ด์์ฒด์ ๊ธฐ์ ์ต๋
๋ ์์๋ณผ๊น์?
์ค๋ผํด ํด๋ผ์ฐ๋ ๊ณ์ ์ธํ
์ ํตํ ์๋ฐ ๊ด๋ จ ๊ธฐ์ ์ต๋ ์ค๋น
์๋ฐ 11 LTS ๋ฒ์ ๋ฐํ ์์ ์น ์ดํ๋ฆฌ์ผ์ด์
๊ตฌํํ๊ณ ์ ํ๋ ์ดํด๋ ฅ ์ฆ๋
์๋ก์ด ๋ถ์ผ๋ก ์ง์
ํ๊ณ ์ ํ๋ ๋ถ๋ค์ ์ํ ๋ง์ดํฌ๋ก๋ 3.x ๊ธฐ์ด ์ดํด
Oracle GraalVM Enterprise Edition 21.2.0 ์ผ๋ก ์๋ฐ 11 ๋ฒ์ ๋ฟ๋ง ์๋๋ผ python, r, ruby, javascript, nodejs, angularjs ๋์์ ๊ฐ๋ฐ ๊ธฐ์ (All-in-one langauges)์ ๋์ ๊ฐ๋ฐ ์ฐฉ์ํ๊ณ ์ ํ๋ ์ด์์ ๊ธฐ์ ์ต๋
๋ง์ดํฌ๋ก๋ ๋ฐ์น (Micronaut Launch)๋ก ๊ทธ๋๋ค๊ณผ ๋ฉ์ด๋ธ ์๋ฐ ํด๋ผ์ฐ๋ ์น ์ดํ๋ฆฌ์ผ์ด์
๊ตฌ์ถ
[์ด๋ก ํธ] ํ๋ก๊ทธ๋จ ์ธ์ด์ ๊ทธ ๋ฒ์ญ ๊ณผ์ , ์๋ฐ ๋ณ์ญ๊ธฐ ์ธํฐํ๋ฆฌํฐ ๊ตฌ์กฐ, ์ปดํจํฐ ์ง์ฒจ์, ์๋ฐ ์ปจ๋ฒํธ ๋๊ตฌ์ธ ์๋ฐ ์ปดํ์ผ๋ฌ์ ์ธํฐํ๋ฆฌํฐ ๊ทธ๋ฆฌ๊ณ ๊ทธ ํ๊ณ
[์ค์ตํธ] ๋น์ฃผ์ผ ์์ค ์ฝ๋ (VS Code) IDE ํด์ ๊ฐ์ง๊ณ ๋ฏธ๋ ํ๋ก์ ํธ 2๊ฐ ( ๋ํ๋์ ์ธ์ ์
:DI, ๋ํ๋์ ์ญ์ ์ด ์๋ฆฌ : DIP)
์ค๋ผํด ์์จ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค(Oracle Autonomous Database) ์ค๋ผํด ํด๋ผ์ฐ๋ ์ธํ๋ผ์คํธ๋ญ์ณ (OCI) ๊ธฐ์ ์ต๋ ๋ฐ ๊ฐ๋ฐ ์ฒ๋ฆฌ
Intellij ํด์ ์ด์ฉํ ์๋ฐ ํด๋ผ์ฐ๋ ์น ์ดํ๋ฆฌ์ผ์ด์
์ ์
์ ๋์ค ๋ฐํ ์ด์ ์์คํ
์์ ๋ฉํฐ ์ํํธ์จ์ด ๊ฐ๋ฐ ํด ํจ๋ด๋ฐฉ์์ ํด Sdkman ๊ณผ์ ๊ฟํ
๊ฐ์ ํ ํธ์ผ๋ก ์์ฑํ๋ ์ฌ์ธ์ ํ
ํฌ๋๋ก์ง โ
- ๊ทธ๋ VM ๊ณ ์ฑ๋ฅ ๋ฐํ์์ ์ค์นํ๋ฉด์ ์ ์ด๋ ์๋ฐ๋ฅผ ํฌํจํ 5๊ฐ์ง ๋ค์ํ ์ธ์ด๋ค (Java, Javascript, R, Ruby, Python) ์ ์ค์นํ๊ณ ์ ์ํ ๊ธฐ์ ์ ์ต๋ํ๊ฒ ๋ฉ๋๋ค.
- ์ค๋ผํด ํด๋ผ์ฐ๋ ๊ณ์ ์ ๋ฌด๋ฃ๋ก 30์ผ ํํ์ ๋๋ฆฌ๋ฉด์ ๋์์ 30์ผ์ด ๋๋ฉด ๋ง์ดํฌ๋ก๋ ์ดํ๋ฆฌ์ผ์ด์
์ ์์ ํ์๋ฌด๋ฃ์ ํด๋ผ์ฐ๋์์ ์ ๊ณตํ๋ IP๋ฅผ ๋ฌด๋ฃ๋ก ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
- ๊ทธ๋VM ๋ค์ดํฐ๋ธ ์ด๋ฏธ์ง ๊ธฐ์ ์ ํตํ ์๋ฐ ์น ์ดํ๋ฆฌ์ผ์ด์
์ ์์ ๋ฌผ๋ก , ์ถํ ์๋ฐ์คํฌ๋ฆฝํธ ์ดํ๋ฆฌ์ผ์ด์
์ ์๊น์ง ํ ์ ์๋ ์ ์ฌ๋ ฅ์ ๊ธฐ๋ฅด๊ฒ ๋ฉ๋๋ค.
- ๋ง์ดํฌ๋ก๋์์ ์ค๋ผํด ์์จ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ์ฒ๋ฆฌ, DB ์ธ์คํด์ค ์์ฑ ์ธํ
๊ณผ ์คํค๋ง ์์ฑ ๊ตฌํ ๋ฐ ์ค๋ผํด ์ ์ ์ง๊ฐ (OKV) ์ค์ ์ง์คํ ํค ๊ด๋ฆฌ ํ๋ซํผ์ผ๋ก ๊ธ๊ณ ์ ์ํธํค ์์ฑ ์ฒ๋ฆฌ ๊ธฐ์ ์ ํ์ตํฉ๋๋ค.
- ๋ง์ดํฌ๋ก๋์์ ์ ๊ณตํ๋ ๋ง์ด๊ทธ๋ ์ด์
ํด์ธ ๋ง์ดํฌ๋ก๋-ํ๋ผ์ด์จ์ด ํด์ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ๋ฐ ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์
๋ฐฉ๋ฒ๊ณผ SQL ๋ง์ด๊ทธ๋ ์ด์
์คํฌ๋ฆฝํธ ์์ฑ ๊ธฐ์ ์ ์ต๋ํฉ๋๋ค.
๐ ๊ทธ๋ฆฌํ์ฌ ๋ค์ ํ๋ก๊ทธ๋จ ์ธ์ด๋ก ๊ฐ๋ฐ (Ployglot Programming to write ployglot applications as truffle) ๊ฐ๋ฅํ ํธ๋ฆฌํ ์ธ์ด ๊ตฌํ ํ๋ ์์ํฌ ๊ฐ๋ฐ์๋ก ํ ๋จ๊ณ ์ง๋ณด๋ ๊ฐ๋ฐ ์ํ ๋ฅ๋ ฅ์ ํฐ๋ํ ์ ์์ต๋๋ค.
์์ธ ์ปค๋ฆฌํ๋ผ ๐
1~2) ๋ง์ดํฌ๋ก๋ ์๊ฐ์ ์ดํ๋ฆฌ์ผ์ด์
์ฌ์ ์์
JVM ๊ธฐ๋ฐ ํ๋ ์์ํฌ์ด์ ๋ชจ๋ ํ๋ ์์ํฌ ์ค ํ๋์ธ ๋ง์ดํฌ๋ก๋์ ๋ํ ์ดํด์ ์ ์ ๊ทธ๋ฆฌ๊ณ ์๋ฒ๋ ์ค ์ดํ๋ฆฌ์ผ์ด์
(Serverless Application) ๋น๋๋ฅผ ์ค์ฌ์ผ๋ก ์์ฝ๊ฒ ์ ์ํ๋ ํ
์คํธ์ฉ ๋ง์ดํฌ๋ก์๋น์ค๊ณผ ๋ชจ๋ ์ ์์ ์
๋ฌธํ๊ฒ ๋ ๊ฒ์
๋๋ค.
3) ๊ทธ๋๋ค ๋น๋ ํด(Gradle Build Tool)๊ณผ ํจ๊ป ํ๋ ๋ง์ดํฌ๋ก๋ ์น ์ดํ๋ฆฌ์ผ์ด์
- ํฌ๋ก ๋ฏธ๋ ํ๋ก์ ํธ ์ ์ (Back-End)
4) ์์กด์ฑ ์ฃผ์
๊ณผ DIP ๊ธฐ์ ๋ก ๊ตฌํ๋ ๋ฏธ๋ ํ๋ก์ ํธ ๊ตฌํ
ํ์ด๋ ๋ฒจ ํ๋ก๊ทธ๋จ ์ธ์ด์ ๋ก์ฐ ๋ ๋ฒจ ํ๋ก๊ทธ๋จ ์ธ์ด์์ ์์กด์ฑ์ ๋ํ ์ ํํ ์๋ฏธ๋ฅผ ์ง๋จ ๋ฐ ํ๊ณ๋ฅผ ์ค๋ช
ํ๊ณ ๊ทธ ์์ ๋ฅผ ํตํ์ฌ DI, DIP (IoC)์ ๋ํ ์ดํด๋ ฅ์ ๊ธธ๋ฌ์ฃผ๋ ํต์ฐฐ๋ ฅ์ ์ง์ด์ค ๊ฒ์
๋๋ค.
5) ๊ทธ๋VM ์ํฐํ๋ผ์ด์ฆ 21.2.0 ์๊ฐ ๋ฐ ์ค์น
๋ฆฌ๋
์ค์ฉ ๊ทธ๋VM ์ํฐํ๋ผ์ด์ฆ 21.2.0 ๋ฒ์ ์ด ๊ฐ์ง JDK ๋ฐ ๋ค์ํ ์ ํธ๋ฆฌํฐ์ ๋ฐํ์๋ค์ ์๊ฐํ๋ฉด์ ํต์ฌ ์ปดํฌ๋ํธ๋ฅผ ํ๋ํ๋ ๊ฐ๋ต์ ์ผ๋ก ์ค๋ช
ํ๋ฉด์ ์ฐ๋ถํฌ ๋ฐํ์ ํ๊ฒฝ๋ณ์ ์ค์ ๊ณผ ํจ๊ป ์ค์น ๋ฐ ์คํ ๊ณผ์ ์ ์์ธํ ์ค๋ช
ํ ์์ ์
๋๋ค.
6) ์ค๋ผํด ํด๋ผ์ฐ๋ ๊ณ์ ์์ฑ ๋ฐ ์ค๋ผํด ์์จ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ (์คํค๋ง ์์ฑ ๋ง์ด๊ทธ๋ ์ด์
)
7) ์๋ฐ ํด๋ผ์ฐ๋ ๋ง์ดํฌ๋ก๋ ์ดํ๋ฆฌ์ผ์ด์
์ ์
REST API ๊ตฌํ ์ฒ๋ฆฌ ๋ฐํ์ผ๋ก ๋ง์ดํฌ๋ก๋ ๋ฐ์ดํฐ ๋ํ์งํ ๋ฆฌ ์ฟผ๋ฆฌ ๊ตฌํ์ ์์์ผ๋ก ๋ง์ดํฌ๋ก๋ ๋ฐ์ดํฐ ์ํฐํฐ ์ ์ ๋ฐ UUID, Many to one ํ
์ด๋ธ ๊ตฌ์ฑ ์ ์๊ณผ DTO (Data Transfer Object)๊ธฐ์ ์ ์ฉํ์ฌ ๊ฐ๋จํ ๋ฏธ๋ ํ๋ก์ ํธ ๊ตฌํ์ ์ ์ํ ๊ฒ์
๋๋ค.
8) ๊ทธ๋VM ๋ค์ดํฐ๋ธ ์ด๋ฏธ์ง ๊ธฐ์ ์ ์ฉ ๋ฐ ์ค๋ผํด ํด๋ผ์ฐ๋์ ๋ํ๋ก์ด
์๋ฐ ํด๋ผ์ฐ๋ ์ดํ๋ฆฌ์ผ์ด์
์์ค ์ ๋ถ๋ฅผ ๋ง๋ธ์์ ์ฌ์ฉํ๋ jar file ์์ถ ๊ธฐ์ ์ ํ ๋๋ก ์์ถํ์ฌ ์๋ฐ ํด๋ผ์ฐ๋ ์ธํ๋ผ์คํธ๋ญ์ณ์ ๋ํ๋ก์ดํ๋ ์์
์ ๋ฐ ์ฌํญ์ ๊ณต์ ํ ๊ฒ์
๋๋ค.
Q&A ๐ฌ
Q. ๋ง์ดํฌ๋ก๋์ ๋ฌด์์ธ๊ฐ์? ์คํ ์์ค์ธ ์คํ๋ง์ด๋ ๋ค๋ฅธ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ ๋น์ทํ๊ฐ์?
๋ง์ดํฌ๋ก๋์ ์๋ฐ ๋ฒ์ถ์ผ ๋จธ์ ๊ธฐ๋ฐ ์คํ์์ค ์ํํธ์จ์ด ํ๋ ์์ํฌ(JVM-based software framework )์
๋๋ค. ๋ฌผ๋ก ๊ฐ๋ฒผ์ด ๊ฒฝ๋์ ํ๋ ์์ํฌ(lightweight) ๋น๋๋ก ๊ตฌ์ถ ๊ฐ๋ฅํ๋ฉฐ ๋ชจ๋๋ฌ ์ดํ๋ฆฌ์ผ์ด์
(Modular application) ๋น๋๋์ด, ๋์์ ๋ง์ดํฌ๋ก์๋น์ค ๊ธฐ๋ฐ(Microservices) ์ดํ๋ฆฌ์ผ์ด์
์ ์ํ ์ ์๋ ์๋ฐ ํ๋ ์์ํฌ์
๋๋ค. ์ ์ ๋ฉ๋ชจ๋ฆฌ ํํ๋ฆฐํธ์ด๋ฉฐ ๋จ์๊ฐ ์คํํธ์
ํ์์ ์๋ํฉ๋๋ค. ๊ฒฝ์์ ์คํ๋ง์ ๋น๋กฏํ ๋ค๋ฅธ ์น ๊ธฐ๋ฐ ํ๋ ์์ํฌ๋ณด๋ค ๋ฌด๋ ค 2๋ฐฐ๋ ๋น ๋ฅด๋ต๋๋ค.

Q. ๋ง์ดํฌ๋ก๋์ ๋ฐฐ์ฐ๋ฉด์ JVM์ ๋ํ ์ดํด๊ฐ ํ์ํ๊ฐ์?
๋ค, ๋น์ฐํ ๊ธฐ๋ณธ ์ง์์ด ํ์ํฉ๋๋ค. ์๋ฐ ๊ธฐ์ ์์ 2000๋
๋ ์ฒ๋ฆฌ ์๋์ ์ฒ๋ฆฌ๋์ ๋ฌด์ฒ ํฅ์๋์์ผ๋ฉด์๋ ๋์์ ๋ฌด๊ฑฐ์์ง๋ ์ํฐํ๋ผ์ด์ฆ๊ฒฉ ์ดํ๋ฆฌ์ผ์ด์
์ ๋ฐ๋ผ๊ฐ์ง ๋ชปํฉ๋๋ค. 1950๋
๋๋ถํฐ ๋ด๋ ค์จ ์๋ฐ์ C์ธ์ด๋ฅผ ๋น๋กฏํ ๋ค์ํ ์ธ์ด๋ค์ ์ธ๊ฐ ์ฝ๋์ ๋จธ์ ์ธ์ด ์ฌ์ด๋ก ๋งค๊ฐ์ฒด, ์ปดํจํฐ ์ง์นจ์์ ํต์ญ(Interpretation)์ ๋ํ ์ดํด๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉด ์ ์ตํ ๊ฐ์ ์ต๋์ด ๋ ๊ฒ์ด๋ฉฐ, ๋์์ Converting Process, Compiler, JVM ๊ณผ ๋๋ถ์ด JIT Compiler ์ ๋ํ ์ฉ์ด์ ์ ์๋ ๊ฐ๋ฐ์๋ค์๊ฒ๋ ์ ์ตํ ์๊ฐ์ด ๋ ๊ฒ์
๋๋ค. ๋์์ ์คํ๋ง์์ ๋น ์ง์ง ์๋ ์์กด์ฑ ๊ธฐ์ ๊ณผ ์์กด์ฑ ์ฃผ์
๊ทธ๋ฆฌ๊ณ IoC์ ๋ํ ์ดํด๋ ฅ ์ญ์ ๊ธฐ์
์์ ๋ค๋ฃจ์ด์ผ ํ ๊น์ ์ง์๊ณผ ์ดํด๋ ํ์ ๋ถ๊ฐ์
๋๋ค.

Q. GraalVM ์ํฐํ๋ผ์ด์ฆ 21.2.0 ๊ณผ ์๋ฐ JDK 11๊ณผ ์๋ก ๋ค๋ฅธ๊ฐ์?
๋ ๊ฐ์ง๋ ์๋ก ๋ถ๊ฐ๋ถ์ ๊ด๊ณ์
๋๋ค. ์ค๋ผํด์์ ๋ ํ๋ก์ ํธ๋ฅผ ๋์์ ์งํํ๊ณ ์์ผ๋ฉฐ, GraalVM์ ์๋ฐ JDK 11๋ฟ๋ง ์๋๋ผ JDK 17๊น์ง ํฌํจ๋์ด ์์ต๋๋ค. ๋ฌผ๋ก ์ค์น๊ณผ์ ์์ ์ฌ์ฉ์๋ ๊ฐ๋ฐ์๋ค์ด JDK ๋ฒ์ ์ ๋ฏธ๋ฆฌ ์ ํํ์ฌ ๋ค์ด๋ฐ์ ์ฌ์ฉ๊ฐ๋ฅํฉ๋๋ค. ๋ฌผ๋ก JDK 11์ ์ค์นํ๊ณ ๋๋ฉด GraalVM์ ๋ณ๋๋ก ์ค์นํ ํ์ ์์ง๋ง ํต์ GraalVM ์ํฐํ๋ผ์ด์ฆ (์ ๋ฃ์ด์๋ง ๊ฐ๋ฐ์ฉ์ผ๋ก ๊ฐ๋ฅ)๋ฅผ ์ค์นํ๋ฉด ์๋์ผ๋ก JDK๋ฅผ ์ค์น๋ ๊ฒ์ด๋ ๋ฉํฐ๋ก ๊ฐ๋ฐ๊ฐ๋ฅํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ง์ R, Ruby, Python, Javascript (NodeJS/Vue.JS/AngularJS/ReastJS) ๋ชจ๋ ๋์์ ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ฅผ Polyglot ์ด๋ผ๊ณ ํ์ฃ .

Q. ์ค๋ผํด ์์จ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค(Oracle Autonomous Database)๋ ๋ฌด์์ธ๊ฐ์?
2017๋
์ฒซ์ ์ ๋ณด์ธ ์ด๋ ์ค๋ผํด ์์จ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํ๋ ์๋ํ๋ ์ต์ ์ ์ฑ๋ฅ์ ์๋ํํ ์ด์์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์
๋๋ค. ๋ง์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์์ ์ฑ๋ฅ ์ ํ ๋ฐฉ์ง์ฉ ํ๋ ์ ๋ฌธ๊ฐ๋ค์ ํ์๋ก ํ ๊ธฐ์
๋ค๋ก์๋ ๋ง์ ๋น์ฉ์ด ๋ค๊ฒ ์ง๋ง, ์ด ์์จ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ํ๋ ์์
์ ์๋ํ ํ์ฌ ์ง์์ ์ผ๋ก ์ํํ๊ฒ ๋๋ ์ด์์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์
๋๋ค. ๋ํ ๋๋ฒ์งธ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ์ ๋ํ ์๋น์ค๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช
CPU ๊ฐฏ์, ์คํ ๋ฆฌ์ง ์ฉ๋, ์ค๋ผํด ์ํธ ๊ด๋ฆฌ๋ฅผ ๋ชจ๋ 1๋ถ ๋ด์ ์์ฑํ๋ ํ์์ ์ธ ์ ์์ฑ์ ์ง๋๋๋ค. ์ธ๋ฒ์งธ๋ก ์ด์์๊ฐ์ ์๋ก์ด ๋น์ง๋์ค ๋ถ์ ์๊ฑด์ ๋ฐ๋ผ ์ปดํจํ
ํ์์ ์คํ ๋ฆฌ์ง ํ์ฅ์ ๊ฐ๋จํ ๋ช ๊ฐ์ ํด๋ฆญ์ผ๋ก ํ์ฅ ๊ฐ๋ฅํ ๋ฌด์ค๋จ ํ๋ ฅ์ฑ์ ์ง๋๋๋ค. ๋ง์ง๋ง์ผ๋ก ๋จธ์ ๋ฌ๋์ ์ ๊ณตํ๋ SQLNote๋ก ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ถ์ํ๋ ๋น์ง๋์ค์ ๋ฏผ์ฒฉ์ฑ์ ํจ๊ณผ๋ฅผ ๋ฐํํ๊ณ ์๋ ์ ๊ธฐ์ ์ด๊ธฐ๋ ํ์ฃ .
