AWS ECS Fargate에 여러 서비스가 포함된 monorepo를 배포를 하려고하는데요. 제가 필요한 사항은 아래입니다.
- 모든 커밋마다 각 서비스의 Docker 이미지를 빌드하고, commit SHA나 v1.1, v1.2 같은 버전 태그를 붙여 ECR에 푸시되어야합니다. 각 환경마다 다시 빌드하지 않고, 한 번 빌드한 이미지를 재사용할 수 있어야 합니다.
- 빌드가 완료되면, 원하는 태그를 지정해 dev, stage, prod 같은 환경에 수동으로 배포할 수 있어야 합니다. 이상적으로는 dev에 먼저 배포한 후, stage와 prod에는 동일한 이미지를 선택해 배포하는 방식이 필요합니다.
- 문제가 발생했을 경우, 이전에 빌드된 이미지를 재배포함으로써 빠르게 롤백할 수 있어야 합니다. 예를 들어, ECR의 :latest 태그를 갱신하거나, 검증된 이미지 태그로 task definition을 업데이트하는 방식 등 입니다.
- 환경마다 분리된 ECR repository(또는 namespace)를 사용하고, 이미지를 환경 간에 promote할 때는 동일한 digest를 복사해 새로운 repo/tag로 지정해야합니다.
현재 GitHub Actions를 사용하고 있지만, 서비스 수가 늘어나면서 인터페이스가 불편해지고, 개발자들이 배포를 추적하거나 트리거하기가 쉽지 않습니다.
ChatGPT 에게 물어보니까. 아래의 내용을 추천해주는데… 정말 맞는 건지 확신이 안서더라구요???
- 단기/간단 구축 → AWS CodePipeline
- UX/Visibility 우선 + SaaS 사용 가능 → Harness / Octopus Deploy
- GitOps 패턴/장기 전략 (K8s 이전 고려) → Argo CD
- 엔터프라이즈급, 수십~수백 서비스 → Spinnaker