CI/CD

남예준·2025년 11월 10일

CI (Continuous Integration)

  • CI는 개발자가 변경한 코드를 자주 통합하고, 이 코드가 전체 시스템과 잘 어우러지는지 자동으로 테스트하는 프로세스
  • 코드 변경이 발생할 때마다 빌드 및 테스트를 수행하여 코드 품질을 유지하고 문제를 조기에 발견

CD (Continuous Delivery)

  • CD는 CI의 결과물을 사용자에게 자동으로 배포하는 프로세스를 포함합니다. 코드 변경이 통합되고 테스트를 통과하면, 이를 자동으로 스테이징 환경 또는 프로덕션 환경에 배포
  • 지속적인 배포(Continuous Deployment)는 CI/CD의 확장 개념으로, 승인 절차 없이 자동으로 프로덕션 환경에 배포하는 것을 의미

장점

빠른 피드백

  • 코드 변경 후 즉각적인 빌드 및 테스트 결과를 확인할 수 있어, 개발자가 문제를 빠르게 인지하고 수정

자동화된 프로세스

  • 빌드, 테스트, 배포 과정이 자동화되어 수동 작업을 줄이고, 인적 오류를 방지

일관된 배포

  • 동일한 배포 프로세스를 통해 모든 환경(개발, 테스트, 스테이징, 프로덕션)에서 일관된 결과를 보장

높은 품질 유지

  • 코드 품질을 지속적으로 검증하고, 잠재적인 문제를 조기에 발견하여 품질을 유지

개발 속도 향상

  • 자동화된 파이프라인을 통해 개발 주기를 단축하고, 새로운 기능을 빠르게 사용자에게 제공

CI/CD 도구

Action하고 Jenkins는 써 봄.

GitHub Actions

  • GitHub ActionsGitHub 저장소에 직접 통합되어 있는 CI/CD 도구로, YAML 파일을 사용하여 워크플로우를 정의

특징

  • GitHub 저장소와의 강력한 통합
  • 다양한 이벤트 기반 트리거
  • 풍부한 커뮤니티 및 Marketplace 지원
  • 무료 사용 가능 (제한된 런타임 제공)

Jenkins

  • Jenkins오픈 소스 CI/CD 도구로, 플러그인을 통해 다양한 기능을 확장할 수 있습니다.

특징

  • 높은 커스터마이징 가능
  • 다양한 플러그인 지원
  • 분산 빌드 및 다중 플랫폼 지원
  • 대규모 프로젝트에 적합

GitLab CI

  • GitLab CIGitLab과 통합된 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
    • Docker image 저장소
  • ECS Cluster
    • 컨테이너를 실행하기 위한 Cluster로 여러 인스턴스로 이루어짐. 이 인스턴스에 Docker container가 분산 실행. Serverless로 할 경우에는 인스턴스도 필요가 없습니다.
  • ECS Server
    • Docker 애플리케이션의 실행 그룹입니다.
  • 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에 등록을 해야 합니다.

0개의 댓글