본문 바로가기
IT 기본지식

CI/CD 에 대한 간단 정리

by 내기록 2022. 2. 14.
반응형
CI/CD : 지속적인 통합과 배포를 통해 애플리케이션 개발 단계를 자동화하여 고객에게 보다 짧은 주기로 서비스를 제공하고 개선하는 방법

 

CI(Continuous Integration)

https://artist-developer.tistory.com/24

지속적인 통합(Continous Intergration)은 개발자가 작업한 코드를 자동으로 테스트하고 테스트에 통과하면 코드를 통합하여 저장

지속적인 통합이라는 뜻으로 어플리케이션의 새로운 코드 변경사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합되는 것을 의미한다.

 

이런 경우 CI를 적용하면 좋아요

- 다수의 개발자가 형상관리 툴을 공유하며 사용하는 환경
: 여러 개발자가 한 팀으로 작업하면 공유 레포지토리에 수많은 commit들이 쌓이게 되는데,

그때마다 기능별로 빌드/테스트/병합을 하기엔 번거로우니 자동화된 빌드&테스트로 원천 소스코드의 충돌을 방어 할 수 있다.

 

-MSA(Micro Service Architecture) 환경

: 작은 기능별로 서비스를 잘게 쪼개어 개발하는 형태를 의미하는데 MSA 환경에서는 대부분 Agile(소규모 기능 단위로 빠르게 개발 & 적용을 반복하는 개발방법론) 이 적용되기 때문에 기능 추가가 빈번하다. 이때 CI는 기능 충돌 방지와 같은 이점이 있다.

 

정리하자면

버그를 신속하게 찾아 해결하고, 소프트웨어의 품질을 개선하고, 새로운 업데이트의 검증 및 릴리즈 시간을 단축할 수 있다.

 

 

CD(Continuous Delivery & Continuous Deployment)

 

gocd.org

지속적인 배포(Continous Deployment)는 작업한 코드 및 변경사항들을 테스트를 거쳐 리포지토리로 업그레이드되고 실 서비스 배포로 릴리즈까지 자동화 하는 것

Continuous Delivery : 지속적인 서비스 제공
개발자들이 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 레포지토리(ex. Git)에 자동으로 업로드되는 것을 뜻한다.

Continuous Deployment : 지속적인 배포(Production 레벨까지 자동으로 deploy)
개발자의 변경 사항을 레포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리즈하는 것을 의미한다.

즉, CI가 새로운 소스코드의 빌드/테스트/병합이라면 CD는 고객의 프로덕션 환경까지 릴리즈 되는 것을 의미한다.

 

이런 경우 CD를 적용하면 좋아요

-MSA(Micro Service Architecture) 환경

: MSA 환경에서는 대부분 Agile(소규모 기능 단위로 빠르게 개발 & 적용을 반복하는 개발방법론) 이 적용되기 때문에 기능 추가가 빈번하고 서비스 사용자는 최대한 빠른 시간 내에 최신 버전의 프로덕션을 제공받을 필요가 있다.

이때, 소프트웨어가 항상 신뢰 가능한 수준의 버전을 유지 할 수 있도록 서포트해준다.

 

 

 

 

https://www.redhat.com/ko/topics/devops/what-is-ci-cd

 

대표적인 CI/CD 툴

Jenkins, Travis CI, Bamboo 등

 

 

References

https://artist-developer.tistory.com/24

https://www.redhat.com/ko/topics/devops/what-is-ci-cd

 

위 블로그에서 추천한 링크인데 시각화를 통해 CI/CD를 효과적으로 관리하는 내용이다. 

 

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

저는 올해 6월에 LINE에 입사해 LINE 메신저 클라이언트와 관련된 CI(Continuous Integration)/CD(Continuous Delivery) 업무를 지속적으로 개선하고 자동화하는 DevOps 역할을 수행하고 있습니다. 이번 글에서는

engineering.linecorp.com

 

반응형

댓글