배포 전략 결정 및 클라우드 인프라 설계 - Genie-Uss/genieus GitHub Wiki

배포 전략 결정: Github Actions + ECR 기반 배포

빠르고 안정적인 배포 파이프라인 구축을 위해 Github Actions를 빌드 서버로, ECR을 이미지 저장소로 활용하여 CI/CD 환경을 구성했습니다.

Github Actions을 선택한 이유

  • 별도 빌드 서버(Jenkins) 구축 없이 Github 자체에서 CI/CD 구현 가능
  • 복잡한 커스텀 없이도 워크플로우 설정만으로 충분히 유연한 배포 파이프라인 구축 가능
  • Github 과 연동이 자연스럽고, Pull Request 트리거 등을 쉽게 적용할 수 있어 협업과 자동화에 용이
  • 이를 통해 별도 서버 관리 없이 경량화된 빌드 환경을 빠르게 구성하고, 지속적인 통합 및 배포(CI/CD) 체계를 마련했습니다.

ECR을 선택한 이유

  • EC2에 직접 JAR 파일이나 docker-compose.yml 파일만으로 배포하는 방식은 관리 복잡도가 증가하고, 롤백 시 빌드 과정이 추가로 필요한 단점이 존재
  • ECR은 이미지 태그 기반 버전 관리가 가능해, 간편한 롤백 및 버전 관리를 지원
  • 이미지를 ECR에서 바로 받아와 docker-compose를 통해 빠르게 서비스 배포가 가능해졌으며, 배포 효율성과 신뢰성을 동시에 확보했습니다.

클라우드 인프라 설계: VPC 및 퍼블릭/프라이빗 서브넷 분리

보안을 강화하고 서비스 접근 경로를 체계적으로 관리하기 위해 VPC를 구성하고, 퍼블릭/프라이빗 서브넷을 분리했습니다.

VPC 를 선택한 이유

  • 퍼블릭 서브넷에는 외부 접근이 필요한 Nginx만 배치
  • 서비스 핵심 로직을 담당하는 모든 애플리케이션 서버, 데이터베이스 등은 프라이빗 서브넷에 위치시켜 직접 외부 노출 차단
  • 이를 통해 최소한의 엔드포인트만 외부에 노출하는 보안 아키텍처를 구현
  • 이처럼 VPC 서브넷 분리와 보안 그룹 설정을 통해 보안 체계를 강화했습니다.

✍🏻 요약

항목 선택 이유
Github Actions 별도 서버 없이 Github 내에서 경량화된 CI/CD 구축 가능, Pull Request 트리거 등 협업 최적화
ECR 이미지 태그 관리로 간편한 롤백 및 버전 관리 지원, docker-compose를 통한 빠른 배포 가능
VPC 퍼블릭/프라이빗 서브넷 분리로 외부 접근 최소화, 보안 그룹을 통한 보안 강화