
์์ฆ MSA์ ๋ํ ์ง์์ ์๋ก ์ ์ํ๊ณ ์์ต๋๋ค.
๊ทธ๋ฌ๋ค๋ณด๋, API Gateway์ ์ญํ ๊ณผ ์ค์์ฑ์ ๋ํด์ ๊นจ๋ซ๊ณ ์๋๋ฐ์.
์ด๋ฒ ๊ธ์์ ๊ด๋ จ๋ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณด๊ณ ์ ํฉ๋๋ค.
MSA์ ๊ด๋ จํ ๋ด์ฉ์ ์๋ ๊ธ ์ฐธ๊ณ ํด์ฃผ์ธ์!
https://deep-flame.tistory.com/48
ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ๋์์ธ ํจํด: AI ํ๋ซํผ ๊ฐ๋ฐ์์ ์ํคํ ์ฒ ์ฑ์ฐฐ
๋ค์ด๊ฐ๋ฉฐ: ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ด๋ค๊ณ ๋ชจ๋ 'ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ'๋ ์๋๋๋ค.์ ๋ GPU ๊ธฐ๋ฐ์ LLM ํ์ต ๋ฐ ์๋น ํ๋ซํผ์ ๊ฐ๋ฐํ๊ณ ์์ต๋๋ค.GPU ๋ฆฌ์์ค ์ง์ฝ์ ์ธ ๋ก์ง์ ๋ค๋ฃจ๋ค ๋ณด๋ ๋น์ฐํ ์ฟ ๋ฒ๋คํฐ์ค
deep-flame.tistory.com
API Gateway๋ ๋ฌด์์ด๋ฉฐ, ์ ํ์ํ๊ฐ?
๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ(MSA)์์๋ ์๋ง์ ์๋น์ค๊ฐ ์กด์ฌํฉ๋๋ค.
API Gateway๋ ์ด๋ฌํ ์๋น์ค๋ค์ ๋จ์ผ ์ง์
์ (Single Entry Point) ์ญํ ์ ์ํํ๋ ์๋ฒ์
๋๋ค.
ํด๋ผ์ด์ธํธ(์น, SDK, CLI)๊ฐ ์์ญ ๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค ์ฃผ์๋ฅผ ์ผ์ผ์ด ์ ํ์ ์์ด, ์ด '๋๋ฌธ' ํ๋๋ง ํธ์ถํ๋ฉด ๋๋จธ์ง๋ ์์์ ๋ฐฐ๋ฌํด ์ฃผ๋ ๊ฒ์ด์ฃ .

API ๊ฒ์ดํธ์จ์ด๋ ์ค๊ฐ์ ์ญํ ์ ํ๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์
์๋น์ค๊ฐ ํด๋ผ์ด์ธํธ์ ์ง์ ๋
ธ์ถ๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
API ๊ฒ์ดํธ์จ์ด๊ฐ ์์ผ๋ฉด ํด๋ผ์ด์ธํธ๋ ๊ฐ๋ณ ์ ํ๋ฆฌ์ผ์ด์
์๋น์ค์ ์ง์ ํต์ ํด์ผ ํ๋ฏ๋ก ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ๋ณต์กํ ํด๋ผ์ด์ธํธ ์ฝ๋: ํด๋ผ์ด์ธํธ๋ ์ฌ๋ฌ ์๋ํฌ์ธํธ๋ฅผ ์ถ์ ํ๊ณ ์ค๋ฅ๋ฅผ ํ๋ ฅ์ ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
- ๊ฒฐํฉ๋ ์์น: ํด๋ผ์ด์ธํธ๋ ๊ฐ๋ณ ์๋น์ค๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ด๋ฅผ ๋ฐ์ํ๋ ์์ ์ด ํ์ํฉ๋๋ค.
- ๋๊ธฐ ์๊ฐ์ฆ๊ฐ: ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ฌ๋ฌ ๋คํธ์ํฌ ์๋ณต์ด ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ๋๊ธฐ ์๊ฐ์ด ์๋นํ ๋์ด๋๊ฒ ๋ฉ๋๋ค.
- ์๋ฌ ์ฌํญ ์ค๋ณต ์ฒ๋ฆฌ: ๊ฐ ๊ณต์ฉ ์๋น์ค๋ ์ธ์ฆ, SSL ๋ฐ ํด๋ผ์ด์ธํธ ์๋ ์ ํ๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ API Gateway๊ฐ ์ ์๋์์ต๋๋ค.
API Gateway์ ์ญํ
1. ์ธ์ฆ ๋ฐ ์ธ๊ฐ
๋ชจ๋ ๋ง์ดํฌ๋ก์๋น์ค๊ฐ ๊ฐ์ "๋ ๋๊ตฌ๋?"๋ผ๊ณ ๋ฌผ์ด๋ณด๋ ๊ฒ์ ๋นํจ์จ์ ์
๋๋ค.
์๋์ ๊ฐ์ด ์ธ์ฆ/์ธ๊ฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์์ง๋ง, ๊ฐ์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ์ผ๋ง๋ ์ง ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
- ์ค์ ์ง์ค์ ๊ฒ์ฆ: Gateway๊ฐ ์ ๊ตฌ์์ JWT์ ์๋ช ์ ํ์ธํ๊ณ ๋ง๋ฃ ์ฌ๋ถ๋ฅผ ์ฒดํฌํฉ๋๋ค.
- ๊ถํ ๋ถ์ฌ: ์ฌ์ฉ์ ํ ํฐ์ ๋ด๊ธด ๊ถํ(Role)์ ํ์ธํ์ฌ, ์ผ๋ฐ ์ฌ์ฉ์๊ฐ '๋ชจ๋ธ ์ญ์ ' API์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ์ ๊ตฌ์์ ์ปทํฉ๋๋ค.
- ์ ์ ์ ๋ฌ: ์ธ์ฆ์ ์ฑ๊ณตํ๋ฉด Gateway๋ X-User-ID ๊ฐ์ ์ปค์คํ ํค๋์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๋ด์ ๋ด๋ถ ์๋น์ค๋ก ์ ๋ฌํฉ๋๋ค.
2. ๋์ ๋ผ์ฐํ ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ
ํด๋ผ์ด์ธํธ๋ ํ๋์ ์ฃผ์๋ง ์๋ฉด ๋์ง๋ง, ๋ด๋ถ์ ์ผ๋ก๋ ์์ญ ๊ฐ์ ์๋น์ค๋ก ํฉ์ด์ง๋๋ค.
- ๊ฒฝ๋ก ๊ธฐ๋ฐ ๋ผ์ฐํ : /v1/train/ ์์ฒญ์ ํ์ต ์๋น์ค๋ก, /v1/predict/ ์์ฒญ์ ์๋น ์๋น์ค๋ก ์ง๋ฅ์ ์ผ๋ก ๋ผ์ฐํ ํฉ๋๋ค.
- ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ ์ฐ๋: Kubernetes ํ๊ฒฝ์์ ํ๋(Pod)์ IP๊ฐ ์์๋ก ๋ณํด๋, Gateway๋ ์๋น์ค ์ด๋ฆ์ ํตํด ์ด์์๋ ํ๋๋ฅผ ์ฐพ์ ํธ๋ํฝ์ ๋ณด๋ ๋๋ค.
- ์นด๋๋ฆฌ(Canary) ํ ์คํธ: ์๋ก์ด ๋ชจ๋ธ ์๋น ์ฝ๋๋ฅผ ๋ฐฐํฌํ์ ๋, ์ ์ฒด ํธ๋ํฝ์ 5%๋ง ์ ๊ท ๋ฒ์ ์ผ๋ก ๋ณด๋ด๋ ๋ฑ์ ์ ๊ตํ ์ ์ด๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
3. ์ฒ๋ฆฌ์จ ์ ํ ๋ฐ ์ํท ๋ธ๋ ์ดํน
- API ํ ๋น๋ ๊ด๋ฆฌ: LLM ์ธํผ๋ฐ์ค๋ ๋น์ฉ์ด ๋น์ธ๊ธฐ ๋๋ฌธ์, ์ฌ์ฉ์ ๋ฑ๊ธ์ ๋ฐ๋ผ ๋ถ๋น ํธ์ถ ํ์(RPM)๋ฅผ ์ ํํฉ๋๋ค.
- ์ฅ์ ์ ํ ๋ฐฉ์ง: ํน์ ์๋น์ค๊ฐ ์๋ต ๋ถ๋ฅ ์ํ๋ผ๋ฉด, Gateway๊ฐ ์ฆ์ ์ํท ๋ธ๋ ์ด์ปค๋ฅผ ์๋์์ผ ์ฌ์ฉ์์๊ฒ "์ ์ ํ ๋ค์ ์๋ํด ์ฃผ์ธ์"๋ผ๋ ์๋ต์ ๋น ๋ฅด๊ฒ ๋๋ ค์ค๋๋ค. ์ด๋ ์์คํ ์ ์ฒด๊ฐ ์ฐ์์ ์ผ๋ก ๋ง๋น๋๋ ๊ฒ์ ๋ง์ต๋๋ค.
4. ์์ฒญ ๋ฐ ์๋ต ๋ณํ
- ํ๋กํ ์ฝ ๋ณํ: ์ธ๋ถ ํด๋ผ์ด์ธํธ๋ ๋ค๋ฃจ๊ธฐ ์ฌ์ด REST/JSON์ผ๋ก ์์ฒญํ์ง๋ง, ๋ด๋ถ ์๋น์ค๋ผ๋ฆฌ๋ ๊ณ ์ฑ๋ฅ ํต์ ์ ์ํด gRPC๋ฅผ ์ฌ์ฉํ ๋ Gateway๊ฐ ์ค๊ฐ์์ ์ด๋ฅผ ๋ณํํด ์ค๋๋ค
- ๋ฐ์ดํฐ ๊ฐ๊ณต: ๋ณด์์ ์ํด ์๋ต์์ ๋ฏผ๊ฐํ ํ๋๋ฅผ ์ญ์ ํ๊ฑฐ๋, ์ฌ๋ฌ ์๋น์ค์ ์๋ต์ ํ๋๋ก ํฉ์ณ์(API Aggregation) ํด๋ผ์ด์ธํธ์ ์ ๋ฌํ๊ธฐ๋ ํฉ๋๋ค.
5. ๊ด์ฐฐ ๊ฐ๋ฅ์ฑ
- ํตํฉ ๋ก๊น : ๋ชจ๋ ์์ฒญ์ ์์๊ณผ ๋์ ๊ธฐ๋กํ๋ฏ๋ก, ์๋ฌ ๋ฐ์ ์ ์ถ์ ์ด ๋งค์ฐ ์ฉ์ดํฉ๋๋ค.
- ์งํ ์์ง: API๋ณ ์๋ต ์๊ฐ(Latency), ์ฑ๊ณต๋ฅ , ํธ๋ํฝ ์ ๋ฑ์ ์์งํ์ฌ Prometheus๋ Grafana ๋์๋ณด๋์ ๋ฟ๋ ค์ค๋๋ค.
API Gateway ์๋ฃจ์
๊ทธ๋ผ API Gateway ์๋ฃจ์
๋ค์ ๋ฌด์์ด ์์๊น์?
์ฌ์ค Public Cloud ํ๊ฒฝ์ ์ฌ์ฉํ๋ค๋ฉด ๊ฐ๊ฐ์ ํ๊ฒฝ์ ๋ง๋ ์์ ๊ด๋ฆฌํ ์๋ฃจ์
์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์ ๊ทผ์ฑ์ด ์ข์ต๋๋ค.
- AWS: Amazon API Gateway
- GCP: Apigee
- Azure: Azure API Management
๊ทธ ์ธ์ ์คํ์์ค๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Kong
์ ์ธ๊ณ์ ์ผ๋ก ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์คํ์์ค API Gateway๋ก, ๊ณ ์ฑ๋ฅ ์น ์๋ฒ์ธ NGINX๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์์ต๋๋ค.
- Cloud Native: ์ปจํ ์ด๋ ํ๊ฒฝ์ ์ต์ ํ๋์ด ์์ผ๋ฉฐ, ํนํ Kubernetes Ingress Controller๋ก์์ ์ธ๊ธฐ๊ฐ ๋งค์ฐ ๋์ต๋๋ค.
- Plug-and-Play: ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ต์ํํ๊ณ , ํ์ํ ๊ธฐ๋ฅ(JWT ์ธ์ฆ, Rate Limiting ๋ฑ)์ 'ํ๋ฌ๊ทธ์ธ'์ ๊ฝ๋ฏ์ด ์ถ๊ฐํ๋ ๊ตฌ์กฐ์ ๋๋ค.

Istio Ingress Gateway
Istio Ingress Gateway๋ ๊ณ ์ฑ๋ฅ ํ๋ก์์ธ Envoy๋ฅผ Data Plane์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
์ต๊ทผ์๋ Kubernetes ํ์ค์ธ Gateway API์ ํ์ค ๊ตฌํ์ฒด๋ก์ ์
์ง๋ฅผ ๊ตณํ๊ณ ์์ต๋๋ค.
- ์ธํ๋ผ ์ค์ฌ: ํธ๋ํฝ ๋ถํ , mTLS ์ํธํ, ์ํท ๋ธ๋ ์ดํน ๋ฑ ๋คํธ์ํฌ ๊ณ์ธต์ ๋ณต์กํ ์ ์ด์ ํนํ๋์ด ์์ต๋๋ค.
- ์๋น์ค ๋ฉ์ ํตํฉ: ํด๋ฌ์คํฐ ๋ด๋ถ ํต์ ๊ณผ ์ธ๋ถ ํต์ ์ ๋์ผํ Envoy ๊ธฐ๋ฐ ์ ์ฑ ์ผ๋ก ์ผ๊ด๋๊ฒ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-control/
Ingress Gateways
Describes how to configure an Istio gateway to expose a service outside of the service mesh.
istio.io