๐กMSA?
MicroService Architecture์ ์ค์๋ง
๐บMonolithic Architecture ํ๊ณ
๋ถ๋ถ ์ฅ์ ๊ฐ ์ ์ฒด ์๋น์ค์ ์ฅ์ ๋ก ํ๋๋ ์ ์๋ค.
๋ถ๋ถ์ ์ธ *Scale-out(์ฌ๋ฌ server๋ก ๋๋์ด ์ผ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์)์ด ์ด๋ ต๋ค.
์๋น์ค์ ๋ณ๊ฒฝ์ด ์ด๋ ต๊ณ , ์์ ์ ์ฅ์ ์ ์ํฅ๋ ํ์ ์ด ํ๋ค๋ค.
๋ฐฐํฌ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค.
ํ Framework์ ์ธ์ด์ ์ข ์์ ์ด๋ค.
๐นMSA์ ์ฅ์
๊ฐ๊ฐ์ ์๋น์ค๋ ๋ชจ๋ํ๊ฐ ๋์ด์์ผ๋ฉฐ ์ด๋ฌํ ๋ชจ๋๊น๋ฆฌ๋ RPC ๋๋ message-driven API๋ฑ์ ์ด์ฉํ์ฌ ํต์ ํ๋ค.
์ด๋ฌํ MSA๋ ๊ฐ๊ฐ ๊ฐ๋ณ์ ์๋น์ค ๊ฐ๋ฐ์ ๋น ๋ฅด๊ฒ ํ๋ฉฐ, ์ ์ง๋ณด์๋ ์ฝ๊ฒํ ์ ์๋๋ก ํ๋ค.
ํ ๋จ์๋ก ์ ์ ํ ์์ค์์ ๊ธฐ์ ์คํ์ ๋ค๋ฅด๊ฒ ๊ฐ์ ธ๊ฐ ์ ์๋ค.
ํ์ฌ๊ฐ java์ spring ๊ธฐ๋ฐ์ด๋ผ๋ MSA๋ฅผ ์ ์ฉํ๋ฉด node.js๋ก ๋ธ๋ก์ฒด์ธ ๊ฐ๋ฐ ๋ชจ๋์ ์ฐ๋ํจ์ ๋ฌด๋ฆฌ๊ฐ ์๋ค.
๋ง์ดํฌ๋ก์๋น์ค๋ ์๋น์ค๋ณ๋ก ๋
๋ฆฝ์ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋ค.
๋ฐ๋ผ์ ์ง์์ ์ธ ๋ฐฐํฌ CD๋ ๋ชจ๋๋ก์์ ๋นํด์ ๊ฐ๋ณ๊ฒ ํ ์ ์๋ค.
๋ง์ดํฌ๋ก์๋น์ค๋ ๊ฐ๊ฐ ์๋น์ค์ ๋ถํ์ ๋ฐ๋ผ ๊ฐ๋ณ์ ์ผ๋ก scale-out์ด ๊ฐ๋ฅํ๋ค.
๋ฉ๋ชจ๋ฆฌ, CPU์ ์ผ๋ก ์๋น๋ถ๋ถ ์ด๋์ด ๋๋ค.
๐ธMSA์ ๋จ์
MSA๋ ๋ชจ๋๋ฆฌ์์ ๋นํด ์๋์ ์ผ๋ก ๋ง์ด ๋ณต์กํ๋ค.
์๋น์ค๊ฐ ๋ชจ๋ ๋ถ์ฐ๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๋ ๋ด๋ถ ์์คํ
์ ํต์ ์ ์ด๋ป๊ฒ ๊ฐ์ ธ๊ฐ์ผ ํ ์ง ์ ํด์ผํ๋ค. ๋ํ, ํต์ ์ ์ฅ์ ์ ์๋ฒ์ ๋ถํ ๋ฑ์ด ์์ ๊ฒฝ์ฐ ์ด๋ป๊ฒ transaction์ ์ ์งํ ์ง ๊ฒฐ์ ํ๊ณ ๊ตฌํํด์ผํ๋ค.
๋ชจ๋๋ฆฌ์์์๋ ๋จ์ผ ํธ๋์ญ์ ์ ์ ์งํ๋ฉด ๋์ง๋ง MSA์์๋ ๋น์ฆ๋์ค์ ๋ํ DB๋ฅผ ๊ฐ์ง๊ณ ์๋ ์๋น์ค๋ ๊ฐ๊ธฐ ๋ค๋ฅด๊ณ , ์๋น์ค์ ์ฐ๊ฒฐ์ ์ํด์๋ ํต์ ์ด ํฌํจ๋๊ธฐ ๋๋ฌธ์ ํธ๋์ญ์ ์ ์ ์งํ๋๊ฒ ์ด๋ ต๋ค.
ํตํฉ ํ
์คํธ๊ฐ ์ด๋ ต๋ค.
๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ์ค์ ์ด์ํ๊ฒฝ์ ๋์ผํ๊ฒ ๊ฐ์ ธ๊ฐ๋ ๊ฒ์ด ์ฝ์ง ์๋ค.