Cloud & Infrastructure/Migration

[Cloud Migration Ep.6] ๐Ÿš€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํŒจํ„ด: ๋ชจ๋†€๋ฆฌ์‹ vs. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค

ygtoken 2025. 3. 20. 17:31
728x90

๐Ÿ”ฅ ๋“ค์–ด๊ฐ€๋ฉฐ

 

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

ํŠนํžˆ ๊ธฐ์กด ๋ชจ๋†€๋ฆฌ์‹(Monolithic) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ ๋” ์œ ์—ฐํ•˜๊ฒŒ ์šด์˜ํ•˜๋ ค๋ฉด,

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(Microservices Architecture)๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ณผ์ •์„ ๊ณ ๋ฏผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๋ชจ๋†€๋ฆฌ์‹ vs. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ตฌ์กฐ ๋น„๊ต,

๊ทธ๋ฆฌ๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํŒจํ„ด๊ณผ ์ ์šฉ ์ „๋žต์„ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 


๐Ÿ— ๋ชจ๋†€๋ฆฌ์‹ vs. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜ ๋น„๊ต

 

ํด๋ผ์šฐ๋“œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ณผ์ •์—์„œ ๊ฐ€์žฅ ํฐ ๋ณ€ํ™” ์ค‘ ํ•˜๋‚˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์•„ํ‚คํ…์ฒ˜์˜ ๋ณ€ํ™”์ž…๋‹ˆ๋‹ค.

๊ธฐ์กด ์˜จํ”„๋ ˆ๋ฏธ์Šค ํ™˜๊ฒฝ์—์„œ ์šด์˜๋˜๋Š” ๋ชจ๋†€๋ฆฌ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํด๋ผ์šฐ๋“œ ์นœํ™”์ ์œผ๋กœ ์ „ํ™˜ํ•  ๋•Œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ์ž์ฃผ ๋…ผ์˜๋ฉ๋‹ˆ๋‹ค.

ํ•ญ๋ชฉ ๋ชจ๋†€๋ฆฌ์‹(Monolithic)  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค(Microservices)
๊ตฌ์กฐ ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค, ๋‹จ์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋…๋ฆฝ์ ์ธ ์ž‘์€ ์„œ๋น„์Šค๋“ค์˜ ์กฐํ•ฉ
๋ฐฐํฌ ๋ฐฉ์‹ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํ•œ ๋ฒˆ์— ๋ฐฐํฌ ๊ฐœ๋ณ„ ์„œ๋น„์Šค ๋‹จ์œ„๋กœ ๋ฐฐํฌ ๊ฐ€๋Šฅ
ํ™•์žฅ์„ฑ ์ˆ˜์ง ํ™•์žฅ(Scale-up) ์ค‘์‹ฌ ์ˆ˜ํ‰ ํ™•์žฅ(Scale-out) ๊ฐ€๋Šฅ
์˜์กด์„ฑ ์„œ๋น„์Šค ๊ฐ„ ๊ฐ•ํ•œ ๊ฒฐํ•ฉ(Tightly Coupled) ์„œ๋น„์Šค ๊ฐ„ ๋А์Šจํ•œ ๊ฒฐํ•ฉ(Loosely Coupled)
์žฅ์  ๊ฐœ๋ฐœ ๋ฐ ํ…Œ์ŠคํŠธ ์šฉ์ด, ๋‹จ์ˆœํ•œ ์šด์˜ ๋ฐฉ์‹ ์œ ์—ฐํ•œ ํ™•์žฅ์„ฑ, ๋…๋ฆฝ์ ์ธ ๋ฐฐํฌ ๊ฐ€๋Šฅ
๋‹จ์  ํ™•์žฅ ๋ฐ ์œ ์ง€๋ณด์ˆ˜ ์–ด๋ ค์›€, ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์ „์ฒด ์‹œ์Šคํ…œ ์˜ํ–ฅ ์ดˆ๊ธฐ ์„ค๊ณ„ ๋ฐ ์šด์˜ ๋ณต์žก๋„ ์ฆ๊ฐ€

๐Ÿ’ก ํ•ต์‹ฌ ์ฐจ์ด์ :

โœ” ๋ชจ๋†€๋ฆฌ์‹์€ ๋‹จ์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์šด์˜๋˜๋ฉฐ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฝ์ง€๋งŒ, ํ™•์žฅ์ด ์–ด๋ ต๋‹ค.

โœ” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค ๋‹จ์œ„๋กœ ์šด์˜๋˜๋ฉฐ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚˜์ง€๋งŒ, ๊ด€๋ฆฌ๊ฐ€ ๋ณต์žกํ•˜๋‹ค.

 


1๏ธโƒฃ ๋ชจ๋†€๋ฆฌ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํด๋ผ์šฐ๋“œ๋กœ ์ด์ „ํ•˜๋Š” ๋ฐฉ๋ฒ•

 

๊ธฐ์กด ๋ชจ๋†€๋ฆฌ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํด๋ผ์šฐ๋“œ๋กœ ์ด์ „ํ•  ๋•Œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ 3๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

โœ… 1. ๋ฆฌํ˜ธ์ŠคํŒ… (Rehosting, Lift & Shift)

โ€ข ๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ˆ˜์ • ์—†์ด ๊ทธ๋Œ€๋กœ ํด๋ผ์šฐ๋“œ๋กœ ์ด์ „

โ€ข ๊ฐ€์ƒ๋จธ์‹  ๋˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐฐํฌ

โ€ข ๋น ๋ฅด๊ฒŒ ํด๋ผ์šฐ๋“œ๋กœ ์ด์ „ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์žฅ๊ธฐ์ ์ธ ์ตœ์ ํ™”๋Š” ๋ถ€์กฑ

 

๐Ÿ’ก ์ ์šฉ ์˜ˆ:

โ€ข ๋ ˆ๊ฑฐ์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํด๋ผ์šฐ๋“œ์—์„œ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ

โ€ข ๊ธด๊ธ‰ํ•˜๊ฒŒ ํด๋ผ์šฐ๋“œ๋กœ ์ด์ „ํ•ด์•ผ ํ•˜๋Š” ํ”„๋กœ์ ํŠธ

 


โœ… 2. ๋ฆฌํŒฉํ† ๋ง (Refactoring, Replatforming)

โ€ข ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ผ๋ถ€๋ฅผ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฐฉ์‹์œผ๋กœ ๊ฐœ์„ 

โ€ข ๊ธฐ์กด ๋ชจ๋†€๋ฆฌ์‹ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ์ปจํ…Œ์ด๋„ˆ, PaaS ์„œ๋น„์Šค ํ™œ์šฉ

โ€ข ์ ์ง„์ ์ธ ์ „ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํด๋ผ์šฐ๋“œ ์ตœ์ ํ™” ๊ฐ€๋Šฅ

 

๐Ÿ’ก ์ ์šฉ ์˜ˆ:

โ€ข ๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปจํ…Œ์ด๋„ˆ(Docker, Kubernetes) ๊ธฐ๋ฐ˜์œผ๋กœ ์ „ํ™˜

โ€ข ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํด๋ผ์šฐ๋“œ ๊ด€๋ฆฌํ˜• DB ์„œ๋น„์Šค๋กœ ์ด์ „

 


โœ… 3. ๋ฆฌ์•„ํ‚คํ…ํŒ… (Rearchitecting, Microservices Transformation)

โ€ข ๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์™„์ „ํžˆ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์žฌ์„ค๊ณ„

โ€ข ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„ API ๊ธฐ๋ฐ˜ ํ†ต์‹  ๋ฐ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ ์ ์šฉ

โ€ข ์ดˆ๊ธฐ ๊ตฌ์ถ• ๋น„์šฉ์ด ๋†’์ง€๋งŒ, ์žฅ๊ธฐ์ ์œผ๋กœ ์šด์˜ ๋ฐ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚จ

 

๐Ÿ’ก ์ ์šฉ ์˜ˆ:

โ€ข ๋†’์€ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์„œ๋น„์Šค

โ€ข DevOps, CI/CD๋ฅผ ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉํ•˜๋Š” ์กฐ์ง

 


2๏ธโƒฃ ๋ชจ๋†€๋ฆฌ์‹ โ†’ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ „ํ™˜ ์ „๋žต

 

๋ชจ๋†€๋ฆฌ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ „ํ™˜ํ•  ๋•Œ ์ ์ง„์  ์ ‘๊ทผ ๋ฐฉ์‹์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

ํ•œ ๋ฒˆ์— ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ๋ฆฌ์Šคํฌ๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

โœ… 1. Strangler Fig ํŒจํ„ด (๋‹จ๊ณ„๋ณ„ ์ „ํ™˜)

โ€ข ๊ธฐ์กด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ผ๋ถ€ ๊ธฐ๋Šฅ๋ถ€ํ„ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ณ€ํ™˜

โ€ข API Gateway๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ์„ ์ ์ง„์ ์œผ๋กœ ์ƒˆ๋กœ์šด ์„œ๋น„์Šค๋กœ ์ด๋™

โ€ข ๋ฆฌ์Šคํฌ๋ฅผ ์ค„์ด๋ฉด์„œ ์•ˆ์ „ํ•˜๊ฒŒ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฐ€๋Šฅ

 

๐Ÿ’ก ์ ์šฉ ์˜ˆ:

โ€ข ๊ธฐ์กด ์‚ฌ์šฉ์ž ์ธ์ฆ ๊ธฐ๋Šฅ์„ ๋ณ„๋„ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ถ„๋ฆฌ

โ€ข ์ผ๋ถ€ ๊ธฐ๋Šฅ์„ ์„œ๋ฒ„๋ฆฌ์Šค(Serverless)๋กœ ์ „ํ™˜

 


โœ… 2. ์„œ๋น„์Šค ๋ถ„ํ•  (Decomposition by Business Capability)

โ€ข ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋น„์ฆˆ๋‹ˆ์Šค ๋„๋ฉ”์ธ๋ณ„๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ „ํ™˜

โ€ข ์˜ˆ๋ฅผ ๋“ค์–ด ์ฃผ๋ฌธ ์„œ๋น„์Šค, ๊ฒฐ์ œ ์„œ๋น„์Šค, ๊ณ ๊ฐ ์„œ๋น„์Šค ๋“ฑ์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋ถ„๋ฆฌ

 

๐Ÿ’ก ์ ์šฉ ์˜ˆ:

โ€ข ์ „์ž์ƒ๊ฑฐ๋ž˜ ์‚ฌ์ดํŠธ์—์„œ ์ƒํ’ˆ ๊ด€๋ฆฌ, ์ฃผ๋ฌธ ๊ด€๋ฆฌ, ๋ฐฐ์†ก ๊ด€๋ฆฌ ์„œ๋น„์Šค๋ฅผ ๊ฐ๊ฐ ๋ถ„๋ฆฌ

 


โœ… 3. ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜ (Event-Driven Architecture)

โ€ข ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ„ ์ด๋ฒคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ์ˆ˜ํ–‰

โ€ข ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค(Kafka, RabbitMQ ๋“ฑ)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์„œ๋น„์Šค ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถค

 

๐Ÿ’ก ์ ์šฉ ์˜ˆ:

โ€ข ์ฃผ๋ฌธ์ด ์™„๋ฃŒ๋˜๋ฉด **โ€œ์ฃผ๋ฌธ ์ƒ์„ฑ ์ด๋ฒคํŠธ(Order Created Event)โ€**๋ฅผ ๋ฐœํ–‰ํ•˜๊ณ , ๊ฒฐ์ œ ์„œ๋น„์Šค์—์„œ ์ด๋ฅผ ์ฒ˜๋ฆฌ

 


3๏ธโƒฃ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์ „ํ™˜ ์‹œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์š”์†Œ

 

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ „ํ™˜ํ•˜๋ฉด ์šด์˜ ๋ฐฉ์‹์ด ๊ธฐ์กด๊ณผ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ช‡ ๊ฐ€์ง€ ๊ณ ๋ คํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

โœ… 1. API ๊ฒŒ์ดํŠธ์›จ์ด ์ ์šฉ

โ€ข ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ๊ฐœ๋ณ„์ ์œผ๋กœ API๋ฅผ ์ œ๊ณตํ•˜๋ฏ€๋กœ, API Gateway๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌ

โ€ข ์ธ์ฆ, ๋กœ๊น…, ํŠธ๋ž˜ํ”ฝ ์ œ์–ด ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ค‘์•™์—์„œ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ

 


โœ… 2. ๋ฐ์ดํ„ฐ ๋ถ„๋ฆฌ ๋ฐ ๊ด€๋ฆฌ

โ€ข ๊ธฐ์กด ๋ชจ๋†€๋ฆฌ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ณต์œ ํ•˜์ง€๋งŒ,

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๊ฐ ์„œ๋น„์Šค๋ณ„๋กœ ๋…๋ฆฝ์ ์ธ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ

โ€ข CQRS(Command Query Responsibility Segregation) ํŒจํ„ด์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์กฐํšŒ/์ˆ˜์ •์„ ๋ถ„๋ฆฌ

 


โœ… 3. CI/CD ๋ฐ DevOps ํ”„๋กœ์„ธ์Šค ์ ์šฉ

โ€ข ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ๋Š” ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ๋˜๋ฏ€๋กœ

CI/CD(Continuous Integration & Deployment) ์ž๋™ํ™”๊ฐ€ ํ•„์ˆ˜

 

๐Ÿ’ก ์ถ”์ฒœ ํˆด:

โœ” CI/CD: Jenkins, GitHub Actions, ArgoCD

โœ” ์ปจํ…Œ์ด๋„ˆ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜: Kubernetes, Docker Swarm

 


๐Ÿ“Œ Summary

 

โœ” ๊ธฐ์กด ๋ชจ๋†€๋ฆฌ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํด๋ผ์šฐ๋“œ๋กœ ์ด์ „ํ•  ๋•Œ ๋ฆฌํ˜ธ์ŠคํŒ…, ๋ฆฌํŒฉํ† ๋ง, ๋ฆฌ์•„ํ‚คํ…ํŒ… ์ค‘ ์„ ํƒ ๊ฐ€๋Šฅ

โœ” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ „ํ™˜ํ•  ๊ฒฝ์šฐ Strangler Fig ํŒจํ„ด, ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ ์ง„์  ์ „ํ™˜ ํ•„์š”

โœ” API Gateway, ๋ฐ์ดํ„ฐ ๋ถ„๋ฆฌ, CI/CD ์ž๋™ํ™” ๋“ฑ ์šด์˜ ์ตœ์ ํ™” ์ „๋žต์ด ํ•„์š”

 

728x90