본문 바로가기
프로젝트/Careers

CI/CD 왜 필요한가?

by 에어컨조아 2021. 8. 5.

진행하고 있는 프로젝트에 여러 기능들이 들어감에 따라 실제 서버에 배포하여 성능 테스트 및 개발을 동시에 진행해야 될 상황이 되었습니다.

그래서 지금까지는 Local 환경에서 테스트하고 개발하였지만, 이제는 실제 서버 환경에 배포도 하고 개발한 내용을 지속적으로 반영하는 등 CI/CD 작업이 필요해 보였습니다.

CI..? CD..?🤔

우선 처음 CI, CD를 처음 사용해보는 것 이어서 개념을 정리하려고 합니다.

CI (Continuous Integration)

지속적인 통합.. 왜 해야 할까요??

많은 개발자들이 개발을 할 때 이젠 필수적으로 사용하는 것이 있습니다. 바로 버전 관리 툴(Git, SVN)입니다. 개발자들은 버전 관리 툴을 이용하여 기능별 feature를 만들고 개발하고 머지를 반복합니다.

그런데 말입니다. 이러한 과정 속에서 자칫 잘못하면 버그 폭탄이 발생하게 됩니다.

개발을 하고 머지를 할 때에는 몰랐지만 여러 개발자들이 개발한 소스 코드들을 나중에 한 번에 모아서 테스트를 진행하게 되면 머지 된 양에 비례하여 테스트 코드의 실패 케이스들이 발생하게 됩니다. 이를 해결하기 위해 개발자들이 모여서 해결하고 많은 시간을 소모하게 됩니다.

개발이 아닌 이런 부가적인 문제로 인해 많은 개발자들이 통합할 때마다 이러한 문제점을 겪게 된다면 기업 입장에서는 엄청난 손실이 아닐 수 없습니다. 왜냐하면 그 시간 동안 개발자들이 본인 일들을 처리하지 못하기 때문입니다.

그래서 이런 불상사를 사전에 방지하고자 우리는 CIDevelop Rule을 만들어야 합니다.

  1. CI를 반영하여 소스 코드를 커밋 할 때마다 단위 테스트, 빌드 테스트, 통합 브렌치 머지 등을 자동으로 수행하도록 하여, 신뢰할 수 있는 코드만 반영될 수 있도록 합니다. 이로 인해 SW의 품질이 향상됩니다.
  2. 소스코드 통합의 주기를 짧게 합니다. 주기가 짧아지게 되면 그만큼 통합되는 코드의 양도 줄어들어 이슈가 발행하여도 빠른 처리가 가능해질 것입니다. 또한 CI를 통해 수시로 통합 브렌치에서 pull을 받아 품질관리를 하기 때문에 이슈 발생 시 빠르게 파악할 수 있습니다.

즉 CI를 도입함으로써 개발자는 조금 더 코드에 집중할 수 있고, 기업 입장에서는 엄청난 리소스가 절감 및 생상성 향상 효과를 가져옵니다. SW적으로는 코드 품질이 향상됩니다.

CD (Continuous Deploy)

지속적인 배포는 그럼 왜 해야할까요?

CD를 사용해야 하는 이유는 크게 두 가지가 있습니다.

  1. 신뢰할 수 있는 SW들을 지속적으로 제공할 수 있도록 배포할 수 있습니다. 서비스 회사에서 경쟁력이란 여러 가지가 있을 수 있습니다. 그중에서 하나를 뽑아보자면 '사용자의 불만에 대한 신속한 대응'입니다.
    즉 CI를 통해 신속하고 품질관리된 제품을 만들었다면, CD를 통해 사용자에게 신뢰할 수 있는 버전을 지속적으로 제공할 수 있습니다.
  2. 배포할 서버 수가 많아지거나 배포 단계가 복잡할 경우 자동화된 배포 방법을 통해서 손쉽게 배포할 수 있습니다. 프로덕션(Production)환경에 배포를 하기 위해서는 사전에 많은 테스트를 거쳐야 합니다.
    즉 프로덕션 환경, 테스트 환경에 배포해야 할 서버 수는 서비스의 크기에 따라 비례할 것입니다. 배포해야 될 서버의 개수가 많아질수록 이를 사람이 하게 된다면 사소한 실수들이 발생할 수 있습니다. 또한 사람이 직접 해야 하는 업무 효율이 떨어지게 됩니다.

Reference

https://www.javatpoint.com/svn-vs-git
https://www.redhat.com/ko/topics/devops/what-is-ci-cd
https://itholic.github.io/qa-cicd/

댓글