CI/CD란?
지속적 통합 CI (Continuous Integration)
- 코드 변경이 발생할 때마다 (git push를 통해 감지), 이 코드가 전체 시스템과 잘 어우러지는지 자동으로 빌드하고 테스트하는 프로세스이다. 이를 통해 코드 품질을 유지하고 이슈를 조기에 발견할 수 있다.
지속적 배포 CD (Continuous Delivery)
- CD는 CI의 결과물을 사용자에게 자동으로 배포하는 프로세스이다. 코드 변경이 통합되고 테스트를 통과하면, 이를 자동으로 배포한다.
CI/CD를 구성해야 하는 이유 ❗
- 변경된 코드에 대한 피드백이 빠르다. 즉각적으로 빌드 및 테스트 결과를 확인할 수 있어 개발자가 이를 인지하고 수정할 수 있다.
- 빌드, 테스트, 배포 과정이 자동화되어 수작업을 줄이고, _인적 오류를 방지_할 수 있다.
- 동일한 배포 프로세스를 통해 모든 환경(개발, 테스트, 스테이징, 프로덕션)에서 일관된 결과를 보장한다.
- 잠재적인 문제를 조기에 발견하여 품질을 유지하고 검증할 수 있다.
- 자동화된 파이프라인을 통해 개발 주기를 단축하여 새로운 기능을 빠르게 사용자에게 제공할 수 있다.
CI/CD 도구
GitHub Actions, Jenkins, GitLab CI 등등 ...
Amazon ECS
💡 AWS Elastic Container Service는 docker 애플리케이션을 쉽게 배포하고 운영할 수 있도록 지원하는 Container Orchestration 서비스 (like Kubernetes)
- But, Kubernetes 보다 사용하기 쉽고, 비용적으로도 저렴하기 때문에 작은 규모의 프로젝트에 널리 사용된다.
- serverless로 구성하면 인스턴스를 구성하고 관리할 필요도 없다.
ECS 구조
ECR(Elastic Container Registry), ECS Cluster, ECS Service, ECS Task로 이루어진다.
- ECR: Docker image 저장소
- ECS Cluster: 컨테이너를 실행하기 위한 Cluster로 여러 인스턴스로 이루어진다. 이 인스턴스에 Docker container가 분산 실행되며 Serverless로 구성할 경우에는 인스턴스도 필요가 없다.
- ECS Service: Docker 애플리케이션의 실행 그룹
- ECS Task: ECS Service에서 실제로 실행되는 docker container들을 Task 라고 한다.
- 로드밸런서, 모니터링, Auto Scaling 등의 요소도 있으나, ECS가 자동으로 관리한다
Task definition
- ECS의 최소 실행단위는 “Task”
- “Service”는 Task가 두 개 이상 모인 것
- Task는 docker 애플리케이션
- 어느 포트에서 몇 개의 도커 컨테이너를 어떤 이미지로 실행할지 애플리케이션 실행 정보가 필요
- 이 정보를 저장하고 있는것이 Task definition
이제 실제 프로젝트에 적용하러 가보자 😈
'infra' 카테고리의 다른 글
인프라 아키텍처 시각화 (0) | 2024.08.23 |
---|