피드로 돌아가기
Dev.toDevOps
원문 읽기
Docker와 GitHub Actions 기반의 반복 가능한 Spring Boot CI/CD 파이프라인 구축
Deploying Spring Boot to AWS EC2 with Docker and GitHub Actions — The Repeatable Way
AI 요약
Context
Spring Boot 애플리케이션의 EC2 배포 시 발생하는 환경 설정의 파편화와 반복적인 인프라 구축 비용 발생. 단순 JAR 실행을 넘어 환경 변수 분리, 일관된 런타임 보장, 배포 자동화라는 복합적 엔지니어링 요구사항 존재.
Technical Solution
- Local과 Production의 설정을 분리하여 보안성을 높인 application-prod.yml 기반의 환경 변수 주입 구조 설계
- Docker를 통한 런타임 환경 캡슐화로 인프라 간 일관성을 확보하고 배포 프로세스를 표준화한 Containerization 전략 채택
- GitHub Actions와 SSH Action을 연동하여 코드 푸시부터 EC2 내 배포 스크립트 실행까지의 과정을 자동화한 CI/CD 파이프라인 구축
- 배포 로직을 GitHub Actions 외부의 EC2 내부 셸 스크립트로 분리하여 워크플로우의 단순화 및 유지보수 효율성 강화
- SpringGen과 같은 자동화 도구를 통한 레이어드 아키텍처, Docker 설정, CI/CD 스캐폴딩의 표준화된 템플릿 적용
실천 포인트
1. Production Secret은 소스 코드에서 배제하고 환경 변수나 Secret Manager를 통해 주입하는가?
2. Docker multi-stage build를 통해 런타임 이미지 크기를 최적화하고 일관성을 유지하고 있는가?
3. CI/CD 툴에 모든 로직을 넣지 않고 서버 내부의 배포 스크립트를 통해 제어권을 분리했는가?
4. 프로젝트마다 반복되는 인프라 설정(Docker, GitHub Actions 등)을 표준화된 템플릿으로 관리하고 있는가?