Notice
Recent Posts
Link
Today
Total
10-06 02:35
๊ด€๋ฆฌ ๋ฉ”๋‰ด

dingdong coding

Monolithic Architecture, Micro Service Architecture ๋ณธ๋ฌธ

๐ŸŒˆWeb & Network

Monolithic Architecture, Micro Service Architecture

๐Ÿถ ๊ฐœ๋ฐœ๊ฐœ๋ฐœ ๐Ÿพ 2022. 6. 27. 13:09

Monolithic Architecture, Micro Service Architecture (MSA) ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ธฐ ์ „ ๋จผ์ € ๋‘ ์•„ํ‚คํ…์ณ๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ทธ๋ฆผ์„ ์‚ดํŽด๋ด…์‹œ๋‹ค.

 

** ์™ผ์ชฝ์€ ๋ชจ๋†€๋ฆฌ์‹(Monolithic),  **์˜ค๋ฅธ์ชฝ์€ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค(Micro Service)

 

Monolithic vs Microservice

 

Monolithic vs Microservice

 

๋ณด๋‹ค์‹ถ์ด Monolithic์€ ํ•˜๋‚˜์˜ Project๋กœ ํ†ตํ•ฉ๋˜์–ด ๊ฐœ๋ฐœ๋˜๋Š”,  MSA๋Š” ๋ชจ๋“ˆ๋ณ„๋กœ ๊ฐœ๋ฐœํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋‘ ์•„ํ‚คํ…์ณ์˜ ํŠน์ง•๊ณผ ์žฅ๋‹จ์ ์„ ์•Œ์•„๋ด…์‹œ๋‹ค.

Monolithic Architecture

๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ ์ „ํ†ต์  ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ชจ๋“  ์‹œ์Šคํ…œ, ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ํ•œ ํ”„๋กœ์ ํŠธ์— ํ†ตํ•ฉ๋˜์–ด ์žˆ๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

 

1 Project : 1 Application์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ๋ณดํ†ต ๋™์ผํ•œ ๊ฐœ๋ฐœ ํˆด์„ ์ด์šฉํ•ด ๊ฐœ๋ฐœํ•˜๊ณ , ๋ฐฐํฌ์™€ ํ…Œ์ŠคํŠธ๋„ ํ•˜๋‚˜์˜ Application๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ ๋ฐ ํ™˜๊ฒฝ์„ค์ •์ด ๊ฐ„๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ๋กœ ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ๋งŽ์ด ์“ฐ์ž…๋‹ˆ๋‹ค. 

 

์žฅ์  

•  Local ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ ํŽธ๋ฆฌํ•จ

•  ํ†ตํ•ฉ ์‹œ๋‚˜๋ฆฌ์˜ค ํ…Œ์ŠคํŠธ ์ง„ํ–‰ ์ˆ˜์›”

•  ๊ฐ„ํŽธํ•œ ๋ฐฐํฌ

 

ํ•˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์œ„ ๊ฐ™์€ ์žฅ์ ๋„ ๋‹จ์ ์œผ๋กœ ๋ฐ”๋€Œ๋Š” ์ˆœ๊ฐ„์ด ์˜ต๋‹ˆ๋‹ค.

 

๋‹จ์ 

•  ์ฝ”๋“œ์˜ ์ˆ˜์ • ๋ฐ ์ถ”๊ฐ€, ํšจ์œจ์ ์ธ ์ž์›๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›€

   - ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•˜๋‚˜์˜ ์„œ๋น„์Šค์— ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜์–ด ์žˆ๊ธฐ ์งธ๋ฌธ์— ์ˆ˜์ •์— ๋Œ€ํ•œ ์˜ํ–ฅ๋„ ํŒŒ์•…์ด ์–ด๋ ค์›€

 

•  Build ๋ฐ Test ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง

   - ์ž‘์€ ์ˆ˜์ •์—๋„ ์‹œ์Šคํ…œ ์ „์ฒด๋ฅผ ๋นŒ๋“œํ•ด์•ผํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์‹œ๊ฐ„๋„ ๊ธธ์–ด์ง„๋‹ค.

 

•  scale out, ์ž์ฃผ ์—…๋ฐ์ดํŠธ ๋ถˆ๊ฐ€๋Šฅ 

   - Monolithic Architecture์—์„œ๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ Scale-out ๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋ถ„ Scale-out ์–ด๋ ต

 

•  ๋ถ€๋ถ„์˜ ์žฅ์• ๊ฐ€ ์„œ๋น„์Šค ์ „์ฒด์ ์ธ ์žฅ์• ๋กœ ์ด์–ด์ง 

   - ์ด๋ฒคํŠธ ์„œ๋น„์Šค์— ํŠธ๋ž˜ํ”ฝ์ด ๋ชฐ๋ ค ํ•ด๋‹น ์„œ๋ฒ„๊ฐ€ ์ฃฝ๊ฒŒ ๋˜๋ฉด ๋‹ค๋ฅธ ๋ชจ๋“  ์„œ๋น„์Šค ์—ญ์‹œ ๋งˆ๋น„๋˜๋Š” ์ƒํ™ฉ ๋ฐœ์ƒ  ex) ์ˆ˜๊ฐ•์‹ ์ฒญ..ใ…Ž

   - ๊ฐœ๋ฐœ์ž์˜ ์ž˜๋ชป๋œ ์ฝ”๋“œ ๋ฐฐํฌ ๋˜๋Š” ๊ฐ‘์ž‘์Šค๋Ÿฐ ํŠธ๋ž˜ํ”ฝ ์ฆ๊ฐ€๋กœ ์ธํ•ด ์„ฑ๋Šฅ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ์„œ๋น„์Šค ์ „์ฒด ์žฅ์• ๋กœ ํ™•๋Œ€๋จ

 

•  ์ƒˆ๋กœ์šด ๊ธฐ์ˆ  ์ ์šฉ์ด ์–ด๋ ต๊ณ  ํ•œ Framework ์™€ ์–ธ์–ด์— ์ข…์†์ ์ด๊ฒŒ ๋œ๋‹ค.

   - ๋งŒ์•ฝ Spring Framework๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ blockchain ์—ฐ๋™ ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ•  ๋•Œ node.js๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ธ ๊ฐ•์„ธ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ java๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ชจ๋“ˆ์„ ์ ์šฉํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค. ์„ ์ •ํ–ˆ๋˜ framework๊ฐ€ Spring์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.


์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์ธ ๊ฒฝ์šฐ์—๋Š” ํŠน๋ณ„ํžˆ ๋‚˜๋ˆŒ ํ•„์š” ์—†์ด Monolithic Architecture๊ฐ€ ํ•ฉ๋ฆฌ์ ์ผ ์ˆ˜ ์žˆ์œผ๋‚˜, ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ณ  ํ•œ ํ”„๋กœ์ ํŠธ์— ์†ํ•œ ๊ฐœ๋ฐœ์ž์ˆ˜๊ฐ€ ๋งŽ์•„์งˆ ์ˆ˜๋ก ์œ„ ๊ฐ™์€ ๋‹จ์ ๋“ค์ด ๋ถ€๊ฐ๋˜์–ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

 

๋˜ํ•œ ์ตœ๊ทผ ๋“ฑ์žฅํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋Š” ๋Œ€์ฒด๋กœ ๋งŽ์€ ๊ธฐ๋Šฅ, ๋Œ€๊ทœ๋ชจ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ Monolithic ์˜ ํ•œ๊ณ„์ ์„ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ๋Š” MSA๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

 

ํŠน์ •ํ•œ ๋ฌผ๋ฆฌ์ ์ธ ์„œ๋ฒ„์— ์„œ๋น„์Šค๋ฅผ ์˜ฌ๋ฆฌ๋˜ on-promise ์„œ๋ฒ„ ๊ธฐ๋ฐ˜์˜ Monolithic Architecture์—์„œ  ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์„ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” MicroService Architecture๋กœ ๋งŽ์€ ์„œ๋น„์Šค๋“ค์ด ์ „ํ™˜๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 


Micro Service Architecture , MSA

ํ•˜๋‚˜์˜ ํฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋‚˜๋ˆ  ๋งŒ๋“œ๋Š” ์•„ํ‚คํ…์ณ๋กœ  MSA๋Š” 1๊ฐœ์˜ ์‹œ์Šคํ…œ์„ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐฐํฌ๊ฐ€๋Šฅํ•œ ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๋กœ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, MSA๋Š” ๋…๋ฆฝ๋œ ๊ฐ๊ฐ์˜ ๋ชจ๋“ˆ์„ ์กฐ๋ฆฝํ•˜์—ฌ ๋งŒ๋“œ๋Š” ํ•˜๋‚˜์˜ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ ์•„ํ‚คํ…์ณ์ž…๋‹ˆ๋‹ค. ( SRP, Single Responseiblity Principle ๋‹จ์ผ์ฑ…์ž„์›์น™ ์ค‘์š” ) 

 

MSA๋กœ ๊ตฌ์„ฑ๋œ ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๋Š” API๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ 1๊ฐœ์˜ ํฐ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์„œ๋น„์Šค์˜ end-point(์ ‘๊ทผ์ )์„ API ํ˜•ํƒœ๋กœ ์™ธ๋ถ€์— ๋…ธ์ถœํ•˜๊ณ , ์‹ค์งˆ์ ์ธ ์„ธ๋ถ€์‚ฌํ•ญ์€ ๋ชจ๋‘ ์ถ”์ƒํ™” ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€์˜ ๊ตฌํ˜„๋กœ์ง, ์•„ํ‚คํ…์ฒ˜์™€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ํ’ˆ์งˆ ์œ ์ง€ ์ฒด๊ณ„์™€ ๊ฐ™์€ ๊ธฐ์ˆ ์ ์ธ ์‚ฌํ•ญ๋“ค์€ ์„œ๋น„์Šค API์— ์˜ํ•ด ์ฒ ์ €ํ•˜๊ฒŒ ๊ฐ€๋ ค์ง‘๋‹ˆ๋‹ค.

 

์žฅ์  

•  ์ผ๋ถ€ ์„œ๋น„์Šค์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ๋„ ์ „์ฒด ์„œ๋น„์Šค์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

   - ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๊ฐ€ ๋ชจ๋“ˆํ™” ๋˜์–ด ์žˆ์–ด ๊ฐ๊ฐ ๊ฐœ๋ณ„ ์„œ๋น„์Šค๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ณ , ์œ ์ง€๋ณด์ˆ˜๋„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์–ด ์žˆ๋‹ค.

 

•  ๊ฐ๊ฐ์˜ ์„œ๋น„์Šค๋“ค์€ ์„œ๋กœ ๋‹ค๋ฅธ ์–ธ์–ด์™€ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค.

   - ํŒ€ ๋‹จ์œ„๋กœ ์ ์ ˆํ•œ ์ˆ˜์ค€์—์„œ ๊ธฐ์ˆ  ์Šคํƒ์„ ๋‹ค๋ฅด๊ฒŒ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

•  Scale - out ๊ฐ€๋Šฅํ•˜์—ฌ ์„œ๋น„์Šค์˜ ํ™•์žฅ์ด ์šฉ์ดํ•˜๋‹ค

   - ์„œ๋น„์Šค ๋ณ„๋กœ ๋…๋ฆฝ์ ์ธ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

   - ๊ฐ๊ฐ ์„œ๋น„์Šค์˜ ๋ถ€ํ•˜์— ๋”ฐ๋ผ ๊ฐœ๋ณ„์ ์œผ๋กœ  scale-out์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฉ”๋ชจ๋ฆฌ, CPU ์ ์œผ๋กœ ์ƒ๋‹น๋ถ€๋ถ„ ์ด๋“์ด ๋œ๋‹ค.

 

๋‹จ์  

•  ์„œ๋น„์Šค๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด, ํ…Œ์ŠคํŒ…์ด๋‚˜ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ๋“ฑ์ด ์–ด๋ ต๋‹ค.

   - ๊ฐœ๋ฐœํ™˜๊ฒฝ๊ณผ ์‹ค์ œ ์šด์˜ํ™˜๊ฒฝ์„ ๋™์ผํ•˜๊ฒŒ ๊ฐ€์ ธ๊ฐ€๋Š” ๊ฒƒ์ด ์‰ฝ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ†ตํ•ฉํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. 

   - ๋น„์ฆˆ๋‹ˆ์Šค์— ๋Œ€ํ•œ DB๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์„œ๋น„์Šค๋„ ๊ฐ๊ธฐ ๋‹ค๋ฅด๊ณ , ์„œ๋น„์Šค์˜ ์—ฐ๊ฒฐ์„ ์œ„ํ•ด์„œ๋Š” ํ†ต์‹ ์ด ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํŠธ๋žœ์žญ์…˜์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

 

•   API Gateway, ์„œ๋น„์Šค ๊ฐ„์— API๋กœ ํ†ต์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ์— ๋Œ€ํ•œ ๋น„์šฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.

   - ๊ฐ ์„œ๋น„์Šค๊ฐ€ ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ ๋ถ„๋ฆฌ ๋ฐฐํฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„ URL์ด ๋‹ค๋ฅผ ์ˆ˜๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค.

   - ์ด ๋•Œ API Gateway๋Š” API ์„œ๋ฒ„ ์•ž ๋‹จ์—์„œ ๋ชจ๋“  API ์„œ๋ฒ„๋“ค์˜ End-Point๋ฅผ ๋‹จ์ผํ™”ํ•˜์—ฌ ๋ฌถ์–ด์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. 

 

•  ์„œ๋น„์Šค ๊ฐ„์˜ ํ˜ธ์ถœ์ด ์—ฐ์†์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋””๋ฒ„๊น… ๋ฐ ์—๋Ÿฌ ํŠธ๋ ˆ์ด์‹ฑ์ด ์–ด๋ ต๋‹ค.

 

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

 

 

ํ•™์Šต์— ๋งŽ์€ ๋„์›€์ด ๋œ ๋งํฌ๋ฅผ  ์ฐธ์กฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ™‚

 

์ฐธ์กฐ ๋ฐ ์ถœ์ฒ˜

[MSA] Monolithic Architecture VS Micro Service Architecture

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜(MSA) ๊ฐœ๋… ์†Œ๊ฐœ

[MSA] MSA๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ๊ฐœ๋… ์ดํ•ดํ•˜๊ธฐ

'๐ŸŒˆWeb & Network' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ Web, Network ] ๊ด€๋ จ ์šฉ์–ด ์ •๋ฆฌ ( ๊ฐœ์ธ ํ•™์Šต์šฉ )  (0) 2022.07.13
[ OS ] ํ”„๋กœ์„ธ์Šค์™€ ์Šค๋ ˆ๋“œ Process, Thread  (0) 2022.07.12
RESTful API  (0) 2022.06.15
HTTP Method  (0) 2022.04.09
HTTP  (0) 2022.03.27
Comments