# 물리 아키텍처 설계서 - 마스터 인덱스 ## 1. 개요 ### 1.1 설계 목적 - AI 기반 여행 일정 생성 서비스의 Azure Cloud 기반 물리 아키텍처 설계 - 개발환경과 운영환경의 체계적인 아키텍처 분리 및 관리 - 환경별 특화 구성과 단계적 확장 전략 제시 ### 1.2 아키텍처 분리 원칙 - **환경별 특화**: 개발환경과 운영환경의 목적에 맞는 최적화 - **단계적 발전**: 개발→운영 단계적 아키텍처 진화 - **비용 효율성**: 환경별 비용 최적화 전략 - **운영 단순성**: 환경별 복잡도 적정 수준 유지 ### 1.3 문서 구조 ``` physical-architecture.md (마스터 인덱스) ├── physical-architecture-dev.md (개발환경) └── physical-architecture-prod.md (운영환경) ``` ### 1.4 참조 아키텍처 - HighLevel아키텍처정의서: design/high-level-architecture.md - 논리아키텍처: design/backend/logical/logical-architecture.md - 아키텍처패턴: design/pattern/아키텍처패턴.md - API설계서: design/backend/api/*.yaml ## 2. 환경별 아키텍처 개요 ### 2.1 환경별 특성 비교 | 구분 | 개발환경 | 운영환경 | |------|----------|----------| | **목적** | MVP 개발/검증 | 실제 서비스 운영 | | **가용성** | 95% | 99.9% | | **사용자** | 개발팀(5명) | 실사용자(1만~10만) | | **확장성** | 고정 리소스 | 자동 스케일링 | | **보안** | 기본 수준 | 엔터프라이즈급 | | **비용** | 최소화($150/월) | 최적화($2,650/월) | | **복잡도** | 단순 | 고도화 | ### 2.2 환경별 세부 문서 #### 2.2.1 개발환경 아키텍처 📄 **[물리 아키텍처 설계서 - 개발환경](./physical-architecture-dev.md)** **주요 특징:** - **비용 최적화**: Spot Instance, 로컬 스토리지 활용 - **개발 편의성**: 복잡한 설정 최소화, 빠른 배포 - **단순한 보안**: 기본 Network Policy, JWT 검증 - **Pod 기반 백킹서비스**: PostgreSQL, Redis Pod 배포 **핵심 구성:** 📄 **[개발환경 물리 아키텍처 다이어그램](./physical-architecture-dev.mmd)** - NGINX Ingress → AKS Basic → Pod Services 구조 - Application Pods, PostgreSQL Pod, Redis Pod 배치 #### 2.2.2 운영환경 아키텍처 📄 **[물리 아키텍처 설계서 - 운영환경](./physical-architecture-prod.md)** **주요 특징:** - **고가용성**: Multi-Zone 배포, 자동 장애조치 - **확장성**: HPA 기반 자동 스케일링 (10배 확장) - **엔터프라이즈 보안**: 다층 보안, Private Endpoint - **관리형 서비스**: Azure Database, Cache for Redis **핵심 구성:** 📄 **[운영환경 물리 아키텍처 다이어그램](./physical-architecture-prod.mmd)** - Azure Front Door → App Gateway + WAF → AKS Premium 구조 - Multi-Zone Apps, Azure PostgreSQL, Azure Redis Premium 배치 ### 2.3 핵심 아키텍처 결정사항 #### 2.3.1 공통 아키텍처 원칙 - **서비스 메시 제거**: Istio 대신 Kubernetes Network Policies 사용 - **비동기 통신 중심**: 직접적인 서비스 간 호출 최소화 - **Managed Identity**: 키 없는 인증으로 보안 강화 - **다층 보안**: L1(Network) → L2(Gateway) → L3(Identity) → L4(Data) #### 2.3.2 환경별 차별화 전략 **개발환경 최적화:** - 개발 속도와 비용 효율성 우선 - 단순한 구성으로 운영 부담 최소화 - Pod 기반 백킹서비스로 의존성 제거 **운영환경 최적화:** - 가용성과 확장성 우선 - 관리형 서비스로 운영 안정성 확보 - 엔터프라이즈급 보안 및 모니터링 ## 3. 네트워크 아키텍처 비교 ### 3.1 환경별 네트워크 전략 #### 3.1.1 환경별 네트워크 전략 비교 | 구성 요소 | 개발환경 | 운영환경 | 비교 | |-----------|----------|----------|------| | **인그레스** | NGINX Ingress Controller | Azure Application Gateway + WAF | 운영환경에서 WAF 보안 강화 | | **네트워크** | 단일 서브넷 구성 | 다중 서브넷 (Application/Database/Cache) | 운영환경에서 계층적 분리 | | **보안** | 기본 Network Policy | Private Endpoint, NSG 강화 | 운영환경에서 엔터프라이즈급 보안 | | **접근** | 인터넷 직접 접근 허용 | Private Link 기반 보안 접근 | 운영환경에서 보안 접근 제한 | ### 3.2 네트워크 보안 전략 #### 3.2.1 공통 보안 원칙 - **Network Policies**: Pod 간 통신 제어 - **Managed Identity**: 키 없는 인증 - **Private Endpoints**: Azure 서비스 보안 접근 - **TLS 암호화**: 모든 외부 통신 #### 3.2.2 환경별 보안 수준 | 보안 요소 | 개발환경 | 운영환경 | 보안 수준 | |-----------|----------|----------|----------| | **Network Policy** | 기본 (개발 편의성 고려) | 엄격한 적용 | 운영환경에서 강화 | | **시크릿 관리** | Kubernetes Secrets | Azure Key Vault | 운영환경에서 HSM 보안 | | **암호화** | HTTPS 인그레스 레벨 | End-to-End TLS 1.3 | 운영환경에서 완전 암호화 | | **웹 보안** | - | WAF + DDoS 보호 | 운영환경 전용 | ## 4. 데이터 아키텍처 비교 ### 4.1 환경별 데이터 전략 #### 4.1.1 환경별 데이터 구성 비교 | 데이터 서비스 | 개발환경 | 운영환경 | 가용성 | 비용 | |-------------|----------|----------|---------|------| | **PostgreSQL** | Kubernetes Pod (hostPath) | Azure Database Flexible Server | 95% vs 99.9% | 무료 vs $450/월 | | **Redis** | Memory Only Pod | Azure Cache Premium (Cluster) | 단일 vs 클러스터 | 무료 vs $250/월 | | **백업** | 수동 (주 1회) | 자동 (35일 보존) | 로컬 vs 지역간 복제 | - | | **데이터 지속성** | 재시작 시 손실 가능 | Zone Redundant | - | - | ### 4.2 캐시 전략 비교 #### 4.2.1 다층 캐시 아키텍처 | 캐시 계층 | 캐시 타입 | TTL | 개발환경 설정 | 운영환경 설정 | 용도 | |----------|----------|-----|-------------|-------------|------| | **L1_Application** | Caffeine Cache | 5분 | max_entries: 1000 | max_entries: 2000 | 애플리케이션 레벨 로컬 캐시 | | **L2_Distributed** | Redis | 30분 | cluster_mode: false | cluster_mode: true | 분산 캐시, eviction_policy: allkeys-lru | #### 4.2.2 환경별 캐시 특성 비교 | 캐시 특성 | 개발환경 | 운영환경 | 비고 | |-----------|----------|----------|------| | **Redis 구성** | 단일 Pod | Premium 클러스터 | 운영환경에서 고가용성 | | **데이터 지속성** | 메모리 전용 | 지속성 백업 | 운영환경에서 데이터 보장 | | **성능** | 기본 성능 | 최적화된 성능 | 운영환경에서 향상된 처리 능력 | ## 5. 보안 아키텍처 비교 ### 5.1 다층 보안 아키텍처 #### 5.1.1 공통 보안 계층 | 보안 계층 | 보안 기술 | 적용 범위 | 보안 목적 | |----------|----------|----------|----------| | **L1_Network** | Kubernetes Network Policies | Pod-to-Pod 통신 제어 | 내부 네트워크 마이크로 세그먼테이션 | | **L2_Gateway** | API Gateway JWT 검증 | 외부 요청 인증/인가 | API 레벨 인증 및 인가 제어 | | **L3_Identity** | Azure Managed Identity | Azure 서비스 접근 | 클라우드 리소스 안전한 접근 | | **L4_Data** | Private Link + Key Vault | 데이터 암호화 및 비밀 관리 | 엔드투엔드 데이터 보호 | ### 5.2 환경별 보안 수준 #### 5.2.1 환경별 보안 수준 비교 | 보안 영역 | 개발환경 | 운영환경 | 보안 강화 | |-----------|----------|----------|----------| | **인증** | JWT (고정 시크릿) | Azure AD + Managed Identity | 운영환경에서 엔터프라이즈 인증 | | **네트워크** | 기본 Network Policy | 엄격한 Network Policy + Private Endpoint | 운영환경에서 네트워크 격리 강화 | | **시크릿** | Kubernetes Secrets | Azure Key Vault (HSM) | 운영환경에서 하드웨어 보안 모듈 | | **암호화** | HTTPS (인그레스 레벨) | End-to-End TLS 1.3 | 운영환경에서 전 구간 암호화 | ## 6. 모니터링 및 운영 ### 6.1 환경별 모니터링 전략 #### 6.1.1 환경별 모니터링 도구 비교 | 모니터링 요소 | 개발환경 | 운영환경 | 기능 차이 | |-------------|----------|----------|----------| | **도구** | Kubernetes Dashboard, kubectl logs | Azure Monitor, Application Insights | 운영환경에서 전문 APM 도구 | | **메트릭** | 기본 Pod/Node 메트릭 | 포괄적 APM, 비즈니스 메트릭 | 운영환경에서 비즈니스 인사이트 | | **알림** | 기본 알림 (Pod 재시작) | 다단계 알림 (PagerDuty, Teams) | 운영환경에서 전문 알림 체계 | | **로그** | 로컬 파일시스템 (7일) | Log Analytics (90일) | 운영환경에서 장기 보존 | ### 6.2 CI/CD 및 배포 전략 #### 6.2.1 환별별 배포 방식 #### 6.2.1 환경별 배포 방식 비교 | 배포 요소 | 개발환경 | 운영환경 | 안정성 차이 | |-----------|----------|----------|----------| | **배포 방식** | Rolling Update | Blue-Green Deployment | 운영환경에서 무중단 배포 | | **자동화** | develop 브랜치 자동 | tag 생성 + 수동 승인 | 운영환경에서 더 신중한 배포 | | **테스트** | 기본 헬스체크 | 종합 품질 게이트 (80% 커버리지) | 운영환경에서 더 엄격한 테스트 | | **다운타임** | 허용 (1-2분) | Zero Downtime | 운영환경에서 서비스 연속성 보장 | ## 7. 비용 분석 ### 7.1 환경별 비용 구조 #### 7.1.1 월간 비용 비교 (USD) | 구성요소 | 개발환경 | 운영환경 | 차이 | |----------|----------|----------|------| | **컴퓨팅** | | | | | AKS 노드 | $120 (Spot) | $1,200 (Reserved) | 10배 | | **데이터** | | | | | PostgreSQL | $0 (Pod) | $450 (Managed) | 무제한 | | Redis | $0 (Pod) | $250 (Premium) | 무제한 | | **네트워킹** | | | | | Load Balancer | $20 | $150 | 7.5배 | | **기타** | | | | | Service Bus | $10 | $150 | 15배 | | 모니터링 | $0 | $100 | 무제한 | | **총합** | **$150** | **$2,650** | **17.7배** | #### 7.1.2 비용 최적화 전략 #### 7.1.2 환경별 비용 최적화 전략 비교 | 최적화 영역 | 개발환경 | 운영환경 | 절약 효과 | |-------------|----------|----------|----------| | **컴퓨팅 비용** | Spot Instances 사용 | Reserved Instances | 70% vs 30% 절약 | | **백킹서비스** | Pod 기반 (무료) | 관리형 서비스 | 100% 절약 vs 안정성 | | **리소스 관리** | 비업무시간 자동 종료 | 자동 스케일링 | 시간 절약 vs 효율성 | | **사이징 전략** | 고정 리소스 | 성능 기반 적정 sizing | 단순 vs 최적화 | ## 8. 전환 및 확장 계획 ### 8.1 개발환경 → 운영환경 전환 체크리스트 | 카테고리 | 체크 항목 | 상태 | 우선순위 | 비고 | |---------|-----------|------|----------|------| | **데이터 마이그레이션** | 개발 데이터 백업 | ☐ | 높음 | pg_dump 사용 | | **데이터 마이그레이션** | 스키마 마이그레이션 스크립트 | ☐ | 높음 | Flyway/Liquibase 고려 | | **데이터 마이그레이션** | Azure Database 프로비저닝 | ☐ | 높음 | Flexible Server 구성 | | **설정 변경** | 환경 변수 분리 | ☐ | 높음 | ConfigMap/Secret 분리 | | **설정 변경** | Azure Key Vault 설정 | ☐ | 높음 | HSM 보안 모듈 | | **설정 변경** | Managed Identity 구성 | ☐ | 높음 | 키 없는 인증 | | **모니터링** | Azure Monitor 설정 | ☐ | 중간 | Log Analytics 연동 | | **모니터링** | 알림 정책 수립 | ☐ | 중간 | PagerDuty/Teams 연동 | | **모니터링** | 대시보드 구축 | ☐ | 낮음 | Application Insights | ### 8.2 단계별 확장 로드맵 | 단계 | 기간 | 핵심 목표 | 주요 작업 | 사용자 지원 | 가용성 | |------|------|----------|----------|-------------|----------| | **Phase 1** | 현재-6개월 | 안정화 | 개발환경 → 운영환경 전환
기본 모니터링 및 알림 구축 | 1만 사용자 | 99.9% | | **Phase 2** | 6-12개월 | 최적화 | 성능 최적화 및 비용 효율화
고급 모니터링 (APM) 도입 | 10만 동시 사용자 | 99.9% | | **Phase 3** | 12-18개월 | 글로벌 확장 | 다중 리전 배포
글로벌 CDN 및 로드 밸런싱 | 100만 사용자 | 99.95% | ## 9. 핵심 SLA 지표 ### 9.1 환경별 서비스 수준 목표 | SLA 항목 | 개발환경 | 운영환경 | 글로벌환경 (Phase 3) | |---------|----------|----------|---------------------| | **가용성** | 95% | 99.9% | 99.95% | | **응답시간** | < 10초 | < 5초 | < 2초 | | **배포시간** | 30분 | 10분 | 5분 | | **복구시간** | 수동 복구 | < 5분 | < 2분 | | **동시사용자** | 개발팀 (5명) | 10만명 | 100만명 | | **월간비용** | $150 | $2,650 | $15,000+ | | **보안인시던트** | 모니터링 없음 | 0건 목표 | 0건 목표 |