MSA (Micro Service Architecture) ๋ž€ ๋ฌด์—‡์ผ๊นŒ?

๋ฐ˜์‘ํ˜•

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

์šฐ๋ฆฌ๋Š” ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด์„œ Spring, Django ๋“ฑ ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต ์ด๋“ค ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•ด์„œ ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” API๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ๊ฐœ๋ฐœํ•˜์—ฌ ์„œ๋น„์Šคํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ ํ˜•ํƒœ์ด์ฃ .

 

Monolothic Architecture

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

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

๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์„œ๋น„์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๊ณ , ์šด์˜ํ•จ์œผ๋กœ์จ ํ•˜๋‚˜์˜ ์„œ๋น„์Šค์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ๋‹ค๋ฅธ ์„œ๋น„์Šค์—๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด MSA(Micro Service Architecture)๋ฅผ ์ด์šฉํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

Micro Service Architecture

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

์„œ๋น„์Šค์˜ ํŠน์ง•์— ๋”ฐ๋ผ์„œ MSA๊ฐ€ ํšจ์œจ์ ์ผ ์ˆ˜๋„ ์žˆ๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์—์„œ ์„ค๋ช…ํ–ˆ๋‹ค์‹œํ”ผ ํŠน์ • ์„œ๋น„์Šค๊ฐ€ ๊ฐ API๋ณ„๋กœ ์ข…์†์ ์ด์ง€ ์•Š๋‹ค๋ฉด, ๊ทธ๊ฒƒ์€ MSA๊ฐ€ ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ ํ•˜๋‚˜์˜ ํ†ตํ•ฉ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค๋ฉด ์˜คํžˆ๋ ค ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ณต์žกํ•ด์ง€๊ธฐ๋งŒ ํ•  ๋ฟ, ๋ชจ๋†€๋ฆฌํ‹ฑ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋น„ํšจ์œจ์ ์ธ ๊ณผ์ •์˜ ํ˜•์‹์œผ๋กœ๋งŒ ๋‚จ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

Micro Service Architecture

๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋Š” ์œ„ ์ด๋ฏธ์ง€์ฒ˜๋Ÿผ ๊ฐ ์—ญํ•  ๋ณ„๋กœ ์„œ๋ฒ„๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•œ์ชฝ API์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ API๋Š” ์ •์ƒ์ ์œผ๋กœ ์šด์˜๋˜์–ด ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ •์ ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ฐ API๋ณ„๋กœ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์–ธ์–ด, ๋‹ค๋ฅธ DBMS๋ฅผ ์“ธ ์ˆ˜ ์žˆ์–ด ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ๋„ ๋‹ค์–‘์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๊ณ , API ํŠน์ง• ๋ณ„๋กœ ์ž์œ ๋กœ์šด ๊ฐœ๋ฐœ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ๋„ ์žฅ์ ์œผ๋กœ ๊ผฝ์„ ์ˆ˜ ์žˆ๊ฒ ์ฃ .

๋ชจ๋†€๋ฆฌํ‹ฑ ์•„ํ‚คํ…์ฒ˜๋Š” UI๊นŒ์ง€ ๋ชจ๋‘ ์„œ๋ฒ„์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ํ˜•ํƒœ์—ฌ์„œ ๋ณดํ†ต ์ด๋Ÿฌํ•œ ํ˜•ํƒœ์˜ ๊ฐœ๋ฐœ์€ JSP+Spring ์กฐํ•ฉ ํ˜น์€ HTML+PHP ์กฐํ•ฉ์ด๋ผ๊ณ  ์–˜๊ธฐํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋†€๋ฆฌํ‹ฑ ์•„ํ‚คํ…์ฒ˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ํ•˜๋‚˜์˜ ํ†ตํ•ฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐํฌ๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ…Œ๋ฉด JSP + Spring ์กฐํ•ฉ์œผ๋กœ ํ•˜์—ฌ๊ธˆ war ํŒŒ์ผ๋กœ ๋ฐฐํฌํ•˜๋ฉด ๋ฐฐํฌํ•œ war ํŒŒ์ผ๋งŒ์„ Tomcat ๋“ฑ์˜ WAS์— ์˜ฌ๋ฆฌ๋ฉด ๋ฐ”๋กœ ์šด์˜์ด ์‹œ์ž‘๋˜๋Š” ํ˜•ํƒœ์ธ ๊ฒƒ์ด์ฃ .

ํ•˜์ง€๋งŒ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋Š” ๊ฐ๊ธฐ API๋ณ„๋กœ ์„œ๋ฒ„๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํžˆ ํŒŒ์ผ ํ•˜๋‚˜๋กœ ๋ฐฐํฌํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ์„œ๋น„์Šคํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ธฐ ์œ„ํ•ด Docker compose ๋‚ด์ง€, Docker Swarm ๋“ฑ์˜ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ณ„๋„๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์šด์˜ ํ™˜๊ฒฝ์„ ์ง€๋„ํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๋งˆ์น˜๋ฉฐ...

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

๊ทธ๋ฆฌ๊ณ  ๋˜ ํ•œ ๊ฐ€์ง€๋Š” ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ๋…ธ๋“œ์˜ ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์šด์˜ ์ธก๋ฉด์—์„œ ๋ดค์„ ๋•Œ๋Š” ๋ชจ๋†€๋ฆฌํ‹ฑ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์žฅ์ ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ MSA๋Š” ํ•ด๋‹น API ์ˆ˜์— ๋”ฐ๋ผ์„œ ๋…ธ๋“œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋‹ˆํ„ฐ๋ง ํ•ด์•ผํ•˜๋Š” ๊ฐฏ์ˆ˜๊ฐ€ ๊ทธ๋งŒํผ ๋งŽ์•„์ง€๋Š” ๊ฒƒ์€ ๋‹จ์ ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๊ฒ ์ฃ .

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

๋ฐ˜์‘ํ˜•
TAGS.

Tistory Comments