내일배움캠프

[내일배움캠프] CI/CD와 AWS ECS

munsik22 2026. 5. 5. 19:29

🧩 CI/CD

CI/CD란?

  • CI (Continuous Integration)
    • 개발자가 변경한 코드를 자주 통합하고, 이 코드가 전체 시스템과 잘 어우러지는지 자동으로 테스트하는 프로세스
    • 코드 변경이 발생할 때마다 빌드 및 테스트를 수행하여 코드 품질을 유지하고 문제를 조기에 발견할 수 있음
  • CD (Continuous Delivery)
    • CI의 결과물을 사용자에게 자동으로 배포하는 프로세스
    • 코드 변경이 통합되고 테스트를 통과하면 이를 자동으로 스테이징 환경 또는 프로덕션 환경에 배포함
    • 지속적인 배포(Continuous Deployment): 승인 절차 없이 자동으로 프로덕션 환경에 배포하는 것을 의미함 (CI/CD의 확장 개념)

CI/CD의 장점

  • 빠른 피드백
  • 자동화된 프로세스: Human Error를 방지할 수 있음
  • 일관된 배포
  • 높은 품질 유지
  • 개발 속도 향상

CI/CD 도구

  • GitHub Actions: GitHub 저장소에 직접 통합되어 있는 CI/CD 도구. YAML 파일을 사용하여 워크플로우를 정의 가능함
  • Jenkins: 오픈 소스 CI/CD 도구. 플러그인을 통해 다양한 기능을 확장 가능함
  • GitLab CI: GitLab과 통합된 CI/CD 도구. GitLab 저장소를 기반으로 CI/CD 파이프라인을 설정 가능함

🧩 Amazon ECS

Amazon ECS란?

  • AWS Elastic Container Service: docker 애플리케이션을 쉽게 배포하고 운영할 수 있도록 지원하는 완전관리형 Container Orchestration 서비스
  • Kubernetes와 같은 container Orchestration 서비스지만, Kubernetes 보다 사용하기 쉽고 비용적으로도 저렴하기 때문에 소/중 규모의 프로젝트에 널리 사용됨
  • Serverless로 구성하면 인스턴스를 구성하고 관리할 필요도 없음

ECS의 구조

  • ECR: Docker image 저장소
  • ECS Cluster: 컨테이너를 실행하기 위한 여러 인스턴스로 이루어진 클러스터 (Serverless로 한 경우 인스턴스도 필요 없음)
  • ECS Server: Docker 애플리케이션의 실행 그룹
  • ECS Task: ECS Server에 실제로 실행되는 docker container
  • 로드밸런서와, 모니터링, Auto Scaling 등도 자동으로 관리 가능
  • Task definition: 어느 포트에서 몇개의 도커 컨테이너를 어떤 이미지로 실행할지 애플리케이션 실행 정보를 저장하는 것