본문으로 건너뛰기

18.4 AWS EC2, S3, RDS를 활용한 클라우스 인프라

1. 핵심 AWS 서비스 역할 정의​

서비스역할
EC2 (Elastic Compute Cloud)스프링 부트 애플리케이션 서버 가상 머신
RDS (Relational Database Service)관리형 MySQL/PostgreSQL 데이터베이스
ElastiCache for Redis관리형 Redis 캐시/세션 서버
S3 (Simple Storage Service)정적 파일, 이미지, 배포 JAR 파일 보관
ALB (Application Load Balancer)트래픽 분산 및 SSL Termination
Route 53도메인 네임 서버 (DNS)
ACM (Certificate Manager)HTTPS 인증서 무료 발급/자동 갱신

2. 실무 추천 아키텍처​

인터넷
│
▼
Route 53 (DNS: myapp.com → ALB)
│
▼
ALB (SSL Termination - HTTPS 443 → 내부는 HTTP 8080으로 포워드)
│ │
▼ ▼
EC2 인스턴스 EC2 인스턴스 ← 오토스케일링 그룹 (트래픽에 따라 자동 증설/축소)
│
├──► RDS MySQL (Private Subnet - 외부 접근 불가)
└──► ElastiCache Redis (Private Subnet)

3. EC2 초기 설정 스크립트​

신규 EC2 인스턴스에 Docker를 설치하고 애플리케이션을 올리는 준비 스크립트입니다.

#!/bin/bash
# Ubuntu 22.04 기준 EC2 초기화 스크립트

# Docker 설치
sudo apt-get update
sudo apt-get install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker ubuntu # ubuntu 사용자를 docker 그룹에 추가 (sudo 없이 docker 명령 실행)

# 환경 변수 파일 생성 (운영 설정 보관)
cat > /home/ubuntu/.env <<EOF
SPRING_DATASOURCE_URL=jdbc:mysql://rds-endpoint:3306/tododb
SPRING_DATASOURCE_USERNAME=admin
SPRING_DATASOURCE_PASSWORD=REPLACE_ME
SPRING_DATA_REDIS_HOST=elasticache-endpoint
EOF