๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ”ฌapplication/- distributed system

[๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค] Monolithic vs SOA vs Microservice, ๋‹ค์–‘ํ•œ ์•„ํ‚คํ…์ฒ˜์™€์˜ ๋น„๊ต

by Wonit 2021. 4. 14.

์˜ค๋Š˜์€ MSA์™€ ๋‹ค์–‘ํ•œ ์•„ํ‚คํ…์ฒ˜๋“ค์„ ๋น„๊ตํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

MSA ์•„ํ‚คํ…์ฒ˜ ์ฆ‰ Microservice Architecture๋Š” ๊ธฐ์กด์— ์กด์žฌํ•˜๋˜ ์•„ํ‚คํ…์ฒ˜์™€๋Š” ์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜ ๋ฐฉ์‹์œผ๋กœ ๋‹ค์–‘ํ•œ ์•„ํ‚คํ…์ฒ˜๋“ค๊ณผ ๋น„๊ต๋˜๊ณค ํ•˜๋Š”๋ฐ, ๊ธฐ์กด์— ์กด์žฌํ•˜๋˜ ์•„ํ‚คํ…์ฒ˜์˜ ๋Œ€ํ‘œ์ ์ธ 2๊ฐ€์ง€๋ฅผ ์ด์•ผ๊ธฐ ํ•ด๋ณด๋ ค ํ•œ๋‹ค.

 

  1. Monolithic Architecture
  2. Service Oriented Architecture
  3. Microservice Architecture

 

Monolichic, ๋ชจ๋†€๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜

๋ชจ๋†€๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜๋Š” ๊ทธ๋ฆผ์—์„œ ๋ณด๋‹ค์‹ถ์ด ํ•˜๋‚˜์˜ ์„œ๋ฒ„์— ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์ด ์œ„์น˜ํ•ด์žˆ๋Š” ์•„ํ‚คํ…์ฒ˜์ด๋‹ค.

 

์ฆ‰, ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์— ์ฝ”๋“œ๊ฐ€ ๋ชจ์—ฌ์žˆ๊ณ  ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

 

๋ณดํ†ต DB, View, Controller๋กœ ๊ตฌ์„ฑ๋œ ์ปดํฌ๋„ŒํŠธ๋“ค์ด ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ๊ด€๋ฆฌ๋˜๊ณ  ํ•˜๋‚˜์˜ ๊ณตํ†ต๋œ DB๋ฅผ ๋ฐ”๋ผ๋ณด๊ณ  ์žˆ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

์ด๋“ค์€ ๋ฐฐํฌ๋˜๊ธฐ ์œ„ํ•ด์„œ ์„œ๋กœ ์˜์กด์„ฑ์„ ๊ฐ€์ง€๊ณ  ๋ฐฐํฌ๋œ๋‹ค.

 

์žฅ์ 

๋Œ€ํ‘œ์ ์ธ ์žฅ์ ์œผ๋กœ๋Š” ๊ณผ๊ฑฐ์— ๋Œ€๋ถ€๋ถ„์˜ ์„œ๋น„์Šค๋Š” ๋ชจ๋†€๋ฆฌ์Šค ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์–‘ํ•œ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ์ ๊ณผ ์ธํ”„๋ผ์˜ ๊ตฌ์„ฑ๊ณผ ์šด์šฉ์ด ๊ฐ„ํŽธํ•˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

 

๋˜ํ•œ ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ์ด ์‰ฝ๋‹ค.

 

๋ฌธ์ œ์ 

๋ชจ๋†€๋ฆฌ์Šค ์•„ํ‚คํ…์ฒ˜์˜ ์„œ๋น„์Šค๋“ค์€ ์„œ๋น„์Šค๊ฐ„์— ์„œ๋กœ ์˜์กด์„ฑ์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ์Šคํ…œ์˜ ์ผ๋ถ€๋งŒ ์ˆ˜์ •ํ•˜๋”๋ผ๋„ ์ „์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ Build, Test, Packaging ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค.

 

๊ทธ๋ž˜์„œ ๊ฐ„๋‹จํ•œ ์ˆ˜์ •์— ์˜ค๋žœ down time์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‰ฌ์šด ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

Service Oriented Architecture, SOA

SOA ์•„ํ‚คํ…์ฒ˜๋Š” ๊ณตํ†ต๋œ ์„œ๋น„์Šค๋ฅผ ESB์— ๋ชจ์•„ ์‚ฌ์—… ์ธก๋ฉด์—์„œ ๊ณตํ†ต ๊ธฐ๋Šฅ์˜ ์ง‘ํ•ฉ์„ ํ†ตํ•ด ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

 

ESB๋ž€? Enterprise Service Bus๋กœ ์„œ๋น„์Šค๋“ค์„ ์ปดํฌ๋„ŒํŠธํ™”๋œ ๋…ผ๋ฆฌ์  ์ง‘ํ•ฉ์œผ๋กœ ๋ฌถ๋Š” ๋ฏธ๋“ค์›จ์–ด๋กœ ์ด๋ฒคํŠธ ๋ฐ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์š”์ฒญ๊ณผ ์ฒ˜๋ฆฌ๋ฅผ ์ค‘๊ฐœํ•˜์—ฌ ์ธํ”„๋ผ ์ „์ฒด ์ŠคํŠธ๋Ÿญ์ฒ˜์— ๋ถ„ํฌ๋˜๊ฒŒํ•œ๋‹ค.

 

์—ฌ๊ธฐ์„œ๋Š” ์„œ๋น„์Šค๊ฐ€ ์•„์ฃผ ์ค‘์š”ํ•œ ๊ฐœ๋…์ธ๋ฐ ์„œ๋น„์Šค๋Š” ๋ญ˜๊นŒ?

 

Service

์„œ๋น„์Šค๋Š” ๊ธฐ์—…์˜ ์—…๋ฌด์— ๋”ฐ๋ผ ๋‚˜๋‰˜์–ด์ง„ ํ•˜๋‚˜์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋œปํ•œ๋‹ค.


ํ˜„๋Œ€์˜ SOA์—์„œ ์„œ๋น„์Šค๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋Š” ๊ธฐ์—…์˜ ์—…๋ฌด ์ค‘ ํ•˜๋‚˜๋ฅผ ๋œปํ•œ๋‹ค.

 

์žฅ์ 

ESB๋ฅผ ์ด์šฉํ•œ SOA๋Š” ์„œ๋น„์Šค ๋‹จ์œ„๋กœ ๋ชจ๋“ˆ์„ ๋ถ„๋ฆฌํ•˜๋‹ค ๋ณด๋‹ˆ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ์•„์ง€๋Š” Loosly Coupled ๋œ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋œ๋‹ค.


์ด๋Ÿฐ ํŠน์ง•์€ ์„œ๋น„์Šค๋ฅผ ์ง€ํ–ฅํ•˜์—ฌ ๊ฐ๊ฐ์˜ ๋ชจ๋“ˆ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ž„๊ณผ ๋™์‹œ์— ๋ฒ„์Šค ํ˜•ํƒœ์— ์—ฐ๊ฒฐ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ํ™•์žฅ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์ด ์ฆ๊ฐ€ํ•œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

 

๋ฌธ์ œ์ 

ํ•˜์ง€๋งŒ ESB๋„ ์–ด์ฉ” ์ˆ˜ ์—†์ด ํ•˜๋‚˜์˜ DB๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์—์„œ ๋Š์–ด์งˆ ์ˆ˜ ์—†๋Š” ์˜์กด์„ฑ์ด ์กด์žฌํ•˜๊ธฐ ๋งˆ๋ จ์ด๋‹ค.

 

๋˜ํ•œ ๊ตฌ์ฒด์ ์ด์ง€ ์•Š์€ ํŠน์„ฑ ๋•๋ถ„์— ๋น„์ฆˆ๋‹ˆ์Šค์—์„œ์˜ ์‹ค ์„ฑ๊ณต ์‚ฌ๋ก€๊ฐ€ ๋“œ๋ฌผ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

 

Microservice Architecture, MSA

 

MSA ์•„ํ‚คํ…์ฒ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์„ฑ์š”์†Œ๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

ํ•œ ๋ˆˆ์— ๋ณด๋”๋ผ๋„ Monolithic๊ณผ SOA์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๋ณต์žกํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋Ÿฐ MSA๋Š” ๋ฆฌํŒฉํ† ๋ง์˜ ์ €์ž ๋งˆํ‹ด ํŒŒ์šธ๋Ÿฌ Martin Fowler๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ์‚ฌ์šฉํ•œ ์šฉ์–ด๋กœ ํ•ต์‹ฌ์€ SOA ์—์„œ ๋” ๋ฐœ์ „ํ•ด ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ์ž‘์€ ๊ทœ๋ชจ์˜ ์„œ๋น„์Šค์˜ ์ง‘ํ•ฉ์„ ๋งํ•œ๋‹ค.

 

์ด๋Ÿฐ MSA์—๋Š” ๋ช‡ ๊ฐ€์ง€ ํŠน์ง•์ด ์กด์žฌํ•œ๋‹ค.

 

  1. ์„œ๋น„์Šค๋“ค์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋‹จ์œ„๋กœ ๋‚˜๋‰˜์–ด์ ธ์•ผ ํ•œ๋‹ค.
  2. ์„œ๋น„์Šค๋“ค์€ ์ตœ์†Œํ•œ์˜ ์ค‘์•™ ์ง‘์ค‘์‹ ๊ตฌ์„ฑ์ด ๋˜์–ด์•ผ ํ•œ๋‹ค.
  3. ์„œ๋น„์Šค๋“ค์€ ์„œ๋กœ ๋‹ค๋ฅธ ์–ธ์–ด์™€ DB๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค.
  4. ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๋“ค์€ HTTP API๋ฅผ ํ†ตํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”๋‹ค

์ด๋Ÿฐ ํŠน์„ฑ๋“ค์„ ํ†ตํ•ด์„œ ์šฐ๋ฆฌ๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ  ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Monolithic ์„œ๋น„์Šค๋Š” ์‹œ์Šคํ…œ ๋‚ด๋ถ€์˜ ํ˜ธ์ถœ, ์ปค๋„๋‹จ์œ„์˜ ํ˜ธ์ถœ์„ ํ†ตํ•ด์„œ ์„œ๋น„์Šค๋“ค์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์•˜๋‹ค๋ฉด MSA์—์„œ๋Š” HTTP ๋” ๋‚˜์•„๊ฐ€ RESTful ํ•œ API๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ ์„œ๋น„์Šค๋ฅผ ์™„์„ฑ์‹œํ‚จ๋‹ค.

 

์ด๋ฅผ ํ†ตํ•ด์„œ ๋”์šฑ decoupling ํ•œ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๋ณ€ํ™”์— ๋ฏผ์ฒฉํ•œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์žฅ์ 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ์„œ๋น„์Šค ๊ตฌ์„ฑ์š”์†Œ๋“ค์ด ๋ชจ๋‘ ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด์„œ ๋‚˜๋ˆ ์ง€๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์†Œํ•œ์˜ ์˜์กด์„ฑ์„ ๊ฐ€์ง€๊ฒŒ๋  ์ˆ˜ ์žˆ๋‹ค.
๊ทธ์— ๋”ฐ๋ผ์„œ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ƒˆ๋กœ์šด ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ์ถ”๊ฐ€๊ฐ€ ์ž์œ ๋กœ์›Œ์ง„๋‹ค.

 

๋ฌธ์ œ์ 

๊ทธ๋ฆผ์„ ๋ณด๋”๋ผ๋„ ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ MSA๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ์ผ์€ ์‰ฌ์šด ์ผ์ด ์•„๋‹ˆ๋‹ค.

 

๋ชจ๋†€๋ฆฌํ‹ฑ ์„œ๋น„์Šค๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์„œ๋กœ ๋‚ด๋ถ€์ ์œผ๋กœ ํ†ต์‹ ์„ ํ•˜์˜€์ง€๋งŒ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๋กœ ๋‚˜๋‰˜์–ด ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋ผ๋ฆฌ ํ†ต์‹ ์„ ํ•ด์•ผํ•˜๋Š” ๊ตฌ์กฐ๋ผ ์„ค์ •์— ๋Œ€ํ•œ ์„œ๋ฒ„๋ฅผ ๋”ฐ๋กœ ๋‘˜ ์ •๋„๋กœ ๋ณต์žกํ•˜๊ฒŒ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

 

Monolithic vs SOA vs MSA

์ด์ œ ์ตœ์ข…์ ์œผ๋กœ ์ด๋“ค์„ ํ•˜๋‚˜์˜ ํ‘œ๋กœ ์ •๋ฆฌํ•ด์„œ ๋น„๊ตํ•ด๋ณด์ž.

์•„ํ‚คํ…์ฒ˜ ํŠน์ง• ๊ฒฐํ•ฉ๋„ ํ™•์žฅ์„ฑ ์„ฑ๊ณต ์‚ฌ๋ก€ ๊ธฐ์ˆ ์  ๋‚œ์ด๋„ ๋น„์šฉ
Monolithic ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ ๋งค์šฐ ๋†’์Œ ๋งค์šฐ ๋‚ฎ์Œ ๋งค์šฐ ๋งŽ์Œ ์‰ฌ์›€ ๋‚ฎ์Œ
SOA ์—ฌ๋Ÿฌ ์„œ๋น„์Šค, ํ•˜๋‚˜์˜ ๋ฒ„์Šค ๋‚ฎ์Œ ๋†’์Œ ์ ์Œ ์–ด๋ ค์›€ ์ค‘๊ฐ„
Microservice ๋…๋ฆฝ๋œ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค ๋งค์šฐ ๋‚ฎ์Œ ๋งค์šฐ ๋†’์Œ ๋งŽ์Œ ์–ด๋ ค์›€ ๋งค์šฐ ๋†’์Œ

Monolithic ์ด๋ผ๊ณ  ํ•ด์„œ ์ข‹์ง€ ์•Š์€ ์„œ๋น„์Šค๋ƒ? ์•„๋‹ˆ๋‹ค.

Microservice๋ผ๊ณ  ํ•ด์„œ ์ข‹์€ ์„œ๋น„์Šค๋ƒ? ์•„๋‹ˆ๋‹ค.

์ด ํŠน์ง•๋“ค์€ ์ด๋“ค์˜ ์ˆ˜์ค€์„ ๋†’๊ณ  ๋‚ฎ์Œ์„ ํ‰๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค.

๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ํ˜„์žฌ ๋‚ด๊ฐ€ ์†ํ•ด์žˆ๋Š” ์ง‘๋‹จ์—์„œ ๊ฐ€์žฅ ํ•„์š”ํ•œ ๊ธฐ์ˆ ์ด ๋ฌด์—‡์ด๋ƒ์™€ ๋น„์šฉ์ด ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ง€ํ‘œ๊ฐ€ ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

๋Œ“๊ธ€