Cloud 2차 릴리즈 ‐ Docker 기반 3‐Tier - 100-hours-a-week/5-yeosa-wiki GitHub Wiki
이 페이지는 프로젝트의 2차 릴리즈(Docker 기반 3‐Tier)에 관한 전반적인 내용을 문서화한 페이지입니다.
각 섹션은 실제 구성 시 참고할 수 있도록 다이어그램, 도구, 정책 등을 포함하고 있습니다.
Sentry 연동 및 Discord 알림 설정 보고서
버전 관리 정책 (Semantic Versioning)
APM 도입 ‐ SigNoz
GCP Cloud Armor 보안 정책 구성 보고서
Self‐Hosted Runner & Flyway Migration Documentation
GCP서버 자원 자동화 시스템 구축 (with Cloud Function Cloud Build)
Sentry set‐commits 오류 트러블슈팅
GitHub Actions Runner 환경 오동작 트러블슈팅 보고서
- 단일 인스턴스에 모든 컴포넌트를 배치한 모놀리식 구조로 인해 관리 복잡도 및 가용성 저하
- 프론트, 백엔드, DB가 퍼블릭 서브넷에 위치한 단일 인스턴스에 있었기 때문에 보안 위험도 증가
- 비정상적인 접근과 봇들의 요청으로 전방위 방어가 힘들다고 판단하여 중요한 정보들을 프라이빗 서브넷에 위치시키기로 함
-
비즈니스 요구사항: 확장성, 보안, 자동화, 비용 최적화
-
평가 기준:
- 기능 적합성 (3-Tier 분리, HTTPS/CDN 지원)
- 확장성 (MIG 기반 오토스케일링)
- 안정성 (Cloud Armor, Firewall, DR)
- 비용 효율성 (자동 시작/종료로 30% 절감)
- 운영 편의성 (Cloud Build/Function 자동화)
-
대안 비교:
대안 장점 단점 단일 GCE 인스턴스 단순 구성, 즉시 배포 확장·보안·자동화 한계 GKE (Kubernetes) 관리 자동화, 확장성 우수 운영 복잡도, 러닝 커브 MIG 기반 3-Tier Web Architecture 모듈화·자동화·비용 최적화 초기 구성 작업량 필요
- React 정적 사이트: GCS + HTTPS Load Balancer + Cloud CDN + Cloud DNS
- Spring Boot API: GCE Managed Instance Group (MIG) + Instance Template
- Database: Cloud SQL(MySQL 8) + Cloud SQL Proxy
- 네트워크: VPC(Shared) + Subnet 분리(Frontend/Backend/DB/Proxy) + Cloud NAT
- 보안: Firewall + Cloud Armor + WireGuard VPN
- CI/CD: GitHub Actions → Artifact Registry → MIG 롤링 업데이트
- 운영 자동화: Cloud Function + Cloud Build + Cloud Scheduler → Discord 알림
-
VPC & Subnet
-
Shared VPC (10.0.0.0/16)
-
Subnet
- frontend: 10.0.10.0/24 (public)
- backend: 10.0.20.0/24 (private)
- db-proxy: 10.0.30.0/24 (private)
- db: 10.0.40.0/24 (private)
-
-
Managed Instance Group
- Zone: asia-northeast3-a,b,c
- Instance Template: E2 vCPU1, RAM1GB, Balanced PD 30GB
- Autoscaling: CPU 60% 기준 최대 4개
-
Load Balancer
- HTTPS 프록시 + SSL 인증서 (Managed)
- Backend: MIG (TCP:8080), Health Check (TCP:8080)
-
Cloud SQL & Proxy
- Cloud SQL(MySQL 8, db-custom-1-3840)
- Proxy VM 배포 (E2 small, Public IP)
-
기타 서비스
- GCS (정적 호스팅, 객체 버전 관리)
- Cloud Scheduler (Start/Stop 트리거)
- Cloud Build (runner: Self-hosted, Flyway migration)
- WireGuard VPN (AWS ↔ GCP)
-
Cloud Armor 정책
- 지리적 허용: 대한민국(kr) only
- API 차단:
/api/*
인증되지 않은 요청 전부 Block - OWASP Top10 방어 기본 탑재
-
방화벽 규칙 (prod 기준)
이름 방향 프로토콜/포트 출발지/목적지 대상 allow-lb-http Ingress TCP 80 0.0.0.0/0 HTTPS Load Balancer allow-lb-https Ingress TCP 443 0.0.0.0/0 HTTPS Load Balancer allow-healthcheck Ingress TCP 8080 35.191.0.0/16,130.211.0.0/22 Backend MIG allow-backend-api Ingress TCP 8080 Load Balancer 프록시 IP Backend MIG allow-sql-proxy Ingress TCP 3307 10.0.20.0/24 Proxy VM allow-ssh-runner Ingress TCP 22 GitHub Runner 공인 IP Proxy VM allow-wireguard Ingress UDP 51820 AWS VPN 피어 IP WireGuard VM default-deny-all Ingress All 0.0.0.0/0 All Instances
- Cloud SQL 자동 백업: 일일 백업, 7일 보관
- 인스턴스 스냅샷: 주간 디스크 스냅샷(균형형 PD)
- GCS 버전 관리: 객체 버전 보관 활성화
- 설정 저장소: Terraform 상태 파일 S3/DynamoDB 백엔드
-
배포
- GitHub Actions PR 병합 → Artifact Registry 빌드 → MIG 롤링 업데이트
-
자원 제어
- Cloud Function HTTP
/start
,/stop
호출 또는 Scheduler 자동 실행
- Cloud Function HTTP
-
모니터링
- Cloud Monitoring(Compute/SQL 지표), SigNoz APM 연동
- Slack/Discord 알림 채널 확인
-
긴급 복구
- Cloud SQL point-in-time 복원
- MIG 인스턴스 Template 교체 후 재배포
- Terraform v1.5.7
- gcloud SDK 427.0.0
- GitHub Actions Runner 2.308.0
- Flyway Community Edition 9.17.1
- WireGuard 1.0.20210225
- Cloud SQL Proxy 1.32.0
자원 항목 | 설명 | 사용량 | 가격 (USD) |
---|---|---|---|
E2 vCPU | vCPU 1개 × 270시간 | 270시간 | $7.57 |
E2 메모리 | RAM 1GB × 1080시간 | 1080GB-시간 | $4.04 |
디스크 (Balanced PD) | SSD 디스크 30GB | 30GB | $3.90 |
소계 | $15.51 |
자원 항목 | 설명 | 사용량 | 가격 (USD) |
---|---|---|---|
E2 vCPU | 1개 × 1080시간 | 1080시간 | $30.27 |
E2 메모리 | 1GB × 4320시간 | 4320GB-시간 | $16.15 |
디스크 (Balanced PD) | SSD 디스크 30GB | 30GB | $3.90 |
소계 | $50.32 |
자원 항목 | 설명 | 사용량 | 가격 (USD) |
---|---|---|---|
N1 vCPU | vCPU 1개 × 1068시간 | 1068시간 | $43.38 |
N1 메모리 | RAM 1GB × 4005시간 | 4005GB-시간 | $21.70 |
NVIDIA Tesla T4 GPU | GPU 1개 × 267시간 | 267시간 | $98.79 |
디스크 (PD) | HDD 디스크 100GB | 100GB | $5.20 |
소계 | $169.07 |
자원 항목 | 설명 | 사용량 | 가격 (USD) |
---|---|---|---|
vCPU | 1개 × 540시간 | 540시간 | $28.998 |
메모리 | 1GB × 2025시간 | 2025GB-시간 | $18.43 |
스토리지 | 표준 스토리지 27,000GB | 27,000GB | $8.17 |
소계 | $55.60 |
자원 항목 | 설명 | 사용량 | 가격 (USD) |
---|---|---|---|
표준 스토리지 | GCS 스탠다드 1000GB | 1000GB | $23.00 |
소계 | $23.00 |
최종 합계: $313.50 (약 43만 원/월)
참고 링크