본문 바로가기
Coding/Etc

CI/CD

by Gofo 2023. 3. 30.

CI/CD

배경

기존에 비해 프로젝트/코드의 규모가 매우 커졌고, 형상관리나 배포 등을 수동으로 하기 어려워졌다.

때문에 개발자가 직접 코드를 통합하고 관리하는 것보다는 자동화시키는 것이 필요해졌다.

 

CI/CD

CI/CD = Continuou Integration (지속적인 통합) + Continuous Delivery/Deployment (지속적인 배포)

 

CI/CD는 앱 개발을 자동화해서

더 짧은 주기로 고객에게 서비스를 제공하는 방법이다.

 

한번에 모든 기능을 테스트하는 것이 아니라,

분할하여 테스트를 진행함으로써 이를 도모한다.

 

출처 : https://www.synopsys.com/glossary/what-is-cicd.html

 

장점

더 작은 단위로 더 자주 빌드~배포하기 때문에 아래와 같은 이점을 얻을 수 있다.

  • 빌드 타임 ↓
  • 품질 ↑, 고객 만족도 ↑
  • 실패율 ↓
  • 개발자 생산성 ↑ : 빌드/배포에 드는 시간을 줄임으로써 가능

 

주요 특징

  • 빌드/테스트/배포의 과정을 분리한다.
    • 적절한 public cloud를 사용함으로써 비용이나 자원을 줄일 수 있다.
    • IaC(Infra as Code)를 이용할 수 있다.
      • 인프라에 대한 형상관리가 가능하다.
      • 코드이기 때문에 재사용이 가능하고 인프라 변경에 유연하다.
  • Webhook을 이용하면 자동 빌드할 수 있고, 빠른 피드백이 가능하다.
  • 빌드 실패/오류 발생 시 자동 롤백이 가능하다.
  • 테스트 자동화
    • 가장 오래 걸리는 단계이며, 배포 속도를 좌우한다.
    • 단위 테스트, E2E 테스트, API테스트 등을 수행할 수 있다.

 

다양한 도구들

MSA, 컨테이너, 클라우드 등의 기술과 연계하여

배포 사이의 공백 시간을 줄이거나 지속적인 서비스를 제공할 수 있다.

 

요즘은 아래와 같이 다양한 도구들과 결합하여

각 파트를 자동화하고 모니터링 하고 있다.

출처 : https://engineering.linecorp.com/ko/blog/build-a-continuous-cicd-environment-based-on-data/

 

DevOps & Agile

"빠르게 실패하고 수정하여 빠르게 이상향으로 가자"는 문화에 비롯된 개념들로,

Agile은 개발에 초점을 둔 방식이자 문화이고,

DevOps는 개발 뿐 아니라 지원, 관리 등까지 포괄하는 방식이자 문화이다.

 

이러한 문화로 인해 CI/CD의 중요성이 더 커지고 있다.

개발~배포의 빈도수가 잦아지며 매번 사람이 빌드하고 배포하기 힘들어졌기 때문이다.

 

 

주요 특징 : CALMS

  • Culture
    • Do not fail < Fail early
    • 실패하기 보다는 빠르게 실패하고 수정하여 빠르게 이상향으로 가는 것을 원한다.
    • 오류를 빠르게 발견한다면 이후 과정에서 발생할 비용(돈, 인력, 시간 등)을 줄일 수 있다.
  • Automation : 최대한 자동화하여 규모가 크더라도 빠르게 작업할 수 있다.
  • Lean : 작은 배치 사이즈, 작은 단위 개발을 통해 빌드~배포를 빠르게 할 수 있다.
  • Measurement : 모니터링
  • Share
    • 원활한 의사소통의 문화를 지향한다.
    • functional 조직 < 서비스 중심의 셀 조직

 


참고

 

CI/CD(CI CD, 지속적 통합/지속적 배포): 개념, 툴, 구축, 차이

CI/CD는 애플리케이션의 통합 및 테스트 단계부터 제공 및 배포까지 애플리케이션 라이프사이클 전체에서 지속적인 자동화와 지속적인 모니터링을 제공하는 것을 뜻합니다.

www.redhat.com

 

데이터 기반으로 지속적인 CI/CD 개선 환경 만들기

들어가며  지난 1993년에 개봉했던 사랑의 블랙홀이라는 영화를 기억하시나요? 남자 주인공이 2월 2일 성촉절(Groundhog Day, 미국에서 마멋이 겨울잠에서 깨어난다고 여기는 날) 하루를 끊임없이

engineering.linecorp.com

 

애자일과 DevOps 비교

다양한 유형의 DevOps 방법론과 방법론 간의 유사점과 차이점, 그리고 프로젝트 적용 방법에 대해 알아보세요.

unity.com

 

댓글