지속적 통합(CI)이란?
지속적 통합은 소프트웨어 개발 프로세스에서 중요한 단계 중 하나이다.
이는 새로운 코드를 작성할 때마다 해당 코드가 이전에 작성한 코드와 잘 통합되는지를 자동으로 검사하는 것을 의미하는데, 이를 통해 개발자는 문제를 더 빠르게 발견하고 해결할 수 있으며, 개발 프로세스가 더욱 효율적이고 안정적으로 이루어질 수 있다.
일반적으로 지속적 통합은 코드를 커밋하는 즉시 빌드를 실행하고, 자동화된 테스트를 수행하여 새로운 코드가 기존 코드와 충돌하지 않도록 검증한다. 이후에는 코드 변경 사항을 다른 개발자와 공유하고, 더 나은 코드를 작성하는 데 필요한 피드백을 얻을 수 있다.
지속적 통합을 적용함으로써 개발 프로세스가 더욱 효율적이고 안정적으로 이루어지며, 팀 내 개발자들의 협업을 강화할 수 있다.
지속적 통합의 예시로는 개발자 A,B,C가 같은 프로젝트를 함께 개발하고 있을 때
A는 새로운 기능을 추가하고,
B는 버그를 수정하고,
C는 코드 리팩토링을 하고 있다.
이 때 각각의 개발자는 코드를 작성한 후, 변경된 코드를 버전 관리 시스템(Git 등)에 push한다. 이때, 지속적 통합(CI)가 적용되어 있다면, 변경된 코드가 자동으로 빌드되고 테스트가 실행된다. 모든 테스트가 통과하면, 코드 변경 내용이 하나의 빌드 결과물로 병합되어 자동으로 빌드된 후, 팀 내의 다른 개발자들이 공유할 수 있다.
EX) Jenkins
Jenkins
Meet with Jenkins Community at cdCon + GitOpsCon 2023 The Continuous Delivery Foundation (CDF) is happy to host its fourth flagship event, cdCon, taking place on May 8–9, 2023 in Vancouver, Canada as cdCon + GitOpsCon, co-organized with the Cloud Native
www.jenkins.io
대표적인 CI 도구인 Jenkins는 CI를 구축할 수 있는데, Jenkins가 CI를 사용하는 방법은 아래와 같다.
1. Jenkins 설치 및 설정
먼저 Jenkins를 설치하고 프로젝트의 빌드, 배포 등을 위한 설정을 해야 합니다.
2. 프로젝트 소스코드 저장소 연동
Jenkins와 소스코드 저장소(Git, SVN 등)를 연동하여 소스코드의 변경 사항을 감지할 수 있도록 설정한다.
3. 빌드 및 테스트 자동화
Jenkins는 소스코드가 변경될 때마다 자동으로 빌드하고 테스트를 실행하는 것을 지원한다. 이를 위해 Jenkins에서 빌드 스크립트와 테스트 스크립트를 설정한다.
4. 빌드 결과 저장
빌드와 테스트가 모두 성공하면 빌드 결과를 저장한다. Jenkins에서는 빌드 결과를 저장할 수 있는 다양한 방법을 제공한다. 예를 들어 JUnit 테스트 결과를 저장하여 테스트 결과를 확인할 수 있다.
5. 배포 자동화
빌드 결과가 저장되면, 이를 바탕으로 배포 자동화를 수행할 수 있다. Jenkins에서는 다양한 배포 방식을 지원한다. 예를 들어, FTP, SSH, SCP, rsync 등을 이용하여 서버에 배포할 수 있다.
6. 이메일 알림
CI가 실행될 때마다 빌드 및 테스트 결과가 이메일 등을 통해 개발자들에게 알림으로 전달된다. 이렇게 함으로써, 개발자들은 빠르게 문제점을 파악하고 빠르게 대처 가능하다.
Jenkins는 다른 일상적인 개발 작업을 자동화할 뿐 아니라 파이프라인을 사용해 거의 모든 언어의 조합과 소스코드 리포지토리에 대한 지속적인 통합과 지속적인 전달 환경을 구축하기 위한 간단한 방법을 제공한다.
Jenkins가 각각의 단계에 대한 스크립트 작성의 필요성을 없애주지는 않지만, 사용자가 쉽게 구축할 수 있는 것보다 더 빠르고 강력하게 빌드, 테스트, 배포 도구 등 체인 전체를 통합할 수 있는 방법을 제공해 준다.
지속적 배포(CD)란?
지속적 배포는 새로운 코드를 작성하거나 수정할 때, 이를 서비스에 즉시 적용하여 배포하는 것을 말한다.
이를 자동화하여 새로운 코드나 수정된 코드가 반영된 애플리케이션이 즉시 배포된다.
예를 들어 개발자가 새로운 코드를 작성하거나 수정하면, 이 코드는 자동으로 빌드되어 테스트 환경에서 실행된다. 이때 자동화된 테스트에서 모든 테스트가 통과하면, 이 코드가 운영 환경으로 배포된다. 이 과정에서 개발자나 운영팀의 수동적인 개입이 최소화되므로, 배포 속도와 안정성이 향상된다. 즉, 지속적 배포는 소프트웨어를 더 빠르고 안정적으로 배포할 수 있도록 하는 것이다.
지속적 배포의 예시로는
어떤 회사의 웹 사이트가 있을 때, 개발자가 새로운 기능을 추가하거나 버그를 수정한 코드를 작성하면, 지속적 배포가 적용된 시스템에서는 해당 코드가 자동으로 빌드되고 테스트가 진행된다. 모든 테스트가 통과하면, 자동으로 서비스의 운영 환경에 적용된다. 이러한 과정을 거치면 새로운 기능이나 버그수정 등이 바로 적용되므로, 서비스를 더욱 빠르고 안정적으로 제공할 수 있다.
'DEV > 기타' 카테고리의 다른 글
2024 회고 그리고 2025년 목표 (7) | 2024.12.26 |
---|---|
시계열 데이터의 압축 - Gorilla Algorithm(고릴라 알고리즘) (1) | 2024.06.13 |
대용량 데이터의 압축에 대해 알아보자. (0) | 2024.06.12 |
클래스 다이어그램(Class - Diagram) (0) | 2022.11.15 |
Eclipse MAC 단축키 (0) | 2022.11.14 |