728x90

CI/CD는 어플리케이션 개발 단계를 자동화하여 보다 짧은 주기로 고객에게 제공하는 방법이라고 한다.

기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포이다.

새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제(인테그레이션 헬[Intergration hell] 이라고 함)를 해결하기 위한 솔루션이다.

 

CI란 ?

CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Intergration)을 의미한다.

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

 

CD란?

CD는 두 가지 뜻이 있다. 하나는 지속적인 서비스 제공(Continuos Delivery)가 있고 지속적인 배포(Continuos Deployment)가 있다.

두 가지 의미 모두파이프라인의 추가 단계에 대한 자동화를 뜻하지만 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 한다.

  • Continuos Delivery(지속적인 서비스 제공)

개발자들이 어플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리에 자동으로 업로드 되는 것을 뜻한다.

이것은 개발팀과 비지니스팀 간의 가시성과 커뮤니케이션 부족 문제를 해결해 준다.

지속적인 제공은 최소한의 노력으로 새로운 코드를 배포하는 것을 목표로 한다.

  • Continous Deployment(지속적인 배포)

개발자의 변경사항을 리포지토리에서 고객이 사용 가능한 프로덕션 환경까지 자동으로 릴리즈 하는 것을 의미한다.

이것은 어플리케이션 제공 속도를 저해하는 수동 프로세스로 인한 운영팀의 프로세스 과부하 문제를 해결해 준다.

지속적인 배포는 파이프라인 단계를 자동화 함으로써 지속적인 제공이 가진 장점을 활용한다.

 

출처(https://www.redhat.com/ko/topics/devops/what-is-ci-cd)


정보처리기사 공부를 할 당시에 보았던 개념들이 CI/CD를 조금이나마 이해하는데 도움이 된것 같다.

최근 시작한 스프링부트 공부 서적을 보다 잘 알지 못하는 단어가 보여 검색해보았다.

아직 실무 경험이 없기에 배포까지의 과정을 경험해보지 못한 터라 좀 더 명확하게 머릿속에 그려지진 않지만

핵심은 자동화를 통한 생산성 향상이라고 생각이 든다.

 

언젠간 이러한 용어들을 지겨워하고 밥먹듯이 뱉는 그런 개발자가 되는날까지.. JONNA GOAHEAD 하자 !

728x90

+ Recent posts