์ธํ์ฝ 2022์ ํธ์ฆ์จ ์ธ์
์
๊ฐ์๋ก ๋ง๋๋ณด์ธ์! ๐ฅฐ
์ฝํ๋ฆฐ ๋ฉํฐํ๋ซํผ, ๋ฏธ์ง์์ ์กฐ์ฐ โจ
์ฝํ๋ฆฐ์ ์์ ์ฑ, ๊ฐ๊ฒฐ์ฑ, ์ํธ ์ด์ฉ์ฑ์ ๊ฐ์กฐํ๋ ๋ฉํฐ-ํจ๋ฌ๋ค์, ๋ฉํฐ-ํ๋ซํผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก 2016๋
2์ ์ฒ์์ผ๋ก ๊ณต๊ฐ๋์์ต๋๋ค. ์ฝํ๋ฆฐ์ ์๋ฐ์ ๋ํด ๋ ๋์ ๋์์ ์ ๊ณตํ๋ ค๋ ๋ชฉ์ ์ผ๋ก ์์ํ์ผ๋, ๊ทธ๋์ ํฌ๊ฒ ์ฑ์ฅํ์ฌ ์๋๋ก์ด๋, ๋ฐ์คํฌํฑ, ์๋ฒ ์ธก ์๋ฃจ์
๋ฑ ์ฌ๋ฌ ๊ฐ๋ฐ ๋ถ์ผ์์ ํ์ฉ๋๊ณ ์์ต๋๋ค.
์์ ๋งํด๋๋ ธ๋ฏ์ด ์ฝํ๋ฆฐ์ ๋ฉํฐ-ํ๋ซํผ์ ์ง์ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์
๋๋ค. ์ฝํ๋ฆฐ์ ์ด๋ฏธ JVM(Java Virtual Machine)์ ์ง์ํ๋ ํ๋ซํผ์์ ์ ์๋ํ๋ฉฐ JVM์ ์ง์ํ์ง ์๋ ํ๋ซํผ์์๋ Kotlin Native๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. Kotlin Native๋ Kotlin์ iOS๋ MacOS, ๊ทธ๋ฆฌ๊ณ Windows ๋ฐ Linux์์ ์คํ๋๋ ๋ฐ์ด๋๋ฆฌ๋ก ์ปดํ์ผํฉ๋๋ค. ์น์์ JavaScript ๋ฐ HTML๋ก ์ปดํ์ผํฉ๋๋ค. ์ด๋ฅผ ์ด์ฉํด ์ฝํ๋ฆฐ ์ฝ๋๋ฅผ ๊ณต์ ํ๋ ๋จ์ผ ์ฝ๋๋ฒ ์ด์ค๋ก ๋ชจ๋ฐ์ผ๋ถํฐ ์น๊ณผ ๋ฐ์คํฌํฑ, ์๋ฒ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ฉํฐํ๋ซํผ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํ ์ ์์ต๋๋ค.
๋ณธ ๊ฐ์์์๋ ์ฝํ๋ฆฐ ๋ฉํฐํ๋ซํผ๊ณผ ํจ๊ป ๋ฆฌ์กํธ์ ์คํ๋ง์ผ๋ก ํ๋์ ์์ ํ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๋ง๋ค์ด๋ด
๋๋ค. ์ฐธ๊ฐ์๋ ์ฝํ๋ฆฐ ๋ฉํฐํ๋ซํผ ํ๋ก์ ํธ๋ฅผ ์ดํดํ๊ณ , ๋ ๋์๊ฐ ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ๊ณต์ ๋ก์ง ์์ฑ, Kotlin/JS ๊ธฐ๋ฐ ๋ฆฌ์กํธ ๋ฐ Kotlin/JVM ๊ธฐ๋ฐ ์คํ๋ง ์น ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋ณ๊ฒ ๊ฒฝํํ ์ ์์ต๋๋ค.
๊ฐ์๋ฅผ ํตํด ์ฌ๋ฌ๋ถ๊ณผ ํจ๊ป ๋ง๋ค์ด๋ณผ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฌ์ฉ์๊ฐ ํ ์ผ์ ๋ฑ๋ก ๋๋ ๋ณ๊ฒฝํ๊ณ , ์๋ฃ๋ ์ญ์ ๋ฅผ ํ ์ ์๋ ํ ์ผ ๊ด๋ฆฌ ์ ํ๋ฆฌ์ผ์ด์
์
๋๋ค. ์ด ์ ํ๋ฆฌ์ผ์ด์
์ ํต์ฌ์ ์ธ ๋๋ฉ์ธ ๋
ผ๋ฆฌ๋ ํ ์ผ์ด๋ผ๋ ๋ชจ๋ธ์ ์ ์ํ๊ณ , ํด๋น ๋ชจ๋ธ์ ์ ์ฅ์์ ์ ์ฅํ๊ฑฐ๋ ๊บผ๋ด์ค๋ ํ์๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ๋๋ฉ์ธ ๋
ผ๋ฆฌ๋ฅผ ์กฐ์ํ๊ธฐ ์ํ ์ฌ์ฉ์ ์ธํฐํ์ด์ค์, ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์น ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ๋ก์ง์ ์์ฑํด์ผ ํฉ๋๋ค.
๋ค๋ง ์์ ์ธ๊ธ๋ ๋ชจ๋ ์๊ตฌ์ฌํญ์ ๋ง์กฑํ๋ ์ฝ๋๋ฅผ ์ฒ์๋ถํฐ ๋๊น์ง ์ง์ ์์ฑํ๋ค ๋ณด๋ฉด ์์ฒญ๋ ์๊ฐ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๊ฐ์์์๋ ์ฌ์ ์ ์์ฑํด๋ ํ
ํ๋ฆฟ ํ๋ก์ ํธ์ ์ฝ๋ ์กฐ๊ฐ์ ์์ฑํด๋๊ฐ๋ ๋ฐฉ์์ผ๋ก ์งํํฉ๋๋ค.
๐ข ์๊ฐ ์ ์ฐธ๊ณ ํด์ฃผ์ธ์!
- ๋ณธ ๊ฐ์๋ ์ธํ์ฝ 2022์์ ์งํํ๋ ํธ์ฆ์จ ์ธ์
์ธ <์ฝํ๋ฆฐ ๋ฉํฐํ๋ซํผ, ๋ฏธ์ง์์ ์กฐ์ฐ>๋ฅผ ๋ณดํธ์ ์ธ ๊ฐ์ ํ์์ผ๋ก ์ ์ํ์์ ์๋ ค๋๋ฆฝ๋๋ค.
- ์ด ๊ฐ์๋ ์ฝํ๋ฆฐ ์ธ์ด์ ํน์ง๊ณผ ๋ฌธ๋ฒ์ ์ดํดํ๊ณ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์น ๊ธฐ์ ์ ๋ํ ์ดํด๊ฐ ์๋ ๋ถ์ ๋์์ผ๋ก ํฉ๋๋ค. ์์ฑํ๋ ์ฝ๋์ ์๋๋ ๋์ ๊ณผ์ ์ ์ค๋ช
ํด ๋๋ฆฌ์ง๋ง, ๋ฆฌ์กํธ๋ ์คํ๋ง์ ๋ํด์๋ ์๋ ค๋๋ฆฌ์ง๋ ์์ต๋๋ค.
Kotlin Multiplatform ๐ค
์ฝํ๋ฆฐ์ ๋ฉํฐํ๋ซํผ์ ์ง์ํ๋ ์ธ์ด๋ก JVM ๊ธฐ๋ฐ Server-side ๋ฐ Android๋ฟ๋ง ์๋๋ผ JavaScript ์์ง์ด ์๋ ๋ธ๋ผ์ฐ์ ๋ Node.js, ๊ทธ๋ฆฌ๊ณ iOS, Linux, Windows ๋ฑ ์ฌ๋ฌ ๊ฐ์ง Native ํ๋ซํผ์์๋ ์ธ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ด์ฉํด ์ฝํ๋ฆฐ ์ฝ๋๋ฅผ ๊ณต์ ํ๋ ๋จ์ผ ์ฝ๋๋ฒ ์ด์ค๋ก ๋ชจ๋ฐ์ผ๋ถํฐ ์น๊ณผ ๋ฐ์คํฌํฑ, ์๋ฒ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ฉํฐํ๋ซํผ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํ ์ ์์ต๋๋ค.
์ฝํ๋ฆฐ๊ณผ ์ฝํ๋ฆฐ ๋ฉํฐํ๋ซํผ์ ๋ํ ๋ ์์ธํ ๋ด์ฉ์ด ๊ถ๊ธํ์๋ค๋ฉด ์ด๊ณณ์์ ๋ณผ ์ ์์ต๋๋ค.
ํ์ต ํ๊ฒฝ ๐ฅ๏ธ
ํ์ต ๊ณผ์ ์์ ์ฌ์ฉํ๋ ์ธ์ด ๋ฐ ํ๋ ์์ํฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๊ตฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Kotlin 1.6.x (with Java 11)
- Share common-code
- Common Kotlin
- Kotlin Coroutines
- Kotlin Serialization
- Kotlin Logging
- Kotlin Test
- Client (Front-end)
- Kotlin/JS
- React 18.0.x
- MUI 5.6.x
- Emotion 11.9.x
- Ktor 2.0.x
- Server (Back-end)
- Kotlin/JVM
- Spring WebFlux 5.2.x
- Spring Data R2DBC 1.4.x
- Spring Boot 2.6.x
- Kotest 5.0.x (with JUnit 5)
์ง์๊ณต์ ์ ์๊ฐ โ๏ธ
- ์คํ๋ง๋ฌ๋(SpringRunner)๋ฅผ ์๊ฐํฉ๋๋ค.
์คํ๋ง๋ฌ๋๋ ์คํ๋ง ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋๋ฐ ํ์ํ ์ง์๊ณผ ๊ฒฝํ์ ์์ ์ ์๋๋ก ๋๋ ํธ๋ ์ด๋ ํ์
๋๋ค.
์คํ๋ง ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๊ธฐ ์ํด์๋ ์๊ฐ๋ณด๋ค ๋ง์ ํ์ต๊ณผ ๋
ธ๋ ฅ์ด ํ์ํฉ๋๋ค. ์์ ๊ณผ ์จ๋ผ์ธ ๊ต์ก ๋ฑ์ ํตํด ์คํ๋ง์ ๊ธฐ์ ์ ์ธ ์ธก๋ฉด์ ํ์ตํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด๋ ๊ฒ ํ์ต์ ํตํด ์์ ์ง์๋ง์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์
์ ๊ฐ๋ฐํ๋ ค๊ณ ํ๋ฉด ๋ง๋งํจ์ ๋๋ผ๊ฒ ๋ฉ๋๋ค. ์คํ๋ง์ด ์ ๊ณตํ๋ ๊ธฐ๋ฅ ์ฌ์ฉ๋ฒ์ ๋ฐฐ์ ์ง๋ง, ์คํ๋ง ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ ๊ฒฝํ์ ๊ฐ์ง์ง ๋ชปํ๊ธฐ ๋๋ฌธ์
๋๋ค.
์ฐธ๊ฐ์๊ฐ ์คํ๋ง ํ๋ ์์ํฌ(Spring Framework), ์คํ๋ง ๋ถํธ(Spring Boot) ๋ฑ ์คํ๋ง ์ํ๊ณ์์ ์คํ๋ง ์๋ ์๋ฆฌ์ ์ฌ์ฉ๋ฒ์ ๋ฐฐ์ฐ๊ณ ๊ฑฐ๊ธฐ์ ๋ ๋์๊ฐ ์ค๋ฌด์ ์ ์ฉํ ์ ์๋ ์คํ๋ง ๊ธฐ๋ฐ ์ ํ๋ฆฌ์ผ์ด์
ํ๋ก๊ทธ๋๋ฐ์ ์ตํ ์ ์๋๋ก ์คํ๋ง๋ฌ๋๊ฐ ๋์๋๋ฆฝ๋๋ค.
์คํ๋ง๋ฌ๋(SpringRunner)๋ โ์คํ๋ง(Spring) + ๊ฐ์ด๋ ๋ฌ๋(Guide Runner)โ๋ฅผ ํฉํด ๋ง๋ค์ด์ง ์ด๋ฆ์
๋๋ค.