안녕하세요! 피피아노입니다 🎵
이번 포스팅에서는 제가 취업 준비를 하면서 많은 회사들에서 언급하는 CI/CD에 대해서 중요성을 느껴서 한번 정리를 해보려고 합니다.
그럼 바로 시작하겠습니다.
서론
요즘 세상은 빠르게 진화하고 변화하고 있는데 이러한 시대에서 어떻게 하면 시장과 고객의 요구사항에 맞게 빠르게 반영해서 제품을 출시, 업데이트할 것인가는 기업들의 큰 과제가 되었습니다. 바로 이러한 것을 위해서 많은 기업들이 CI/CD를 개발 프로세스로 사용하고 있습니다.
CI/CD란?
CI/CD란 간단하게 말해서 애플리케이션 개발 단계부터 배포 단계까지 이 과정들을 자동화를 통해서 조금 더 효율적이고 빠르게 사용자에게 비번하게 배포할 수 있도록 하는 것을 말합니다.
여기에서 CI는 Continuous Integration 즉, 지속적인 통합의 약자이고요.
CD는 Continuous Delivery 즉, 지속적인 제공의 약자입니다. Delivery 대신에 Deployment(배포)로 사용하는 경우도 있습니다.
CI(Continuous Integraion)
먼저 Continuous Integraion 즉, CI 과정에 대해서 자세히 알아보자면
개발자들이 버그 수정이나 새로 만드는 기능들이 메인 Repository에 주기적으로 빌드 되고 테스트 되고 Merge(통합)되는 것을 말합니다.
CI 부분에서 중요한 포인트 중 하나는 코드 변경사항을 주기적으로 빈번하게 Merge해야 한다는 점입니다. 그 이유는 동일한 소스 파일 위에서 여러 개발자가 서로 코드를 변경하다가 시간이 지난 뒤에 나중에 머지를 하려고 하면 변경된 부분들이 너무 많아지기 때문에 어디서부터 어떻게 통합해서 적용해야 할 지 막막하거나 그 과정에서 오히려 코드 개발 과정보다 시간을 더 쓰게 되는 경우들이 있습니다.
그리고 중요한 포인트는 주기적으로 Merge된 이 코드들이 자동으로 Build가 되고 성공적으로 Build가 되는지 확인이 되어야 하고, 새로 추가된 코드들이 기존 시스템에 오류를 초래하지는 않았는지 자동으로 Test도 되어야 합니다.
만약 이 과정들에서 문제가 없다면 통과가 되지만 문제가 발생하게 된다면 문제를 일으킨 개발자에게 자동으로 알려준다고 합니다.
CI 원칙 적용의 장점
- Merge 충돌 가능성 낮아짐 -> 개발 생산성 향상된다.
- 코드들이 자동으로 Build되고 Test되기 때문에 문제점을 빠르게 발견할 수 있다.
- 빠른 문제점 발견 덕분에 버그 수정이 용이하다.
- 코드의 퀄리티가 향상된다.
CD(Continuous Delivery or Continuous Deployment
자 이번엔 Continuous Delivery 또는 Continuous Deployment라고 불리는 CD 과정에 대해서 알아보겠습니다.
CD과정은 CI과정에서 Build되고 Test된 것을 Release할 준비를 하게 됩니다. 이 과정에서 Release할 기능들이 문제가 없는지 개발자나 검증팀이 검증을 한 다음에 최종적으로 사용자에게 배포를 하게 됩니다. 이러한 과정을 자동화 하는 것이 CD 과정입니다.
물론 회사마다, 팀마다 CD하는 스타일은 조금씩 다르다고 합니다!
CI/CD 파이프라인
CI/CD를 위한 Tool
- Jenkins
- Buildkite
- GitHub Actions
- GitLab CI/CD
- Bitbucket Pipelines
- Circleci
- TeamCity
- Bamboo
'IT 지식' 카테고리의 다른 글
[CS지식] 동기와 비동기 방식 완벽 이해하기 (7) | 2024.03.06 |
---|