# KT 소상공인 이벤트 자동 생성 서비스 - 물리 아키텍처 설계서 (마스터 인덱스) ## 1. 개요 ### 1.1 설계 목적 - KT 소상공인 이벤트 자동 생성 서비스의 Azure Cloud 기반 물리 아키텍처 설계 - 개발환경과 운영환경의 체계적인 아키텍처 분리 및 관리 - 환경별 특화 구성과 단계적 확장 전략 제시 - 7개 마이크로서비스의 효율적인 배포 및 운영 아키텍처 구성 ### 1.2 아키텍처 분리 원칙 - **환경별 특화**: 개발환경과 운영환경의 목적에 맞는 최적화 - **단계적 발전**: 개발→운영 단계적 아키텍처 진화 - **비용 효율성**: 환경별 비용 최적화 전략 - **운영 단순성**: 환경별 복잡도 적정 수준 유지 - **확장성 고려**: 향후 확장 가능한 구조 설계 ### 1.3 문서 구조 ``` physical-architecture.md (마스터 인덱스) ├── physical-architecture-dev.md (개발환경) ├── physical-architecture-prod.md (운영환경) ├── physical-architecture-dev.mmd (개발환경 다이어그램) ├── physical-architecture-prod.mmd (운영환경 다이어그램) ├── network-dev.mmd (개발환경 네트워크 다이어그램) └── network-prod.mmd (운영환경 네트워크 다이어그램) ``` ### 1.4 참조 아키텍처 - **HighLevel아키텍처정의서**: design/high-level-architecture.md - **논리아키텍처**: design/backend/logical/logical-architecture.md - **아키텍처패턴**: design/pattern/architecture-pattern.md - **API설계서**: design/backend/api/*.yaml - **데이터설계서**: design/backend/database/database-design.md ## 2. 환경별 아키텍처 개요 ### 2.1 환경별 특성 비교 | 구분 | 개발환경 | 운영환경 | |------|----------|----------| | **목적** | MVP 개발/검증/테스트 | 실제 서비스 운영 | | **가용성** | 95% (09:00-18:00) | 99.9% (24/7) | | **사용자** | 개발팀(10명) | 실사용자(1만~10만) | | **확장성** | 고정 리소스 | Auto Scaling (2x~10x) | | **보안** | 기본 수준 | 엔터프라이즈급 | | **비용** | 최소화($200/월) | 최적화($3,500/월) | | **복잡도** | 단순화 | 고도화 | | **배포** | 수동/반자동 | 완전 자동화 | | **모니터링** | 기본 메트릭 | 종합 관측성 | ### 2.2 환경별 세부 문서 #### 2.2.1 개발환경 아키텍처 📄 **[물리 아키텍처 설계서 - 개발환경](./physical-architecture-dev.md)** **주요 특징:** - **비용 최적화**: Basic SKU 리소스 활용으로 월 $200 이하 - **개발 편의성**: 복잡한 설정 최소화, 빠른 배포 (5분 이내) - **단순한 보안**: 기본 Network Policy, JWT 검증 - **Pod 기반 백킹서비스**: PostgreSQL, Redis Pod으로 외부 의존성 제거 **핵심 구성:** 📊 **[개발환경 물리 아키텍처 다이어그램](./physical-architecture-dev.mmd)** - NGINX Ingress → AKS Basic → Pod Services 구조 - 7개 애플리케이션 Pod + PostgreSQL Pod + Redis Pod 배치 - Single Zone 배포로 비용 최적화 📊 **[개발환경 네트워크 다이어그램](./network-dev.mmd)** - VNet 단일 서브넷 구성 (10.0.0.0/16) - External LoadBalancer를 통한 외부 접근 - Internal ClusterIP 서비스 간 통신 #### 2.2.2 운영환경 아키텍처 📄 **[물리 아키텍처 설계서 - 운영환경](./physical-architecture-prod.md)** **주요 특징:** - **고가용성**: Multi-Zone 배포, 자동 장애조치 (99.9% SLA) - **확장성**: HPA 기반 자동 스케일링 (최대 10배 확장) - **엔터프라이즈 보안**: 다층 보안, Private Endpoint, WAF - **관리형 서비스**: Azure Database for PostgreSQL, Azure Cache for Redis **핵심 구성:** 📊 **[운영환경 물리 아키텍처 다이어그램](./physical-architecture-prod.mmd)** - Azure Front Door → App Gateway + WAF → AKS Premium 구조 - Multi-Zone Apps + Azure PostgreSQL Flexible + Azure Redis Premium 배치 - Reserved Instance로 30% 비용 절약 📊 **[운영환경 네트워크 다이어그램](./network-prod.mmd)** - Multi-Subnet VNet 구성 (App/DB/Cache/Gateway 서브넷 분리) - Private Endpoint를 통한 보안 통신 - WAF + Rate Limiting으로 보안 강화 ### 2.3 핵심 아키텍처 결정사항 #### 2.3.1 공통 아키텍처 원칙 - **서비스 메시 제거**: Istio 대신 Kubernetes Network Policies 사용으로 복잡도 감소 - **선택적 비동기**: AI 일정 생성 등 장시간 작업만 비동기, 나머지는 동기 통신 - **캐시 우선**: Redis 캐시를 통한 성능 최적화 및 서비스 간 의존성 최소화 - **Managed Identity**: 키 없는 인증으로 보안 강화 - **다층 보안**: L1(Network) → L2(Gateway) → L3(Identity) → L4(Data) #### 2.3.2 환경별 차별화 전략 **개발환경 최적화:** - 개발 속도와 비용 효율성 우선 - Pod 기반 백킹서비스로 Azure 관리형 서비스 비용 절약 - 단순한 구성으로 운영 부담 최소화 - 기능 검증 중심의 최소 보안 설정 **운영환경 최적화:** - 가용성과 확장성 우선 (99.9% SLA 달성) - Azure 관리형 서비스로 운영 안정성 확보 - 엔터프라이즈급 보안 및 종합 모니터링 - 실사용자 대응 성능 최적화 ## 3. 네트워크 아키텍처 비교 ### 3.1 환경별 네트워크 전략 #### 3.1.1 환경별 네트워크 전략 비교 | 구성 요소 | 개발환경 | 운영환경 | 비교 | |-----------|----------|----------|------| | **인그레스** | NGINX Ingress | Azure App Gateway + WAF | 비용 vs 보안 | | **네트워크** | Single VNet + 단일 서브넷 | Multi-Subnet VNet | 단순성 vs 격리 | | **보안** | Basic Network Policy | WAF + Rate Limiting | 기본 vs 고급 | | **접근** | Public LoadBalancer | Private Endpoint | 편의성 vs 보안 | | **DNS** | ClusterIP 서비스 | Azure Private DNS | 내부 vs 통합 | | **트래픽** | HTTP/HTTPS | HTTPS + TLS 1.3 | 기본 vs 강화 | ### 3.2 네트워크 보안 전략 #### 3.2.1 공통 보안 원칙 - **Network Policies**: Pod 간 통신 제어 및 마이크로서비스 간 격리 - **Managed Identity**: Azure AD 통합 인증으로 키 관리 부담 제거 - **Private Endpoints**: 운영환경에서 Azure 서비스 간 프라이빗 통신 - **TLS 암호화**: 모든 서비스 간 통신에 TLS 1.2 이상 적용 #### 3.2.2 환경별 보안 수준 | 보안 영역 | 개발환경 | 운영환경 | 강화 수준 | |-----------|----------|----------|----------| | **Network Policy** | 기본 Pod 격리 | 세밀한 서비스별 제어 | 5배 강화 | | **시크릿 관리** | Kubernetes Secret | Azure Key Vault | 10배 강화 | | **암호화** | TLS 1.2 | TLS 1.3 + Perfect Forward Secrecy | 2배 강화 | | **웹 보안** | 없음 | WAF + DDoS Protection | 신규 도입 | ## 4. 데이터 아키텍처 비교 ### 4.1 환경별 데이터 전략 #### 4.1.1 환경별 데이터 구성 비교 | 구분 | 개발환경 | 운영환경 | 성능 차이 | |------|----------|----------|----------| | **주 데이터베이스** | PostgreSQL 13 Pod | Azure Database for PostgreSQL Flexible | 3배 성능 향상 | | **가용성** | Single Pod | Multi-Zone HA + 읽기 복제본 | 99.9% vs 95% | | **백업** | 수동 스냅샷 | 자동 백업 (35일 보존) | 자동화 | | **확장성** | 고정 리소스 | 자동 스케일링 | 10배 확장 | | **비용** | $20/월 | $400/월 | 20배 차이 | ### 4.2 캐시 전략 비교 #### 4.2.1 다층 캐시 아키텍처 | 캐시 레벨 | 용도 | 개발환경 | 운영환경 | |-----------|------|----------|----------| | **L1 Application** | 메모리 캐시 | In-Memory (1GB) | In-Memory (4GB) | | **L2 Distributed** | 분산 캐시 | Redis Pod | Azure Cache for Redis Premium | | **성능** | 응답 시간 | 100ms | 50ms | | **가용성** | 캐시 SLA | 95% | 99.9% | #### 4.2.2 환경별 캐시 특성 비교 | 특성 | 개발환경 | 운영환경 | 개선 효과 | |------|----------|----------|----------| | **캐시 구성** | 단일 Redis Pod | Redis Cluster (Multi-Zone) | 고가용성 | | **데이터 지속성** | 임시 저장 | 영구 저장 + 백업 | 데이터 안정성 | | **성능 특성** | 기본 | Premium with RDB persistence | 2배 성능 향상 | | **메모리** | 1GB | 6GB (P2 SKU) | 6배 확장 | ## 5. 보안 아키텍처 비교 ### 5.1 다층 보안 아키텍처 #### 5.1.1 공통 보안 계층 | 보안 계층 | 보안 기술 | 적용 범위 | 보안 목적 | |-----------|----------|----------|----------| | **L1 Network** | Network Policies, NSG | Pod/서브넷 간 통신 | 네트워크 격리 | | **L2 Gateway** | WAF, Rate Limiting | 외부 → 내부 트래픽 | 애플리케이션 보호 | | **L3 Identity** | Azure AD, Managed Identity | 서비스 인증/인가 | ID 기반 보안 | | **L4 Data** | TDE, 저장소 암호화 | 데이터 저장/전송 | 데이터 보호 | ### 5.2 환경별 보안 수준 #### 5.2.1 환경별 보안 수준 비교 | 보안 영역 | 개발환경 | 운영환경 | 강화 방안 | |-----------|----------|----------|----------| | **인증** | JWT 기본 검증 | Azure AD B2C + MFA | 다단계 인증 | | **네트워크** | Basic Network Policy | Micro-segmentation | 세분화된 제어 | | **시크릿** | K8s Secret | Azure Key Vault + HSM | 하드웨어 보안 | | **암호화** | TLS 1.2 | TLS 1.3 + E2E 암호화 | 종단간 암호화 | ## 6. 모니터링 및 운영 ### 6.1 환경별 모니터링 전략 #### 6.1.1 환경별 모니터링 도구 비교 | 모니터링 영역 | 개발환경 | 운영환경 | 커버리지 | |---------------|----------|----------|----------| | **모니터링 도구** | Kubernetes Dashboard | Azure Monitor + Application Insights | 기본 vs 종합 | | **메트릭** | CPU, Memory | CPU, Memory, 비즈니스 메트릭 | 10배 확장 | | **알림** | 없음 | 심각도별 알림 (5분 이내) | 신규 도입 | | **로그 수집** | kubectl logs | 중앙집중식 Log Analytics | 통합 관리 | | **APM** | 없음 | Application Insights | 성능 추적 | ### 6.2 CI/CD 및 배포 전략 #### 6.2.1 환경별 배포 방식 비교 | 배포 측면 | 개발환경 | 운영환경 | 자동화 수준 | |-----------|----------|----------|-------------| | **배포 방식** | kubectl apply | GitOps (ArgoCD) | 수동 vs 자동 | | **자동화** | 부분 자동화 | 완전 자동화 | 5배 향상 | | **테스트** | 단위 테스트 | 단위+통합+E2E 테스트 | 3배 확장 | | **다운타임** | 허용 (30초) | Zero-downtime 배포 | 99.9% 개선 | | **롤백** | 수동 | 자동 롤백 (2분 이내) | 완전 자동화 | ## 7. 비용 분석 ### 7.1 환경별 비용 구조 #### 7.1.1 월간 비용 비교 | 구성 요소 | 개발환경 | 운영환경 | 비용 차이 | |-----------|----------|----------|----------| | **AKS 클러스터** | $30 (Basic) | $400 (Standard) | 13배 | | **컴퓨팅 리소스** | $50 (B2s) | $800 (D4s_v3) | 16배 | | **데이터베이스** | $20 (Pod) | $600 (Flexible) | 30배 | | **캐시** | $0 (Pod) | $300 (Premium P2) | 신규 비용 | | **네트워킹** | $10 | $150 (App Gateway) | 15배 | | **스토리지** | $20 | $100 | 5배 | | **모니터링** | $0 | $150 | 신규 비용 | | **보안** | $0 | $100 (Key Vault) | 신규 비용 | | **예비비(10%)** | $13 | $260 | - | | **총 월간 비용** | **$143** | **$2,860** | **20배** | #### 7.1.2 환경별 비용 최적화 전략 비교 | 최적화 영역 | 개발환경 | 운영환경 | 절약 효과 | |-------------|----------|----------|----------| | **컴퓨팅** | Spot Instance 활용 | Reserved Instance 1년 | 30% 절약 | | **백킹서비스** | Pod 기반으로 무료 | 관리형 서비스 필요 | 운영비 vs 인건비 | | **리소스 관리** | 고정 리소스 | Auto Scaling | 50% 활용률 개선 | ## 8. 전환 및 확장 계획 ### 8.1 개발환경 → 운영환경 전환 체크리스트 | 카테고리 | 전환 작업 | 예상 시간 | 담당자 | |----------|----------|----------|--------| | **데이터 마이그레이션** | PostgreSQL Pod → Azure Database | 4시간 | Backend Dev | | **설정 변경** | ConfigMap → Azure Key Vault | 2시간 | DevOps | | **네트워크 구성** | NGINX → App Gateway + WAF | 6시간 | DevOps | | **모니터링 설정** | Azure Monitor + Application Insights | 4시간 | DevOps | | **보안 강화** | Private Endpoint + RBAC | 4시간 | Security | | **성능 테스트** | 부하 테스트 및 튜닝 | 8시간 | QA + DevOps | | **문서화** | 운영 가이드 작성 | 4시간 | Technical Writer | ### 8.2 단계별 확장 로드맵 | 단계 | 기간 | 핵심 목표 | 주요 작업 | 사용자 지원 | 가용성 | |------|------|----------|----------|-------------|----------| | **Phase 1** | 1-3개월 | MVP 검증 | 개발환경 구축, 기능 개발 | 100명 | 95% | | **Phase 2** | 4-6개월 | 베타 런칭 | 운영환경 전환, 보안 강화 | 1,000명 | 99% | | **Phase 3** | 7-12개월 | 상용 서비스 | 자동 스케일링, 성능 최적화 | 10,000명 | 99.9% | ## 9. 핵심 SLA 지표 ### 9.1 환경별 서비스 수준 목표 | SLA 지표 | 개발환경 | 운영환경 | 개선 비율 | |----------|----------|----------|----------| | **가용성** | 95% (09:00-18:00) | 99.9% (24/7) | 50배 개선 | | **응답시간** | <1초 (50%ile) | <500ms (95%ile) | 2배 개선 | | **배포시간** | 10분 | 5분 (Zero-downtime) | 2배 개선 | | **복구시간** | 30분 | 5분 (자동 복구) | 6배 개선 | | **동시사용자** | 100명 | 10,000명 | 100배 확장 | | **월간비용** | $143 | $2,860 | - | --- ## 결론 본 마스터 인덱스는 KT 소상공인 이벤트 자동 생성 서비스의 Azure 기반 물리 아키텍처를 환경별로 체계적으로 정리한 문서입니다. **핵심 성과:** - **비용 효율성**: 개발환경 월 $143로 초기 비용 최소화 - **확장성**: 운영환경에서 100배 사용자 확장 지원 - **안정성**: 99.9% SLA 달성을 위한 고가용성 아키텍처 - **보안**: 다층 보안으로 엔터프라이즈급 보안 수준 확보 **향후 계획:** 1. Phase 1에서 개발환경 기반 MVP 검증 2. Phase 2에서 운영환경 전환 및 베타 서비스 3. Phase 3에서 상용 서비스 및 성능 최적화 이를 통해 안정적이고 확장 가능한 AI 기반 이벤트 생성 서비스를 제공할 수 있습니다.