# DevJob 배포 가이드 (AWS EC2)

## EP41: EC2 배포 절차

1. **EC2 인스턴스 생성**
   - AWS Console → EC2 → Launch Instance
   - AMI: Ubuntu 22.04, 인스턴스 유형: t2.micro (프리티어)

2. **보안 그룹(Security Group) 인바운드 규칙**
   | 포트 | 용도 | 소스 |
   |---|---|---|
   | 22  | SSH | 내 IP |
   | 8080 | 앱 (HTTP, 임시) | 0.0.0.0/0 |
   | 80, 443 | Nginx (EP42) | 0.0.0.0/0 |

3. **SSH 접속**
   ```bash
   ssh -i devjob-key.pem ubuntu@EC2_PUBLIC_IP
   ```

4. **Docker 설치**
   ```bash
   sudo apt update && sudo apt install -y docker.io docker-compose
   sudo usermod -aG docker ubuntu && newgrp docker
   ```

5. **앱 실행**
   ```bash
   docker run -d \
     --name devjob-app \
     -p 8080:8080 \
     -e SPRING_PROFILES_ACTIVE=prod \
     -e SPRING_DATASOURCE_URL=jdbc:postgresql://<RDS_ENDPOINT>:5432/devjob \
     -e SPRING_DATASOURCE_USERNAME=devjob \
     -e SPRING_DATASOURCE_PASSWORD=<DB_PASSWORD> \
     -e JWT_SECRET=<JWT_SECRET> \
     <dockerhub-username>/devjob:latest
   ```

6. **확인**
   ```bash
   curl http://<EC2_PUBLIC_IP>:8080/actuator/health
   # {"status":"UP", ...}
   ```

## 참고
- DB는 EC2에 직접 컨테이너로 띄우기보다 RDS PostgreSQL(db.t3.micro, 프리티어)을 권장한다.
- RDS 보안 그룹은 EC2 보안 그룹에서만 5432 접근을 허용하도록 설정해 외부 직접 접근을 차단한다.
- 다음 편(EP42)에서 Nginx + Let's Encrypt로 HTTPS를 적용한다.
