10 CHAPTER 10 · 실전·심화

종합 실습

실전 아키텍처 — 전부 이어 붙이기

실전·심화 ⚠ 동시 가동 — 당일 정리 필수 최종 목표

VPC · EC2 · ALB · ASG · RDS · S3 · CloudFront · Route 53 · CloudWatch · CI/CD

CHAPTER INFO
🏗전체 서비스 통합 구성
💰동시 가동 시 하루 $3~10
⚠️당일 실습 후 전체 삭제 필수
🔗이전: CH09 CI/CD 자동화
🔗다음: CH11 비용 관리

목표 아키텍처

CH02~CH09에서 배운 모든 서비스를 하나의 서비스로 연결합니다. 사용자가 도메인에 접속하면 CloudFront → ALB → EC2(Spring Boot) → RDS로 이어지는 완전한 3티어 웹 서비스입니다.

🏗 최종 아키텍처 전체 구성
🌐 사용자 → https://www.example.com
↓ Route 53 ALIAS
☁ CloudFront
정적 파일 캐싱 · OAC · HTTPS
↙ /api/* 제외
정적 파일
↘ /api/*
ALB 오리진
🗄 S3
React 빌드 결과물
⚖️ ALB
HTTPS · 헬스 체크
↓ ALB → EC2
🌐 VPC
퍼블릭 서브넷
ALB
NAT Gateway
프라이빗 서브넷
EC2 (Spring Boot)
RDS (MySQL)
↓ CloudWatch 모니터링 · CodePipeline CI/CD
💰
비용 추산 — 실습 전에 반드시 확인
ALB: 시간당 $0.0225 · EC2 t3.medium: $0.052 · RDS db.t4g.micro: $0.018 · NAT Gateway: $0.059
동시 가동 1시간 기준 약 $0.15~0.20, 하루 방치 시 $3~5+
반드시 당일 실습 완료 후 전체 삭제하세요.

네트워크 기반 구성

  1. VPC 생성: CIDR 10.0.0.0/16
  2. 퍼블릭 서브넷 2개: AZ 2a(10.0.1.0/24), AZ 2c(10.0.3.0/24)
  3. 프라이빗 서브넷 2개: AZ 2a(10.0.2.0/24), AZ 2c(10.0.4.0/24)
  4. IGW 생성 및 연결
  5. 퍼블릭 라우팅 테이블: 0.0.0.0/0 → IGW
  6. 보안 그룹 3개: ALB용(80·443 전체), EC2용(8080을 ALB SG에서만), RDS용(3306을 EC2 SG에서만)

백엔드 배포 (Spring Boot)

  1. RDS 생성: 프라이빗 서브넷 · Multi-AZ 비활성 · 백업 보존 0일
  2. EC2 생성: 프라이빗 서브넷 · IAM 역할(S3·SSM 권한) · EC2용 보안 그룹
  3. Session Manager로 EC2 접속: SSH 포트 없이 접속
  4. Java 설치 · Spring Boot 배포: application.yml에 RDS 연결 정보 환경변수로
  5. ALB 생성: 퍼블릭 서브넷 2개 · ACM 인증서 · 대상 그룹에 EC2 등록
  6. Route 53: api.example.com → ALB ALIAS
  7. HTTPS 확인: curl https://api.example.com/health

프론트엔드 배포 (S3 + CloudFront)

  1. S3 버킷 생성: 퍼블릭 액세스 차단 유지
  2. 빌드 및 업로드: npm run build → dist/ 업로드
  3. us-east-1 ACM 인증서 발급: www.example.com
  4. CloudFront 배포: S3 오리진 · OAC · SPA 오류 처리(403/404 → index.html)
  5. Route 53: www.example.com → CloudFront ALIAS
  6. CORS 설정: Spring Boot에서 https://www.example.com 허용
  7. 전체 기능 확인: 로그인 · 파일 업로드 · API 호출

운영 연결 (CloudWatch + CI/CD)

  1. CloudWatch 경보: EC2 CPU 70% · RDS 커넥션 80% · ALB 5XX 에러
  2. SNS 이메일 알림: 경보 시 이메일 수신
  3. CodePipeline 구성: GitHub → CodeBuild → CodeDeploy → EC2
  4. 테스트 배포: 코드 수정 push → 자동 배포 확인

전체 정리 — 역순 삭제

🗑
아래 순서대로 삭제하세요 — 순서가 틀리면 오류 납니다
  1. CodePipeline · CodeBuild · CodeDeploy 삭제
  2. CloudWatch 경보 · 대시보드 삭제
  3. CloudFront 배포 비활성화 후 삭제 (5~15분 소요)
  4. ALB · 대상 그룹 삭제
  5. EC2 인스턴스 종료(Terminate)
  6. RDS 인스턴스 삭제 (스냅샷 생성 체크 해제)
  7. RDS 클러스터 삭제 (Aurora인 경우)
  8. NAT Gateway 삭제 (있는 경우)
  9. 탄력적 IP 릴리스
  10. S3 버킷 내용 비우기 → 버킷 삭제
  11. VPC 삭제 (서브넷·IGW·보안 그룹 자동 삭제)
  12. ACM 인증서 삭제 (서울 · 버지니아 둘 다)
  13. Route 53 레코드 삭제 → 호스팅 영역 삭제
  14. EBS 볼륨 · 스냅샷 남은 것 확인 후 삭제
  15. Cost Explorer에서 다음날 잔여 과금 확인
🎉 종합 실습 완료 — 달성한 것들
네트워크VPC · 퍼블릭/프라이빗 서브넷 · 보안 그룹 3계층
백엔드EC2 + Spring Boot + RDS + S3 파일 업로드
HTTPSALB + ACM 인증서 + HTTP→HTTPS 리다이렉트
프론트엔드S3 + CloudFront + OAC + SPA 라우팅
도메인Route 53 + www·api 서브도메인 분리
운영CloudWatch 경보 + SNS 알림
자동화CI/CD 파이프라인으로 git push → 자동 배포