개요얼마 전, SNS를 보다가 재미있는 글을 읽은 적이 있습니다. 이 글은 이상적인 프로그래머의 삶이 어떤 것인지를 그린듯한 글이었습니다. 출근과 퇴근이 자유롭고 소스코드 관리가 잘 되어있어서 버그는 간단하게 3줄 정도를 고치면 된다는 등 꽤나 흥미로운 내용이니 궁금하신 분은 여기서 읽어보시길 바랍니다. 캡처본이 여기저기 돌아다니니 한 번쯤 읽어 보신 분들도 꽤 많을 거 같네요. CI/CD는 위에 있는 글에서 한마디로 정의하고 있습니다. 개발 - 빌드 - 테스트 - 배포까지의 전 과정을 자동화하는 것이 바로 CI/CD의 핵심 개념입니다. CI, CD의 개념짧게 개념잡기CI (Continuous Integration)란 여러 개발자가 작성하거나 수정한 소스를 지속적으로 통합하고 테스트하는 것을 뜻합니다 CD (Continuous Delivery/Deployment)란 개발, 통합, 배포, 릴리즈, 테스트를 자동화하여 지속적으로 배포하는 것을 뜻합니다. CI를 적용할 때의 흐름
CI 툴Jenkins를 가장 많이 사용하는 것 같습니다. CI와 CD를 모두 구현할 수 있으며 사용할 수 있는 여러 플러그인들이 있어서 CI/CD를 구현하는 것을 편리하게 할 수 있습니다. 단지 CI 전용 서버를 따로 구축해야 한다는 부담은 있습니다. 최근에 나온 Github Action에서는 따로 CI서버를 구축할 필요 없이 CI를 구현하게 해주고 있습니다. 아래 내용과 같은 파일을 만드는 것으로 CI 전략을 설정할 수 있습니다.
CI의 장점하나의 소프트웨어에 대해 수많은 개발자들이 동시에 개발을 진행하고 이 소스코드를 정기적으로 통합하는 회사라면 소스코드의 병합은 상당히 많은 공수를 요구하는 일이 될 것입니다. CI를 적용한다면 소스코드의 변동이 생길 때마다 지속적으로 개발자들의 코드를 병합하고 테스트를 진행합니다. 변경한 소스코드가 문제가 발생하지 않는지 테스트를 실행하고 일련의 과정 중 코드의 충돌, 테스트의 실패 등이 발생하면 즉각적으로 알림을 전송합니다. 이 과정을 통해 아래 장점을 얻을 수 있습니다.
CD를 적용했을 때의 흐름CI를 통해 검증된 소스코드를 지속적으로 배포해야 하기 때문에, CD를 구현하기 위해서는 CI가 우선적으로 진행되어야 합니다.
CD의 장점
실제 사용 사례제가 작성한 토이 프로젝트인 DelFood에서 CI/CD를 구현하였습니다. DelFood는 아래 사진과 같은 구조로 설계한 애플리케이션 서버입니다. 빌드 - 테스트 - 배포까지의 과정이 너무 귀찮아서 CI와 CD를 구현한 제 사례를 이야기해보고 싶습니다. DelFood의 CI/CD 전략
소스코드를 Github에 푸시하는 것 만으로 빌드, 테스트, 배포까지 모두 자동으로 진행되도록 설정해두었고 같이 협업하던 동료들의 소스코드가 병합될 때 오류가 발생하면 바로바로 알아챌 수 있어서 무척 편리했습니다. CI/CD를 구현하게 된 계기는 불편함 때문이었습니다. 직접 수작업으로 배포할 때는 애플리케이션을 Jar파일로 묶어준 후 FTP를 통해 운영 서버에 Jar파일을 옮겨 실행해야만 했습니다. 변경되기 전 버전의 Jar파일을 옮기는 실수를 하기도 했고, 옮긴 후 실행을 시키지 않아서 변경사항이 적용되지 않은 적도 많았습니다. 이 작업이 매우 귀찮은 작업이었기 때문에 소스코드를 변경하고 실 운영서버에 배포하는 작업을 잘 안 하게 되기도 했습니다. CI/CD의 존재를 알게 된 이후에는 소스코드를 커밋할 때마다 자동으로 모든 작업이 진행되니 더 이상 제가 손댈 일이 없어져서 참 좋았습니다. 조금 더 자세한 내용은 여기를 참고해주세요. [Delfood] CI/CD 서버 구축과 첫 배포 CI/CD의 필요성 프로젝트가 거의 완성이 되어가며 배포와 테스트 자동화의 필요성을 느꼈습니다. 이전에 했던 프로젝트는 직접 jar파일을 빌드한 후, FTP를 사용하여 서버에 올린 후 java -jar로 직접 deveric.tistory.com 마치며아직 CI/CD가 구축된 개발을 진행해보지 않았다면 꼭 자동화된 CI/CD를 구축해보시기를 강력하게 추천드립니다. CI/CD의 장점을 위에 여러 개 나열해보았지만 가장 큰 장점은 귀찮은 작업이 사라진다는 것입니다. 푸시 한 번으로 모든 작업이 완료되는 편리함은 개발자가 개발에만 집중할 수 있게 해 주고, 업무 능률의 증가로 이어집니다. CI/CD에 대한 소개는 여기에서 마치겠습니다. Referenceshttps://www.redhat.com/ko/topics/devops/what-is-ci-cd CI/CD(지속적 통합/지속적 제공): 개념, 방법, 장점, 구현 과정 CI/CD는 애플리케이션의 통합 및 테스트부터 제공 및 배포까지 전체 라이프사이클에서 지속적인 자동화와 모니터링을 제공합니다. 개념, 차이점, 학습방법(인강)을 보세요. www.redhat.com |