[CI]지속적통합
지속적 통합이란?
- 자동화된 빌드 및 테스트가 수행된 후, 개발자가 코드 변경 사항을 중앙 리포지토리에 정기적으로 병합하는 데브옵스 소프트웨어 개발 방식이다.
- 이 과정에서 CI 도구를 통한 자동화 구성요소와 개발자들이 빈번하게 병합하도록 학습하는 것과 같은 문화적 구성요소 모두를 포함하는 개념이다.
지속적 통합 과정에서 반드시 자동화가 이뤄져야 하는 부분은?
Best Practices를 참고하여 어떤 부분에서 자동화를 하는지 알아보고, 반드시 필요한 부분을 생각해보자.
1. Test-Driven Development
- 실제 코드를 짜기 전에, 테스트 파일을 만드는 것에 집중하는 개발 방식을 말한다.
- 테스트 자동화를 수행하려면, 테스트 파일을 잘 작성하는 것이 중요하다. 테스트 파일은 코드가 원하는 기능을 할 수 있는지 판단할 수 있어야 한다.
- 같은 팀 내의 개발자와 Product Manager가 서비스의 요구사항에 더욱 명확히 고민할 수 있는 시간을 가질 수 있고, 개발자가 코드에 반영할 때 더욱 정확히 반영될 것이다.
2. Code Reviews and Pull Requests
- PR(Pull Requests)는 개발자의 코드가 중앙 데이터베이스의 코드와 병합할 준비가 되었다는 신호이다.
- Code Reviews는 PR에 대한 다른 개발자들의 평가로, 데이터베이스의 코드와 더욱더 잘 병합할 수 있도록 엔지니어 팀이 코드에 대해 토론하는 것이다.
- 대표적으로 GitHub이 있다.
3. Optimized Pipeline Speed
- CI Pipeline을 최적화하고 자동화를 통해 속도를 올려, 프로젝트에 대한 피드백을 더 빨리 받을 수 있도록 하는 것이다.
- 개발자는 새로운 기능을 추가하거나 버그를 수정하기 쉽고, 더 나아가 고객의 니즈에 맞게 잦은 업데이트를 함으로써 고객 경험을 향상할 수 있다.
결국, 반드시 자동화가 이루어져야 하는 부분은 Build, Test 과정이라 생각한다. 앞서 보았듯, Build, Test를 자동화하면 TDD(Test-Driven Development)로 개발이 진행되어 다른 팀과 토론을 통해 서비스의 목적성을 명확하게 하여 개발자는 오로지 개발에만 집중할 수 있는 환경이 만들어지기 때문이라 생각한다.
지속적 통합이 있기 전엔 어떻게 릴리즈를 만들었을까?
이전에는 팀의 개발자가 장기간 격리된 상태로 작업하고, 작업이 완료된 후에야 변경 사항을 마스터 브랜치에 병합했다. 이로 인해 병합 코드가 어렵고 시간 소모가 심했다. 또한 수정 없이 오랫동안 버그가 축적되는 결과가 나타났다.
이것은 node js의 릴리즈 노트이다. 물론 CI 과정을 거쳐 node js가 업데이트되었는지는 모르겠지만, 이전에는 개발자들이 홀로 코드를 수정하고, 수정이 완료된 코드를 master banch에 올리는 방식으로 릴리즈를 작성했었다.
지속적 통합을 도입함으로써 기존 개발 방식의 어떠한 문제를 해결해주었을까?
- 개발자들이 코드 변경 사항을 공유 브랜치 또는 컨테이너로 다시 병합하는 작업을 더욱 수월하게 자주 수행할 수 있다.
- 개발자가 애플리케이션에 적용한 변경 사항이 애플리케이션을 손상시키지 않도록 자동으로 애플리케이션을 구축할 수 있게 한다.
- 이는 각기 다른 레벨의 자동화 테스트 실행을 통해 변경 사항이 애플리케이션에 제대로 적용되었는지 확인한다.
- 자동화된 테스트에서 기존 코드와 신규 코드 간의 충돌이 발견되면 CI를 통해 버그를 더 빠르게 자주 수정할 수 있다.
출처
지속적 통합이란 무엇입니까? – Amazon Web Services
지속적 통합은 자동화된 빌드 및 테스트가 수행된 후, 개발자가 코드 변경 사항을 중앙 리포지토리에 정기적으로 병합하는 데브옵스 소프트웨어 개발 방식입니다. 지속적 통합은 소프트웨어 릴
aws.amazon.com
CI/CD(지속적 통합/지속적 제공): 개념, 방법, 장점, 구현 과정
CI/CD는 애플리케이션의 통합 및 테스트부터 제공 및 배포까지 전체 라이프사이클에서 지속적인 자동화와 모니터링을 제공합니다. 개념, 차이점, 학습방법(인강)을 보세요.
www.redhat.com
What is Continuous Integration and Why it is Important?
Continuous Integration✔️helps you to merge their code. Know all about continuous integration, why it is important, CI tools and services. Read on!
www.simplilearn.com
릴리스 | Node.js
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org