CI/CD

luneah·2022년 10월 13일
0

Developer

목록 보기
16/16
post-thumbnail

DevOps

DevOps는 신속한 고품질 서비스 제공을 통해 비즈니스 가치와 대응력을 향상시키기 위한 기업 문화, 자동화, 플랫폼 설계에 대한 접근 방식이다. 이러한 접근 방식은 빠르게 반복적으로 IT 서비스를 제공하는 역량이 있어야 가능하다. DevOps는 레거시 애플리케이션과 최신 클라우드 네이티브 애플리케이션 및 인프라를 연결하는 것을 의미한다.

CI/CD

CI/CD는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 보다 짧은 주기로 고객에게 제공하는 방법이다. CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포이다. 이는 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제 일명 인테그레이션 헬(integration hell)을 해결하기 위한 솔루션이다.

CI (Continuous Integration)

지속적인 통합이란 뜻으로 CI를 성공적으로 구현할 경우 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합되므로 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드 작업을 할 경우 서로 충돌할 수 있는 문제를 해결할 수 있다.

CD (Continuous Delivery / Continuous Deployment)

지속적인 제공이란 개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 레포지토리에 자동으로 업로드 되는 것을 뜻하며, 운영팀은 이 레포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포할 수 있다. 이는 개발팀과 비즈니스팀 간의 가시성과 커뮤니케이션 부족 문제를 해결해준다. 지속적인 제공은 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 한다.

지속적인 배포(또 다른 의미의 CD)란 개발자의 변경 사항을 레포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리즈하는 것을 의미한다. 이는 애플리케이션 제공 속도를 저해하는 수동 프로세스로 인한 운영팀의 프로세스 과부하 문제를 해결한다. 지속적인 배포는 파이프라인의 다음 단계를 자동화함으로써 지속적인 제공이 가진 장점을 활용한다.

다양한 CI/CD 도구들

  • Jenkins
  • GitLab
  • GitHub Action
  • Travis CI + AWS CodeDeploy
  • Circle CI
  • AWS CodePipeline
  • Bitrise
  • Codemagic
profile
하늘이의 개발 일기

0개의 댓글