CI/CD 는 개발 단계부터 배포까지 자동화하하여 빠르게 변화하는 시장과 고객의 요구에 대응하기 위한 개발 프로세스이다. 서비스 규모가 커질수록 많은 개발자와 함께 협업하고, 각자 소스를 머지할 때 발생하는 충돌을 해결하고, 테스트까지 하다 보면 오랜 시간이 걸리게 때문에 대규모의 서비스를 빠르게 개발하고 배포하는 것은 생각보다 어려운 일이다. 이런 문제점을 해결하기 위해 많은 기업에서 CI/CD를 구축하고 있다.
1. CI(Continuos Integration)
CI는 지속적으로 통합한다는 의미로 개발자들이 개발한 내용을 주기적으로 Repository에 머지해서 코드를 통합한다는 뜻이다. 주기적으로 코드를 통합하지 않고 한 번에 통합하려고 한다면 머지 충돌이 많이 발생하기 때문에 이를 해결하는 데 더 큰 에너지를 사용해야 할 수도 있다. 때문에 의미 있는 작은 단위로 주기적으로 코드를 머지하는 것이 중요하다.
사실 CI를 사용하는 가장 큰 이유는 CI를 통해 자동 빌드, 테스트, 머지를 할 수 있기 때문이다. 서비스가 커질수록 빌드, 테스트를 하는데 많은 시간이 소요되는데 CI를 이용하면 이런 문제를 개선할 수 있다. CI가 빌드하고 테스트하면서 머지하기 때문에 내가 개발한 코드로 인해 빌드가 실패하지는 않는지, 잘 작동하던 기능에 대해 오류를 만들어내지는 않았는지 확인할 수 있기 때문에 안정적으로 서비스를 운영할 수 있다.
물론 CI의 자동화를 신뢰하기 위해서는 잘 작성된 단위 테스트가 있어야 하고 단위 테스트를 다양한 상황에 대해 만들어야 CI의 테스트 결과를 믿고 이후 단계를 진행할 수 있다.
2. CD(Continuos Delivery or Continuos Deployment)
CD는 지속적인 제공 또는 지속적인 개발이라는 뜻이다. CI 과정을 통해 빌드, 테스트, 머지까지 완료된 소스 코드를 실제 운영 환경으로 배포하기 위해 사용된다.
3. CI/CD를 위한 툴
- 젠킨스(Jenkins)
- 깃허브 액션
- 깃랩 CI/CD
'기타 > 기타' 카테고리의 다른 글
윈도우 환경에서 homebrew 설치하기 (0) | 2023.08.17 |
---|---|
Git 명령어 정리 (0) | 2023.05.09 |
[Web] 웹 서버, WAS, 서블릿에 대하여.. (0) | 2023.03.27 |
[Springboot]build.gradle 파헤쳐 보기 (0) | 2023.03.21 |