MSA์ ๋ชจ๋๋ก์ ์ํคํ ์ฒ์ ์ฐจ์ด์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
Monolithic Architecture๋ ์ํํธ์จ์ด์ ๋ชจ๋ ๊ตฌ์ฑ ์์๊ฐ ํ ํ๋ก์ ํธ์ ํตํฉ๋์ด ์๋ ํํ๋ก ๋ณดํต ์๊ท๋ชจ๋ก ์ด๋ฃจ์ด์ง๋ ํ๋ก์ ํธ์ ์ ํฉํ๋ค. MSA๋ Micro Service Architecture๋ก ์๋น์ค๋ค์ด ๊ฐ๊ฐ ๋ฐฐํฌ๋ ๊ตฌํ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ํํ๋ค. ๋ฐ๋ผ์ ๋ค์์ ๊ฐ๋ฐ์๋ค์ด ๊ฐ๋ฐํ๋ ๋๊ท๋ชจ ํ๋ก์ ํธ์ ์ ํฉํ๋ค.
Spring Cloud Netflix Eureka์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
๋ถ์ฐ ์์คํ ์์ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ์ ๊ด๋ จ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ปดํฌ๋ํธ์ ๋๋ค.
ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ์ ์ํธ์์ฉ์ ๊ด๋ฆฌํ๊ณ ์๋น์ค ๋ฑ๋ก๊ณผ ๊ฒ์์ ์ง์ํฉ๋๋ค.
-
์๋น์ค ๋ฑ๋ก
๊ฐ๊ฐ์ ๋ง์ดํฌ๋ก ์๋น์ค๋ Eureka ์๋ฒ์ ์์ ์ ๋ฑ๋กํ๋๋ฐ, ์ด ๋ฑ๋ก ๊ณผ์ ์์ ์๋น์ค๋ ์์ ์ ์ ๋ณด(ํฌํธ, ์ํ ์ ๋ณด ๋ฑ)๋ฅผ ์ ๊ณตํ๋ค.
-
์๋น์ค ๊ฒ์
๋ง์ดํฌ๋ก์๋น์ค๋ Eureka ์๋ฒ๋ฅผ ํตํด ๋ค๋ฅธ ์๋น์ค์ ์์น๋ฅผ ๋์ ์ผ๋ก ๊ฒ์ํ ์ ์๋ค.
ํด๋ผ์ด์ธํธ๋ ํ์ํ ์๋น์ค์ ์ธ์คํด์ค๋ฅผ ์ฐพ์ ์์ฒญ์ ๋ณด๋ผ ์ ์๋ค.
-
ํฌ์ค ์ฒดํฌ
์๋น์ค ์ธ์คํด์ค์ ์ํ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ธํ๊ณ ๋น์ ์์ ์ธ ์ธ์คํด์ค๋ ์๋์ผ๋ก ๋ฑ๋ก ํด์ ํ๋ค.
MSA๋ฅผ ๋๊ท๋ชจ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์ธ๊ฐ์?
-
๊ฐ๊ฐ์ ์๋น์ค๋ ๋ชจ๋ํ๊ฐ ๋์ด์๊ธฐ ๋๋ฌธ์ RPC, message-driven API ๋ฑ์ ์ด์ฉํ์ฌ ํต์ ํด์ ๊ฐ๊ฐ ๊ฐ๋ณ ์๋น์ค๋ฅผ ๋น ๋ฅด๊ฒ ๊ฐ๋ฐํ๊ณ ์ ์ง ๋ณด์๊ฐ ์ฝ๋ค.
-
ํ ๋จ์๋ก ์ ์ ํ ์์ค์ ๊ธฐ์ ์คํ์ ๋ค๋ฅด๊ฒ ๊ฐ์ ธ๊ฐ ์ ์๋ค.
-
์๋น์ค๋ณ๋ก ๋ ๋ฆฝ์ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ CD ์์ ๋ ๋ชจ๋๋ก์์ ๋นํด ๊ฐ๋ณ๋ค.
-
๊ฐ๋ณ์ ์ผ๋ก Scale-out์ด ๊ฐ๋ฅํด์ ๋ฉ๋ชจ๋ฆฌ, CPU์ ์ผ๋ก ์๋น ๋ถ๋ถ ์ด๋์ด๋ค.
MSA ํ๊ฒฝ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํฉ์ฑ์ ๋ง์ถ๋ ๋ฐฉ์์ ๋ํด ๋ง์ํด์ฃผ์ธ์.
2PC(Two-Phase Commit): ์๋ก ๋ค๋ฅธ DB ๊ฐ์ ์๋ฒฝํ ์ ํฉ์ฑ์ ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ์ผ๋ก, ๋ชจ๋ DB์ ๋ฐ์ํ ์ ์๋์ง ๋ฌผ์ด๋ด์ ํฉ์๊ฐ ๋์์ ๋๋ง ๋ฐ์ํ๊ณ ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ์ฒด๋ฅผ ์ฒ ํํ๋ ๋ฐฉ์์ ๋๋ค. ์ด ๋ค ๊ฐ DB์ ์ปค๋ฐํ๋๋ฐ ์ปค๋ฐ๋์ง ์์ ์ชฝ์ DB์ ๋ฝ์ด ์กํ ๋ฐ์ดํฐ๊ฐ ๋ถ์ผ์นํ ์ํ๋ก๋ ์ ๋ ์กฐํ๋์ง ์์ต๋๋ค. ๋จ, ์ ํฉ์ฑ์ ๋ณด์ฅ๋์ง๋ง ๋ฝ์ด ํ๋ฆฌ์ง ์์ผ๋ฉด ์ ์ญ ์ฅ์ ๋ฅผ ์ ๋ฐํ ์ ์์ด ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
CDC(Change Data Capture): ์ต์ข ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ๋ฐฉ์์ผ๋ก, ์ผ์์ ์ผ๋ก ์์ชฝ์ ํฉ์ด ๋ง์ง ์์ ์ ์์ผ๋ ๊ถ๊ทน์ ์ผ๋ก ๋ง๋๋ก ํ๋ ๋น๋๊ธฐ ๋ฐฉ์์ ๋๋ค. ์์คDB์ ํ๊ฒDB ๊ฐ์ ๋น๋๊ธฐ ๋ณต์ ์ญํ ์ ์ํํฉ๋๋ค. 2PC์ ์ ๋ฐ๋๋ก ํ๊ฒ DB์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋ณต๊ตฌ๋ ๋๊น์ง ๋ฐ๋ณต ์ํํ๋ฉด์ ๊ผญ ๋ฐ์์ํต๋๋ค. ๋๋ฌธ์ ๊ณ์ ์ด๊ธฐํ์ ๊ฐ์ด ๋ฐ๋์ ์ฑ๊ณตํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
SAGA ํจํด: ๊ฐ๋ฐ์๊ฐ ๋ณด์ ํธ๋์ญ์ ์ ์ ์ ์ํ๊ณ ๋๋ฝ๋์ง ์๋๋ก ๊ตฌ์ฑํ ์ฑ ์์ ์ง๋๋ค. ํํ๋ ฅ์ด ๋์ด์ ๋ณด์ ํธ๋์ญ์ ๊ตฌ์ฑ ๋ฐฉ์์ ๋ฐ๋ผ 2CP์ CDC์ ํจ๊ณผ๋ฅผ ๋ชจ๋ ๋ผ ์ ์์ต๋๋ค. ๋จ, ๋ชจ๋ ๋ณด์ ํธ๋์ญ์ ์ ์๋ฒฝํ๊ฒ ๊ตฌ์ฑํ๋ ๊ฒ์ ์ด๋ ค์ธ ์ ์๊ณ ๋จ๊ณ๋ณ ์๋ฌ ์ผ์ด์ค๋ฅผ ๋ชจ๋ ๊ฒ์ฆํด์ผ ํ๋ ๋ถ๋ด์ด ์์ต๋๋ค.
MSA์ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ์ ์ฅ๋จ์ ์ ๋ํด ๋ง์ํด์ฃผ์ธ์.
๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ๋ ํธ๋์ญ์ ๊ด๋ฆฌ๊ฐ ์ฝ๊ณ ๋ฐฐํฌ์ ํ ์คํธ๊ฐ ์ฉ์ดํฉ๋๋ค. ํ์ง๋ง ์ผ๋ถ๋ถ์ ์ค๋ฅ๊ฐ ์ ์ฒด์ ์ํฅ์ ๋ผ์น ์ ์๋ ๋จ์ ์ด ์์ต๋๋ค. ๋ ๋น๋ ๋ฐ ๋ฐฐํฌ ์๊ฐ์ด ๊ธธ์ด ์์ฐ์ฑ์ด ๋ฎ์์ง๋๋ค.
๋ฐ๋๋ก MSA๋ ์๋น์ค ๊ฐ ๋ ๋ฆฝ์ฑ์ด ๋์ ๋ฐฐํฌ ์ ๋ค๋ฅธ ์๋น์ค์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ํ์ง๋ง ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ด ๋ง์ ๋ณต์ก๋๊ฐ ๋๊ณ ํตํฉ ํ ์คํธ๊ฐ ์ด๋ ค์ด ๋จ์ ์ด ์์ต๋๋ค. ํธ๋์ญ์ ๊ด๋ฆฌ์ ๋ฐ์ดํฐ ์ ํฉ์ฑ ์ ์ง๊ฐ ๊น๋ค๋กญ์ต๋๋ค.
MSA๋ก ์ ํํ๊ธฐ ์ํ ํ์ ์์๋ก ๋ฌด์์ด ์์๊น์?
๋จผ์ ๋๋ฉ์ธ์ ๊ฒฝ๊ณ๋ฅผ ๋ช ํํ ์ค์ ํด ๊ฐ ์๋น์ค์ ์ฑ ์๊ณผ ์ญํ ์ ๋ช ํํ ์ ์ํด์ผ ํฉ๋๋ค. ๋ ๊ฐ ์๋น์ค๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ด์ํ๊ธฐ ์ํ ๋ ๋ฆฝ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ถํ๊ณ ์๋ฌ ๋ฐ์ ์ ์์ธ์ ๋น ๋ฅด๊ฒ ํ์ ํ๊ณ ๋ณต๊ตฌํ๊ธฐ ์ํ ๋ถ์ฐ ๋ก๊น ์์คํ ์ ๊ตฌ์ถํด์ผ ํฉ๋๋ค.