🌩️ Cloud Infrastructure Wiki
이 위키는 프로젝트의 클라우드 인프라, CI/CD, IaC, 보안 및 운영 관련 전반적인 내용을 문서화한 공간입니다. 각 섹션은 실제 구성 시 참고할 수 있도록 다이어그램, 도구, 정책 등을 포함하고 있습니다.
- 모놀리식 → 마이크로서비스 전환 고려
- VPC, 서브넷, NAT, 인터넷 게이트웨이 구성
- Bastion Host / Load Balancer / DB / Object Storage 등
- Public / Private Subnet 분리
- 서브넷 간 라우팅 정책 정의
- 보안 그룹 / NACL 구성
- 사용자가 Load Balancer 접근
- 서비스는 컨테이너 내부로 라우팅
- 백엔드는 RDS 및 외부 API 호출
- 결과는 캐시 or 직접 응답
환경 |
목적 |
특징 |
Dev |
개발용 |
자유로운 실험 가능 |
Staging |
테스트 |
운영 환경과 유사 |
Prod |
실제 서비스 |
고가용성, 보안 최우선 |
- S3 버킷:
myapp-dev-*
, myapp-stg-*
, myapp-prod-*
- EKS 클러스터:
eks-dev
, eks-stg
, eks-prod
- DB 인스턴스: 스테이징은 RDS 테스트 클래스 사용
개발자 → Git Push
↓
GitHub Actions → 도커 빌드 & 이미지 Push
↓
Helm 변경 → GitOps Repo 반영
↓
Argo CD 자동 Sync
.github/workflows/deploy.yml
- 주요 단계: Lint → Test → Build → Push → Notify
- App of Apps 패턴 사용
- 자동/수동 Sync 제어
- Health Check 기반 롤백
-
Staging: 롤링 배포
-
Production: 블루그린 or 카나리
- 멀티 스테이지 빌드
- 취약점 스캔: Trivy, Grype
- 레지스트리: AWS ECR or GitHub Packages
- 태깅 정책:
latest
, dev-<hash>
, release-<ver>
- EKS + Helm + ArgoCD 연동
- 리소스 제한: CPU/Memory 설정 명확히
terraform/
├── modules/
│ ├── vpc/
│ └── eks/
├── environments/
│ ├── dev/
│ └── prod/
└── backend.tf
- 재사용 가능한 공통 모듈 구성
-
locals
/ outputs
활용
- 원격 backend: S3 + DynamoDB
- 환경별 workspace 사용
목적 |
도구 |
Metrics |
Prometheus, CloudWatch |
Logs |
Loki, EFK stack |
Tracing |
Tempo, Jaeger |
- Slack 연동
- AlertManager 룰 정의
- 최소 권한 원칙 (Least Privilege)
- Role 기반 접근 제어 (RBAC)
- AWS Secrets Manager or SOPS
- GitHub Actions에 Mask 처리
- 보안 그룹 제한
- DB 접근은 Bastion Host 통해서만
- RDS 자동 백업
- S3 버전 관리 + 수명 주기 정책
- Terraform 상태파일 주기적 백업
- DB 장애 → 스냅샷 복원 후 재연결
- 리전 장애 → DR 리전에 템플릿 기반 재구성
- GitHub PR 생성
- 리뷰 및 머지
- CI → CD 파이프라인 자동 실행
- Terraform 변경 PR →
plan
결과 확인 → 머지 후 apply
- Prometheus Alert → Slack
-
kubectl logs
+ describe
로 1차 확인
- 필요 시 롤백
도구 |
버전 |
설명 |
Terraform |
1.6.x |
IaC 구성 |
Helm |
3.x |
Kubernetes 패키징 |
Argo CD |
2.x |
GitOps CD |
GitHub Actions |
최신 |
CI / 릴리스 자동화 |
Prometheus |
2.x |
모니터링 시스템 |
Grafana |
9.x |
시각화 대시보드 |
Trivy |
최신 |
컨테이너 이미지 보안 스캔 |