아키텍처 개요
25년 1월이 다 지나가는 지금.. 첫 겨울방학 프로젝트를 시작한 지 벌써 한 달이 지나간다... 그동안 CodeBuild, S3, ECR, ECS(Fargate), VPC 등등 다양한 서비스를 이용해서 글을 작성하는 시점에는 juice shop라는 샘플 앱을 무중단 배포 방법 중 하나인 Rolling Update로 배포시키는 것에 성공하였다. 원래 처음 프로젝트를 준비할 때 두 달 동안 배포를 모두 끝내는 것이 목표였는데.. 예상과 다르게 너무 빨리 끝나서 보안 피처 통합, 모니터링 등등 추가적인 아키텍처를 만들어 갈 것 같다. 일단 지금까지의 과정을 1월이 지나기 전에 기록하고자 이 글을 쓰게 되었다. 우리 프로젝트의 아키텍처는 다음과 같이 구성되었다.
흐름을 설명하자면 다음과 같다.
- 개발자가 코드를 Git Repo에 push하면 CodePipeline이 실행된다.
- 코드는 S3에 Source Artifact로 저장되고, CodeBuild가 이를 참조하여 빌드를 진행한다.
- 빌드 진행 후 ECR에 Docker 이미지가 저장된다. 또한 S3 Build Artifate로 ECS의 컨테이너 이름과 ECR의 docker 이미지의 URI가 포함된 imagedefinitions.json 파일이 저장된다.
- 빌드가 모두 끝나면 ECS에서 imagedefinitions.json 파일의 내용을 참조하여 ECR의 docker 이미지를 가져와 배포를 시작한다.
- 배포는 2개의 Task를 통해 진행되고 ALB를 통해 트래픽을 제어해 준다.
이번 글의 부제를 정하자면, ECS + Fargate를 이용한 Rolling Update 배포라고 하면 좋을 것 같다.
블로그의 글은 아래와 같은 순서대로 작성할 것이다.
- 아키텍처 개요 (현재 글)
- CodeBuild + ECR 생성 (링크)
- VPC + 서브넷 생성 (링크)
- 인터넷 게이트웨이 + NAT 게이트웨이 생성 및 라우트 테이블 설정 (링크)
- 로드밸런서(ALB) + 보안 그룹(Security Group) + 대상 그룹(Target Group) 생성 (링크)
- ECS 클러스터 생성 + 태스크 정의 + 서비스 생성 (링크)
- S3 버킷 생성 + CodePipeline 설정 및 최종 배포 (링크)
첫 프로젝트를 진행하며 모르는 개념을 검색하고, 책도 찾아보고, 선배에게 도움도 받으며 어느 정도 잘 진행된 것 같다.(물론 아직 안 끝남..) 아무것도 모르는 상태에서 클라우드를 시작하려니 비용적인 부분도 고려해야 할 것이 많고, 무엇을 어떻게 써야 하는지 등등 어려운 부분이 많았지만 사실 프로젝트를 계획하면서 제일 힘들었던 것 같다. 앞서 언급한 것처럼 처음 프로젝트를 진행할 때에는 두 달 동안 위의 파이프라인도 구현 못할 줄 알았다.. 사실 아직 이해 못 한 부분도 조금씩 있고, 헷갈리는 개념도 많지만 이제 어느 정도 감을 잡아서 하나의 서비스를 익히고 사용하는데 대충 어느정도 걸릴지 예상이 되긴 한다. 이 글을 보는 사람 중 나 같은 사람이 있다면 위의 내가 설명한 내용은 노베이스 상태에서도 검색하고 찾아보면서 하면 한 달이면 충분히 끝낸다고 생각하면 좋을 것 같다. (물론 시간을 엄청 쓰긴 함..)
'Project > Cloud' 카테고리의 다른 글
파이프라인 Security에 집중한 DevOps 구현 - VPC + 서브넷 생성 (3) (1) | 2025.01.27 |
---|---|
파이프라인 Security에 집중한 DevOps 구현 - CodeBuild + ECR 생성 (2) (0) | 2025.01.27 |
무중단 배포란? (0) | 2025.01.12 |
DevOps란? (0) | 2024.12.20 |
클라우드란? (2) | 2024.12.05 |