반응형
배포 흐름도
- 코드 작성
- 개발자가 로컬에서 애플리케이션 코드 작성 및 수정
- 코드 푸시
- 코드를 GitHub 리포지토리의 특정 브랜치에 푸시
- GitHub Actions 트리거
- 코드 푸시 시 GitHub Actions가 자동으로 트리거됨
- CI/CD 파이프라인 실행 (GitHub Actions)
- 빌드 단계
- 애플리케이션 빌드
- 자코코 테스트 커버리지 측정
- 자코코를 사용하여 테스트 코드의 커버리지 측정
- 커버리지 리포트를 생성하여 품질 확인
- 테스트 실행
- 빌드 아티팩트 생성
- Docker 이미지 빌드
- Dockerfile을 사용해 애플리케이션의 Docker 이미지 생성
- 빌드 단계
- ECR에 Docker 이미지 푸시 (도커 허브 개념)
- 빌드된 Docker 이미지를 AWS Elastic Container Registry (ECR)로 푸시
- ECS에 배포 - 컨테이너 관리, 쿠버네티스 역할
- ECR에서 Docker 이미지를 가져와 AWS Elastic Container Service (ECS)에 배포
- ECS 서비스 업데이트 (새로운 태스크 정의를 사용)
- ECS 클러스터 - 커다란 아파트 단지
- EC2 (가상 서버), 클라우드에서 빌려 쓰는 집
- EC2 인스턴스가 ECS의 클러스터로 사용될 수 있음
- 즉, 아파트 단지 ECS의 한 개의 아파트 EC2
- 만약 한 개의 ECR만 EC2에 올릴 경우 ECS는 생략해도 됨
- EC2 인스턴스에서 애플리케이션 실행 (ECS에 의해 관리됨)
- Webhook (선택적)
- 배포 완료 후 특정 URL로 웹훅 호출 (예: Slack 알림, 다른 서비스와 통신)
- 모니터링 및 관리
- AWS CloudWatch를 통해 애플리케이션 성능 모니터링
- 필요시 스케일링, 로드 밸런싱 설정
정리하자면
`ECR` 도커 이미지를 저장하는 레지스트리
`ECS` 컨테이너화된 애플리케이션을 관리하고 실행하는 서비스
`EC2` ECS가 관리하는 컨테이너가 실제로 실행되는 가상 서버
결국, EC2는 ECS가 ECR로 만든 컨테이너를 실행하기 위해 사용하는 가상 인프라
반응형
'공부 > Project' 카테고리의 다른 글
작업 환경 전환 시 Git 을 활용한 임시 커밋 처리 (0) | 2024.11.19 |
---|---|
[Circular dependency between the following tasks] 순환 종속성 문제 해결과 Mapper 활용 (0) | 2024.11.07 |
Spring Cloud FeignClient N+1 호출 문제 해결하기 (0) | 2024.09.23 |
Gateway, Spring Security, JWT 사용하여 인증 및 인가 처리하기 (0) | 2024.09.22 |
배달 레전드 프로젝트 회고 (정적 팩토리 메서드, 전략 패턴, 퍼사드 패턴, QueryDSL @Query 차이, Page, JPA N+1 문제) (3) | 2024.09.07 |