Skip to content

[chore/#76] Terraform 기반 단일 EC2 배포 구성 및 CD 개편 - #77

Merged
kanghana1 merged 3 commits into
developfrom
chore/#76
Sep 23, 2026
Merged

kanghana1 merged 3 commits into
developfrom
chore/#76

Conversation

@kanghana1

Copy link
Copy Markdown
Contributor

❤️ 기능 설명

기존 수동 배포를 Terraform(IaC) 기반으로 재구성하고, 단일 EC2에 앱을 재배포할 수 있도록 구성했습니다.

배포 구조

  • 단일 EC2(t3.medium, ap-northeast-2) 안에 app + mysql + redis 컨테이너 (docker-compose)
  • terraform apply로 생성 / terraform destroy로 삭제 → 테스트할 때만 기동 (비용 최소화)

주요 변경

  • docker-compose.prod.yml에 MySQL 8 컨테이너 추가 (외부 DB → 내장 컨테이너)
  • 부하테스트용 시드 생성기 DataInitializer 추가 (과목/회원, app.seed로 on/off·수량 제어, BCrypt 처리)
  • terraform/ IaC 코드 추가 — 기본 VPC 조회, 보안그룹(22 내IP·80 전체), 키페어, EC2, user-data 부트스트랩
  • CD 개편: 고정 EC2 SSH 배포 제거 → 이미지 빌드/push 전용 (서버 배포는 terraform+user-data가 담당)
  • .env.example 추가, .gitignore에 .env/Terraform 산출물(tfstate·tfvars·.terraform) 제외
  • DEPLOY.md 배포 가이드 추가

연결된 issue

연결된 issue를 자동으로 닫기 위해 아래 {이슈넘버}를 입력해주세요.

close #76



✅ 체크리스트

  • PR 제목 규칙 잘 지켰는가?
  • 추가/수정사항을 설명하였는가?
  • 테스트 결과 사진을 넣었는가?
  • 이슈넘버를 적었는가?

- docker-compose.prod.yml에 MySQL 8 컨테이너 추가 (app -> mysql 연결)
- DataInitializer로 부하테스트용 시드(과목 20개/회원 N명) 생성,
  app.seed 프로퍼티로 on/off 및 회원 수 제어 (BCrypt 처리)
- application-prod.yml MySQL 접속 파라미터 보강(allowPublicKeyRetrieval 등)
- .env.example 템플릿 추가, .gitignore에 .env/Terraform 산출물 제외
- DEPLOY.md 배포 계획 체크리스트 추가
Terraform 기반 임시 EC2 배포로 전환하면서, 고정 EC2에 SSH로
배포하던 CD 스텝을 제거하고 이미지 빌드/push만 수행하도록 변경.
서버 배포는 terraform apply(user-data가 :latest pull)가 담당.

- cd.yml: develop push -> :latest 이미지 빌드/push
- cd-test.yml: test/** push -> SHA 태그 이미지 빌드/push
- EC2_HOST/EC2_PRIVATE_KEY/DB_* secret 의존성 제거
@kanghana1 kanghana1 self-assigned this Sep 23, 2026
@kanghana1
kanghana1 merged commit 7a0d9a1 into develop Sep 23, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[CHORE] 배포 파이프라인 재구축

1 participant