๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํด์๋ ๊ธฐ์ ์ ์ผ๋ก ๋ง์ ์ด๋ ค์์ด ์๋ฐ๋๋ค.
์๋์ ์ฌ์ง๋ง ๋ณด๋๋ผ๋ ํ๋์ ์๋น์ค๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํด์ ์์ผ์ ํ ๊ธฐ์ ๋ค์ด ๊ต์ฅํ ๋ง๋ค.
์ค๋์ ์ฌ๊ธฐ์ ๋์จ ๊ธฐ์ ๋ค์ ํน์ง๊ณผ ์ด๋ค ์ญํ ์ ์ํํ๋์ง์ ๋ํด์ ์์๋ณด๋ ค ํ๋ค.
CNCF๊ฐ ์ ์ํ ํ์ค MSA ๊ตฌ์ฑ ์์
CNCF๋ ์ง๋ Cloud Native Architecture ์์๋ ์ ๊น ์ธ๊ธํ Cloud Native Computing Foundation ๋จ์ฒด์ด๋ค.
CNCF ์์ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ์ง์ํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ๊ตฌ์ฑ ์์๋ค์ ๋ค์๊ณผ ๊ฐ์ด ๋๋๋ค.
- API Gateway ํจํด ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
- Service Mesh ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
- Container Runtime ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
- CI / CD ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
- Message Queuing ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
- RESTful API ๋ธ๋ก๊ทธ ์ค๋ช ๋ฐ๋ก๊ฐ๊ธฐ
Service Mesh
Service Mesh๋ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ์ ์ธํ๋ผ ์ฌ์ด์์ ์ํํ๊ฒ ํต์ ์ ์ํํ ์ ์๋๋ก ํ๋ ์ธํ๋ผ ๊ณ์ธต์ด๋ค.
์ํคํ ์ฒ ๋ด๋ถ์์ ์์ฒญ์ด ์ด๋ค ์ง์ ์ผ๋ก ๊ฐ์ง ์ ๋ฌ๋๋ ๋ฐฉ์์ ์ถ์ํ ํ๋ค.
์ด ๋ง์ ์ค์ง์ ์ธ ์๋ฒ๋ก์ ์กด์ฌํ๋ ๊ฒ์ด ์๋๋ผ ํ๋์ ์ถ์์ ์ธ ๊ฐ๋ ์ ๋ปํ๊ฒ ๋๋ค.
๊ฒฐ๊ตญ ์๋น์ค ๋ฉ์๋ฅผ ํตํด์ ์ฐ๋ฆฌ๋ ์๋น์ค ๊ฐ์ ํต์ ์ ์ถ์ํํ์ฌ ์์ ํ๊ณ ํจ์จ์ ์ด๋ฉฐ ๋น ๋ฅด๊ฒ ๊ตฌ์ฑํ ์ ์๊ฒ ๋๋ ๊ฒ์ด๋ค.
์ฆ, ์ ํ๋ฆฌ์ผ์ด์ ์ด ์๋ก ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ๋ ๋ฐฉ์์ ์ ์ดํ๋ ๋ฐฉ๋ฒ์ธ ์ ์ด๋ค.
Service Mesh๋ ์๋น์ค์ ํด๋ผ์ด์ธํธ ์ฌ์ด์์ Aggregate ์๋ฒ์ ์ญํ ์ฆ, ์ผ์ข ์ ๋ฏธ๋ค์จ์ด์ ํน์ฑ์ ๊ฐ๋๋ค.
์ด๋ฌํ ์๋น์ค ๋ฉ์ฌ๋ ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ์ํํ๋ค.
- ์๋น์ค ๋ฑ๋ก : Service Registery
- ์๋น์ค ๊ฒ์ : Service Discovery
- ๊ฐ ์๋น์ค์ ๊ณ ์ ํ ์ค์ ์ ๋ณด๋ฅผ ํ๋์ ํ๋ก์ ํธ์์ ๊ด๋ฆฌ : Configuration Server
- ํ๋ก์, ์ธ์ฆ, ๋ก๋ ๋ฐธ๋ฐ์ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ฅ ์ํ
- ์ํธํ
์ด๋ฌํ ์ ๋ณด๋๋ฅผ Dashboard๋ก ์ ๊ณตํ๋ ๊ฒฝ์ฐ๋ ์๋ค.
์ฃผ์ ํน์ง, Service Register & Discovery
์๋น์ค๋ฅผ ์๋กญ๊ฒ ์์ฑํ๋ค๋ฉด ํด๋น ์๋ฒ์ ๋ํ ์ ๋ณด๋ฅผ Service Mesh ์ ์กด์ฌํ๋ Discovery ์๋ฒ์ ๋ฑ๋กํ๋ค.
๊ทธ๋ผ ๊ฐ๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค๋ค์ IP ์ ๋ณด๋ ์ผ์ผ์ด ๋ฑ๋กํ์ง ์๋๋ผ๊ณ Discovery ์๋ฒ๊ฐ ๊ด๋ฆฌํ๊ฒ ๋๋ค.
API Gateway VS Service Mesh
API Gateway์ Service Mesh์ ํ๋ ์ผ์ ๋์ผํ๋ค.
ํ์ง๋ง ์ธ๋ถ์ ๋
ธ์ถ๋๋ ๊ฒ๊ณผ ์๋ ์์น์ ๋ฐ๋ผ ๋ค๋ฅธ๋ฐ, ์ด๋ฅผ ๊ฐ๋จํ๊ฒ ํ๋ก ๋ง๋ค์ด๋ณด์.
์ด๋ฆ | ์ํํ๋ ์ผ | ์ ์ฉ ์์น | ์ธ๋ถ ๋ ธ์ถ ์ฌ๋ถ |
API Gateway | ๋ผ์ฐํ , ์ธ์ฆ, ๋ชจ๋ํฐ๋ง, ์๋น์ค ๊ฒ์, ์๋น์ค ๋ฑ๋ก | Client-to-Server | Yes |
Service Mesh | ๋ผ์ฐํ , ์ธ์ฆ, ๋ชจ๋ํฐ๋ง, ์๋น์ค ๊ฒ์, ์๋น์ค ๋ฑ๋ก | Server-to-Server | No |
๊ทธ๋ผ API Gateway๋ Service Mesh๋ ์ฌ์ด์์ ์ด๋ค ๊ฒ์ ์จ์ผ ํ ๊น?
์ ๋ต์ ์๋ค. ์ฌ์ฉ๋๋ ์์น๋ ์กฐ๊ธ ๋ค๋ฅด์ง๋ง API Gateway์ Service Mesh๋ ์๋ก ๋์ผํ ๋ชฉ์ , ๋ก๋๋ฐธ๋ฐ์ฑ, ํ๋ก์, ์ธ์ฆ์ ์ํํ๋ค. ๊ทธ์ ๋ฐ๋ผ์ ์ ์ API ๊ฒ์ดํธ์จ์ด์ Service Mesh๊ฐ ํตํฉ๋๋ ์์ง์์ด ๋ณด์ธ๋ค. ์ ์ ํ ๋์ ์ฅ์ ์ ์ด์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค๊ณ ์๊ฐํ๋ค.
Service Mesh ์ ๊ตฌ์ฑ๋
์ด๋ Spring Cloud์ Eureka์ Gateway๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑํ ์๋น์ค ๋ฉ์ฌ ํฐ ๊ทธ๋ฆผ์ด๋ค.
์๋น์ค ๋ฉ์ฌ์๋ Sidecar ํจํด ๋ผ๋ ๊ฐ๋ ์ด ๋ฑ์ฅํ๋๋ฐ, ์ด๋ ์์ฃผ ์ค์ํ ๊ฐ๋ ์ด๋ค.
Sidecar Pattern
์์ ๊ตฌ์ฑ๋๋ฅผ ๋ณด๋ฉด ๊ฐ๊ฐ์ ์๋น์ค๋ค์ ์ด๋ป๊ฒ ์๋น์ค ์ ๋ณด๋ฅผ ๋ฑ๋กํ๊ณ ์๋น์ค ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์๊น?
๋ง์ฝ ๋ค๋ฅธ ์ธ์ด์ ๋ค๋ฅธ ํ๋ ์์ํฌ๋ก ๋์ํ๋ค๋ฉด?
์ด๋ด ๋ ์ฌ์ด๋์นด ํจํด์ ์ฌ์ฉํ ์์๋ค.
์ฌ์ด๋์นด ํจํด์ ๊ฒฉ๋ฆฌ ๋ฐ ์บก์ํ๋ฅผ ์ ๊ณตํ๋ ๋ณ๋์ ํ๋ก์ธ์ค ๋๋ ์ปจํ ์ด๋๋ฅผ ์ค์ง์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์ด๋ ์์ ๋ถ์ด๋ ๊ฒ์ ๋ปํ๋๋ฐ, ์คํ ๋ฐ์ด์ ์๋ ์ฌ์ด๋ ์นด์ ๋น์ทํ๋ค๊ณ ํด์ ์ด๋ฆ์ด ์ฌ์ด๋ ์นด ํจํด์ด๋ผ๊ณ ํ๋ค.
์ฆ, API Gateway๋ Service Discovery ๊ฐ Java๋ก ๊ตฌ์ฑ๋์ด์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
๊ทธ๋ผ ๋ค๋ฅธ ํ๋ซํผ ์ธ์ด๋ก ์์ฑ๋ ์๋ฒ์ Sidecar๋ฅผ ๋ถ์ฌ ๋์ํ๊ฒ ํ๋๊ฒ ๊ฐ๋ฅํด์ง๋ค.
์ด๋ฅผ ์ง์ํ๋ ๋๊ตฌ ๋ฐ ๊ธฐ์
ํ์ฌ ๋ง์ Service Mesh๋ฅผ ์ง์ํ๋ ๊ธฐ์ ๋ค์ด ์กด์ฌํ๋ค.
์ด๋ CNCF ์ CNCF Cloud Native Interactive Landscape ์์ ๋ ์์ธํ ํ์ธํ ์ ์๋ค.
- Netflix Eureka
- Netflix Ribbon
- Istio
- Hydra
๋๊ธ