์‹ค์ œ ํ”„๋กœ์ ํŠธ ์‹ค์Šต์„ ํ†ตํ•ด ๋ฐฐ์šฐ๋Š” ์ฝ”ํ‹€๋ฆฐ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค

Kotlin์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์ธ Ktor์„ ํ™œ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  Kotlin์„ ๋งˆ์Šคํ„ฐ ํ•ด๋ด์š”! ๐Ÿ˜†

(4.7) ์ˆ˜๊ฐ•ํ‰ 15๊ฐœ

์ˆ˜๊ฐ•์ƒ 80๋ช…

๋‚œ์ด๋„ ์ž…๋ฌธ

์ˆ˜๊ฐ•๊ธฐํ•œ ๋ฌด์ œํ•œ

์‹ค์Šต ์ค‘์‹ฌ
์‹ค์Šต ์ค‘์‹ฌ
์‹ค์Šต ์ค‘์‹ฌ
์‹ค์Šต ์ค‘์‹ฌ
์นด์นด์˜ค์Šคํƒ€์ผ
์นด์นด์˜ค์Šคํƒ€์ผ
SK๊ทธ๋ฃน
๊ต๋ณด๋ฌธ๊ณ 
์‚ฌ๋žŒ์ธ

์‚ฌ๋žŒ์ธ

์ž„์ง์›๋“ค๋„ ์ด ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์žˆ์–ด์š”!

์นด์นด์˜ค์Šคํƒ€์ผ
์นด์นด์˜ค์Šคํƒ€์ผ
SK๊ทธ๋ฃน
๊ต๋ณด๋ฌธ๊ณ 
์‚ฌ๋žŒ์ธ

์‚ฌ๋žŒ์ธ

์ž„์ง์›๋“ค๋„ ์ด ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์žˆ์–ด์š”!

๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ˆ˜๊ฐ•์ƒ๋“ค์˜ ํ›„๊ธฐ

4.7

5.0

devHand

60% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

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

5.0

๊ฐœ๋ฐœ ์ž˜ํ•˜๊ณ  ์‹ถ๋‹ค...

70% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

๋ ˆ์ „๋“œ ๊ฐ•์˜.. ๋•๋ถ„์— ๊ฐœ๋ฐœ ์ž˜ํ•˜๊ฒŒ๋˜์—ˆ๋‹ค.

5.0

Hoos

30% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

์•„์ง ์กฐ๊ธˆ ์ˆ˜๊ฐ•์„ ํ•˜์˜€๋Š”์ง€๋งŒ.. ๋ญ˜๊นŒ ์ด ์˜†์—์„œ ๊ฐ™์ด ํŽ˜์–ด์ฝ”๋”ฉํ•˜๋Š” ๋А๋‚Œ์˜ ๊ฐ•์˜๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ๊ต‰์žฅํžˆ ๋ง˜์— ๋“œ๋Š” ๊ฐ•์˜๊ณ  ๊พธ๋ฐˆ์—†์ด ํ•จ๊ป˜ ๋””๋ฒ„๊น…๋„ ํ•˜๋ฉฐ ๊ตฌ์„ฑ์ด ๋˜์–ด์žˆ์–ด์„œ ์‹ค๋ฌด์ ์ธ ๋А๋‚Œ์ด ๋‚˜๋Š” ๊ฐ•์˜์ธ๊ฑฐ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ˆ˜๊ฐ• ํ›„ ์ด๋Ÿฐ๊ฑธ ์–ป์„ ์ˆ˜ ์žˆ์–ด์š”

  • Kotlin

  • Ktor

  • MySQL

  • Kotlin์—์„œ์˜ ์˜์†์„ฑ

  • PasetoToken

  • ์•”ํ˜ธํ™”

ktor & Kotlin by JetBrain

Kotlin์˜ ๋งค๋ ฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๋ฉฐ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฐ•๋ ฅํ•˜๊ฒŒ ๊ฒฐํ•ฉํ•˜๋Š” ์„œ๋ฒ„ ๊ฐ•์˜๋ฅผ ์ฐพ์œผ์‹ ๋‹ค๋ฉด, ํ•ด๋‹น ๊ฐ•์˜๋ฅผ ํ•„ํžˆ ์ฐธ๊ณ ํ•ด ์ฃผ์‹œ๊ณ , ์ด๋Ÿฐ ๋ถ„๋“ค์ด๋ผ๋ฉด ์ด ๊ฐ•์˜๋Š” ํ•„์ˆ˜๊ฐ€ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Spring Boot๋งŒ ์•Œ๊ณ  Kotlin์€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์–ด์š”

  • ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•œ์ง€ ์–ผ๋งˆ ์•ˆ๋˜์–ด์„œ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ํ•˜๊ณ  ์‹ถ์–ด์š”

  • ๊ณต๋ถ€๋ฅผ ํ•˜๊ธฐ๋Š” ํ•ด์•ผ ํ•˜๋Š”๋ฐ ๋ฌด์—‡์„ ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์š”

  • ๋ฌผ๊ฒฝ๋ ฅ์œผ๋กœ ๊ฐœ๋ฐœ์ž ์ปค๋ฆฌ์–ด๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์•„์š”.

์ด ๊ฐ•์˜์—์„œ๋Š” Kotlin์˜ ๊ฐ€์žฅ ๊ฑฐ๋Œ€ํ•œ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ์ธ Ktor์„ ํ™œ์šฉํ•˜์—ฌ ๊ณ ์„ฑ๋Šฅ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•จ๊ป˜ ๊ตฌํ˜„ํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ ํ†ตํ•ด ์‹ค์ œ ์‹ค๋ฌด์— ์ ์šฉ ํ•˜์‹ค ์ˆ˜๋„ ์žˆ๊ณ , ๊ณต๋ถ€๋ฅผ ํ•˜๋Š”๋ฐ์— ์žˆ์–ด์„œ ์ง€์นจํ‘œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๊ฐ•์˜๋กœ ๊ตฌ์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

Ktor์€ ์ด๋Ÿฌํ•œ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์š”.

Kotlin and Coroutines

Ktor๋Š” Kotlin๊ณผ Coroutines๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ฒ˜์Œ๋ถ€ํ„ฐ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ฉ€ํ‹ฐํ”Œ๋žซํผ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ง๊ด€์ ์ธ ๋ช…๋ นํ˜• ํ๋ฆ„์œผ๋กœ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๊ฐ•๋ ฅํ•จ์„ ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Lightweight and Flexible

Ktor๋Š” ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์กฐํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, Ktor๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ํ™•์žฅํ•˜๋Š” ๊ฒƒ๋„ ๋งค์šฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.

Built and backed by JetBrains

IntelliJ IDEA, Kotlin ๋“ฑ์„ ๋งŒ๋“  JetBrains์—์„œ ์ œ๊ณตํ•˜๋Š” Ktor๋Š” ๊ณ ๊ฐ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ JetBrains ๋‚ด๋ถ€์—์„œ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ตœ์ƒ๊ธ‰์˜ ๋„๊ตฌ ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค!

Rich ecosystem [ Github, X ]

JetBrains๊ฐ€ ์ง€์› ๋ฐ ๊ฐœ๋ฐœํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ธ ๋งŒํผ ํ’๋ถ€ํ•œ ์ƒํƒœ๊ณ„๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ ์ตœ์ƒ์œ„์˜ ํ”„๋ ˆ์ž„์›Œํฌ ์„ฑ์žฅ์— ๊ธฐ์—ฌ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ๊ฐ•์˜์˜ ํŠน์ง•

๐Ÿ“Œ MySQL 5~6๊ฐœ์˜ ํ…Œ์ด๋ธ”๋กœ ๊ตฌ์„ฑ๋˜๋Š” ์‹ค์ „ํ˜• ์„œ๋ฒ„ ๊ตฌ์ถ•

๐Ÿ“Œ PBKDF2, AES-GCM, TimeBaseEncryption ๋‹ค์–‘ํ•œ ์•”ํ˜ธํ™”

๐Ÿ“Œ์ธํ”„๋Ÿฐ์—์„œ ๊ฐ€์žฅ ์œ ์ผํ•œ Kotlin์Šค๋Ÿฌ์šด ์„œ๋ฒ„ ๊ตฌ์ถ•

๐Ÿ“Œ๊ณต์‹ ํ”Œ๋Ÿฌ๊ทธ์ธ ํ™œ์šฉ๋ถ€ํ„ฐ ์ปค์Šคํ…€ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž‘์„ฑ๋ฒ•

๐Ÿ“Œ์•„๋ฌด๋„ ์•Œ๋ ค์ฃผ์ง€ ์•Š๋Š” ์œ ์ผํ•œ Ktor ๊ฐ•์˜

๐Ÿ“Œ๋‹จ์ˆœํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋๋‚˜์ง€ ์•Š๋Š” Kotlin ๋ฌธ๋ฒ• ๊ณต๋ถ€

Kotlin ๊ผญ ๋ฐฐ์›Œ์•ผ ํ• ๊นŒ์š”??

์—ฌ๋Ÿฌ๋ถ„ ์„ธ์ƒ์— ์ •๋‹ต์€ ์—†์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ํ•™์Šตํ•˜๊ณ  ์‹ถ์œผ์‹œ๋ฉด ํ•˜๋Š”๊ฑฐ๊ณ  ์•ˆํ•˜๊ณ  ์‹ถ์œผ์‹œ๋ฉด ์•ˆํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ฒ™๋ฐ•ํ•œ ์ทจ์—…์‹œ์žฅ์—์„œ Kotlin์€ ์ ์  ํ•„์ˆ˜ ํ•ญ๋ชฉ์œผ๋กœ ์š”๊ตฌ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹น๊ทผ ๋งˆ์ผ“

๋‘๋‚˜๋ฌด

ํ† ์Šค ๋ฑ…ํฌ

๋ฐฐ๋‹ฌ์˜ ๋ฏผ์กฑ

Kotlin์ด ํ•„์ˆ˜๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ ์  ๋งŽ์€ ํšŒ์‚ฌ๋“ค์ด Kotlin์œผ๋กœ ์ด์ „์„ ํ•˜๊ฑฐ๋‚˜ Kotlin์„ ํ˜ผ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์™œ Spring๊ธฐ๋ฐ˜์˜ ์„œ๋น„์Šค์—์„œ ์ ์  Kotlin์œผ๋กœ ์ด๋™ํ•˜๊ธฐ๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๊ฑธ๊นŒ์š”??

์™œ ์ ์  Spring์—์„œ Kotlin์œผ๋กœ ์ด๋™ํ• ๊นŒ?

๋‹ค์–‘ํ•œ ์ด์œ ๊ฐ€ ์žˆ๊ณ , ์•„์ง ์ด๋™์„ ํ•˜์ง€ ์•Š๋Š” ํšŒ์‚ฌ๋“ค๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด์ „์„ ์‹œ๋„ํ•˜๋Š” ํšŒ์‚ฌ๋“ค์€ ๋Œ€๋ถ€๋ถ„ ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ธํ•ด์„œ ์ด์ „์„ ์‹œ๋„ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Null Safety

์ฝ”ํ‹€๋ฆฐ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปดํŒŒ์ผ์‹œ์— Null๊ฐ’์— ๋Œ€ํ•œ ์•ˆ์ „์„ฑ ์ฒดํฌ๊ฐ€ ์ง„ํ–‰์ด ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‹ค์ œ ์šด์˜ํ™˜๊ฒฝ์—์„œ Null Point Exception์œผ๋กœ ์ธํ•ด ์„œ๋ฒ„๊ฐ€ ๋‹ค์šด๋˜๋Š” ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•ดํ•ฉ๋‹ˆ๋‹ค.

๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ ํ˜•ํƒœ์™€ ๋žŒ๋‹ค ์ง€์›

Spring์— ๋น„ํ•ด ์ฝ”๋“œ๊ฐ€ ๋งค์šฐ ๊ฐ„๊ฒฐํ•˜๊ณ , ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๋Š”๊ธฐ๋Šฅ์ด ํ’๋ถ€ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ์ธํ•ด์„œ ์นœํ™”์ ์ธ ์ฝ”๋“œ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๊ณ , ๊ณ ์ฐจ ํ•จ์ˆ˜ ๋˜ํ•œ ์œ ์—ฐํ•˜๊ฒŒ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํ˜„๋Œ€์ ์ธ ์–ธ์–ด์™€ Java์™€ 100% ์ƒํ˜ธ์šด์šฉ

ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŠน์ง• ๋ฐ ์ฝ”๋ฃจํ‹ด์„ ํ†ตํ•œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋Š” ํ˜„๋Œ€์ ์ธ ์–ธ์–ด ํ˜•ํƒœ๋กœ์จ ๋ฌธ๋ฒ•์„ ํ‘œํ˜„ํ•˜๊ธฐ์— ๋งค์šฐ ์ ํ•ฉํ•˜๋ฉฐ, Java์™€ 100% ํ˜ผ์šฉ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋–„๋ฌธ์— ๊ธฐ์กด ์†Œ์Šค๋ฅผ ์ด๊ด€ํ•˜๋Š”๋ฐ์— ์žˆ์–ด์„œ ํฐ ์–ด๋ ค์›€๋„ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชจ๋ฐ”์ผ๊ณผ ์„œ๋ฒ„์˜ ํ†ตํ•ฉ ๋ฐ ํ’๋ถ€ํ•œ ์ปค๋ฎค๋‹ˆํ‹ฐ

๋ชจ๋ฐ”์ผ ์‹œ์žฅ์ด ์ปค์ง์— ๋”ฐ๋ผ ๋ชจ๋ฐ”์ผ ๊ฐœ๋ฐœ๊ณผ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์„ ๊ฐ™์ด ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์€ ๋งค์šฐ ์ƒ์‚ฐ์„ฑ์ด ๋›ฐ์–ด๋‚œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ JetBrains์™€ Google์ด ์ ๊ทน์ ์œผ๋กœ ์ง€์› ๋ฐ ๊ฐœ๋ฐœ์„ ํ•˜๋Š” ์–ธ์–ด ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋‚ด์šฉ์„ ๋ฐฐ์›Œ๋ด์š”.

์‹ค์ „์—์„œ ์‚ฌ์šฉํ•˜๋Š” MySQL

MySQL์€ ๋А๋ฆฌ๋‹ค?? ๋งž์Šต๋‹ˆ๋‹ค. ์†”์งํ•˜๊ฒŒ ๋งํ•ด์„œ MySQL์€ ๋‹ค๋ฅธ DB์— ๋น„ํ•ด ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์™œ MySQL์„ ์‚ฌ์šฉํ• ๊นŒ์š”??

Trailing Lambdas ๋ฌธ๋ฒ• ํ™œ์šฉํ•˜๊ธฐ

Spring์˜ AOP๋Š” ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค. ์™œ ๋ถˆํŽธํ• ๊นŒ์š”?? ๊ทธ๋ฆฌ๊ณ  Kotlin์—์„œ๋Š” AOP๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ  ํ™œ์šฉํ• ๊นŒ์š”??

์ •์  ํŒŒ์ผ์„ ์œ„ํ•œ Object Storage

์ •์  ํŒŒ์ผ์„ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์—๋Š” ์–ด๋–ค๊ฒŒ ์žˆ์„๊นŒ์š”??

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ๊ฐ™์ด ์ •์  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ณ , S3์™€ 100% ํ˜ผ์šฉ์ด ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ์ž‘์„ฑ์„ ์ง„ํ–‰ํ•ด๋ณด์„ธ์š”!

๋‹ค์–‘ํ•œ ์•”ํ˜ธํ™” ํ”„๋กœํ† ์ฝœ

์‹ค๋ฌด์—์„œ ์ง„ํ–‰ํ•˜๋Š” ์„œ๋ฒ„๋Š” ๋‹จ์ˆœํ•œ CRUD๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  Database๋งŒ ์—ฐ๊ฒฐํ•˜๋ฉด ๋๋‚ ๊นŒ์š”??

์‹ค์ œ ํ•ดํ‚น ์‚ฌํƒœ๋ฅผ ๊ฒฝํ—˜ํ•œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ๋ ค์ฃผ๋Š” ์•”ํ˜ธํ™” ํ”„๋กœํ† ์ฝœ์„ ๊ฐ™์ด ํ•™์Šตํ•ด๋ณด์„ธ์š”!

๋ฉ”์ผ ์ „์†ก ํ”„๋กœํ† ์ฝœ

์‹ค๋ฌด์—์„œ๋Š” ํ”Œ๋žซํผ ๊ด‘๊ณ  ๋ฐ ์ด๋ฒคํŠธ์— ๋งž์ถฐ์„œ ๋‹ค์–‘ํ•œ ๋ฉ”์ผ์„ ์ „์†กํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์— ๋งž์ถฐ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ™์ด ๊ฒฝํ—˜ํ•ด๋ณด์„ธ์š”!

์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ๋น„์ƒํƒœ ์ธ์ฆ

์„œ๋ฒ„๋Š” ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์— ๋Œ€ํ•ด์„œ ์ธ์ฆํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ธ์ฆ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ ํ•จ๊ป˜ ๊ตฌํ˜„ํ•˜๊ณ  ๊ธฐ์กด์˜ ๋ฐฉ์‹๊ณผ์˜ ์ฐจ๋ณ„์ ์„ ๋‘๋Š” ํ˜•ํƒœ๋ฅผ ํ•จ๊ป˜ ๊ตฌํ˜„ํ•ด๋ณด์„ธ์š”!

์ด ๊ฐ•์˜์—์„œ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ  ์Šคํƒ

Jakarta

  • ๋ฉ”์ผ ์ „์†ก ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ์ด ๋ฉ๋‹ˆ๋‹ค.


MinIO

  • Object Storage๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ด ๋˜๋ฉฐ, Docker๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ตฌ์ถ• ๋ฉ๋‹ˆ๋‹ค.

MySQL

  • ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Token paseto

  • ํ† ํฐ์„ ํ†ตํ•ด ๋น„์ƒํƒœ ์ธ์ฆ๋ฐฉ์‹์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Ulid

  • Database์˜ ์„ฑ์งˆ์„ ์ดํ•ดํ•˜๊ณ  AUTO_INCREMENT์˜ ์ทจ์•ฝ์ ์„ ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ์•”ํ˜ธํ™” ํ”„๋กœํ† ์ฝœ

  • ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™” ๋ฐ Data ์•”ํ˜ธํ™”๋ฅผ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


๊ฐ•์˜ ์ปค๋ฆฌํ˜๋Ÿผ

Lecture 1

๋ชธํ’€๊ธฐ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค. Kotlin์˜ ๊ธฐ๋ณธ์ ์ธ ์ง€์‹๊ณผ Ktor์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์‹œ๊ฐ„์œผ๋กœ ํŽธํ•˜๊ฒŒ ์ˆ˜๊ฐ•ํ•ด ์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Lecture 2

Kotlin์—์„œ์˜ MySQL์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ์™€ ์ด๋ก  ๋˜ํ•œ ์–ธ์–ด์— ๊ตญํ•œ๋˜์ง€ ์•Š๊ณ  ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด MySQL์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ์— ์žˆ์–ด์„œ ํ•„์ˆ˜์ ์œผ๋กœ ์•Œ์•„์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์„ ๋‹ค๋ฃจ์–ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค.

Lecture 3

Spring์—์„œ ์‚ฌ์šฉํ•˜๋Š” DI์˜ ๊ฐœ๋…์„ Ktor๊ณผ Kotlin์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์ ์šฉ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?? ์˜คํ”ˆ์†Œ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ DI ์ž‘์—…์„ ํ•œ๋ฒˆ ์›ํ™œํ•˜๊ฒŒ ์ง„ํ–‰ํ•ด๋ณด๋Š” ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

Lecture 4

์„œ๋ฒ„์™€ Clinet๊ฐ„์— ์ธ์ฆ ๋ฐฉ์‹์€ ๋‹ค์–‘ํ•˜๊ฒŒ ์žˆ๊ณ , ๊ทธ ์ค‘์—์„œ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์œผ๋กœ ์‚ฌ์šฉ์ด ๋˜๋Š” ๊ฒƒ์ด ๋ฌด์ƒํƒœ ์ธ์ฆ ๋ฐฉ์‹ ์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•๊ณผ ๊ทธ์—๋”ฐ๋ฅธ ์žฅ๋‹จ์ ์„ ํ•™์Šตํ•ด๋ณด์„ธ์š”.

Lecture 5

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

Lecture 6

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

Lecture 7

๊ฐœ๋ฐœ์ž๋Š” ๊ฒฐ๊ตญ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  Database์™€์˜ ์†Œํ†ต์ด ์ง„ํ–‰์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Kotlin์—์„œ์˜ MySQL ์‹ค์ „ ์ฟผ๋ฆฌ ์ž‘์„ฑ๋ฒ•๊ณผ ๋‹ค์–‘ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ง์ ‘ ๋ˆˆ์œผ๋กœ ๋ณด๊ณ  ํ™•์ธํ•ด๋ณด์„ธ์š”!

Lecture 8

ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋ฌด์—‡์ด ์žˆ์„๊นŒ์š”?? AWS S3์™€ ๋™์ผํ•œ ํ˜•ํƒœ์ธ Object Storage๋ฅผ Docker๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ•˜๊ณ  ์‹ค์ „ ํ™œ์šฉํ•˜๋Š” ์‹œ๊ฐ„์„ ๋ˆˆ์œผ๋กœ ๋ณด๊ณ  ํ™•์ธํ•ด๋ณด์„ธ์š”!

Lecture 9

์„œ๋ฒ„์—์„œ์˜ ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ํ•™์Šต์ด ๊ฐ€๋Šฅํ•˜์‹ญ๋‹ˆ๋‹ค. ์ฒญํฌ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ ๋ฐฉ์‹์€ ๋ฌด์—‡์ธ์ง€ ๊ทธ์— ๋”ฐ๋ฅธ ์žฅ๋‹จ์  ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์•ž์„œ ๋‹ค๋ฃจ์—ˆ๋˜ Object Storage์— ์ €์žฅํ•˜๋ฉด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•จ๊ป˜ ์ง„ํ–‰ํ•ด ๋ณด์„ธ์š”!

Lecture 10

๊ธฐ๋Šฅ ๊ตฌํ˜„์˜ ๋Œ€ํ‘œ์ ์ธ ๊ธฐ๋Šฅ์œผ๋กœ ๋ฉ”์ผ ์ „์†ก ์‹œ์Šคํ…œ์„ Jakata Protocol์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ Factory Pattren์„ ํ™œ์šฉํ•˜์—ฌ ํ™•์žฅ์„ฑ์žˆ๋Š” ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๊ทธ์— ๋”ฐ๋ผ ๋™์ ์ธ ์„œ๋น„์Šค ๋กœ์ง์„ ์ ์šฉํ•ด ํ™•์žฅ์„ฑ ์žˆ๋Š” ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•ด๋ณด์„ธ์š”.

์ด ๊ฐ•์˜๋ฅผ ๋งŒ๋“  ์‚ฌ๋žŒ๊ณผ ๋„์›€์„ ์ค€ ์‚ฌ๋žŒ

private val supported_one = "์นด์นด์˜คํŽ˜์ด ํ”Œ๋žซํผ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž" private val supported_two = "ํ† ์Šค์ฆ๊ถŒ API ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž" private val supported_three = "๋น„๋ฐ€๋กœ ํ•ด๋‹ฌ๋ผ๋Š” ์œ ๋‹ˆ์ฝ˜ ์Šคํƒ€ํŠธ์—… ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž"

๊ฐ™์ด ๋ณด๋ฉด ์ข‹์€ ๊ฐ•์˜!

์€ํ–‰ ์„œ๋ฒ„ ํ”„๋กœ์ ํŠธ ์‹ค์Šต์„ ํ†ตํ•ด ๋ฐฐ์šฐ๋Š” ์ฝ”ํ‹€๋ฆฐ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค

  • ํด๋ฆฌ๊ทธ๋ž ํผ์‹œ์Šคํ„ด์Šค ์ „๋žต ๋ฐ Kafka๋“ฑ์„ ํ™œ์šฉํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ ์œ ํ˜•์— ๋งž๋Š” ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•๊ณผ DB ๊ณ ๋ ค์‚ฌํ•ญ ๋ฐ ์ด๋ฒคํŠธ์„ฑ ๋ฐ์ดํ„ฐ ํ™œ์šฉ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ชจ๋“ ๊ฒƒ์„ ํ•™์Šตํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ •์„์— ๊ฐ€๊น๊ณ  ๊ธฐ๋ณธ์— ์ถฉ์‹คํ•œ ์ฝ”๋ฃจํ‹ด ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค

  • ์ฝ”๋ฃจํ‹ด ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ์€ ๋Œ€๊ธฐ์—… ๊ฐœ๋ฐœ์ž๋“ค์˜ ์ฝ”๋ฃจํ‹ด ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค!! ๋‹ค์–‘ํ•œ ์˜ˆ์ œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹ค๋ฌด ๊ฐœ๋ฐœ์ž๋“ค์˜ ๊ฒฌํ•ด๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฐ•์˜๋ฅผ ๋ฐ”๋กœ ๋งŒ๋‚˜๋ณด์„ธ์š”!

์ˆ˜๊ฐ• ์ „ ์ฐธ๊ณ  ์‚ฌํ•ญ

์‹ค์Šต ํ™˜๊ฒฝ

  • ๊ฐ•์˜๋Š” MacOS M3๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  • Docker๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • java:17.0.12 ๋ฒ„์ „์„ ํ™œ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • IDE์™€ Database ํˆด์€ ๋ชจ๋‘ JetBrain ๊ณ„์—ด์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • Gradle์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ธํ”„๋ผ๋ฅผ ์ง์ ‘ ๊ตฌ์ถ•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


์„ ์ˆ˜ ์ง€์‹ ๋ฐ ์œ ์˜์‚ฌํ•ญ

  • ์„ ์ˆ˜ ์ง€์‹์€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ ๊ฐ•์˜๊ฐ€ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๋ถ„๋“ค๊ป˜
์ถ”์ฒœ๋“œ๋ ค์š”

ํ•™์Šต ๋Œ€์ƒ์€
๋ˆ„๊ตฌ์ผ๊นŒ์š”?

  • ์ €๋Š” Spring๋ฐ–์— ๋ชฐ๋ผ์š”..

  • ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ถ๊ธˆํ•˜์‹  ๋ถ„

  • Kotlin๊ณผ JetBrain์„ ์‚ฌ๋ž‘ํ•˜์‹œ๋Š” ๋ถ„

  • ๊ฐœ๋ฐœ์„ ์ฒ˜์Œ ์ ‘ํ•˜์‹œ๋Š” ๋ถ„

์•ˆ๋…•ํ•˜์„ธ์š”
Hong์ž…๋‹ˆ๋‹ค.

์ธํ”„๋Ÿฐ์ธ์ฆ

8,938

๋ช…

์ˆ˜๊ฐ•์ƒ

567

๊ฐœ

์ˆ˜๊ฐ•ํ‰

156

๊ฐœ

๋‹ต๋ณ€

4.7

์ 

๊ฐ•์˜ ํ‰์ 

30

๊ฐœ

๊ฐ•์˜

์ž๊ธฐ ์†Œ๊ฐœ

์ง‘์—์„œ ๋นˆ๋‘ฅ๋Œ€๋‹ค ๊ฐœ๋ฐœ์— ํฅ๋ฏธ๋ฅผ ๋А๊ปด ๊ฐœ๋ฐœ ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•˜์˜€๊ณ  ํ˜„์žฌ๋Š” ํŒ๊ต์—์„œ ํ”Œ๋žซํผ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์„ ๋‹ด๋‹นํ•˜์—ฌ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๊ณต๋ถ€๋ฅผ ํ–ˆ๋˜ ๋ฐฉ๋ฒ•๊ณผ ์‹ค๋ฌด์—์„œ ์ ‘ํ•˜์‹ค ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฌธ์ œ์ ๋“ค๊ณผ ํ•ด๊ฒฐ์ฑ…์„ ์—ฌ๋Ÿฌ๋ถ„๋“ค์—๊ฒŒ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์–ด ์ง€์‹๊ณต์œ ์ž ํ™œ๋™์„ ์ด์–ด๋‚˜๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ฐ•์˜๋Š” ์˜ค๋กœ์ง€ ์ €๋งŒ์˜ ์ง€์‹์„ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฐ•์˜๋Š” ํ•จ๊ป˜ํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ๊ณ„์‹ญ๋‹ˆ๋‹ค.

 

์ง€์‹๊ณต์œ ์ž ๊ฒฝ๋ ฅ

[ๅ‰] ์ƒŒ๋“œ๋ฐ•์ŠคIP ๊ด€๋ จ ๋ธ”๋ก์ฒด์ธ ๊ฐœ๋ฐœ์ž

[ๅ‰] ๋ฉ”ํƒ€๋ฒ„์Šค ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž

[็พ] ํŒ๊ต์—์„œ ๊ณ ์—ฌ๊ฐ€๋Š” ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž

 

์ธํ„ฐ๋ทฐ ์ด๋ ฅ

๊ธฐํƒ€ ๋ฌธ์˜

  • unduck2022@gmail.com

๋”๋ณด๊ธฐ

์ปค๋ฆฌํ˜๋Ÿผ

์ „์ฒด

50๊ฐœ โˆ™ (9์‹œ๊ฐ„ 16๋ถ„)

ํ•ด๋‹น ๊ฐ•์˜์—์„œ ์ œ๊ณต:

์ˆ˜์—…์ž๋ฃŒ
๊ฐ•์˜ ๊ฒŒ์‹œ์ผ: 
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ์ผ: 

์ˆ˜๊ฐ•ํ‰

์ „์ฒด

15๊ฐœ

4.7

15๊ฐœ์˜ ์ˆ˜๊ฐ•ํ‰

  • keny๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    keny

    ์ˆ˜๊ฐ•ํ‰ 19

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    86% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ์ฒซ๋ฒˆ์จฐ ๊ฐ•์˜๋ฅผ ์ •๋ง ์ธ์ƒ๊นŠ๊ฒŒ ๋ด์„œ ๋ฐ”๋กœ ์ˆ˜๊ฐ•ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋น ๋ฅด๊ฒŒ ์ง‘์ค‘ํ•˜์—ฌ ์ง„์งœ ์‰ฌ์ง€์•Š๊ณ  ๋ฐ”๋กœ ์™„๊ฐ•์„ ํ•˜์˜€๋Š”๋ฐ ์ฒซ๋ฒˆ์งธ ๊ฐ•์˜์ฒ˜๋Ÿผ ์ง„์งœ ๋งŽ์€ ๋ถ€๋ถ„์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๊ฐ•์˜๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ๋Š” Kotlin ๊ฐ•์˜์ค‘์— ์ง„์งœ ์†์— ๊ผฝ๋Š” ๊ฐ•์˜๊ฐ€ ์•„๋‹๊นŒ ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ์„œ๋ฒ„ ๊ฐœ๋ฐœ๋ถ€ํ„ฐ ๋‹ค์–‘ํ•œ ์•”ํ˜ธํ™”๊นŒ์ง€ ์–ด๋””๊ฐ€์„œ ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ์ง€ ๋ชปํ•˜๋Š” ๊นŠ์€ ์ฃผ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ €๋งŒ ์•Œ๊ณ  ์‹ถ์€ ์ˆจ๊ธฐ๊ณ  ์‹ถ์€ ๋„ˆ๋ฌด ์ข‹์€ ๊ฐ•์˜์˜€์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    • Hong
      ์ง€์‹๊ณต์œ ์ž

      ์•ˆ๋…•ํ•˜์„ธ์š” keny๋‹˜!! ์ด๋ ‡๊ฒŒ ์ข‹์€ ํ‰ ๋‚จ๊ฒจ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ €์˜ ์ฒซ๋ฒˆ์งธ ์ฝ”ํ‹€๋ฆฐ ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค ์ˆ˜๊ฐ•์ƒ์ด์‹œ๋ผ๋‹ˆ ๋” ๋ฟŒ๋“ฏํ•˜๋„ค์š” ใ…Žใ…Ž ์ด ๊ฐ•์˜๋Š” ๊ต‰์žฅํžˆ ํŠน์ดํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ์ธํ”„๋Ÿฐ์—์„œ ์ด๋Ÿฐ ์ฃผ์ œ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์žˆ์ง€๋Š” ์•Š๋‹ค๊ณ  ์ƒ๊ฐ์„ ํ•ด์š”!! ๊ทธ๋ž˜์„œ ์—ฌ๋Ÿฌ๋ถ„๋“ค์—๊ฒŒ ๋งŽ์€ ๊ฒƒ์„ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋Š” ์ฃผ์ œ๋ผ ์ƒ๊ฐํ–ˆ๊ณ  ์ด๋ ‡๊ฒŒ ์ค€๋น„ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‹ค๋ฌด์—์„œ๋Š” ๋‹ค์–‘ํ•œ ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Kotlin์„ ๋‹ค๋ฃจ๋Š”๋ฐ์— ์žˆ์–ด์„œ Ktor์€ ๋„ˆ๋ฌด๋‚˜๋„ ์ ํ•ฉํ•œ ์ฃผ์ œ๋ผ๊ณ  ์ƒ๊ฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ ํ†ตํ•ด์„œ ๋งŽ์€ ๋ถ€๋ถ„์„ ํ•™์Šตํ•˜์‹œ๊ณ  ๋ฐฐ์› ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค!! ์•ž์œผ๋กœ ๋” ์žฌ๋ฏธ์žˆ๊ณ  ์œ ์ตํ•œ ๊ฐ•์˜๋กœ ์ฐพ์•„๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

  • ๊ฐœ๋ฐœ ์ž˜ํ•˜๊ณ  ์‹ถ๋‹ค...๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ๊ฐœ๋ฐœ ์ž˜ํ•˜๊ณ  ์‹ถ๋‹ค...

    ์ˆ˜๊ฐ•ํ‰ 8

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    ์ˆ˜์ •๋จ

    5

    70% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ๋ ˆ์ „๋“œ ๊ฐ•์˜.. ๋•๋ถ„์— ๊ฐœ๋ฐœ ์ž˜ํ•˜๊ฒŒ๋˜์—ˆ๋‹ค.

    • Hong
      ์ง€์‹๊ณต์œ ์ž

      ์•ˆ๋…•ํ•˜์„ธ์š” ๊ฐœ๋ฐœ ์ž˜ํ•˜๊ณ  ์‹ถ๋‹ค๋‹˜!! ์ข‹์€ ํ‰ ๋‚จ๊ฒจ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!! ๊ฐœ๋ฐœ์„ ์ž˜ํ•˜๊ฒŒ ๋˜์…จ๋‹ค๋‹ˆ.. ์ด์ œ๋Š” ๋‹‰๋„ค์ž„ ๋ณ€๊ฒฝํ•˜์‹œ์ฃ  ใ…Žใ…Ž ์ด ๊ฐ•์˜๊ฐ€ ๋งŽ์€ ๋„์›€์ด ๋˜์‹ ๊ฑฐ ๊ฐ™์•„์„œ ๋„ˆ๋ฌด ๋ฟŒ๋“ฏํ•˜๋„ค์š”. ๋‹ค์Œ์— ๋” ์ข‹์€ ๊ฐ•์˜๋กœ ์ฐพ์•„๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!!

  • devHand๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    devHand

    ์ˆ˜๊ฐ•ํ‰ 10

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    60% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

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

    • Hong
      ์ง€์‹๊ณต์œ ์ž

      ์•ˆ๋…•ํ•˜์„ธ์š” devHand๋‹˜ ํ‰ ๋‚จ๊ฒจ์ˆ˜์ ธ์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ธด ํ‰์„ ๋‚จ๊ฒจ์ฃผ์‹œ๋‹ˆ ๊ธฐ๋ถ„์ด ๋„ˆ๋ฌด ์ข‹์•„์š” ใ…Žใ…Ž ์•ž์œผ๋กœ ๋” ์—ด์‹ฌํžˆ ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž‘์„ฑํ•ด์ฃผ์‹ ๊ฒƒ์ฒ˜๋Ÿผ ์ฝ”ํ‹€๋ฆฐ์— ๊ตญํ•œ๋˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์ถฉ๋ถ„ํžˆ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•œ ์ •๋ณด๋“ค๋„ ๋งŽ์ด ๋“ค์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ์ฝ”ํ‹€๋ฆฐ์„ ํ•™์Šตํ•˜๊ณ  ์‹ถ์œผ์‹ ๋ถ„๋“ค๋„ ๋งŒ์กฑ๊ฐ์„ ๋“œ๋ฆฌ๊ณ  ์‹ถ๊ณ , ๊ตณ์ด ์ฝ”ํ‹€๋ฆฐ ์•„๋‹ˆ์—ฌ๋„ ๊ดœ์ฐฎ๋‹ค๋Š” ๋ถ„๋“ค๋„ ๋งŒ์กฑ๊ฐ์„ ๋“œ๋ฆฌ๊ณ  ์‹ถ์—ˆ์–ด์š”. ๋‹ค์Œ์— ๋” ์ข‹์€ ๊ฐ•์˜๋กœ ์ฐพ์•„๋ต™๋„๋ก ํ• ๊ฒŒ์š”!! ๋‚ ์”จ๊ฐ€ ๋งŽ์ด ๋”์šฐ๋‹ˆ ๋”์œ„ ์กฐ์‹ฌํ•˜์„ธ์š”!

  • Choi๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    Choi

    ์ˆ˜๊ฐ•ํ‰ 12

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    30% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

    ๋‘๋ฒˆ์งธ ๊ฐ•์˜๋กœ ์ด๋ ‡๊ฒŒ ์ฐพ์•„๋ต™๊ฒŒ ๋˜๋„ค์š” ใ…Žใ…Ž ์นด์นด์˜ค์—์„œ ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํ•˜๊ณ ์žˆ๋Š” ์ดˆ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋Š” Ktor์ด๋ผ๋Š” ๋Œ€ํ‘œ์ ์ธ ์˜คํ”ˆ์†Œ์Šค์— ๋Œ€ํ•œ ๊ฐ•์˜ ์ž…๋‹ˆ๋‹ค. ์ด Ktor์€ Kotlin์„ ์‚ฌ์šฉํ•˜์‹ ๋‹ค๋ฉด ๋ฐ˜๋“œ์‹œ ์•Œ์…”์•ผํ•˜๋Š” ์ฃผ์ œ๋ผ๊ณ  ์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ์ƒ๊ฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ €๋„ ๋„์›€์„ ๋งŽ์ด ๋“œ๋ ธ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ, ๋ฐ˜๋Œ€๋กœ ๋งŽ์ด ๋ฐฐ์šฐ๋Š” ์‹œ๊ฐ„์ด์˜€์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ•์˜๋ฅผ ํ†ตํ•ด์„œ Kotlin์˜ ๋งค๋ ฅ์— ๋น ์ง€์…จ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค.

    • Hong
      ์ง€์‹๊ณต์œ ์ž

      ์ด๋ฒˆ ๊ฐ•์˜๋ฅผ ์ค€๋น„ํ•˜๋Š”๋ฐ์— ์žˆ์–ด์„œ ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!! ์•ž์œผ๋กœ ํ•จ๊ป˜ ๋” ์žฌ๋ฏธ์žˆ๋Š” ๊ฐ•์˜์™€ ์œ ์ตํ•œ ๊ฐ•์˜ ๋งŒ๋“ค์–ด๊ฐ€๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค ใ…Žใ…Ž

  • ๋ฏธ๋ž˜ 1์ธ ๊ฐœ๋ฐœ์ž๋‹˜์˜ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€
    ๋ฏธ๋ž˜ 1์ธ ๊ฐœ๋ฐœ์ž

    ์ˆ˜๊ฐ•ํ‰ 8

    โˆ™

    ํ‰๊ท  ํ‰์  5.0

    5

    30% ์ˆ˜๊ฐ• ํ›„ ์ž‘์„ฑ

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

    • Hong
      ์ง€์‹๊ณต์œ ์ž

      ์ด๋ฒˆ ๊ฐ•์˜๋ฅผ ์ค€๋น„ํ•˜๋Š”๋ฐ์— ์žˆ์–ด์„œ ๋„์›€์„ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!! ์ด๋ฒˆ ์ฃผ์ œ๋Š” ์ œ๊ฐ€ ์ข€ ๋ฆฌ๋“œํ•˜์—ฌ ์ง„ํ–‰ํ–ˆ๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๊ณผ์ •์—์„œ ๋ฐฐ์›€๋„ ์žˆ์—ˆ๋‹ค๊ณ  ํ•˜๋‹ˆ ๋ญ”๊ฐ€ ๋ฟŒ๋“ฏํ•˜๋„ค์š” ใ…Žใ…Ž ์•ž์œผ๋กœ ํ•จ๊ป˜ ๋” ์ข‹์€ ๊ฐ•์˜์™€ ์œ ์ตํ•œ ๊ฐ•์˜ ๋งŒ๋“ค์–ด๊ฐ€๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค!!

Hong๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜

์ง€์‹๊ณต์œ ์ž๋‹˜์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

๋น„์Šทํ•œ ๊ฐ•์˜

๊ฐ™์€ ๋ถ„์•ผ์˜ ๋‹ค๋ฅธ ๊ฐ•์˜๋ฅผ ๋งŒ๋‚˜๋ณด์„ธ์š”!

์—ฐ๊ด€ ๋กœ๋“œ๋งต

๊ฐ•์˜๊ฐ€ ํฌํ•จ๋œ ๋กœ๋“œ๋งต์œผ๋กœ ํ•™์Šตํ•ด ๋ณด์„ธ์š”!