MSA ( ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ) ์ดํดํ๊ธฐ
๐งฉ MSA (๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ)๋?
๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ(Microservices Architecture, MSA)๋ ํ๋์ ํฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ๋ฌ ๊ฐ์ ์๊ณ ๋ ๋ฆฝ์ ์ธ ์๋น์ค ๋จ์๋ก ๋๋์ด ๊ฐ๋ฐํ๊ณ ์ด์ํ๋ ์ํคํ ์ฒ ์คํ์ผ์ ๋๋ค. ๊ฐ ์๋น์ค๋ ํน์ ๋น์ฆ๋์ค ๊ธฐ๋ฅ์ ์ด์ ์ ๋ง์ถ๋ฉฐ, ์์ฒด์ ์ธ ํ๋ก์ธ์ค๋ก ์คํ๋๊ณ ๋ค๋ฅธ ์๋น์ค๋ค๊ณผ๋ API๋ฅผ ํตํด ํต์ ํฉ๋๋ค.
์ด๋ ์ ํต์ ์ธ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ(Monolithic Architecture)๊ฐ ๊ฐ์ง๋ ๊ฐ๋ฐ, ๋ฐฐํฌ, ํ์ฅ์ฑ์ ํ๊ณ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ๋ฑ์ฅํ์ต๋๋ค.
โจ MSA์ ์ฃผ์ ํน์ง ๋ฐ ์์น
- ๋จ์ผ ์ฑ ์ ์์น (Single Responsibility Principle): ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๋ ํน์ ๋น์ฆ๋์ค ๋๋ฉ์ธ์ด๋ ๊ธฐ๋ฅ์ ๋ํ ๋ช ํํ ์ฑ ์์ ๊ฐ์ง๋๋ค. ์ด๋ฅผ ํตํด ์๋น์ค์ ๋ณต์ก๋๋ฅผ ๋ฎ์ถ๊ณ ์์ง๋๋ฅผ ๋์ ๋๋ค.
- ๋ ๋ฆฝ์ ์ธ ๋ฐฐํฌ (Independent Deployment): ๊ฐ ์๋น์ค๋ ๋ค๋ฅธ ์๋น์ค์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ๋น๋, ํ ์คํธ, ๋ฐฐํฌ๋ ์ ์์ต๋๋ค. ์ด๋ ๋ ๋น ๋ฅด๊ณ ์ ์ฐํ ๋ฐฐํฌ ์ฃผ๊ธฐ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
- ๊ธฐ์ ๋ค์์ฑ ๋ฐ ๋ถ์ฐ๋ ๊ฑฐ๋ฒ๋์ค (Technology Diversity & Decentralized Governance): ๊ฐ ์๋น์ค ํ์ ํด๋น ์๋น์ค์ ์๊ตฌ์ฌํญ์ ๊ฐ์ฅ ์ ํฉํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ๋ ์์ํฌ ๋ฑ์ ๊ธฐ์ ์คํ์ ์์ ๋กญ๊ฒ ์ ํํ ์ ์์ต๋๋ค.
- ๋ถ์ฐ๋ ๋ฐ์ดํฐ ๊ด๋ฆฌ (Decentralized Data Management): ๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๋ ์์ฒด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ณ ๊ด๋ฆฌํ๋ ๊ฒ์ ์์น์ผ๋ก ํฉ๋๋ค. (์: ๊ฐ ์๋น์ค๊ฐ ๋ ๋ฆฝ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ์ง) ์ด๋ ์๋น์ค ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ์ง๋ง, ๋ฐ์ดํฐ ์ผ๊ด์ฑ ์ ์ง์ ๋ํ ๊ณ ๋ฏผ์ด ํ์ํฉ๋๋ค.
- ํ๋ ฅ์ฑ ๋ฐ ์ฅ์ ๊ฒฉ๋ฆฌ (Resilience & Fault Isolation): ํ๋์ ์๋น์ค์์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋, ํด๋น ์ฅ์ ๊ฐ ์ ์ฒด ์์คํ ์ผ๋ก ์ ํ๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. (์: ์ํท ๋ธ๋ ์ด์ปค ํจํด ์ ์ฉ)
- ํ์ฅ์ฑ (Scalability): ํน์ ์๋น์ค์ ๋ํ ์๊ตฌ์ฌํญ(ํธ๋ํฝ ์ฆ๊ฐ ๋ฑ)์ด ๋์ด๋ ๊ฒฝ์ฐ, ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ฅํ ํ์ ์์ด ํด๋น ์๋น์ค๋ง ๋ ๋ฆฝ์ ์ผ๋ก ํ์ฅํ ์ ์์ต๋๋ค.
- ์๋น์ค ๊ฐ ํต์ (Inter-Service Communication): ์๋น์ค๋ค์ ์ฃผ๋ก HTTP/REST API, gRPC ๋๋ ๋ฉ์์ง ํ(์: Kafka, RabbitMQ)์ ๊ฐ์ ๊ฒฝ๋ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ์๋ก ํต์ ํฉ๋๋ค.
๐ MSA์ ์ฅ์ ๊ณผ ๐ ๋จ์ (๋์ ๊ณผ์ )
์ฅ์ | ๋จ์ (๋์ ๊ณผ์ ) |
---|---|
|
|
๐ค MSA ๋์ , ์ธ์ ๊ณ ๋ คํด์ผ ํ ๊น์?
MSA๋ ๋ชจ๋ ํ๋ก์ ํธ์ ์ ํฉํ ๋ง๋ฅ ํด๊ฒฐ์ฑ ์ด ์๋๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ MSA ๋์ ์ ๊ณ ๋ คํด๋ณผ ์ ์์ต๋๋ค:
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ท๋ชจ๊ฐ ๋งค์ฐ ํฌ๊ณ ๋ณต์กํ์ฌ ๋ชจ๋๋ฆฌ์์ผ๋ก ๊ด๋ฆฌ๊ฐ ์ด๋ ค์ด ๊ฒฝ์ฐ
- ๋น์ฆ๋์ค ์๊ตฌ์ฌํญ์ด ๋น ๋ฅด๊ฒ ๋ณํ๊ณ , ์ ์ํ ๊ฐ๋ฐ๊ณผ ๋ฐฐํฌ ์ฃผ๊ธฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ
- ํน์ ๊ธฐ๋ฅ์ ๋ํ ๋์ ์์ค์ ํ์ฅ์ฑ๊ณผ ๊ฐ์ฉ์ฑ์ด ์๊ตฌ๋ ๋
- ์ฌ๋ฌ ํ์ด ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ์ด์ํ ์ ์๋ ์กฐ์ง ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ๊ฒฝ์ฐ
- ๋ค์ํ ๊ธฐ์ ์คํ์ ํ์ฉํ์ฌ ๊ฐ ๊ธฐ๋ฅ์ ์ต์ ํ๋ ์๋ฃจ์ ์ ๊ตฌ์ถํ๊ณ ์ ํ ๋
๐ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ์์ ๊ฐ๋ต ๋น๊ต
๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ (Monolithic Architecture):
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ๊ตฌ์ฑ ์์๊ฐ ํ๋์ ํฐ ๋จ์๋ก ํตํฉ๋์ด ๊ฐ๋ฐ๋๊ณ ๋ฐฐํฌ๋๋ ๊ตฌ์กฐ์ ๋๋ค.
- ๊ฐ๋ฐ ์ด๊ธฐ์๋ ๋จ์ํ๊ณ ๋น ๋ฅผ ์ ์์ง๋ง, ์์คํ ์ด ์ปค์ง์๋ก ๋น๋/ํ ์คํธ/๋ฐฐํฌ ์๊ฐ์ด ๊ธธ์ด์ง๊ณ , ์์ ๋ณ๊ฒฝ์ฌํญ ํ๋๊ฐ ์ ์ฒด ์์คํ ์ ์ํฅ์ ๋ฏธ์น ์ ์์ผ๋ฉฐ, ํน์ ๊ธฐ๋ฅ๋ง ํ์ฅํ๊ธฐ ์ด๋ ต๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ (MSA):
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ ๊ฐ๋ฅํ ์์ ์๋น์ค๋ค์ ์งํฉ์ผ๋ก ๊ตฌ์ฑํฉ๋๋ค.
- ๊ฐ ์๋น์ค๋ ํน์ ๋น์ฆ๋์ค ๊ธฐ๋ฅ์ ์ํํ๋ฉฐ, ์๋ก ๋์จํ๊ฒ ๊ฒฐํฉ(Loosely Coupled)๋์ด ์์ต๋๋ค.
๐ ๊ฒฐ๋ก
๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ๋ ํ๋์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์์ด ๋ง์ ์ด์ ์ ์ ๊ณตํ๋ ๊ฐ๋ ฅํ ํจ๋ฌ๋ค์์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋งํผ ๊ณ ๋ คํด์ผ ํ ๋ณต์ก์ฑ๊ณผ ๋์ ๊ณผ์ ๋ ์๋ฐํฉ๋๋ค.
์ค์ํ ๊ฒ์ ํ๋ก์ ํธ์ ํน์ฑ, ํ์ ์ญ๋, ์กฐ์ง ๋ฌธํ, ๊ทธ๋ฆฌ๊ณ ๋น์ฆ๋์ค ๋ชฉํ๋ฅผ ์ข ํฉ์ ์ผ๋ก ๊ณ ๋ คํ์ฌ ์ํคํ ์ฒ๋ฅผ ์ ์คํ๊ฒ ์ ํํ๋ ๊ฒ์ ๋๋ค. MSA๊ฐ ์ ๊ณตํ๋ ์ ์ฐ์ฑ, ํ์ฅ์ฑ, ํ๋ ฅ์ฑ์ ๊ฐ์น๊ฐ ์ด์์ ๋ณต์ก์ฑ์ ์์ํ ์ ์์ ๋ ์ฑ๊ณต์ ์ธ ๋์ ์ด ๊ฐ๋ฅํ ๊ฒ์ ๋๋ค.