Part 3: 백엔드 인프라 아키텍처
| 항목 | 내용 |
|---|---|
| 문서명 | Part 3: 백엔드 인프라 아키텍처 (Backend Infrastructure Architecture) |
| 제품명 | DTA Wide Sleep Management Platform |
| 작성일 | 2026-02-10 |
| 적용범위 | Part 3 (백엔드/인프라) |
1. 인프라 개요
- 클라우드 제공자: Google Cloud Platform (GCP)
- 리전:
europe-west3(Frankfurt, Germany) - GDPR/DiGA 준수 - 배포 모델: Serverless (Cloud Run) + Managed Services
2. 네트워크 아키텍처 및 신뢰 경계
3. GCP 서비스 구성
3.1 Compute (컴퓨팅)
| 서비스 | 용도 | 보안 통제 |
|---|---|---|
| Cloud Run (dta-wide-api) | NestJS API 서버 | Service Account, VPC Connector, Private IP |
Auto-scaling:
- 최소 인스턴스: 1 (Cold Start 방지)
- 최대 인스턴스: 100
- 동시성: 80 req/instance
3.2 Databases (데이터베이스)
| 서비스 | 용도 | 백업 | 암호화 |
|---|---|---|---|
| Cloud SQL PostgreSQL | 사용자, 수면 로그, 설문 | 자동 백업 (매일 02:00), 30일 보관 | AES-256-GCM (Cloud KMS) |
| Memorystore Redis | 세션, 캐시, Rate Limit | 자동 백업 | AES-256 (Google 관리) |
| Firestore | 분석 로그, 이벤트 스트림 | 자동 백업 | AES-256 (Google 관리) |
고가용성:
- Cloud SQL: Multi-zone HA (Failover < 60초)
- Memorystore: Standard Tier (자동 복제)
- Firestore: Multi-region 복제
3.3 Networking (네트워킹)
| 구성요소 | 설정 | 보안 통제 |
|---|---|---|
| VPC Network | Private IP 범위: 10.0.0.0/16 | 방화벽 규칙, Private Google Access |
| Serverless VPC Connector | Cloud Run → VPC 연결 | Cloud Run만 접근 가능 |
| Cloud NAT | Outbound 트래픽 (외부 API) | 고정 IP, 로그 기록 |
| Private Service Connect | Cloud SQL Private IP | VPC 내부만 접근 가능 |
방화벽 규칙:
- 인바운드: HTTPS (443) only
- 아웃바운드: 화이트리스트 (PostgreSQL 5432, Redis 6379)
- SSH/RDP: 차단 (Cloud Run에서 불필요)
3.4 Security (보안)
| 서비스 | 용도 | 설정 |
|---|---|---|
| Cloud KMS | 암호화 키 관리 | Root Key: HSM-backed, 90일 자동 회전 |
| Secret Manager | API 키, DB 비밀번호 | Version Control, IAM 접근 통제 |
| Cloud Armor | WAF, DDoS 방어 | OWASP Top 10 룰셋, IP 화이트리스트 [TODO: 구현 여부 확인 필요] |
| VPC Service Controls | 데이터 유출 방지 | europe-west3 리전 내 강제 |
4. 인프라 보안 통제
4.1 IAM 역할 기반 접근 통제
| Service Account | 역할 | 권한 범위 |
|---|---|---|
dta-wide-api@... | Cloud Run API 서비스 | Cloud SQL Client, Secret Manager Accessor, Cloud Logging Writer |
db-admin@... | DB 관리자 | Cloud SQL Admin (읽기 전용, 승인 필요) |
ci-cd@... | CI/CD 파이프라인 | Cloud Run Deployer, Container Registry Writer |
최소 권한 원칙:
- 각 Service Account는 필요한 최소 권한만 보유
- 프로덕션 DB 쓰기 권한: API 서비스만
- 개발자: 읽기 전용
4.2 시크릿 관리
Secret Manager 사용:
secrets/
├── DATABASE_URL # PostgreSQL 연결 문자열
├── REDIS_URL # Redis 연결 문자열
├── JWT_SECRET # JWT 서명 키
├── OPENAI_API_KEY # OpenAI API 키
└── MAILGUN_API_KEY # 이메일 발송 키
접근 통제:
- Cloud Run Service Account만 접근 가능
- 버전 관리 (최신 3개 버전 보관)
- 감사 로그 (Secret 접근 기록)
5. 백업 및 재해 복구 (Backup & DR)
5.1 백업 정책
| 데이터 유형 | 백업 주기 | 보관 기간 | 저장 위치 |
|---|---|---|---|
| PostgreSQL Main DB | 매일 02:00 (자동) | 30일 | Cloud SQL 자동 백업 (europe-west3) |
| Firestore | 실시간 복제 | 무제한 (자동) | Firestore Managed |
| Cloud Storage (로그) | 주 1회 아카이브 | 1년 | Cloud Storage (Nearline) |
5.2 재해 복구 계획
RPO (Recovery Point Objective): 1시간
- Cloud SQL Point-in-Time Recovery 지원
- 트랜잭션 로그 7일 보관
RTO (Recovery Time Objective): 4시간
- Cloud SQL HA Failover: < 60초
- 전체 인프라 재구축: < 4시간 (Terraform 자동화)
DR 절차:
- Cloud SQL Failover (자동, < 60초)
- Cloud Run 자동 재배포 (새 Zone)
- DNS 업데이트 (Cloud DNS, TTL 60초)
- 데이터 무결성 검증
- 서비스 정상화 확인
6. CI/CD 파이프라인
6.1 배포 흐름
6.2 배포 보안 통제
| 단계 | 보안 검사 | 차단 조건 |
|---|---|---|
| Code Review | 보안팀 리뷰 (Critical 변경) | 미승인 |
| SAST | SonarCloud, Semgrep | Critical/High 취약점 |
| Container Scan | GCP Vulnerability Scanning | Critical CVE |
| Staging Deploy | E2E 테스트 | 테스트 실패 |
| Production Deploy | Tech Lead 승인 | 미승인 |
7. 모니터링 및 알림
7.1 주요 메트릭
| 메트릭 | 임계값 | 알림 수신자 | 조치 |
|---|---|---|---|
| API 응답 시간 (P95) | > 2초 | 운영팀 | 성능 조사 |
| 에러율 | > 5% | 운영팀 + 개발팀 | 즉시 조사 |
| DB Connection Pool | > 80% | DBA | Scale Up 검토 |
| Redis Memory | > 90% | 운영팀 | 캐시 정리 또는 Scale Up |
| SSL Certificate 만료 | < 30일 | 보안팀 | 인증서 갱신 |
7.2 알림 채널 (TODO: 개선)
- Critical: Slack
- High: Slack
- Medium: Slack
- Low: Slack
증빙 및 참조(Artifacts)
- 인프라 다이어그램 (본 문서 Section 2)
- GCP 프로젝트 구조 Export -
artifacts/gcp-project-structure.json - Cloud Run 설정 -
cloudrun-deploy/service.yaml - Cloud SQL 설정 -
artifacts/cloudsql-config.json - IAM 역할 정의 -
artifacts/iam-roles.json - VPC 방화벽 규칙 -
artifacts/vpc-firewall-rules.json - Secret Manager 키 목록 -
artifacts/secret-manager-keys.json - CI/CD 파이프라인 -
.github/workflows/deployment-ci-europe.yml - 백업 정책 증적 - Cloud SQL 백업 설정 스크린샷
- 모니터링 대시보드 - Cloud Monitoring 대시보드 Export
| 규정 | 요구사항 | 구현 | 증거 |
|---|---|---|---|
| BSI TR-03161 Part 3 | 안전한 인프라 | VPC, Private IP, WAF | GCP 설정 Export |
| GDPR Article 32 | 적절한 기술적 조치 | 암호화, 접근 통제, 감사 로그 | 본 문서 |
| DiGA (BfArM) | 독일 데이터 레지던시 | europe-west3 리전 강제 | VPC Service Controls |