Playball Logo

Command Palette

Search for a command to run...

목차 열기

인프라 아키텍처

Playball 인프라는 프로비저닝, 클러스터 부트스트랩, GitOps(선언형) 방식의 Helm/Values 관리를 저장소 단위로 분리했습니다.


운영 축 구성

1. 네트워크 진입 계층

  • CloudFront가 외부 요청의 기본 진입점 역할을 수행합니다.
  • ALB가 EKS 내부 Ingress 진입점 역할을 수행합니다.
  • Istio IngressGateway가 내부 서비스 라우팅의 기준점입니다.

2. 애플리케이션 실행 계층

  • 백엔드 서비스는 Kubernetes Pod로 운영합니다.
  • 서비스 설정, replica, 인프라 의존성은 Helm values로 선언형 관리합니다.
  • 장애 시 Pod는 백업 복원이 아니라 재스케줄링과 재배포로 복구합니다.

3. 데이터 계층

  • 운영 데이터는 RDS PostgreSQL을 기준으로 관리합니다.
  • 세션성/고빈도 접근 데이터는 ElastiCache Redis로 분리합니다.
  • 복구 기준은 RDS Automated Backup + PITRpg_dump -> S3 보조 백업입니다.

4. 관측 계층

  • Prometheus가 메트릭을 수집합니다.
  • Loki가 운영 로그를 수집합니다.
  • Tempo가 분산 추적 데이터를 수집합니다.
  • Thanos가 메트릭 장기 보관을 담당합니다.
  • Grafana, Policy Reporter, CloudWatch, CloudTrail을 기준으로 상태 확인과 장애 분석을 수행합니다.

아키텍처 다이어그램

보안/감사 흐름은 보안 → 보안 흐름보안 개요의 7축 아키텍처 참조.


아키텍처 설계 기준

구분반영 내용
선언형 운영301/302/303 3-레포 분리 (Terraform · Bootstrap · Helm-ArgoCD) — 모든 인프라·배포가 IaC로 재현·감사 가능
확장 대응KEDA Cron + HPA + Karpenter 조합 — 티켓 오픈 피크를 부하테스트 기반으로 선제 대응
복구 기준앱은 GitOps 재적용, 데이터는 RDS PITR + pg_dump → S3 2중 — 시나리오별 복구 훈련 포함
관측·감사 통합Prometheus·Loki·Tempo → Grafana + CloudTrail → EventBridge → Discord — 상태·변경 이력 일원 추적

보안 관련 설계 기준(7축 보안 체계·접근 제어·정책 검증)은 보안 개요에서 통합 관리합니다.


저장소 역할 분리

저장소역할운영 의미
301 Terraformstacksenvironments/dev, staging, prod 기준으로 AWS 리소스를 프로비저닝기반 인프라와 공용 리소스를 코드로 관리하고 재생성 가능하도록 유지
302 Bootstrap환경별 초기 설치, ESO, Karpenter, ArgoCD, Root App, DB 초기화 구성새 클러스터를 운영 가능한 상태로 빠르게 부트스트랩
303 Helm환경별 values, 인프라 차트, 애플리케이션 배포 정의, argocd-sync/* 배포 브랜치 관리선언형 배포와 환경별 운영 설정의 기준점

환경 공통

다음 구성은 전 환경 공통으로 적용되는 기반입니다.

  • GitOps 배포 경로: Argo CD Root App + argocd-sync/* 브랜치 기반 선언형 배포
  • 관측성 스택: Prometheus · Loki · Tempo → Grafana 통합 (메트릭 · 로그 · 트레이스)
  • 서비스 메쉬 보안: Istio IngressGateway + EnvoyFilter(Lua WAF) + Rate Limit + ext_authz + mTLS
  • 정책 검증 프레임: Kyverno 배포는 전 환경 공통 (정책별 강제 수준은 아래 표 참조, Policy Reporter 대시보드는 Staging/Prod)
  • 감사 추적: CloudTrail → EventBridge → Lambda → Discord 경로 (AWS 환경 한정)

환경별 차이

위 공통 기반 위에서 인프라 구조 축으로 환경마다 다른 부분을 정리합니다. 환경 운영 개요(용도·클러스터·외부 진입 등)는 환경 구성 페이지 참조.

항목DevStagingProd
엣지 보호CloudflareCloudFrontCloudFront + AWS WAF + Shield
TLS / 인증서cert-manager + Let's EncryptACM (CloudFront ↔ ALB)ACM (CloudFront ↔ ALB)
오토스케일링수동HPA + KEDA + KarpenterHPA + KEDA + Karpenter
시크릿 주입bot-kubeadm IAM User + ESOESO + IRSAESO + IRSA
RDS 보호PostgreSQL Pod저장 암호화 · Single-AZ · 삭제 보호 OFF저장 암호화 · Multi-AZ · 삭제 보호 ON · 최종 스냅샷
Redis 보호Redis PodTLS(required) · 저장 암호화 · 단일 노드TLS(required) · 저장 암호화 · 복제본 + 자동 장애조치
Kyverno 정책Audit 모드 (requireProbes ✗)Audit 모드 (requireProbes ✗)Audit 모드 (requireProbes ✓), Deny 전환 예정
백업 / 복구수동 / 실험RDS PITR + pg_dump → S3RDS PITR + pg_dump → S3 + 복구 훈련

Dev/Staging은 팀 내부 접근 범위(whitelist IP + OAuth는 Istio 레벨에서 처리)로 제한되어 엣지 WAF/Shield가 불필요. Prod는 공개 트래픽을 받으므로 AWS WAF/Shield를 적용합니다. RDS/Redis 내부 통신은 모든 환경에서 TLS 강제하며, Prod는 Multi-AZ·복제본·삭제 보호·최종 스냅샷 등 가용성과 데이터 손실 방지 옵션을 추가로 적용합니다. Kyverno 정책 세부 기준은 클러스터 정책 메뉴 참조.


운영 접근과 감사

항목운영 방식
운영 접근AWS IAM Identity Center SSO와 IAM Role 전환 기준으로 접근 권한을 관리합니다.
시크릿 주입External Secrets Operator와 IRSA를 사용해 클러스터 내부에 시크릿을 안전하게 주입합니다.
감사 이벤트CloudTrail 이벤트를 EventBridge와 Lambda로 전달해 운영 변경 이력을 추적합니다.
접속 기록관리자/운영자 접근 기록은 별도 감사 로그 경로로 장기 보관합니다.
운영 알림AWS 리소스 경로와 EKS 내부 경로를 분리하되, 최종 전파 채널은 Discord로 통합합니다.

운영 범위

영역실제 운영 항목
배포 기반ArgoCD Root App, Helm values, 환경별 배포 브랜치 (303)
확장 기반HPA, KEDA, Karpenter
외부 연동CloudFront, ALB, Route53, External DNS, ACM
시크릿/권한 연동External Secrets Operator, IRSA 기반 Secret 접근
보안 정책EnvoyFilter, Rate Limit, ext_authz, mTLS, NetworkPolicy, Kyverno, Policy Reporter
관측성Prometheus, Alertmanager, Loki, Tempo, Thanos, Grafana
감사/추적CloudTrail, EventBridge, Lambda 기반 보안·감사 이벤트 전파
복구 기준RDS PITR, pg_dump -> S3, GitOps 선언형 복구