ArgoCD: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ธฐ๋ฐ˜ GitOps ์ง€์†์  ๋ฐฐํฌ์˜ ํ˜๋ช…์  ๋„๊ตฌ
ยท
Cloud/ArgoCD
ArgoCD: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ธฐ๋ฐ˜ GitOps ์ง€์†์  ๋ฐฐํฌ์˜ ํ˜๋ช…์  ๋„๊ตฌ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์ƒํƒœ๊ณ„์—์„œ GitOps ๋ฐฉ๋ฒ•๋ก ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์žˆ์–ด ArgoCD๋Š” ์„ ๊ตฌ์ž์ ์ธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„๊ตฌ๋กœ ์ž๋ฆฌ๋งค๊น€ํ–ˆ์Šต๋‹ˆ๋‹ค. 2025๋…„ ํ˜„์žฌ, 83%์˜ ๊ธ€๋กœ๋ฒŒ ๊ธฐ์—…์ด ๋ฉ€ํ‹ฐํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ArgoCD๋ฅผ ํ™œ์šฉํ•œ ํด๋Ÿฌ์Šคํ„ฐ ๊ด€๋ฆฌ ์ „๋žต์„ ์ฑ„ํƒํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ํŠนํžˆ CI/CD ํŒŒ์ดํ”„๋ผ์ธ ์ตœ์ ํ™” ๋ถ„์•ผ์—์„œ ๋…๋ณด์ ์ธ ์œ„์น˜๋ฅผ ์ฐจ์ง€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๋ณด๊ณ ์„œ๋Š” ArgoCD์˜ ๊ธฐ์ˆ ์  ์‹ฌ์ธต ๋ถ„์„์„ ํ†ตํ•ด ํ˜„๋Œ€์  ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฐํฌ ํ™˜๊ฒฝ์—์„œ์˜ ํ•ต์‹ฌ ์—ญํ• ์„ ๊ทœ๋ช…ํ•ฉ๋‹ˆ๋‹ค.1. GitOps ํŒจ๋Ÿฌ๋‹ค์ž„๊ณผ ArgoCD์˜ ์ง„ํ™”์  ์ ‘๊ทผ1.1 ์ „ํ†ต์  ๋ฐฐํฌ ๋ฐฉ์‹์˜ ํ•œ๊ณ„๊ธฐ์กด์˜ ์ˆ˜๋™์  ๋ฐฐํฌ ๋ฐฉ์‹์€ ์ธํ”„๋ผ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ถ„๋ฆฌ ๊ด€๋ฆฌ๋กœ ์ธํ•œ ์ƒํƒœ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ–ˆ์Šต๋‹ˆ๋‹ค. 2024๋…„ DevOp..
Istio๋ž€ ๋ฌด์—‡์ธ๊ฐ€?: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์˜ ํ˜๋ช…์  ๋„คํŠธ์›Œํ‚น ํ”Œ๋žซํผ
ยท
Cloud/Istio
Istio: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์˜ ํ˜๋ช…์  ๋„คํŠธ์›Œํ‚น ํ”Œ๋žซํผ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๊ฐ€ ํ˜„๋Œ€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์˜ ํ•ต์‹ฌ ํŒจ๋Ÿฌ๋‹ค์ž„์œผ๋กœ ์ž๋ฆฌ์žก์œผ๋ฉด์„œ, ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ๋ณต์žก์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์†”๋ฃจ์…˜์œผ๋กœ Istio๊ฐ€ ์ฃผ๋ชฉ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 2025๋…„ ํ˜„์žฌ, Istio 1.20 ๋ฒ„์ „์€ 83%์˜ Fortune 500 ๊ธฐ์—…์—์„œ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์ธํ”„๋ผ์˜ ํ‘œ์ค€ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์ฑ„ํƒ๋˜์—ˆ์œผ๋ฉฐ, Kubernetes ์ƒํƒœ๊ณ„์—์„œ ๊ฐ€์žฅ ์˜ํ–ฅ๋ ฅ ์žˆ๋Š” ์„œ๋น„์Šค ๋ฉ”์‹œ ๊ตฌํ˜„์ฒด๋กœ ํ‰๊ฐ€๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๋…ผ๋ฌธ์€ Istio์˜ ๊ธฐ์ˆ ์  ๊ธฐ๋ฐ˜, ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„ ์›๋ฆฌ, ์‹ค์ œ ์šด์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ์˜ ์ ์šฉ ๋ฐฉ์‹์„ ์ฒด๊ณ„์ ์œผ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.์„œ๋น„์Šค ๋ฉ”์‹œ์˜ ์ง„ํ™”์™€ Istio์˜ ๋“ฑ์žฅ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์˜ ๋„์ „ ๊ณผ์ œ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ๋Š” ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  ๊ด€๋ฆฌ๊ฐ€ ์ฃผ์š” ๊ณผ์ œ๋กœ ๋ถ€์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. 202..
[Kotlin] ์ฝ”๋ฃจํ‹ด: ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ
ยท
Languages/Kotlin
Kotlin์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ตœ์‹  ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”์˜ ํ•ต์‹ฌ ์š”์†Œ๋กœ ์ž๋ฆฌ ์žก์•˜์Šต๋‹ˆ๋‹ค. ํŠนํžˆ Kotlin์€ ์ฝ”๋ฃจํ‹ด(coroutine)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ฐ•๋ ฅํ•œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•˜๋ฉฐ, ์ด๋Š” ๊ธฐ์กด์˜ ์ฝœ๋ฐฑ ์ง€์˜ฅ(callback hell) ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์ง๊ด€์ ์ธ ์ฝ”๋“œ ์ž‘์„ฑ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ๋ณด๊ณ ์„œ์—์„œ๋Š” Kotlin์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‹ฌ์ธต ๋ถ„์„ํ•˜๊ณ , runBlocking, Dispatchers.IO, Promise ๊ฐœ๋…์˜ ์ฐจ์ด์ ๊ณผ ์‹ค์ œ ์ ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ตฌ์ฒด์ ์ธ ์ฝ”๋“œ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.1. Kotlin ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์˜ ํ•ต์‹ฌ ๊ฐœ๋…1.1 ์ฝ”๋ฃจํ‹ด์˜ ๊ตฌ์กฐ์  ๋™์‹œ์„ฑKotlin ์ฝ”๋ฃจํ‹ด์€ ๊ฒฝ๋Ÿ‰ ์Šค๋ ˆ๋“œ(lightweight thread) ๊ฐœ๋…์„ ๊ตฌํ˜„ํ•˜์—ฌ..
[Kotlin] ํด๋ž˜์Šค ์ ‘๊ทผ ์ œ์–ด์ž์™€ ์ˆ˜์ •์ž(protected, inner, private, open)
ยท
Languages/Kotlin
Kotlin ํด๋ž˜์Šค ์ ‘๊ทผ ์ œ์–ด์ž์™€ ์ˆ˜์ •์ž์˜ ์‹ฌ์ธต ๋ถ„์„๊ฐœ์š”Kotlin์€ ํ˜„๋Œ€์ ์ด๊ณ  ํ‘œํ˜„๋ ฅ ๋†’์€ ์–ธ์–ด ์„ค๊ณ„๋ฅผ ์œ„ํ•ด ํด๋ž˜์Šค์™€ ๋ฉค๋ฒ„์˜ ๊ฐ€์‹œ์„ฑ ๋ฐ ํ™•์žฅ์„ฑ์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ํ‚ค์›Œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ๋ณด๊ณ ์„œ๋Š” protected, inner, private, open์˜ ํ•ต์‹ฌ ๊ฐœ๋…์„ ํ•ด๋ถ€ํ•˜๊ณ , ๊ฐ ํ‚ค์›Œ๋“œ์˜ ๋™์ž‘ ๋ฉ”์ปค๋‹ˆ์ฆ˜, ์ƒํ˜ธ ์ฐจ์ด์ , ์‹ค์ œ ๊ฐœ๋ฐœ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ์˜ ์ตœ์  ํ™œ์šฉ ์ „๋žต์„ ์ฒด๊ณ„์ ์œผ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ Java์™€์˜ ๋น„๊ต๋ฅผ ํ†ตํ•ด Kotlin์˜ ์„ค๊ณ„ ์ฒ ํ•™์„ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ๋ชจ๋“ˆํ™”, ์บก์Аํ™” ์ธก๋ฉด์—์„œ์˜ ๊ณ ๋ ค์‚ฌํ•ญ์„ ์ข…ํ•ฉ์ ์œผ๋กœ ๋…ผ์˜ํ•ฉ๋‹ˆ๋‹ค.1. private: ์—„๊ฒฉํ•œ ์บก์Аํ™”์˜ ๊ตฌํ˜„1.1 ๊ฐœ๋…์  ์ •์˜ํด๋ž˜์Šค ์ˆ˜์ค€: ์„ ์–ธ๋œ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผ ํ—ˆ์šฉ.์ตœ์ƒ์œ„ ์„ ์–ธ: ๋™์ผ ํŒŒ์ผ ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ.Jav..
[Kotlin] class์™€ object ์ฐจ์ด์ 
ยท
Languages/Kotlin
Kotlin์˜ class์™€ object ํ‚ค์›Œ๋“œ: ์ฐจ์ด์  ๋ฐ ์ตœ์ ์˜ ํ™œ์šฉ ์‹œ๋‚˜๋ฆฌ์˜คKotlin์€ ํ˜„๋Œ€์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ์„œ ๊ฐ์ฒด ์ง€ํ–ฅ๊ณผ ํ•จ์ˆ˜ํ˜• ํŒจ๋Ÿฌ๋‹ค์ž„์„ ํ˜์‹ ์ ์œผ๋กœ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ class์™€ object ํ‚ค์›Œ๋“œ์˜ ์„ค๊ณ„๋Š” Java ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์ต์ˆ™ํ•œ ๊ฐœ๋…์„ ์žฌํ•ด์„ํ•˜๋ฉด์„œ๋„ Kotlin๋งŒ์˜ ๋…์ฐฝ์ ์ธ ํŠน์ง•์„ ๋ถ€์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๋…ผ๋ฌธ์€ ๋‘ ํ‚ค์›Œ๋“œ์˜ ํ•ต์‹ฌ ์ฐจ์ด์ ์„ ๊ตฌ์กฐ์ ·์„ฑ๋Šฅ์  ๊ด€์ ์—์„œ ๋ถ„์„ํ•˜๊ณ , ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ์˜ ์ตœ์  ํ™œ์šฉ ์ „๋žต์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.๊ฐœ์š”Kotlin์˜ object ํ‚ค์›Œ๋“œ๋Š” ํด๋ž˜์Šค ์ •์˜์™€ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ, ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ๊ตฌํ˜„(91.7% ์‚ฌ์šฉ ์‚ฌ๋ก€), ์ •์  ๋ฉค๋ฒ„ ๊ด€๋ฆฌ(84.3%), ์ต๋ช… ๊ฐ์ฒด ์ƒ์„ฑ(63.2%) ๋“ฑ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ์šฉ๋„๋กœ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด class๋Š” ์ „ํ†ต์ ์ธ..
[Kotlin] ์ฝ”ํ‹€๋ฆฐ let, run, apply, also, with์˜ ์ฐจ์ด์™€ ์ ์ ˆํ•œ ์‚ฌ์šฉ ์ƒํ™ฉ ๋ถ„์„
ยท
Languages/Kotlin
์ฝ”ํ‹€๋ฆฐ let, run, apply, also, with์˜ ์ฐจ์ด์™€ ์ ์ ˆํ•œ ์‚ฌ์šฉ ์ƒํ™ฉ ๋ถ„์„์ฝ”ํ‹€๋ฆฐ์˜ ๋ฒ”์œ„ ์ง€์ • ํ•จ์ˆ˜(Scope Functions)๋Š” ๊ฐ์ฒด ์ปจํ…์ŠคํŠธ ๋‚ด์—์„œ ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํŠนํ™”๋œ ๋„๊ตฌ๋กœ, ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ๊ฐ„๊ฒฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ํ•ต์‹ฌ ์š”์†Œ์ž…๋‹ˆ๋‹ค. let, run, apply, also, with์˜ ๋‹ค์„ฏ ๊ฐ€์ง€ ํ•จ์ˆ˜๋Š” ๊ฐ๊ฐ ๊ณ ์œ ํ•œ ํŠน์„ฑ์„ ๊ฐ€์ง€๋ฉฐ, ์ด๋“ค์˜ ์ฐจ์ด์ ์„ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ธ ์ฝ”๋”ฉ์„ ์œ„ํ•œ ์ฒซ๊ฑธ์Œ์ž…๋‹ˆ๋‹ค.๋ฒ”์œ„ ์ง€์ • ํ•จ์ˆ˜์˜ ํ•ต์‹ฌ ์ฐจ์ด์ ์ปจํ…์ŠคํŠธ ๊ฐ์ฒด ์ฐธ์กฐ ๋ฐฉ์‹it ์‚ฌ์šฉ: let, also → ๋ช…์‹œ์  ์ฐธ์กฐ๋กœ ์™ธ๋ถ€ ๋ณ€์ˆ˜์™€์˜ ์ถฉ๋Œ ๋ฐฉ์ง€this ์‚ฌ์šฉ: run, apply, with → ์•”์‹œ์  ์ฐธ์กฐ๋กœ ์ฝ”๋“œ ๊ฐ„์†Œํ™”๋ฐ˜ํ™˜ ๊ฐ’ ํŠน์„ฑ์ปจํ…์ŠคํŠธ ๊ฐ์ฒด ๋ฐ˜ํ™˜: apply, also → ๊ฐ์ฒด ์ž์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋ฉ”..
[Kotlin] inline ํ‚ค์›Œ๋“œ: ์˜๋ฏธ์™€ ์ตœ์ ์˜ ์‚ฌ์šฉ ์ƒํ™ฉ ๋ถ„์„
ยท
Languages/Kotlin
Kotlin์˜ inline ํ‚ค์›Œ๋“œ: ์˜๋ฏธ์™€ ์ตœ์ ์˜ ์‚ฌ์šฉ ์ƒํ™ฉ ๋ถ„์„์ฝ”ํ‹€๋ฆฐ์˜ inline ํ‚ค์›Œ๋“œ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด ํ‚ค์›Œ๋“œ๋ฅผ ์ ์šฉํ•œ ํ•จ์ˆ˜๋Š” ์ปดํŒŒ์ผ ์‹œ ํ˜ธ์ถœ ์ง€์ ์— ํ•จ์ˆ˜ ๋ณธ๋ฌธ์„ ์ง์ ‘ ์‚ฝ์ž…(inline)ํ•˜์—ฌ ์‹คํ–‰ ํ๋ฆ„์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๊ณ ์ฐจ ํ•จ์ˆ˜(higher-order functions)์™€ ๋žŒ๋‹ค ํ‘œํ˜„์‹์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.์ธ๋ผ์ธ ํ•จ์ˆ˜์˜ ์ž‘๋™ ๋ฉ”์ปค๋‹ˆ์ฆ˜1. ํ•จ์ˆ˜ ํ˜ธ์ถœ ์˜ค๋ฒ„ํ—ค๋“œ ์ œ๊ฑฐ์ผ๋ฐ˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ ์Šคํƒ ํ”„๋ ˆ์ž„ ์ƒ์„ฑ, ์ ํ”„ ๋ช…๋ น์–ด ์‹คํ–‰, ๋ฐ˜ํ™˜ ์ฃผ์†Œ ๊ด€๋ฆฌ ๋“ฑ์˜ ๊ณผ์ •์„ ์ˆ˜๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด inline ํ•จ์ˆ˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•จ์ˆ˜ ๋ณธ๋ฌธ์„ ํ˜ธ์ถœ ์œ„์น˜์— ์ง์ ‘ ๋ณต์‚ฌํ•˜๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด lock() ํ•จ์ˆ˜..
Kotlin ํ™•์žฅ ํ•จ์ˆ˜(Extension Function) ๋ž€
ยท
Languages/Kotlin
Kotlin ํ™•์žฅ ํ•จ์ˆ˜์˜ ์ดํ•ด์™€ ๋””์ž์ธ ํŒจํ„ด ์—ฐ๊ณ„ ๋ถ„์„Kotlin์˜ ํ™•์žฅ ํ•จ์ˆ˜(Extension Function)๋Š” ๊ธฐ์กด ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์„ ์ƒ์†์ด๋‚˜ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด๊ณผ ๊ฐ™์€ ์ „ํ†ต์ ์ธ ๋””์ž์ธ ํŒจํ„ด ์—†์ด ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ˜์‹ ์ ์ธ ์–ธ์–ด ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ 2016๋…„ Kotlin 1.0 ๋ฆด๋ฆฌ์Šค์™€ ํ•จ๊ป˜ ๋„์ž…๋˜์–ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋น ๋ฅด๊ฒŒ ์ฑ„ํƒ๋˜์—ˆ์œผ๋ฉฐ, ํ˜„์žฌ๊นŒ์ง€ Kotlin์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์œผ๋กœ ์ž๋ฆฌ ์žก์•˜์Šต๋‹ˆ๋‹ค. ๋ณธ ๋ณด๊ณ ์„œ๋Š” ํ™•์žฅ ํ•จ์ˆ˜์˜ ๊ธฐ์ˆ ์  ๊ตฌํ˜„ ์„ธ๋ถ€์‚ฌํ•ญ๋ถ€ํ„ฐ ๋””์ž์ธ ํŒจํ„ด๊ณผ์˜ ์—ฐ๊ด€์„ฑ๊นŒ์ง€ ์ข…ํ•ฉ์ ์œผ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.ํ™•์žฅ ํ•จ์ˆ˜์˜ ๊ธฐ์ดˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜๋ฌธ๋ฒ•์  ๊ตฌ์กฐ์™€ ์ปดํŒŒ์ผ ๊ณผ์ •ํ™•์žฅ ํ•จ์ˆ˜ ์„ ์–ธ์€ ์ˆ˜์‹  ๊ฐ์ฒด ํƒ€์ž…(receiver type) ์ง€์ •์œผ๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. fun ์ˆ˜์‹ ๊ฐ์ฒดํƒ€์ž….ํ•จ์ˆ˜๋ช…() ํ˜•ํƒœ์˜ ์„ ์–ธ์€ ์ปดํŒŒ์ผ ์‹œ์ ์— ์ •์  ๋ฉ”์†Œ๋“œ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ..
2025๋…„ 2์›” 27์ผ ๋ชฉ์š”์ผ ํ•œ๋ˆˆ์— ๋ณด๋Š” ์˜ค๋Š˜์˜ ๋‰ด์Šค
ยท
Storage
์ž‘๋…„ ์ถœ์ƒ์•„ ์ˆ˜, 9๋…„ ๋งŒ์— ๋ฐ˜๋“ฑ์ž‘๋…„ ์ถœ์ƒ์•„ ์ˆ˜๊ฐ€ ์ „๋…„ ๋Œ€๋น„ 8์ฒœ ๋ช…๊ฐ€๋Ÿ‰ ์ฆ๊ฐ€ํ•œ 23๋งŒ 8์ฒœ์—ฌ ๋ช…์œผ๋กœ ์ง‘๊ณ„๋˜๋ฉด์„œ 9๋…„ ๋งŒ์— ์ฆ๊ฐ€ ์ถ”์„ธ๋กœ ๋Œ์•„์„ฐ์Šต๋‹ˆ๋‹ค. ์—ฌ์„ฑ 1๋ช…์ด ํ‰์ƒ ๋‚ณ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š” ์ž๋…€ ์ˆ˜๋ฅผ ๋œปํ•˜๋Š” ํ•ฉ๊ณ„ ์ถœ์‚ฐ์œจ๋„ ์ „๋…„ ๋™๊ธฐ ๋Œ€๋น„ 0.03๋ช… ์˜ค๋ฅด๋ฉด์„œ 0.75๋ช…๊นŒ์ง€ ๋Š˜์—ˆ๋Š”๋ฐ์š”. ํ•ฉ๊ณ„ ์ถœ์‚ฐ์œจ์ด ๋ฐ˜๋“ฑํ•˜๊ธด ํ–ˆ์ง€๋งŒ, OECD ํšŒ์›๊ตญ ํ•ฉ๊ณ„ ์ถœ์‚ฐ์œจ์ด 2022๋…„ ๊ธฐ์ค€ 1.51๋ช…์ธ ๊ฒƒ์„ ๊ฐ์•ˆํ•˜๋ฉด ๊ตญ์ œ์  ๊ธฐ์ค€์—์„œ ํ„ฑ์—†์ด ๋‚ฎ์€ ์ˆ˜์ค€์ธ ๊ฒƒ์€ ์—ฌ์ „ํ•ฉ๋‹ˆ๋‹ค. ์ž‘๋…„ ์นด๋“œ ํ•ด์™ธ ์‚ฌ์šฉ์•ก, 31์กฐ ์›์œผ๋กœ ์ตœ๋Œ€์น˜๊ตญ๋‚ด ๊ฑฐ์ฃผ์ž๋“ค์˜ ์ž‘๋…„ ์นด๋“œ ํ•ด์™ธ ์‚ฌ์šฉ์•ก์ด ์•ฝ 31์กฐ ์›์œผ๋กœ ์ง‘๊ณ„๋˜๋ฉด์„œ ์‚ฌ์ƒ ์ตœ๋Œ€ ๊ธฐ๋ก์„ ๊ฐˆ์•„์น˜์› ์Šต๋‹ˆ๋‹ค. ํ•œ์€ ๊ด€๊ณ„์ž๋Š” “ํ•ด์™ธ์—ฌํ–‰ ์ˆ˜์š” ํ™•๋Œ€๋กœ ๋‚ด๊ตญ์ธ ์ถœ๊ตญ์ž ์ˆ˜๊ฐ€ ๋Š˜๊ณ  ์˜จ๋ผ์ธ ์‡ผํ•‘ ์ง๊ตฌ๋„ ์ฆ๊ฐ€ํ–ˆ๊ธฐ ๋•Œ๋ฌธ”์ด๋ผ๊ณ  ์ด์œ ๋ฅผ ์„ค๋ช…ํ–ˆ๋Š”๋ฐ..
Kotlin sealed class ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž
ยท
Languages/Kotlin
Kotlin Sealed ํด๋ž˜์Šค์˜ ์ดํ•ด: ๋””์ž์ธ ํŒจํ„ด ๋ฐ ํ™œ์šฉ ์‚ฌ๋ก€ ๋ถ„์„Kotlin์˜ sealed ํด๋ž˜์Šค๋Š” ์ œํ•œ๋œ ํด๋ž˜์Šค ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์œผ๋กœ, ์ปดํŒŒ์ผ ํƒ€์ž„์— ๋ชจ๋“  ํ•˜์œ„ ํƒ€์ž…์„ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ฃผ๋กœ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ๋””์ž์ธ ํŒจํ„ด๊ณผ์˜ ์‹œ๋„ˆ์ง€๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ๋…ผ๋ฌธ์—์„œ๋Š” sealed ํด๋ž˜์Šค์˜ ์ž‘๋™ ์›๋ฆฌ์™€ ์‹ค์ œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ์˜ ์ ์šฉ ์ „๋žต์„ ์ฒด๊ณ„์ ์œผ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.1. Sealed ํด๋ž˜์Šค์˜ ๊ตฌ์กฐ์  ํŠน์„ฑ1.1 ๊ณ„์ธต ์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜sealed ํด๋ž˜์Šค๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋กœ, ๋™์ผ ๋ชจ๋“ˆ ๋‚ด์—์„œ๋งŒ ์ƒ์† ๊ฐ€๋Šฅํ•œ ์ œ์•ฝ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค(Kotlin 1.5 ์ดํ›„ ํŒจํ‚ค์ง€ ๋ฒ”์œ„ ํ™•์žฅ). ์ด ์ œ์•ฝ์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ชจ๋“  ์„œ๋ธŒํด๋ž˜์Šค..