IT 용어

[IT 용어 5.] CI/CD란?

Somaz 2024. 11. 25. 10:59
728x90
반응형

Overview

CI (Continuous Integration, 지속적 통합) / CD (Continuous Deployment, 지속적 배포) 에 대해서 알아본다.

 

출처 : https://www.mabl.com/blog/what-is-cicd

 


 

CI/CD란?

 

CI (Continuous Integration, 지속적 통합)

지속적 통합은 개발자들이 작업한 코드를 주기적으로 공유 레포지토리에 합치는 것을 말한다. 이 과정은 자동화된 빌드와 테스트를 포함하여, 코드 변경 사항이 문제를 일으키지 않는지 확인한다. 지속적 통합의 주요 목적은 소프트웨어 개발 과정에서 발생할 수 있는 오류를 조기에 발견하고 해결하는 것이다.

 

CD (Continuous Deployment, 지속적 배포)

지속적 배포는 개발된 소프트웨어를 고객이 사용할 수 있는 환경까지 자동으로 배포하는 것을 말한다. 이는 지속적 통합 과정을 거친 후, 추가적인 수동 과정 없이 고객에게 소프트웨어를 제공하는 것을 포함한다. 지속적 배포를 통해 소프트웨어의 새로운 버전을 빠르게 고객에게 전달할 수 있다.

 

 

CI/CD의 장점

  • 효율성 증대: 자동화된 프로세스를 통해 개발 및 배포 과정의 속도가 빨라지고, 오류 발생 가능성이 줄어든다.
  • 품질 향상: 지속적인 테스트와 통합을 통해 소프트웨어의 품질이 개선된다.
  • 고객 만족도 향상: 빠른 배포를 통해 사용자의 피드백을 신속하게 반영하고, 소프트웨어의 개선 사항을 빠르게 제공할 수 있다.

 

 

CI/CD 도구

CI/CD 파이프라인을 구축하고 관리하는 데 사용할 수 있는 여러 도구가 있다. 가장 인기 있는 도구 중 일부는 다음과 같다.

  • Jenkins: 다양한 CI/CD 시나리오를 지원하는 오픈 소스 자동화 서버이다. Jenkins는 방대한 플러그인 생태계로 매우 맞춤화할 수 있다.
  • Travis CI: GitHub 프로젝트를 위한 지속적 통합 서비스이다. GitHub 저장소와의 통합이 용이하고 사용이 간편하다는 장점이 있다.
  • GitLab CI/CD: 소스 코드 관리와 CI/CD를 하나의 플랫폼으로 통합한 솔루션을 제공한다. 강력한 파이프라인 구성을 제공한다.
  • CircleCI: 빠른 빌드와 배포를 지원하는 클라우드 기반 CI/CD 서비스이다. GitHub과 Bitbucket과의 우수한 통합 기능을 제공한다.
  • GitHub Actions: GitHub 저장소 내에서 워크플로우 자동화를 가능하게 한다. GitHub Actions는 CI/CD에서 이슈 분류까지 모든 소프트웨어 워크플로우를 자동화하는 것을 쉽게 만들어 준다.
  • ArgoCD: Kubernetes를 위한 선언적 GitOps 지속적 배포 도구이다. ArgoCD를 사용하면 소스 코드 저장소를 진리의 근원으로 사용하여 Kubernetes 리소스를 유지 관리하고 관리할 수 있다.
  • Bamboo: 자동화된 빌드, 테스트, 릴리즈를 하나의 워크플로우로 결합하는 지속적 통합 및 배포 도구이다. 다른 Atlassian 제품들과 잘 통합된다.
  • TeamCity: JetBrains에서 제공하는 빌드 관리 및 지속적 통합 서버이다. 다양한 프로그래밍 언어와 기술을 지원하며 포괄적인 기능 세트를 가지고 있다.

 

 

CI/CD의 주요 구성 요소

  • 소스 제어 관리(SCM)
    • 코드 버전 및 변경 사항을 관리하는 GitHub, GitLab 또는 Bitbucket과 같은 도구이다.

 

  • 자동화된 빌드 시스템
    • Jenkins, GitHub Actions, CircleCI, TravisCI, GitLab CI/CD 또는 Azure DevOps와 같은 도구는 빌드 프로세스를 자동화한다.

 

  • 테스트 자동화
    • 단위 테스트: 개별 구성 요소를 확인한다.
    • 통합 테스트: 다양한 모듈이 어떻게 상호 작용하는지 확인한다.
    • 엔드 투 엔드(E2E) 테스트: 사용자 흐름과 상호 작용을 시뮬레이션한다.
    • 도구: Selenium, JUnit, TestNG, Postman(API용)

 

  • 배포 자동화
    • Kubernetes, Docker, Terraform 또는 AWS CodeDeploy와 같은 도구는 스테이징 또는 프로덕션 환경에 대한 자동화된 배포를 관리한다.

 

  • 모니터링 및 피드백
    • Prometheus, Grafana, Datadog 또는 New Relic과 같은 도구는 시스템 상태, 애플리케이션 성능 및 오류를 모니터한다.

 

 

CI/CD의 중요 개념

 

Pipeline

  • A series of automated steps (build, test, deploy) that code goes through from commit to deployment.

 

Stages

  • Distinct phases in a pipeline (e.g., build, test, deploy).

 

Artifacts

  • Build outputs like compiled binaries, Docker images, or static files.

 

Infrastructure as Code (IaC)

  • Define infrastructure (servers, databases) using code (e.g., Terraform, CloudFormation) to standardize and automate deployments.

 

Blue-Green Deployments

  • A deployment strategy that keeps two environments (blue and green). One serves live traffic while the other is updated.

 

Canary Releases

  • Gradual rollouts of new features to a subset of users to monitor performance before full deployment.

 

Rollback

  • Reverting to a previous version in case of failures or issues in production.

 

Secrets Management

  • Safely handling sensitive information (e.g., API keys, passwords) using tools like HashiCorp Vault or AWS Secrets Manager.

 

 

 


Reference

https://www.mabl.com/blog/what-is-cicd

https://github.com/somaz94/DevOps-Engineer/wiki/KR_IT%EC%9A%A9%EC%96%B4

728x90
반응형