# KT 이벤트 마케팅 서비스 - 운영환경 네트워크 아키텍처 ## 📋 문서 정보 - **작성일**: 2025-10-29 - **환경**: Azure Production Environment - **다이어그램**: network-prod.mmd - **참조**: claude/sample-network-prod.mmd ## 🎯 아키텍처 개요 운영환경에 최적화된 고가용성 네트워크 아키텍처로, 다중 가용영역(Multi-Zone) 배포와 프라이빗 엔드포인트를 통한 보안 강화를 제공합니다. ### 핵심 특징 1. **고가용성**: 3개 가용영역(AZ)에 분산 배포 2. **보안 강화**: Private Endpoints 및 NSG 기반 네트워크 격리 3. **성능 최적화**: Redis Cluster, Read Replica, CDN 활용 4. **확장성**: HPA(Horizontal Pod Autoscaler) 기반 자동 스케일링 5. **모니터링**: Application Insights, Prometheus, Grafana 통합 ## 🏗️ 네트워크 구성 ### VNet 구조 (10.0.0.0/16) ``` VNet: 10.0.0.0/16 ├── Gateway Subnet (10.0.4.0/24) │ └── Application Gateway v2 + WAF ├── Application Subnet (10.0.1.0/24) │ └── AKS Premium Cluster (Multi-Zone) ├── Database Subnet (10.0.2.0/24) │ └── PostgreSQL Flexible Servers (7개) ├── Cache Subnet (10.0.3.0/24) │ └── Azure Cache for Redis Premium ├── Service Subnet (10.0.5.0/24) │ └── Azure Service Bus Premium └── Management Subnet (10.0.6.0/24) ├── Monitoring (Log Analytics, App Insights, Prometheus, Grafana) └── Security (Key Vault, Defender) ``` ## 🔐 보안 아키텍처 ### 1. 네트워크 보안 | 계층 | 보안 요소 | 설명 | |------|----------|------| | Edge | Azure Front Door + CDN | DDoS 보호, 글로벌 가속 | | Gateway | Application Gateway + WAF v2 | OWASP CRS 3.2, Rate Limiting | | Network | NSG (Network Security Groups) | 서브넷 간 트래픽 제어 | | Data | Private Endpoints | 모든 백엔드 서비스 프라이빗 연결 | | Access | Azure Key Vault Premium | 민감 정보 중앙 관리 | | Monitoring | Azure Defender for Cloud | 실시간 위협 탐지 | ### 2. Private Endpoints 모든 백엔드 서비스는 Private Endpoints를 통해 VNet 내부에서만 접근 가능: - PostgreSQL (7개 서비스별 DB) - Redis Premium Cluster - Service Bus Premium - Key Vault Premium ### 3. Private DNS Zones Private Link 서비스의 DNS 해석을 위한 전용 DNS 영역: - `privatelink.postgres.database.azure.com` - `privatelink.redis.cache.windows.net` - `privatelink.servicebus.windows.net` - `privatelink.vaultcore.azure.net` ## ⚙️ AKS 클러스터 구성 ### Node Pool 구성 | Node Pool | VM Size | Nodes | Zone Distribution | 용도 | |-----------|---------|-------|-------------------|------| | System | Standard_D4s_v3 | 3 | AZ1, AZ2, AZ3 | K8s 시스템 컴포넌트 | | Application | Standard_D8s_v3 | 5 | AZ1(2), AZ2(2), AZ3(1) | 애플리케이션 워크로드 | ### 마이크로서비스 구성 | 서비스 | Replicas | HPA 범위 | NodePort | |--------|----------|----------|----------| | User Service | 3 | 2-5 | 30080 | | Event Service | 3 | 2-6 | 30081 | | AI Service | 2 | 2-4 | 30082 | | Content Service | 2 | 2-4 | 30083 | | Distribution Service | 2 | 2-4 | 30084 | | Participation Service | 3 | 2-5 | 30085 | | Analytics Service | 2 | 2-4 | 30086 | ## 🗄️ 데이터베이스 아키텍처 ### PostgreSQL Flexible Server (7개) 각 마이크로서비스는 독립적인 데이터베이스 사용: | 서비스 | Database | 구성 | Backup | |--------|----------|------|--------| | User | user-db | Primary + Replica (Zone 1, 2) | Geo-redundant, 35일 | | Event | event-db | Primary + Replica (Zone 1, 2) | Geo-redundant, 35일 | | AI | ai-db | Primary + Replica (Zone 1, 2) | Geo-redundant, 35일 | | Content | content-db | Primary + Replica (Zone 1, 2) | Geo-redundant, 35일 | | Distribution | distribution-db | Primary + Replica (Zone 1, 2) | Geo-redundant, 35일 | | Participation | participation-db | Primary + Replica (Zone 1, 2) | Geo-redundant, 35일 | | Analytics | analytics-db | Primary + Replica (Zone 1, 2) | Geo-redundant, 35일 | ### 고가용성 전략 - **Primary-Replica 구성**: 각 DB는 Zone 1(Primary), Zone 2(Replica)에 배포 - **자동 백업**: Geo-redundant backup, 35일 보관 - **Point-in-time Recovery**: 최대 35일 내 복구 가능 - **Read Replica**: 읽기 부하 분산 ## ⚡ 캐시 아키텍처 ### Azure Cache for Redis Premium - **구성**: Clustered, 6GB - **노드**: Primary + 2 Replicas (3 Zones) - **Shards**: 3개 샤드로 분산 - **HA**: Zone-redundant 고가용성 ### 캐시 용도 - 세션 관리 (User Service) - API 응답 캐싱 (Event Service) - AI 결과 캐싱 (AI Service) - 실시간 통계 (Analytics Service) ## 📨 메시지 큐 아키텍처 ### Azure Service Bus Premium - **Namespace**: sb-kt-event-prod - **구성**: Zone-redundant - **총 용량**: 128GB (Partitioned Queues) ### Queue 구성 | Queue | Size | Partitioned | 용도 | |-------|------|-------------|------| | ai-event-generation | 32GB | Yes | AI 이벤트 생성 비동기 처리 | | content-generation | 32GB | Yes | 콘텐츠 생성 비동기 처리 | | distribution | 32GB | Yes | 다채널 배포 비동기 처리 | | notification | 16GB | Yes | 알림 발송 비동기 처리 | | analytics | 16GB | Yes | 분석 데이터 수집 | ### 메시지 흐름 ``` AI Queue → Content Queue → Distribution Queue → Notification Queue ↓ Analytics Queue ``` ## 📊 모니터링 & 관리 ### Application Insights (7 instances) 각 마이크로서비스별 독립적인 Application Insights 인스턴스: - 애플리케이션 성능 모니터링 (APM) - 분산 추적 (Distributed Tracing) - 실시간 메트릭 수집 - 로그 집계 및 분석 ### Log Analytics Workspace - 모든 Application Insights 데이터 집계 - 통합 쿼리 및 분석 - 알림 규칙 관리 ### Prometheus + Grafana - Kubernetes 클러스터 메트릭 - 컨테이너 리소스 사용량 - 커스텀 비즈니스 메트릭 - 실시간 대시보드 ## 🚦 트래픽 흐름 ### 1. 외부 → 내부 ``` 사용자 ↓ HTTPS (TLS 1.3) Azure Front Door + CDN ↓ Anycast Application Gateway (Public IP) ↓ SSL Termination WAF (OWASP CRS 3.2) ↓ Rate Limiting (200 req/min/IP) Application Gateway (Private IP) ↓ Path-based Routing AKS Internal Load Balancer ↓ ClusterIP Microservices (Pods) ``` ### 2. 서비스 → 데이터베이스 ``` Microservices ↓ Private Link (TCP:5432) PostgreSQL Private Endpoint ↓ DNS Resolution (Private DNS Zone) PostgreSQL Primary/Replica ``` ### 3. 서비스 → 캐시 ``` Microservices ↓ Private Link (TCP:6379) Redis Private Endpoint ↓ DNS Resolution (Private DNS Zone) Redis Primary + Replicas ``` ### 4. 서비스 → 메시지 큐 ``` Microservices ↓ Private Link (AMQP) Service Bus Private Endpoint ↓ DNS Resolution (Private DNS Zone) Service Bus Queues ``` ## 🔧 운영 고려사항 ### 1. 스케일링 전략 **Horizontal Pod Autoscaler (HPA)** - CPU 사용률 70% 이상 시 자동 스케일 아웃 - 메모리 사용률 80% 이상 시 자동 스케일 아웃 - 최소/최대 Replica 수 설정 **Node Pool Auto-scaling** - Application Node Pool: 5-15 노드 - Zone별 균등 분산 유지 ### 2. 백업 및 복구 **데이터베이스 백업** - 자동 백업: 매일 1회 - 보관 기간: 35일 - Geo-redundant 저장소 - Point-in-time Recovery 지원 **클러스터 백업** - AKS 클러스터 구성 백업 - ConfigMaps 및 Secrets 백업 - Persistent Volume 스냅샷 ### 3. 재해 복구 (DR) **RTO/RPO 목표** - RTO (Recovery Time Objective): 1시간 - RPO (Recovery Point Objective): 15분 **DR 전략** - Multi-Zone 배포로 Zone 장애 대응 - Geo-redundant 백업으로 Region 장애 대응 - 자동 장애 조치 (Automatic Failover) ### 4. 보안 운영 **정기 점검 항목** - [ ] NSG 규칙 검토 (월 1회) - [ ] WAF 정책 업데이트 (분기 1회) - [ ] Key Vault 접근 로그 검토 (주 1회) - [ ] Defender 알림 모니터링 (실시간) - [ ] 취약점 스캔 (월 1회) **인증서 관리** - SSL/TLS 인증서: 90일 전 갱신 알림 - Key Vault 키 로테이션: 연 1회 - 서비스 주체 시크릿: 180일 전 갱신 ## 📈 성능 최적화 ### 1. 네트워크 성능 **Application Gateway** - WAF 규칙 최적화 (불필요한 규칙 비활성화) - 연결 드레이닝 설정 (30초) - 백엔드 헬스 체크 간격 최적화 **AKS 네트워킹** - Azure CNI 사용 (빠른 Pod 네트워킹) - Calico 네트워크 정책 적용 - Service Mesh (Istio) 선택적 사용 ### 2. 데이터베이스 성능 **쿼리 최적화** - Read Replica 활용 (읽기 부하 분산) - 연결 풀링 (HikariCP 최적화) - 인덱스 전략 수립 **리소스 튜닝** - 적절한 vCore 및 메모리 할당 - IOPS 모니터링 및 조정 - 쿼리 성능 분석 (pg_stat_statements) ### 3. 캐시 성능 **Redis 최적화** - 적절한 TTL 설정 - 캐시 히트율 모니터링 (목표: 95% 이상) - 메모리 정책: allkeys-lru ## 🔗 관련 문서 - [High-Level 아키텍처](../high-level-architecture.md) - [유저스토리](../../userstory.md) - [API 설계](../api/) - [데이터베이스 설계](../database/) ## 📝 변경 이력 | 날짜 | 버전 | 변경 내용 | 작성자 | |------|------|----------|--------| | 2025-10-29 | 1.0 | 최초 작성 | System Architect | ## ✅ 검증 체크리스트 - [x] 29개 subgraph와 29개 end 문 균형 확인 - [x] 7개 마이크로서비스 반영 - [x] Multi-Zone (3 AZs) 구성 - [x] Private Endpoints 모든 백엔드 서비스 적용 - [x] NSG 규칙 서브넷 간 적용 - [x] 모니터링 및 보안 서비스 통합 - [x] High Availability 구성 (Primary + Replica) - [ ] Mermaid 문법 검증 (Docker 컨테이너 필요)