-
CI / CD의 기초 및 개념 정리_인스피언Technology/EAI 2023. 6. 22. 13:40
안녕하세요.
인스피언입니다.
CI/CD는 애플리케이션 개발과정을 자동화하고 지속적인 통합과 배포를 실현하여 효율성과 품질을 향상시키는 방법론입니다.
이를 통해 개발자들은 신속하게 변경사항을 반영하고 안정적인 서비스를 제공합니다.
Continuous Integration - 지속적 통합
CI(Continuous Integration)는 개발자들이 애플리케이션의 코드를 일상적으로 통합하는 프로세스를 의미합니다.
여러 개발자가 동시에 작업하거나 다른 기능을 개발하더라도, CI는 코드 변경 사항을 자동으로 통합하여 충돌을 예방하고 오류를 조기에 발견할 수 있도록 합니다.
CI는 버전 관리 시스템(Git 등)과 지속적인 빌드 자동화 도구를 통해 구현됩니다.
코드 변경 시, 자동화된 빌드 과정을 거쳐 테스트를 수행하고 통합된 결과물을 생성합니다.
핵심원리와 프로세스
1.자동화된 빌드와 테스트
CI는 코드를 자동으로 빌드하고 테스트하는 시스템을 사용합니다.
단위 테스트, 통합 테스트, 성능테스트가 주로 포함될 수 있으며 이를 통해 코드 품질을 확인하고 문제를 신속하게 해결합니다.
자동화의 발전을 통해 잠재적인 버그까지 탐지할 수 있습니다.
2. 버전 관리와 저장소
버전 관리 시스템을 사용하여 코드 변경 사항을 관리합니다.
프로그래머들은 각자 작업을 하고 변경 사항을 주요 코드에 자동으로 통합합니다.
버전 관리와 저장소는 협업, 이력 추적, 안전한 보관 및 실험과 실험 복구를 위해 필요합니다.
이러한 기능들은 소프트웨어 개발 과정에서 생산성을 향상시키고 실수를 방지하며, 팀의 협업과 개발 환경을 개선하는 데 큰 도움을 줍니다.
3. CI 서버
전용 CI 서버는 코드 변경을 감지하고 자동으로 빌드와 테스트를 실행합니다.
개발자에게 실시간으로 피드백을 제공합니다.
개발자들은 변경 사항을 지속적으로 통합하여 품질을 확인하고 문제를 해결할 수 있습니다.
이를 통해 개발자들은 더 안정적인 코드를 작성하고, 버그를 조기에 발견하여 소프트웨어의 품질을 향상시킬 수 있습니다.
Continuous Integration의 장점
초기 버그 검출 : 자동화된 업데이트를 통해 버그와 통합 문제를 빠르게 찾아내어 수정하기 쉽게 도와줍니다.
가속화된 제공 : 프트웨어 제공을 자동화하여 빠르게 새로운 기능을 출시할 수 있습니다.
협업과 팀 효율성 : CI는 팀원들 간의 협업을 촉진하고 효율성을 향상시킵니다.
지속적인 개선 : CI는 소프트웨어 개발 과정에서 지속적인 개선을 도와줍니다.
간단한 예시로 설명하자면, CI는 소프트웨어 개발자가 요리하는 것과도 비슷합니다.
요리사는 재료를 조리하고 맛을 확인하기 위해 계속해서 각 단계를 확인합니다.
비슷하게 CI는 소프트웨어 개발자가 코드를 작성하고 변경할 때마다 자동으로 빌드하고 테스트하여 결과를 확인합니다.
이를 통해 개발자는 오류를 빠르게 발견하고 해결할 수 있습니다.
이렇게 정해진 규칙에 따라 진행되는 업무는 자동화되어 더 나은 품질의 소프트웨어를 제공하고 개발 프로세스를 효율적으로 관리하여 신속하고 정확한 업무 프로세스에 도달하게 됩니다.
Continuous Delivery - 지속적 배포
CD(Continuous Deployment/Delivery)는 CI의 확장으로, 애플리케이션의 지속적인 배포를 가능하게 합니다.
자동화된 테스트와 배포 과정을 통해 애플리케이션을 신속하게 사용자에게 전달합니다.
모든 코드 변경 사항이 자동으로 프로덕션 환경에 배포되는 것을 의미하며, Continuous Delivery는 배포 결정만큼은 수동으로 하기 때문에 해당 과정은 직접적으로 개입해야 하는 경우가 있습니다.
핵심 원리와 프로세스
1. 자동화된 빌드 및 배포
Continuous Delivery는 개발 및 배포 프로세스를 자동화하여 인간의 개입을 최소화합니다.
이를 위해 소스 코드 빌드, 테스트, 패키징, 배포 등의 작업을 자동화하는 도구와 프로세스를 사용합니다.
2. 확장 가능한 인프라스트럭처
Continuous Delivery 역시 온 프레미스 기반에서 클라우드 기반의 확장 가능한 인프라스트럭처를 활용하여 필요한 리소스를 유연하게 할당하는 것이 최근의 방향으로 작용하고 있습니다.
이를 통해 애플리케이션의 크기와 트래픽에 따라 인프라를 조정하고, 확장성과 안정성을 유지할 수 있습니다.
3. 지속적인 품질 보증
Continuous Delivery는 품질 보증을 위해 자동화된 테스트를 핵심으로 적용합니다.
단위 테스트, 통합 테스트, 성능 테스트 등을 자동으로 실행하여 애플리케이션의 품질을 지속적으로 확인하고 버그를 신속하게 찾아 수정합니다.
4. 환경 관리와 포지셔닝
비즈인사이더를 예로 들자면, 다양한 환경(개발, 테스트, 스테이징, 프로덕션 등)을 관리하고, 각 환경에 필요한 설정과 리소스를 자동으로 구성하는 프로세스를 채택합니다.
이를 통해 일관된 배포 과정과 환경을 유지하여 신뢰성을 보장하는 환경을 만들어 내고 사용자에게는 더욱 안정적인 솔루션과 서비스 이용이 가능합니다.
지속적인 피드백을 제공합니다.
개발자와 팀은 테스트 결과, 빌드 상태, 배포 상태 등을 실시간으로 확인하고, 문제를 신속하게 파악하여 수정할 수 있습니다.
배포된 애플리케이션의 롤백과 롤포워드(새로운 버전으로 전환)를 지원합니다. 이를 통해 문제가 발생한 경우에도 빠르게 복구할 수 있습니다.
'Technology > EAI' 카테고리의 다른 글
SAP ERP 구버전 지원 종료 예정, SAP PO에서 IS로 전환 SmartShift서비스 (0) 2025.01.16 SAP PI / PO / CPI _ 인스피언 (0) 2023.05.16 인터페이스 관리 시스템_인스피언 (1) 2022.12.21 RTIMS(Real-Time Interface Monitoring System)_인스피언 (0) 2022.11.09 EAI 필요성_인스피언 (0) 2022.09.06