์ค๋์ MSA์ ๋ค์ํ ์ํคํ ์ฒ๋ค์ ๋น๊ตํด๋ณด๋ ์๊ฐ์ ๊ฐ์ ธ๋ณด๋๋ก ํ๊ฒ ๋ค.
MSA ์ํคํ ์ฒ ์ฆ Microservice Architecture๋ ๊ธฐ์กด์ ์กด์ฌํ๋ ์ํคํ ์ฒ์๋ ์๋ก์ด ์ํคํ ์ฒ ๋ฐฉ์์ผ๋ก ๋ค์ํ ์ํคํ ์ฒ๋ค๊ณผ ๋น๊ต๋๊ณค ํ๋๋ฐ, ๊ธฐ์กด์ ์กด์ฌํ๋ ์ํคํ ์ฒ์ ๋ํ์ ์ธ 2๊ฐ์ง๋ฅผ ์ด์ผ๊ธฐ ํด๋ณด๋ ค ํ๋ค.
- Monolithic Architecture
- Service Oriented Architecture
- Microservice Architecture
Monolichic, ๋ชจ๋๋ฆฌ์ค ์ํคํ ์ฒ
๋ชจ๋๋ฆฌ์ค ์ํคํ ์ฒ๋ ๊ทธ๋ฆผ์์ ๋ณด๋ค์ถ์ด ํ๋์ ์๋ฒ์ ๋ค์ํ ๊ธฐ๋ฅ์ด ์์นํด์๋ ์ํคํ ์ฒ์ด๋ค.
์ฆ, ํ๋์ ํ๋ก์ ํธ์ ์ฝ๋๊ฐ ๋ชจ์ฌ์๊ณ ํ๋์ ํ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
๋ณดํต DB, View, Controller๋ก ๊ตฌ์ฑ๋ ์ปดํฌ๋ํธ๋ค์ด ํ๋์ ํ๋ก์ ํธ์์ ๊ด๋ฆฌ๋๊ณ ํ๋์ ๊ณตํต๋ DB๋ฅผ ๋ฐ๋ผ๋ณด๊ณ ์๋ค๋ ํน์ง์ด ์๋ค.
์ด๋ค์ ๋ฐฐํฌ๋๊ธฐ ์ํด์ ์๋ก ์์กด์ฑ์ ๊ฐ์ง๊ณ ๋ฐฐํฌ๋๋ค.
์ฅ์
๋ํ์ ์ธ ์ฅ์ ์ผ๋ก๋ ๊ณผ๊ฑฐ์ ๋๋ถ๋ถ์ ์๋น์ค๋ ๋ชจ๋๋ฆฌ์ค ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ๋ค์ํ ๋ ํผ๋ฐ์ค๊ฐ ์กด์ฌํ๋ค๋ ์ ๊ณผ ์ธํ๋ผ์ ๊ตฌ์ฑ๊ณผ ์ด์ฉ์ด ๊ฐํธํ๋ค๋ ์ฅ์ ์ด ์๋ค.
๋ํ ํ ์คํธ ๋ฐ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ ๊ตฌ์ฑ์ด ์ฝ๋ค.
๋ฌธ์ ์
๋ชจ๋๋ฆฌ์ค ์ํคํ ์ฒ์ ์๋น์ค๋ค์ ์๋น์ค๊ฐ์ ์๋ก ์์กด์ฑ์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์์คํ ์ ์ผ๋ถ๋ง ์์ ํ๋๋ผ๋ ์ ์ฒด ์ ํ๋ฆฌ์ผ์ด์ ์ Build, Test, Packaging ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ค.
๊ทธ๋์ ๊ฐ๋จํ ์์ ์ ์ค๋ down time์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์ฌ์ด ์์ ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ๋จ์ ์ด ์๋ค.
Service Oriented Architecture, SOA
SOA ์ํคํ ์ฒ๋ ๊ณตํต๋ ์๋น์ค๋ฅผ ESB์ ๋ชจ์ ์ฌ์ ์ธก๋ฉด์์ ๊ณตํต ๊ธฐ๋ฅ์ ์งํฉ์ ํตํด ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค.
ESB๋? Enterprise Service Bus๋ก ์๋น์ค๋ค์ ์ปดํฌ๋ํธํ๋ ๋ ผ๋ฆฌ์ ์งํฉ์ผ๋ก ๋ฌถ๋ ๋ฏธ๋ค์จ์ด๋ก ์ด๋ฒคํธ ๋ฐ ์๋น์ค์ ๋ํ ์์ฒญ๊ณผ ์ฒ๋ฆฌ๋ฅผ ์ค๊ฐํ์ฌ ์ธํ๋ผ ์ ์ฒด ์คํธ๋ญ์ฒ์ ๋ถํฌ๋๊ฒํ๋ค.
์ฌ๊ธฐ์๋ ์๋น์ค๊ฐ ์์ฃผ ์ค์ํ ๊ฐ๋ ์ธ๋ฐ ์๋น์ค๋ ๋ญ๊น?
Service
์๋น์ค๋ ๊ธฐ์ ์ ์ ๋ฌด์ ๋ฐ๋ผ ๋๋์ด์ง ํ๋์ ์ํํธ์จ์ด๋ฅผ ๋ปํ๋ค.
ํ๋์ SOA์์ ์๋น์ค๊ฐ ์๋ฏธํ๋ ๋ฐ๋ ๊ธฐ์
์ ์
๋ฌด ์ค ํ๋๋ฅผ ๋ปํ๋ค.
์ฅ์
ESB๋ฅผ ์ด์ฉํ SOA๋ ์๋น์ค ๋จ์๋ก ๋ชจ๋์ ๋ถ๋ฆฌํ๋ค ๋ณด๋ ์์ฐ์ค๋ฝ๊ฒ ๊ฒฐํฉ๋๊ฐ ๋ฎ์์ง๋ Loosly Coupled ๋ ์ํคํ ์ฒ๊ฐ ๋๋ค.
์ด๋ฐ ํน์ง์ ์๋น์ค๋ฅผ ์งํฅํ์ฌ ๊ฐ๊ฐ์ ๋ชจ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์๊ณผ ๋์์ ๋ฒ์ค ํํ์ ์ฐ๊ฒฐ๋ง ๊ฐ๋ฅํ๋ค๋ฉด ํ์ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ด ์ฆ๊ฐํ๋ค๋ ํน์ง์ด ์๋ค.
๋ฌธ์ ์
ํ์ง๋ง ESB๋ ์ด์ฉ ์ ์์ด ํ๋์ DB๋ฅผ ์ฌ์ฉํ๋ค๋ ์ ์์ ๋์ด์ง ์ ์๋ ์์กด์ฑ์ด ์กด์ฌํ๊ธฐ ๋ง๋ จ์ด๋ค.
๋ํ ๊ตฌ์ฒด์ ์ด์ง ์์ ํน์ฑ ๋๋ถ์ ๋น์ฆ๋์ค์์์ ์ค ์ฑ๊ณต ์ฌ๋ก๊ฐ ๋๋ฌผ๋ค๋ ํน์ง์ด ์๋ค.
Microservice Architecture, MSA
MSA ์ํคํ ์ฒ๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์ฑ์์๋ค์ ๊ฐ์ง๊ณ ์๋ค.
ํ ๋์ ๋ณด๋๋ผ๋ Monolithic๊ณผ SOA์๋ ๋ค๋ฅด๊ฒ ๋ณต์กํด ๋ณด์ผ ์ ์๋ค.
์ด๋ฐ MSA๋ ๋ฆฌํฉํ ๋ง์ ์ ์ ๋งํด ํ์ธ๋ฌ Martin Fowler๊ฐ ์ฒ์์ผ๋ก ์ฌ์ฉํ ์ฉ์ด๋ก ํต์ฌ์ SOA ์์ ๋ ๋ฐ์ ํด ํจ๊ป ์๋ํ๋ ์์ ๊ท๋ชจ์ ์๋น์ค์ ์งํฉ์ ๋งํ๋ค.
์ด๋ฐ MSA์๋ ๋ช ๊ฐ์ง ํน์ง์ด ์กด์ฌํ๋ค.
- ์๋น์ค๋ค์ ๋น์ฆ๋์ค ๋จ์๋ก ๋๋์ด์ ธ์ผ ํ๋ค.
- ์๋น์ค๋ค์ ์ต์ํ์ ์ค์ ์ง์ค์ ๊ตฌ์ฑ์ด ๋์ด์ผ ํ๋ค.
- ์๋น์ค๋ค์ ์๋ก ๋ค๋ฅธ ์ธ์ด์ DB๋ก ๊ตฌ์ฑ๋ ์ ์๋ค.
- ๊ฐ๊ฐ์ ์๋น์ค๋ค์ HTTP API๋ฅผ ํตํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค
์ด๋ฐ ํน์ฑ๋ค์ ํตํด์ ์ฐ๋ฆฌ๋ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ตฌ๋ถํ๊ณ ๊ตฌ์ฑํ ์ ์๋ค.
Monolithic ์๋น์ค๋ ์์คํ ๋ด๋ถ์ ํธ์ถ, ์ปค๋๋จ์์ ํธ์ถ์ ํตํด์ ์๋น์ค๋ค์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์๋ค๋ฉด MSA์์๋ HTTP ๋ ๋์๊ฐ RESTful ํ API๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ์๋น์ค๋ฅผ ์์ฑ์ํจ๋ค.
์ด๋ฅผ ํตํด์ ๋์ฑ decoupling ํ ์๋น์ค๋ฅผ ๊ตฌ์ฑํ๊ณ ๋ณํ์ ๋ฏผ์ฒฉํ ์๋น์ค๋ฅผ ์ ๊ณตํ ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ฅ์
์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ฑํ๋ ์๋น์ค ๊ตฌ์ฑ์์๋ค์ด ๋ชจ๋ ์ปจํ
์ด๋์ ์ํด์ ๋๋ ์ง๊ธฐ ๋๋ฌธ์ ์ต์ํ์ ์์กด์ฑ์ ๊ฐ์ง๊ฒ๋ ์ ์๋ค.
๊ทธ์ ๋ฐ๋ผ์ ์์ฐ์ค๋ฝ๊ฒ ์๋ก์ด ๋ชจ๋์ ๋ํ ์ถ๊ฐ๊ฐ ์์ ๋ก์์ง๋ค.
๋ฌธ์ ์
๊ทธ๋ฆผ์ ๋ณด๋๋ผ๋ ์ ์ ์์ง๋ง MSA๋ฅผ ๊ตฌ์ถํ๋ ์ผ์ ์ฌ์ด ์ผ์ด ์๋๋ค.
๋ชจ๋๋ฆฌํฑ ์๋น์ค๋ ํ๋์ ํ๋ก์ ํธ์์ ์๋ก ๋ด๋ถ์ ์ผ๋ก ํต์ ์ ํ์์ง๋ง ๋ง์ดํฌ๋ก์๋น์ค๋ ์ฌ๋ฌ ํ๋ก์ ํธ๋ก ๋๋์ด ํด๋น ํ๋ก์ ํธ๋ผ๋ฆฌ ํต์ ์ ํด์ผํ๋ ๊ตฌ์กฐ๋ผ ์ค์ ์ ๋ํ ์๋ฒ๋ฅผ ๋ฐ๋ก ๋ ์ ๋๋ก ๋ณต์กํ๊ฒ ๊ตฌ์ฑ๋์ด ์๋ค.
Monolithic vs SOA vs MSA
์ด์ ์ต์ข ์ ์ผ๋ก ์ด๋ค์ ํ๋์ ํ๋ก ์ ๋ฆฌํด์ ๋น๊ตํด๋ณด์.
์ํคํ ์ฒ | ํน์ง | ๊ฒฐํฉ๋ | ํ์ฅ์ฑ | ์ฑ๊ณต ์ฌ๋ก | ๊ธฐ์ ์ ๋์ด๋ | ๋น์ฉ |
Monolithic | ํ๋์ ํ๋ก์ ํธ | ๋งค์ฐ ๋์ | ๋งค์ฐ ๋ฎ์ | ๋งค์ฐ ๋ง์ | ์ฌ์ | ๋ฎ์ |
SOA | ์ฌ๋ฌ ์๋น์ค, ํ๋์ ๋ฒ์ค | ๋ฎ์ | ๋์ | ์ ์ | ์ด๋ ค์ | ์ค๊ฐ |
Microservice | ๋ ๋ฆฝ๋ ์ฌ๋ฌ ์๋น์ค | ๋งค์ฐ ๋ฎ์ | ๋งค์ฐ ๋์ | ๋ง์ | ์ด๋ ค์ | ๋งค์ฐ ๋์ |
Monolithic ์ด๋ผ๊ณ ํด์ ์ข์ง ์์ ์๋น์ค๋? ์๋๋ค.
Microservice๋ผ๊ณ ํด์ ์ข์ ์๋น์ค๋? ์๋๋ค.
์ด ํน์ง๋ค์ ์ด๋ค์ ์์ค์ ๋๊ณ ๋ฎ์์ ํ๊ฐํ ์ ์๋ค.
๋๊ธ