-
-
Notifications
You must be signed in to change notification settings - Fork 0
Description
1. 현재 상황 및 문제점
1.1 기존 아키텍처
AWS 계정 4개 분산 운영:
├── Web Service 계정: EC2 t2.micro + RDS PostgreSQL
├── Market Scraper 계정: EC2 t2.micro
├── Auction Scraper 계정: EC2 t2.micro
└── Monitoring 계정: EC2 t2.micro (Prometheus + Loki + Grafana)
배포: Docker 컨테이너 직접 실행, GitHub Actions CI/CD
1.2 핵심 문제점
AWS 프리티어 정책 변경 (2025년 7월 15일):
- 기존: 12개월 무료 (EC2 750시간/월)
- 변경: $200 크레딧 ($100 즉시 + $100 액티비티), 6개월 유효
- 기존 연 1회 계정 로테이션 전략 무효화
운영 복잡도:
- 4개 계정 관리 부담
- 연간 마이그레이션 작업
- 계정별 설정 중복
2. 목표 및 요구사항
핵심 목표: 인프라 관리 효율화 및 컨테이너 오케스트레이션 실무 경험
필수 요구사항:
- 비용 최소화 (프리티어/크레딧 활용)
- 가능하면 단일 계정 통합
- 운영 부담 감소 (관리형 서비스)
- 기존 Docker 이미지 재활용
- 6개월 계정 교체 전략 지원
3. 대안 비교
| 옵션 | 연간 비용 | 관리 복잡도 | 오케스트레이션 | 비고 |
|---|---|---|---|---|
| AWS ECS Fargate | $0* | 낮음 | ECS (AWS 네이티브) | 최종 선택 |
| AWS EKS | $876+ | 높음 | Kubernetes | 컨트롤 플레인 $73/월 |
| AWS ECS EC2 | $204 | 중간 | ECS | 서버 관리 필요 |
| k3s on EC2 t2.small | $204 | 높음 | Kubernetes | 직접 관리 부담 |
| Hetzner + k3s | $168 | 높음 | Kubernetes | AWS 벗어남 |
| Oracle Cloud (무료) | $0 | 중간 | k3s 가능 | ARM 전환 필요 |
*$200 크레딧 + 6개월 계정 교체
3.1 주요 대안 분석
AWS EKS: 컨트롤 플레인 $73/월 고정 비용으로 소규모 프로젝트에 과다. $200 크레딧으로 2-3개월만 커버.
k3s on AWS EC2: t2.small ($17/월)로 가능하나 2GB RAM 제약. Hetzner가 4배 저렴하고 스펙 우수(4 vCPU, 8GB).
Hetzner Cloud: 가성비 최고(€12.90/월)지만 AWS 생태계(ECR, RDS, IAM) 재구축 필요.
Oracle Cloud: 영구 무료(4 vCPU, 24GB)지만 ARM 아키텍처로 Docker 이미지 재빌드 + AWS 벗어남.
AWS ECS Fargate (선택): 컨트롤 플레인 무료, 서버 관리 제로, AWS 네이티브, $200 크레딧으로 6개월 커버 가능.
4. 최종 선택: AWS ECS Fargate
4.1 구성
단일 AWS 계정:
├── ECS Cluster (Fargate)
│ ├── Web Service (0.5 vCPU, 1GB, 24/7)
│ ├── Market Scraper (0.25 vCPU, 0.5GB, Scheduled)
│ └── Auction Scraper (0.25 vCPU, 0.5GB, Scheduled)
│
├── RDS PostgreSQL (db.t3.micro, 20GB gp3)
│
└── 모니터링 (별도 계정 유지, 프리티어 남음)
4.2 선택 근거
1. 컨테이너 오케스트레이션 실무 경험:
- Task Definition, Service, Scheduled Tasks
- 서비스 디스커버리, 로드밸런싱, 오토스케일링
- 블루-그린/카나리 배포
- Kubernetes 개념과 80% 유사 (Task=Pod, Service=Deployment)
2. 비용 효율:
- 컨트롤 플레인 무료 (EKS는 $73/월)
- $200 크레딧 + 6개월 교체로 영구 무료 가능
3. 운영 간소화:
- 서버 관리 불필요
- 기존 Docker 이미지 재사용
- GitHub Actions 수정 최소
4. AWS 생태계 유지:
- ECR, RDS, IAM 그대로 활용
- 마이그레이션 리스크 최소
5. 비용 분석
5.1 실제 리소스 현황
데이터베이스 (RDS):
- 실제 DB 크기: 1.5GB (loalife)
- 할당 스토리지: 20GB
- 남은 공간: 16.7GB
- 월 비용: $14.25 (인스턴스 $12.41 + 스토리지 $1.84)
5.2 Fargate 비용 계산
기본 구성 (24/7 실행):
Web (0.5 vCPU, 1GB):
= (0.5 × $0.04048 + 1 × $0.004445) × 730시간 = $18.02/월
Market Scraper (0.25 vCPU, 0.5GB):
= (0.25 × $0.04048 + 0.5 × $0.004445) × 730시간 = $8.97/월
Auction Scraper (0.25 vCPU, 0.5GB):
= $8.97/월
합계: $35.96/월
최적화 구성 (Scheduled Tasks + ARM):
Web (ARM): $18.02 × 0.8 = $14.42/월
Scrapers (EventBridge 10분 간격, 3분 실행):
= $8.97 × (216시간 / 730시간) = $2.66/월 (각각)
합계: $19.74/월
5.3 비용 시나리오 (6개월 기준)
| 구성 | Web | Scraper 1 | Scraper 2 | RDS | 월 합계 | 6개월 | 크레딧 후 |
|---|---|---|---|---|---|---|---|
| 기본 | $18.02 | $8.97 | $8.97 | $14.25 | $50.21 | $301.26 | $101.26 |
| 최적화 | $14.42 | $2.66 | $2.66 | $14.25 | $33.99 | $203.94 | $3.94 |
| 초최적화 (x86) | $18.02 | $2.66 | $2.66 | $14.25 | $37.59 | $225.54 | $25.54 |
추가 최적화 옵션:
- Fargate Spot (Scrapers): 70% 할인, 중단 가능 (10분 재시작 허용 시)
- ARM Graviton2: 20% 할인, Docker 이미지 ARM 빌드 필요
- Scheduled Tasks: 70% 할인, 내부 스케줄러 제거 필요
권장: 초최적화 구성 (Scheduled Tasks만 적용, ARM 제외) → 6개월당 $25.54 부담
6. RDS 마이그레이션
6.1 현황
- 현재 위치: Web Service 계정 (1년 만료 임박)
- 크기: 1.5GB (할당 20GB)
- 반드시 신규 계정으로 이전 필요
6.2 마이그레이션 방법
1. 스냅샷 공유 방식 (권장):
1. 기존 계정에서 RDS 스냅샷 생성 (15분)
2. 신규 계정에 스냅샷 공유
3. 신규 계정에서 스냅샷 복원 (20분)
4. 애플리케이션 연결 문자열 변경
5. DNS 전환 (1분 다운타임)
2. pg_dump/restore 방식 (대안):
pg_dump → S3 → pg_restore
다운타임: 5-10분
6.3 비용 고려
신규 계정(2025년 7월 15일 이후)은 RDS 750시간 무료 없음. $200 크레딧만 적용.
- db.t3.micro: $12.41/월 (고정)
- gp3 20GB: $1.84/월 (데이터 크기 3GB 이하 시 변동 없음)
- 백업: 1.5GB 무료 (DB 크기까지)
- I/O 비용 없음 (gp3는 IOPS 고정)
6개월 후 데이터가 2-3배 증가(3-4.5GB)해도 20GB 할당으로 충분. 추가 비용 없음.
7. 모니터링 전략
7.1 단계별 접근
Phase 1 (즉시): 모니터링 서버 별도 계정 유지
- 기존 계정 프리티어 남음 (2025년 1-2월 생성)
- Web + Scrapers + RDS만 신규 계정 이전
Phase 2 (3개월 후): 크레딧 여유 확인 후 판단
옵션 A: CloudWatch Container Insights + Grafana Cloud
Container Insights: $5-10/월
Grafana Cloud 무료: $0
합계: $5-10/월 추가
옵션 B: 기존 계정 유지 (추천)
- 추가 비용 없음
- 프리티어 만료 시(1-2년 후) 재검토
8. 실행 계획
8.1 준비 단계 (Week 1)
- 신규 AWS 계정 생성 ($200 크레딧 확보)
- ECS Cluster, Task Definition 작성
- ECR 리포지토리 생성 및 이미지 push
- RDS 스냅샷 공유 및 복원
- GitHub Actions 워크플로우 수정
8.2 마이그레이션 (Week 2)
- ECS Service 배포 및 헬스체크 (1시간)
- RDS 연결 테스트
- DNS 전환 (1분 다운타임)
- 24시간 모니터링
- 기존 인프라 삭제
8.3 롤백 계획
마이그레이션 실패 시:
- DNS 원복 (1분)
- 기존 EC2 재시작 (2분)
안전장치: 기존 EC2 중지 상태 유지 (삭제 X), ECS 안정화 확인 후 삭제
9. 6개월 후 계정 교체
9.1 절차
Month 6:
1. 새 AWS 계정 생성 ($200 크레딧 재획득)
2. ECS Task Definition/Service export
3. RDS 스냅샷 공유
4. 신규 계정에 인프라 재구축 (2시간)
5. DNS 전환 (1분 다운타임)
6. 구 계정 삭제
9.2 자동화
Terraform/CloudFormation으로 IaC 구성 시 계정 교체 30분 내 완료 가능.
10. ECS vs Kubernetes
10.1 개념 비교
| ECS | Kubernetes | 동일성 |
|---|---|---|
| Task Definition | Pod | 90% |
| Service | Deployment + Service | 80% |
| Task | Container | 100% |
| Cluster | Cluster | 100% |
| Target Group | Ingress | 70% |
| Service Discovery | CoreDNS | 80% |
결론: ECS 경험 후 Kubernetes 전환은 1-2주면 충분. 개념은 거의 동일, 구현만 다름.
11. 결론
11.1 최종 결정
AWS ECS Fargate (Scheduled Tasks 적용)
구성:
- Web Service: 0.5 vCPU, 1GB (24/7)
- Scrapers: 0.25 vCPU, 0.5GB (EventBridge 10분 간격)
- RDS: db.t3.micro, 20GB gp3
- 모니터링: 별도 계정 유지
비용:
월: $37.59
6개월: $225.54
크레딧: -$200.00
실 부담: $25.54 (6개월당)
11.2 핵심 근거
- ✅ 컨테이너 오케스트레이션 실무 경험 (ECS)
- ✅ 연간 $51 비용 (EKS는 $1,080, k3s는 $204)
- ✅ 4개 계정 → 1개 통합 (모니터링 제외)
- ✅ 서버 관리 제로
- ✅ 마이그레이션 리스크 낮음 (Docker 이미지 재사용)
11.3 대안 대비 장점
- EKS: 비용 1/21
- k3s: 관리 부담 없음
- Hetzner/Oracle: AWS 생태계 유지
- 현재 방식: 계정 통합 + 자동화
11.4 추가 최적화 여지
향후 트래픽 증가 시:
- Fargate Spot 적용 (70% 할인)
- ARM Graviton2 전환 (20% 할인)
- CloudFront CDN (정적 파일)
- Aurora Serverless v2 (RDS 대체, 유휴 시 자동 스케일 다운)
Metadata
Metadata
Assignees
Labels
Projects
Status