mirror of
https://github.com/ktds-dg0501/kt-event-marketing.git
synced 2025-12-06 20:46:24 +00:00
✨ 주요 기능 - Azure 기반 물리아키텍처 설계 (개발환경/운영환경) - 7개 마이크로서비스 물리 구조 설계 - 네트워크 아키텍처 다이어그램 작성 (Mermaid) - 환경별 비교 분석 및 마스터 인덱스 문서 📁 생성 파일 - design/backend/physical/physical-architecture.md (마스터) - design/backend/physical/physical-architecture-dev.md (개발환경) - design/backend/physical/physical-architecture-prod.md (운영환경) - design/backend/physical/*.mmd (4개 Mermaid 다이어그램) 🎯 핵심 성과 - 비용 최적화: 개발환경 월 $143, 운영환경 월 $2,860 - 확장성: 개발환경 100명 → 운영환경 10,000명 (100배) - 가용성: 개발환경 95% → 운영환경 99.9% - 보안: 다층 보안 아키텍처 (L1~L4) 🛠️ 기술 스택 - Azure Kubernetes Service (AKS) - Azure Database for PostgreSQL Flexible - Azure Cache for Redis Premium - Azure Service Bus Premium - Application Gateway + WAF 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
9.7 KiB
9.7 KiB
KT 이벤트 마케팅 서비스 - 운영환경 네트워크 아키텍처
📋 문서 정보
- 작성일: 2025-10-29
- 환경: Azure Production Environment
- 다이어그램: network-prod.mmd
- 참조: claude/sample-network-prod.mmd
🎯 아키텍처 개요
운영환경에 최적화된 고가용성 네트워크 아키텍처로, 다중 가용영역(Multi-Zone) 배포와 프라이빗 엔드포인트를 통한 보안 강화를 제공합니다.
핵심 특징
- 고가용성: 3개 가용영역(AZ)에 분산 배포
- 보안 강화: Private Endpoints 및 NSG 기반 네트워크 격리
- 성능 최적화: Redis Cluster, Read Replica, CDN 활용
- 확장성: HPA(Horizontal Pod Autoscaler) 기반 자동 스케일링
- 모니터링: 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.comprivatelink.redis.cache.windows.netprivatelink.servicebus.windows.netprivatelink.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
🔗 관련 문서
📝 변경 이력
| 날짜 | 버전 | 변경 내용 | 작성자 |
|---|---|---|---|
| 2025-10-29 | 1.0 | 최초 작성 | System Architect |
✅ 검증 체크리스트
- 29개 subgraph와 29개 end 문 균형 확인
- 7개 마이크로서비스 반영
- Multi-Zone (3 AZs) 구성
- Private Endpoints 모든 백엔드 서비스 적용
- NSG 규칙 서브넷 간 적용
- 모니터링 및 보안 서비스 통합
- High Availability 구성 (Primary + Replica)
- Mermaid 문법 검증 (Docker 컨테이너 필요)