프로젝트 소개#
야구 티켓 예매 플랫폼 PlayBall의 인프라 전반을 설계하고 운영했습니다. 빠른 개발환경 구축, 비용 효율, 운영 추적성, 보안, 트래픽 집중 — 5가지 특성을 고려하여 인프라를 구성했습니다.
환경 구성#
| 환경 | 실행 기반 | 외부 진입 | 데이터 계층 | 역할 |
|---|
| Dev | kubeadm (2-node 온프렘) | Cloudflare + Istio Gateway | PostgreSQL Pod, Redis Pod | 기능 개발, 초기 통합 검증 |
| Staging | AWS EKS (Multi-AZ, Spot) | CloudFront + ALB | RDS, ElastiCache | QA, 부하 테스트, 보안 검증 |
| Prod | AWS EKS (Multi-AZ, On-Demand) | CloudFront + ALB | RDS, ElastiCache | 실서비스 운영 |
사용 기술#
| 영역 | 기술 |
|---|
| 클라우드 | AWS EKS 1.35, RDS PostgreSQL 16, ElastiCache Redis 7, CloudFront, ALB, Route53, ACM |
| 컨테이너/메쉬 | Kubernetes (kubeadm / EKS), Istio 1.29.1, Cilium (Dev CNI) |
| IaC | Terraform (stacks + environments 분리) |
| CI/CD | TeamCity (빌드) → ECR (이미지) → ArgoCD (GitOps 배포) |
| 스케일링 | KEDA 2.19.0 (Cron Scaler + HPA), Karpenter 1.11.1 |
| 시크릿/권한 | External Secrets Operator, IRSA, AWS IAM Identity Center SSO |
| 관측성 | Prometheus, Loki, Tempo, Thanos, Grafana, OpenTelemetry Collector |
| 정책/보안 | Kyverno, Policy Reporter, CloudTrail |
| 알림 | EventBridge + Lambda → Discord |
레포 구성 (3-레포 분리)#
인프라 준비 → 클러스터 부트스트랩 → 선언형 배포를 독립적으로 관리합니다.
| 레포 | 담당 | 주요 내용 |
|---|
| 301 Terraform | 프로비저닝 | AWS 리소스 (VPC, EKS, RDS, Redis, CDN, IAM) 선언적 관리 |
| 302 Bootstrap | 클러스터 초기 설치 | ESO, Karpenter, ArgoCD, Root App, DB 초기화 1회성 주입 |
| 303 Helm | GitOps 배포 | Helm 차트 + ArgoCD Application + argocd-sync/* 브랜치 기반 지속 배포 |
부하 검증은 별도 레포(304-k6-operators)에서 k6-operator 기반 분산 부하 테스트로 수행했습니다.
CI/CD 파이프라인#
소스 코드 병합부터 클러스터 배포까지 자동화된 흐름입니다.
소스 코드 Push/Merge
→ TeamCity: 빌드 & 테스트 → ECR 이미지 Push
→ Helm values 이미지 태그 갱신 → argocd-sync/* 브랜치 Push
→ ArgoCD: 변경 감지 → 클러스터 자동 동기화 (배포)
| 환경 | 배포 브랜치 | 비고 |
|---|
| Dev | argocd-sync/dev | |
| Staging | argocd-sync/staging → ca-staging | SSO(IAM Identity Center) 도입 후 분리 |
| Prod | argocd-sync/prod → ca-prod | SSO 도입 후 분리 |
모니터링 스택#
메트릭, 로그, 트레이스를 Grafana 기준으로 통합 확인합니다. Loki/Tempo/Thanos의 데이터는 S3 Object Storage에 적재합니다 (PVC 방식이 아닌 S3 오브젝트 스토리지 방식).
| 도구 | 역할 |
|---|
| Prometheus + Thanos | 메트릭 수집 + 장기 보관 (S3) |
| Loki | 로그 수집 (S3 적재) |
| Tempo | 분산 트레이싱 (S3 적재) |
| Grafana | 통합 대시보드 |
| OpenTelemetry Collector | 앱 트레이스/메트릭 수집 |
| CloudTrail | AWS API 감사 추적 |
| Policy Reporter | Kyverno 정책 위반 확인 |
| Discord | EventBridge + Lambda 알림 전파 |
티켓팅 특성 × 인프라 대응#
| 특성 | 인프라 대응 |
|---|
| 트래픽 집중 | KEDA Cron Scaler 선제 확장 + CPU/Memory HPA + Karpenter 노드 확장 + CloudFront 캐싱 |
| 가용성 | Multi-AZ EKS/RDS/Redis + ArgoCD GitOps 재배포 + RDS PITR + PDB |
| 보안 | 7축 보안 체계 + IAM Identity Center SSO + CloudTrail 감사 + 침투테스트 |
| 비용 효율 | Staging Spot + Graviton(ARM) 인스턴스 + Loki/Tempo S3 lifecycle + Organizations 통합 빌링 |
| 운영 추적성 | 3 시그널 통합 관측 (Metrics/Logs/Traces) + CloudTrail + Policy Reporter |
7축 보안 체계#
매크로/봇 공격, L7 공격에 대응하기 위해 클라이언트부터 앱까지 트래픽 흐름 순서대로 7개 레이어로 보안을 구성했습니다.
Client → ① 프론트 → ② CDN/WAF → ③ ALB SG → ④ Istio WAF/RL → ⑤ ext_authz → ⑥ AI → ⑦ App
| Layer | 계층 | 구성 |
|---|
| ① 프론트엔드 보안 | X-Bot-Token + CSP | Cloudflare Turnstile 토큰 검증, CSP Report-Only 도입 |
| ② CDN + AWS WAF | CloudFront + WAF Rate-based Rule | DDoS 방어, Rate-based Rule, Bot Control, IP Reputation |
| ③ ALB SG | HTTPS only + Security Group | CloudFront PL + 특정 팀원 IP만 허용, 직접 접근 차단 |
| ④ Istio L7 방어 | EnvoyFilter WAF (Lua) + Rate Limiting | 헤더/경로/바디 기반 10종 탐지 + CDN X-Origin-Verify 검증 + Rate Limit (Global+Redis/Local) |
| ⑤ ext_authz | Authz Adapter (Go) | 실시간 봇 판정 게이트웨이, Critical API 필터링 |
| ⑥ AI Defense | AI 행동 분석 엔진 (Python) | 세션 행동 분석 + fingerprint + VQA 챌린지, 자동 차단 |
| ⑦ 앱 보안 | Spring Gateway | JWT 검증 + Redis blacklist |
이 중 ②~⑥ 인프라 보안 구간을 설계/구축했습니다:
- ② CDN + WAF: CloudFront Distribution 생성, WAF WebACL 설정 (Terraform)
- ③ ALB SG: CloudFront Prefix List 기반 접근 제한 (Terraform)
- ④ Istio WAF/RL: EnvoyFilter Lua 스크립트 작성, 경로별 Rate Limit 설계 (Helm)
- ⑤ ext_authz: Go gRPC 서버 개발, Istio EnvoyFilter 연동
- ⑥ AI Defense: AI 팀에 Istio ext_authz 방식 제안, 배포 인프라(Helm/IRSA) 구성
주요 성과#
- Dev(온프렘 kubeadm) / Staging(AWS EKS) / Prod(AWS EKS) 3환경 인프라 설계 및 운영
- TeamCity + ArgoCD 기반 GitOps CI/CD 파이프라인 구축
- OpenTelemetry + Prometheus + Loki + Tempo + Thanos + Grafana 통합 관측성 구축
- Istio EnvoyFilter 기반 7-Layer 보안 체계 구축 (Lua WAF, Rate Limiting, ext_authz, mTLS STRICT)
- Kyverno + Policy Reporter 정책 관리 체계 구축
- 침투테스트 인프라 취약점 조치