CI (Continuous Integration)
- CI는 개발자가 변경한 코드를 자주 통합하고, 이 코드가 전체 시스템과 잘 어우러지는지 자동으로 테스트하는 프로세스
- 코드 변경이 발생할 때마다 빌드 및 테스트를 수행하여 코드 품질을 유지하고 문제를 조기에 발견
CD (Continuous Delivery)
- CD는 CI의 결과물을 사용자에게 자동으로 배포하는 프로세스를 포함합니다. 코드 변경이 통합되고 테스트를 통과하면, 이를 자동으로 스테이징 환경 또는 프로덕션 환경에 배포
- 지속적인 배포(Continuous Deployment)는 CI/CD의 확장 개념으로, 승인 절차 없이 자동으로 프로덕션 환경에 배포하는 것을 의미
장점
빠른 피드백
- 코드 변경 후 즉각적인 빌드 및 테스트 결과를 확인할 수 있어, 개발자가 문제를 빠르게 인지하고 수정
자동화된 프로세스
- 빌드, 테스트, 배포 과정이 자동화되어 수동 작업을 줄이고, 인적 오류를 방지
일관된 배포
- 동일한 배포 프로세스를 통해 모든 환경(개발, 테스트, 스테이징, 프로덕션)에서 일관된 결과를 보장
높은 품질 유지
- 코드 품질을 지속적으로 검증하고, 잠재적인 문제를 조기에 발견하여 품질을 유지
개발 속도 향상
- 자동화된 파이프라인을 통해 개발 주기를 단축하고, 새로운 기능을 빠르게 사용자에게 제공
CI/CD 도구
Action하고 Jenkins는 써 봄.
GitHub Actions
- GitHub Actions는 GitHub 저장소에 직접 통합되어 있는 CI/CD 도구로, YAML 파일을 사용하여 워크플로우를 정의
특징
- GitHub 저장소와의 강력한 통합
- 다양한 이벤트 기반 트리거
- 풍부한 커뮤니티 및 Marketplace 지원
- 무료 사용 가능 (제한된 런타임 제공)
Jenkins
- Jenkins는 오픈 소스 CI/CD 도구로, 플러그인을 통해 다양한 기능을 확장할 수 있습니다.
특징
- 높은 커스터마이징 가능
- 다양한 플러그인 지원
- 분산 빌드 및 다중 플랫폼 지원
- 대규모 프로젝트에 적합
GitLab CI
- GitLab CI는 GitLab과 통합된 CI/CD 도구로, GitLab 저장소를 기반으로 CI/CD 파이프라인을 설정
특징
- GitLab과의 통합
- 강력한 파이프라인 편집기 제공
- 자동화된 DevOps 수명 주기 관리
- 클라우드 및 온프레미스 모두 지원
Amazon ECS
- AWS Elastic Container Service는 docker 애플리케이션을 쉽게 배포하고 운영 할 수 있도록 지원하는 완전관리형 Container Orchestration 서비스
- Kubernetes와 같은 container Orchestration 서비스
- Kubernetes 보다 사용하기 쉽고, 비용적으로도 저렴하기 때문에 소/중 규모의 프로젝트에 널리 사용
- serverless로 구성할 수 있는데, 이렇게 하면 인스턴스(가성서버)를 구성하고 관리할 필요도 없음
구조
ECS는 크게 ECR, ECS Cluster, ECS Service, ECS Task
- ECR
- ECS Cluster
- 컨테이너를 실행하기 위한 Cluster로 여러 인스턴스로 이루어짐. 이 인스턴스에 Docker container가 분산 실행. Serverless로 할 경우에는 인스턴스도 필요가 없습니다.
- ECS Server
- ECS Task
- ECS Server에 실제로 실행되는 docker container들을 Task 라고 합니다.
- 로드밸런서와, 모니터링, Auto Scaling 등의 요소도 있음. ECS를 이용하면 이런 요소들까지 자동으로 관리

Task definition
- ECS의 최소 실행단위는 “Task”
- “Service”는 Task가 두 개 이상 모인 것
- Task는 docker 애플리케이션
- 어느 포트에서 몇 개의 도커 컨테이너를 어떤 이미지로 실행할지 애플리케이션 실행 정보가 필요
- 이 정보를 저장하고 있는것이 Task definition
Amazon ECR(Elastic Container Registry)
📌
Amazon ECR은 AWS에서 제공하는 완전 관리형 docker image 저장소 입니다.
Amazon의 ECS, EKS, Elastic Beanstalk 등 여러 서비스와 통합될 수 있습니다.
배포하기 위해서는 일단 이미지를 ECR에 등록을 해야 합니다.
Amazon ECS(Elastic Container Service)
📌 Amazon ECS (Elastic Container Service)는 **Amazon Web Services (AWS)에서 제공하는 완전 관리형 컨테이너 오케스트레이션 서비스**입니다. 이는 **Docker 컨테이너를 쉽게 실행, 정지, 관리할 수 있게 도와줍니다**. ECS는 다음과 같은 주요 기능과 이점을 제공합니다:
배포하기 위해서는 일단 이미지를 ECR에 등록을 해야 합니다.