본문 바로가기
7.유용한팁/>> IT용어

CI/CD

by 블록메타 2022. 12. 10.

요즘같이 빠르게 진화하고 변화하는 시대에 어떻게 하면 시장과 고객의 요구에 빠르게 반응해서 제품을 출시, 업데이트 할 것인가가 큰 과제예요. 바로 이것을 위해서 세계적으로 많은 기업들이 CI/CD를 개발 프로세스로 사용하고 있어요 

 

대부분의 회사에서 CI/CD 환경에서 일하고 있기 때문에 개발자이거나 소프트웨어 제품에 관련된 일을 하신다면 CI/CD가 정확하게 뭔지 알아두시면 정말 좋겠죠? 

 

CI/CD란 어플리케이션 개발 단계부터 배포 때까지 이 모든 단계들을 자동화를 통해서 조금 더 효율적이고 빠르게 사용자에게 빈번이 배포할 수 있도록 만드는 것을 말해요. 이 방법은 1991년 Grady Booch 처음으로 사용되어 지다가 나중에는 extreme programming 방법론에서 채택되어졌는데요 Grady는 객체지향 프로그램밍에 관련된 아주 유명한 저자에요.  

 

CI(Continuous Integration) 지속적인 통합의 약자구요, 버구수정이나 새로운 기능들이 메인 Repository에 주기적으로 빌드되고 테스트가 되어서 머지되는것을 말해요. 

 

CI는 2가지를 포인터를 잡고 생각하시면 좋은데요

 

1. 코드 변경사항을 주기적으로 빈번하게 머지해야 한다. 

동일한 소스코드에서 두명의 개발자가 서로 다른 코드를 작성하고 있다가 오랜기간 서로 변경을 하다가 머지를 하게 되면 머지시에 고생을 할 수 있습니다. 이렇게 되면 새로운 개발을 작업하는 것보다 머지 충돌을 해결하는것이 시간이 더 걸린수 있습니다.  그래서 버그를 수정하거나 새로운 기능을 개발할 때는 기능을 작은 단위로 나누어서 메인 Repository에 반영하고 통합 해 나가는 것이 중요합니다. 

 

2. 통합을 위한 단계(빌드,테스트,머지)의 자동화

주기적으로 Merge된 변경사항이 자동으로 Build가 되어서 성공적으로 되는지 확인이 되어야 되구요. 그리고 새로 추가된 변경사항 뿐만 아니라 기존 시스템에 다른 버그를 초래하지는 않았는지 자동으로 테스트까지 되어야 합니다.  보통 개발팀에서 이렇게 셋업을 많이 하는데요 메인 레파지토리가 있고 하루에도 몇번씩 주기적으로 코드에 변경사항을 메인 레파지토리에 머지를 합니다. 물론 그전에 코드 리뷰를 통해서 코드가 적절한지 확인을 받아야겠죠. 이렇게 머지가 되었으면 자동으로 팀에서 CI 스크립트를 통해서 추가된 코드와 함께 이 리파지토리가 빌드가 되고 팀에서 작성한 유니테스트,인티그레이션테스트 여러가지 테스트들도 스크립트를 통해서 실행이 되어요. 빌드도 잘되고 테스트도 잘되어서 초록색 사인이 나오면 마사히 통과가 되어서 나중에 배포할 때 반영이 될 수 있구요. 새로 추가된 곳에서 문제가 있어서 빌드가 실패하거나 빌드는 성공했는데 테스트에서 실패한다면 레드사인이 뜨면서 개발자에게 자동으로 알려줍니다.

 

CI 장점
> 개발 생산성 향상 

> 문제점을 빠르게 발견 

> 버그 수정 용이 

> 코드의 퀄리티 향상 

 

이런한 장점으로 조금 더 안정성 있는 제품을 만들어 갈 수 있습니다. 

 

CD(Continuous Delivery) 지속적인 제공의 약자입니다.  혹은 Continuous Deployment 지속적인 배포로 사용하는 경우도 있어요.

 

CI에서 자동으로 빌드되고 테스트가 되었다면 이제  배포단계에서 릴리즈할 준비 과정을 거치구요, 이제 릴리즈 준비가 완료되면 개발자가 검증을 한 다음에  배포를 진행합니다. 이렇게 수동적인 개발자의 개입이 들어가면 수동적인 Continuous Delivery라고 합니다. 또는 릴리즈가 준비가 되자마자 자동으로 사용자에게 배포할 수 있도록 만들수도 있는데요 이렇게 모든 과정을 자동해 해놓는 것을 Continuous Deployment라고 합니다.  이 수동개입, 자동 2가지는 회사마다 회사 특성에 맞는 적용 방식을 취하고 있습니다. 

 

이렇게 CI/CD를 알아 보았는데요.  CI와 CD는 완벽히 분리 되어 있는게 아니라 CI와 CD를 거쳐서 배포를 하기 때문에 CI/CD 묶어서 부르고 있습니다. 

 

 

CI/CD Tool

> Jenkins

> Buildkite

> GitHub Actions

> GitLab CI/CD

> Bitbucket Pipelines

> circleci 

 

 

Reference

https://www.youtube.com/watch?v=0Emq5FypiMM

'7.유용한팁 > >> IT용어' 카테고리의 다른 글

검색엔진 최적화 SEO  (0) 2022.12.19
Docker 한방에 정리  (0) 2022.12.19
데브옵스.. 그거 어떻게 하는 건데..☆  (0) 2022.12.19

댓글