
์๋ฅ ๋ฌธ์ ์์ฑ ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ๋ฉด์ Github Actions, ArgoCD, AWS, Rancher๋ฅผ ํ์ฉํด MSA ํ๊ฒฝ์ ๊ตฌ์ถํ์ต๋๋ค. LLM์ ํ์ฉํ RAG ์์คํ ๊ณผ ํ๋กฌํํ ์ฝ๋์ ์์ด ์ฆ๊ฐํ๋ฉด์, Django ๋ฐฑ์๋ ์ฝ๋์ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ๊ณ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ก์ต๋๋ค. ์ด์ FastAPI ์๋ฒ๋ฅผ ์ถ๊ฐํด LLM API๋ฅผ ๋ณ๋๋ก ๊ด๋ฆฌํ๋๋ก ์ ์ํ์๊ณ , ์ค์ ๋ก ๊ตฌํํ์์ต๋๋ค.
- ์ฐ์ , yaml ํ์ผ์ ์์ฑํ์ฌ Rancher์ ์๋ก์ด ์ ํ๋ฆฌ์ผ์ด์ ๊ตฌ์ฑ์ ์ ์ํ ํ, Rancher UI๋ฅผ ํตํด ์ด๋ฅผ ์ ๋ก๋ํ๊ณ Kubernetes ํด๋ฌ์คํฐ์ ๋ฐฐํฌํจ์ผ๋ก์จ CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ์ต๋๋ค.
- ๊ทธ ๋ค์, Langchain์ langserve๋ฅผ ๋์ ํด ๊ธฐ์กด ์๋ฒ์ ํต์ ์ ์ํํ๊ฒ ํ์๊ณ , langsmith๋ฅผ ํตํด LLM ํผํฌ๋จผ์ค๋ฅผ ๊ธฐ๋กํ๊ณ ๋ชจ๋ํฐ๋งํ๋ ์์คํ ๋ ๊ตฌ์ถํ์ฌ ํ๋กฌํํ ์์ ์๊ฐ์ ์ ๊ฐํ ์ ์์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋ ์ ๋ฐ์ดํธ ํจ์จ์ฑ๊ณผ ํ๋ก์ ํธ์ ์์ฐ์ฑ์ ๋์ด๋ ๋ฐ ๊ธฐ์ฌํ ์ ์์์ต๋๋ค.
- datadog ๋์ ํ์์ต๋๋ค. python3๋ฅผ monitoring ํ๋ฉด์ rds๋ ํจ๊ป ๋ชจ๋ํฐ๋ง ํ๊ณ ์์ต๋๋ค.
- django, fastapi๊ฐ ์๋ก request๋ฅผ ๋ณด๋ผ ๋ ingress ๋ฅผ ๊ฑฐ์น์ง ์๊ณ service๋ฅผ ํตํด api call์ ํ ์ ์๋๋ก ์์ ํ์์ต๋๋ค.
datadog์์ ์ฑ๋ฅ ํฅ์์ ๋ชจ๋ํฐ๋ง ์์ ์ ๋๋ค.
Ingress๋ฅผ ๊ฑฐ์น์ง ์๊ณ Kubernetes์ Service๋ฅผ ํตํด Pod ๊ฐ ํธ์ถ์ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์์ ํด๋ฌ์คํฐ ๋ด๋ถ์์ ๋คํธ์ํฌ ํต์ ์ด ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๊ฐ์ง ์ฅ์ ์ด ์์ต๋๋ค. ์ฃผ์ ์ฅ์ ์ ์์ธํ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. ๋คํธ์ํฌ ์ฑ๋ฅ ๊ฐ์
- ์ ์ง์ฐ ํต์ : Ingress๋ ํด๋ฌ์คํฐ ์ธ๋ถ์์ ๋ค์ด์ค๋ ํธ๋ํฝ์ ๊ด๋ฆฌํ๋ ์ญํ ์ ํ๋ฉฐ, ์ธ๋ถ ๋ผ์ฐํ ๋ฐ ์ธ์ฆ ์ ์ฐจ๋ฅผ ์ถ๊ฐ๋ก ์ํํฉ๋๋ค. Pod ๊ฐ ์ง์ ํต์ ์์๋ ์ด๋ฌํ ์ธ๋ถ ๋ผ์ฐํ ์ ๊ฑฐ์น์ง ์์ ํต์ ์๋๊ฐ ๋ ๋น ๋ฆ ๋๋ค.
- ๊ฐ์ํ๋ ๋คํธ์ํฌ ๊ฒฝ๋ก: Ingress๋ฅผ ํตํด ํต์ ํ ๊ฒฝ์ฐ, ํธ๋ํฝ์ด ํด๋ฌ์คํฐ ์ธ๋ถ๋ก ๋๊ฐ๋ค๊ฐ ๋ค์ ๋ด๋ถ๋ก ๋ค์ด์์ผ ํฉ๋๋ค. ์ง์ Service๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋ฌ์คํฐ ๋ด์ ๋คํธ์ํฌ๋ฅผ ํตํด ๊ณง๋ฐ๋ก ํธ๋ํฝ์ด ์ ๋ฌ๋๋ฏ๋ก, ๋คํธ์ํฌ ๊ฒฝ๋ก๊ฐ ๊ฐ์ํ๋์ด ๋๊ธฐ ์๊ฐ์ด ์ค์ด๋ญ๋๋ค.
2. ๋ณด์ ๊ฐํ
- ์ธ๋ถ ๋ ธ์ถ ์ต์ํ: Ingress๋ ํด๋ฌ์คํฐ ์ธ๋ถ๋ก ๋คํธ์ํฌ๋ฅผ ๋ ธ์ถํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ๋ณด์์์ ์ํ์ด ์์ต๋๋ค. ํด๋ฌ์คํฐ ๋ด๋ถ Service๋ก๋ง ํต์ ํ๋ฉด ์ธ๋ถ์ ๋คํธ์ํฌ๋ฅผ ๋ ธ์ถํ์ง ์์ผ๋ฏ๋ก ์ธ๋ถ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณดํธํ ์ ์์ต๋๋ค.
- ๋ด๋ถ ์ ์ฉ ํต์ : ClusterIP ํ์ ์ ์๋น์ค๋ ํด๋ฌ์คํฐ ๋ด๋ถ์์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํ๋๋ก ์ค์ ๋์ด, ์ธ๋ถ๋ก์ ์ ๊ทผ์ ์ ํํ ์ ์์ต๋๋ค. ์ด๋ก ์ธํด ๋ฏผ๊ฐํ ๋ฐ์ดํฐ๋ ์ค์ ์๋น์ค์ ๊ฒฝ์ฐ, ์ธ๋ถ์ ์ ๊ทผ์ ์์ฒ ์ฐจ๋จํ ์ํ์์ ์์ ํ๊ฒ ํต์ ํ ์ ์์ต๋๋ค.
- IAM ๋๋ VPC ๊ธฐ๋ฐ ๋ณด์: EKS์ ๊ฐ์ ํ๊ฒฝ์์๋ VPC๋ฅผ ํ์ฉํ์ฌ ์๋น์ค ๊ฐ ํต์ ์ ์ ํํ ์ ์์ผ๋ฉฐ, ์ถ๊ฐ์ ์ผ๋ก IAM(Identity and Access Management)์ผ๋ก ๊ฐ ์๋น์ค ๊ฐ์ ๊ถํ์ ์ธ๋ถ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
3. ๋น์ฉ ์ ๊ฐ
- ํด๋ผ์ฐ๋ ๋น์ฉ ์ ๊ฐ: Ingress๋ฅผ ์ฌ์ฉํ ๋๋ ํด๋ผ์ฐ๋ ์ ๊ณต์์ ๋ฐ๋ผ ๋น์ฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค. Ingress๋ ์ธ๋ถ์์ ์ ๊ทผ ๊ฐ๋ฅํ ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฉฐ, ์ด ๋ก๋ ๋ฐธ๋ฐ์ ์ฌ์ฉ๋ฃ์ ์ธ๋ถ ํธ๋ํฝ ๋น์ฉ์ด ์ถ๊ฐ๋ฉ๋๋ค. ๋ฐ๋ฉด์ ํด๋ฌ์คํฐ ๋ด๋ถ ํต์ ๋ง์ ์ฌ์ฉํ๋ Service๋ ์ธ๋ถ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ์ง ์์ ๋น์ฉ์ด ๋ค์ง ์์ต๋๋ค.
- ์ธํ๋ผ ๋น์ฉ ์ ๊ฐ: Ingress์ ์ถ๊ฐ ์ค์ ๋ฐ ๋ก๋ ๋ฐธ๋ฐ์ฑ ๊ธฐ๋ฅ์ ์ปดํจํ ๋ฆฌ์์ค๋ฅผ ๋ ๋ง์ด ์๊ตฌํ ์ ์์ต๋๋ค. Service๋ฅผ ์ฌ์ฉํด ์ง์ ํต์ ํ ๊ฒฝ์ฐ ์ด๋ฌํ ์ค๋ฒํค๋๊ฐ ์ค์ด๋ค์ด ์ปดํจํ ๋ฆฌ์์ค๋ฅผ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
4. ๊ฐํธํ ์ค์ ๊ณผ ๊ด๋ฆฌ
- ์ค์ ๋จ์ํ: Service๋ฅผ ์ด์ฉํ Pod ๊ฐ ํต์ ์ Ingress ์ค์ ๋ณด๋ค ๊ฐ๋จํฉ๋๋ค. Service ์ค์ ๋ง์ผ๋ก๋ ๊ฐํธํ๊ฒ ํต์ ํ ์ ์์ด ์ด์ ๋ฐ ๊ด๋ฆฌ๊ฐ ํธ๋ฆฌํฉ๋๋ค.
๋ค์์คํ์ด์ค์ DNS๋ฅผ ํตํ ์๋ํ๋ ์ด๋ฆ ํด์: Kubernetes์ ๋ด๋ถ DNS๋ ๋ค์์คํ์ด์ค์ ์๋น์ค ์ด๋ฆ์ ์กฐํฉํด ์๋์ผ๋ก ์ฃผ์๋ฅผ ์์ฑํด ์ค๋๋ค. ์ด๋ก ์ธํด ์ธ๋ถ ๋๋ฉ์ธ ๊ด๋ฆฌ๊ฐ ํ์ ์์ด, ์๋น์ค ์ด๋ฆ์ ํตํด ์ฝ๊ฒ ํต์ ํ ์ ์์ต๋๋ค.- ๋คํธ์ํฌ ์ ์ฑ ์ ํตํ ์ธ๋ถ ์ ์ด: Kubernetes NetworkPolicy๋ฅผ ํ์ฉํด ๋ค์์คํ์ด์ค๋ ํน์ ๋ ์ด๋ธ์ ๊ธฐ์ค์ผ๋ก Pod ๊ฐ ํธ๋ํฝ์ ์ธ๋ถ์ ์ผ๋ก ์ ์ดํ ์ ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ํตํด ํน์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ์๋ง ํต์ ์ ํ์ฉํ๋ ๋ฑ, Ingress๋ณด๋ค ๋ ์ธ๋ถ์ ์ธ ์ ์ด๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
5. ํ์ฅ์ฑ ๋ฐ ์ ์ฐ์ฑ
- ์ํ์ ํ์ฅ ์ฉ์ด: Service๋ฅผ ํตํ ํต์ ์ Service ๊ฐ์ฒด๊ฐ ์์์ ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ํํ๋ฏ๋ก, Pod์ ์๊ฐ ์ฆ๊ฐํด๋ ์๋์ผ๋ก ํธ๋ํฝ์ด ๋ถ์ฐ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ์๋น์ค ๊ฐ ํต์ ์ด ์ํํ๊ฒ ์ ์ง๋ฉ๋๋ค.
- ๋ด๋ถ ํธ๋ํฝ ๊ด๋ฆฌ ์ต์ ํ: Ingress๋ ์ธ๋ถ ํธ๋ํฝ์ ์ฃผ๋ก ๊ด๋ฆฌํ๋ ๋ฐ ์ ํฉํ๊ณ , ๋ด๋ถ ํธ๋ํฝ ๊ด๋ฆฌ๋ Service๊ฐ ๋ ์ต์ ํ๋์ด ์์ต๋๋ค. Service๋ Pod์ IP ์ฃผ์๊ฐ ๋ฐ๋๋๋ผ๋ Kubernetes DNS๋ฅผ ํตํด ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋๋ฏ๋ก, ๊ฐ์ฉ์ฑ์ด ๋ณด์ฅ๋ฉ๋๋ค.
6. ์ ๋ขฐ์ฑ ํฅ์
- ๋ด๋ถ ์๋น์ค ๋ณต๊ตฌ์ ์๋ํ: Service๋ Kubernetes ์ปจํธ๋กค๋ฌ์ ์ํด ๊ด๋ฆฌ๋๋ฏ๋ก, Pod๊ฐ ์ฃฝ๊ฑฐ๋ ์๋ก ์์ฑ๋๋๋ผ๋ DNS๊ฐ ์๋์ผ๋ก ์ ๋ฐ์ดํธ๋์ด ์ง์์ ์ธ ์๋น์ค ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ง์์ ์ธ ํฌ์ค ์ฒดํฌ: Kubernetes๋ ๊ฐ Pod์ ์ํ๋ฅผ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ , ๋น์ ์ Pod๋ฅผ ์๋์ผ๋ก ๋์ฒดํฉ๋๋ค. Ingress๋ณด๋ค ์ง์ ์ ์ธ ํต์ ์ ํตํด ๋ฌธ์ ๊ฐ ๋ฐ์ํ Pod์ ๋ํ ๋น ๋ฅธ ๋์ฒ๊ฐ ๊ฐ๋ฅํด์ง๋๋ค.
์ธ๋ถ user๊ฐ ์ ๊ทผํ ๋๋ ์ธ๋ถ user โ IGW โ ALB/NLB โ Public Subnet โ Ingress Controller โ Service โ Pod
๋ด๋ถ ํธ์ถํ ๋ pod(BE) -> Service -> pod(LLM)
infra ์ฅ์ ๊ฐ ์ผ์ด๋๋ฉด pod๊ฐ degraded ์ํ๋ก ๋ณํ๋ค. ์๋ก ์๊ธด pod๋ ip๊ฐ ๋ฐ๋๊ธฐ ๋๋ฌธ์ ๊ณ ์ ๋ service ip๋ฅผ ๊ฐ์ง๊ณ ์ฐ๊ฒฐํ๊ฒ๋ ๋์ด์๋ค. (kernel์ iptable์ ์ฐธ์กฐํด์ ๊ณ ์ ์ ip์ ๊ฐ๋ณ์ ip๋ฅผ ์ฐ๊ฒฐ์์ผ์ค๋ค)
pod์ container๊ฐ 2๊ฐ ์๋ ๊ฒฝ์ฐ?
๋ด ํ๋ก์ ํธ๋ datadog์ daemonset pod๋ก ์ง์ ํด๋์์, datadog์ด pod(์๋ฒ), db๋ฅผ ๋ชจ๋ํฐ๋งํด์ค ์ ์๋ค. ํ์ง๋ง, pod๋ด container๋ง๋ค APM์ ํ์ธํ๊ณ ์ถ๋ค๋ฉด pod๋ด๋ถ์ container๋ฅผ 1๊ฐ ๋ ๋์์ ๋ชจ๋ํฐ๋ง ํด์ค๋ค.
git push๋ฅผ ํ๋ฉด tekton์ด image๋ฅผ ๋ง๋ค์ด์ฃผ๊ณ image ์ ์ฅ์์ ์ ์ฅํด์ค๋ค. k8s(kubelet)๋ ์ด ์ด๋ฏธ์ง๋ฅผ pullํ๊ณ ArgoCD๊ฐ GitOps ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ๊ฐ์งํ๊ณ , ์ด๋ฅผ ๋ฐ์ํ์ฌ Deployment๋ฅผ ์ ๋ฐ์ดํธํจ์ผ๋ก์จ ์๋ก์ด Pod๋ฅผ ์์ฑํฉ๋๋ค.
IaC(Kubernetes YAML ํ์ผ)๋ ArgoCD์ ์ฐ๋๋์ด Kubernetes ํด๋ฌ์คํฐ์ ๋ฆฌ์์ค๋ฅผ ์ ์ธ์ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํ๋ค. ์ด๋ฅผ ํตํด ReplicaSet์ ๊ฐ์, Ingress ์ค์ (AWS Gateway ์ฐ๋), Nginx ํ์ฉ ๋ฑ ๋ค์ํ ์ค์ ์ ์ฝ๋๋ก ์ ์ํ๊ณ ์๋์ผ๋ก ์ ์ฉํ ์ ์๋ค.

CI/CD ์ ์ฌ์ฉํ๋ ๊ธฐ์ ๋ค์ ์ ๋ฆฌํ์ฌ SW Architecture์ ๋ง๋ค์ด ๋ณด์์ต๋๋ค.
RAG๊ณผ์ ์์ GPT 4o -> o1 preview๋ก ์ ๋ฐ์ดํธ ํ๋ฉด์, ๋ฌธ์ ์์ฑ ์๊ฐ์ด ๊ธธ์ด์ก๋ค. ์ด ์๊ฐ์ด 1๋ถ์ ๋์ด๊ฐ๋ ๊ณ์ํด์ CORS ERROR๋ฅผ ํธ์ถํ๋ ์ค๋ฅ๊ฐ ์ผ์ด๋ฌ๋ค. ๋ฐ๋ผ์, EC2 Load Balancer์ limit ์๊ฐ์ 60์ด์์ 180์ด๋ก ์ฆ๊ฐ์์ผฐ๋ค. ๋ ์ด์ cors error ๋ ์์๋ค !!
(์ฒ์์๋ llmops์ uvicorn, django์ gunicorn, django backend์ csrf ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋ค. ํ์ง๋ง, ๊ทผ๋ณธ์ ์ธ ์์ธ์ load balancer์ ์์๋ค. cors error๊ฐ ๋ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ธฐ์ตํ์. middleware์ ๋ํด ๋ ๊ณต๋ถํด๋ณด์.)
backend ์๋ฒ์ dependency๊ฐ ๋์ด๋๊ณ ๊ธฐ๋ฅ์ด ๊ณ์ํด์ ์ถ๊ฐ๋๋ฉด์ pod ์ ์ฉ๋์ด ๋ถ์กฑํ ์ํฉ์ด ๋ํ๋ฌ๋ค..! ephemeral-storage์ limit์ ๊ฐ์ ๋ก ๋๋ ค์ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด ์๋ค ํ์ง๋ง, AWS EKS๋ฅผ ์ฌ์ฉํ๋ฉด node EC2 tier๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ๋ฐฉ๋ฒ ๋ฐ์ ์๋ค ๐ฅฒ
DOCKER IMAGE ์ฉ๋์ ์ค์ผ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ณด๋ค docker slim, alpine์ ์๊ฒ ๋์๋ค. slim์ ์ ์ฉ์์ผ dev ์๋ฒ์ ๋ฐฐํฌํด๋ณด์๋๋ฐ, ์ผ๋จ์ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์ ์์ ์ผ๋ก ์๋ํ๋ค. image ํฌ๊ธฐ๋ ๊ฑฐ์ ์ ๋ฐ์ผ๋ก ์ค์๋ค !!
๐คํ์ง๋ง, ์ข ๋ ์ง์ผ๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.

