CI/CD란 무엇입니까? 지속적인 통합 및 지속적인 전달

CI(지속적 통합)란 무엇입니까?

지속적인 통합 팀 구성원이 하루에 한 번 이상 작업을 통합하는 소프트웨어 개발 방법입니다. 이 방법에서는 자동화된 빌드를 통해 모든 통합을 검사하여 오류를 감지합니다. 이 개념은 프로젝트가 끝날 때까지 통합이 지연될 때 발생하는 '통합 지옥'을 피하기 위해 XNUMX여 년 전에 처음 도입되었습니다.

지속적인 통합에서는 코드 커밋 후 소프트웨어가 즉시 구축되고 테스트됩니다. 개발자가 많은 대규모 프로젝트에서는 하루에도 여러 번 커밋이 이루어집니다. 커밋할 때마다 코드가 빌드되고 테스트됩니다. 테스트가 통과되면 배포를 위해 빌드가 테스트됩니다. 배포가 성공하면 코드가 프로덕션으로 푸시됩니다. 이 커밋, 빌드, 테스트 및 배포는 지속적인 프로세스이므로 지속적인 통합/배포라는 이름이 붙습니다.

CD(지속적 전달)란 무엇입니까?

연속 배달 팀이 짧은 주기로 소프트웨어 제품을 개발하는 소프트웨어 엔지니어링 방법입니다. 언제든지 소프트웨어를 쉽게 릴리스할 수 있도록 보장합니다. 지속적인 배포의 주요 목적은 소프트웨어를 좋은 속도와 빈도로 빌드, 테스트 및 릴리스하는 것입니다. 프로덕션에서 빈번한 업데이트를 허용하여 변경 사항을 제공하는 데 드는 비용, 시간 및 위험을 줄이는 데 도움이 됩니다.

CI와 CD의 차이점은 무엇입니까?

CI 대 CD: CI(지속적 통합)는 코드베이스에 대한 각 변경 사항을 자동으로 테스트하는 접근 방식인 반면, CD(지속적 전달)는 새로운 기능, 구성 및 버그 수정의 변경 사항을 가져오는 접근 방식입니다.

CI 없는 개발과 CI를 사용한 개발

CI를 사용한 개발과 CI를 사용하지 않은 개발 간의 주요 차이점은 다음과 같습니다.

CI 없이 개발 CI를 활용한 개발
많은 버그 버그 감소
드문 커밋 정기적인 커밋
드물고 느린 릴리스 정규 작업 릴리스
어려운 통합 쉽고 효과적인 통합
테스트가 늦게 이루어짐 지속적인 통합 테스트는 초기에 자주 발생합니다.
제기된 문제는 해결하기가 더 어렵습니다. 더 빠르고 효율적으로 문제를 찾아서 해결하세요.
프로젝트 가시성이 좋지 않음 더 나은 프로젝트 가시성

컴파일과 지속적인 통합의 차이점

지속적인 통합 활동
지속적인 통합 활동

컴파일은 코드만 컴파일하는 반면 CI는 다음과 같은 활동을 수행합니다.

DB 통합

  • DB와 코드의 동기화를 확인하세요
  • DB 및 테스트 데이터 자동 생성.

코드 검사

  • 건강한 코드베이스 보장
  • 문제를 조기에 식별하고 모범 사례를 적용합니다.

자동화된 배포

  • 언제든지 제품을 출시할 수 있습니다.
  • 지속적으로 데모 가능한 상태이며 모든 시스템에서 작동합니다.

문서 생성

  • 문서가 최신인지 확인하세요.
  • 개발자로부터 구운 것을 제거합니다.
  • 빌드 보고서 및 측정항목 생성

편집

컴파일은 컴퓨터가 고급 프로그래밍 언어 코드를 컴퓨터가 이해할 수 있는 기계어로 변환하는 과정입니다. 모든 대상 플랫폼에서 코드 컴파일러를 보장합니다.

언제 구축하나요?

  • 체크인할 때마다
  • 종속성이 변경될 때마다

지속적 통합에는 어떤 단계가 있나요?

CI 프로세스
CI 프로세스
  • 이상적으로 빌드는 명령줄에서 이루어져야 하며 IDE(통합 개발 환경)에 의존해서는 안 됩니다.
  • 빌드는 cron 작업이 아닌 전용 Cl 서버를 사용하여 지속적으로 이루어져야 합니다.
  • 구축된 CI는 자정뿐만 아니라 체크인할 때마다 트리거되어야 합니다.
  • 빌드는 즉각적인 피드백을 제공해야 하며 개발자의 노력이 필요하지 않아야 합니다.
  • 주요 지표를 식별하고 시각적으로 추적합니다. 더 중요한 것은 즉시 조치를 취하는 것입니다.

CI 프로세스를 수행하려면 무엇이 필요합니까?

CI 프로세스 실시

전체 CI 프로세스를 수행하는 데 필요한 핵심 요소는 다음과 같습니다.

  • 버전 관리 시스템(VCS): 이는 시간이 지남에 따라 프로젝트에 적용된 변경 사항을 중앙 집중화하고 보존하는 안정적인 방법을 제공합니다.
  • 가상 기기: 예비 서버가 하나 이상 있어야 합니다. 가상 머신 귀하의 시스템을 구축합니다.
  • 호스팅 CI 도구 솔루션: 서버나 가상 머신을 피하려면 호스팅 CI 도구 솔루션을 선택해야 합니다. 이 도구는 전체 프로세스의 유지 관리에 도움이 되며 더 쉬운 확장성을 제공합니다.
  • 도구 : 자체 호스팅 변형을 선택하는 경우 다음 중 하나를 설치해야 합니다. CI 도구 젠킨스처럼, TeamCity, Bamboo, GitLab 등

지속적 통합은 어떻게 작동하나요?

당신은 확실히 오래된 전화 Nokia를 알고 있습니다. Nokia는 Nightly Build라는 절차를 구현하곤 했습니다. 낮 동안 다양한 개발자가 여러 번 커밋한 후 소프트웨어가 매일 밤 구축되었습니다. 소프트웨어는 하루에 한 번만 빌드되었기 때문에 대규모 코드베이스에서 오류를 격리, 식별 및 수정하는 것은 엄청난 고통입니다.

Later, 그들은 지속적인 통합 접근 방식을 채택했습니다. 개발자가 코드를 커밋하자마자 소프트웨어가 구축되고 테스트되었습니다. 오류가 감지되면 해당 개발자는 신속하게 결함을 수정할 수 있습니다.

지속적인 통합의 예
지속적인 통합의 예

CI의 특징

지속적인 통합의 중요한 기능과 이점은 다음과 같습니다.

  • 단일 소스 저장소만 유지 관리할 수 있습니다.
  • 프로덕션 CI 환경의 복제를 테스트할 수 있습니다.
  • 구축 환경은 프로덕션 환경과 가까워야 합니다.
  • 지속적인 통합의 장점 중 하나는 현재 빌드의 지속적인 가용성입니다.
  • 빌드, 테스트 및 배포의 전체 프로세스가 모든 스택 보유자에게 표시되어야 합니다.

왜 CI를 사용하는가?

지속적 통합을 사용하는 중요한 이유는 다음과 같습니다.

  • 더 나은 품질의 소프트웨어를 구축하는 데 도움이 됩니다.
  • CI 프로세스는 엔지니어링 팀의 인원수와 납품 결과를 확대하는 데 도움이 됩니다.
  • CI를 사용하면 소프트웨어 개발자가 기능에 대해 독립적으로 동시에 작업할 수 있습니다.
  • 반복 가능한 테스트를 수행하는 데 도움이 됩니다.
  • 더 나은 커뮤니케이션을 가능하게 하는 가시성 향상
  • 완전 자동화된 빌드를 위해 잠재적으로 출시 가능한 제품을 개발하는 데 도움이 됩니다.
  • 배포를 더 빠르고 예측 가능하게 만들어 위험을 줄이는 데 도움이 됩니다.
  • 문제 발생 시 즉각적인 피드백
  • 출시 날짜 및 타이밍에 있어 막판 혼란을 피하세요

CI 시스템 사용의 우수 사례

구현하는 동안 몇 가지 중요한 모범 사례는 다음과 같습니다.

  • 일찍 커밋하고 자주 커밋합니다. 손상된 코드는 커밋하지 않습니다.
  • 빌드 실패 즉시 수정
  • 측정항목에 따라 조치
  • 모든 대상 환경 빌드인 모든 빌드에서 아티팩트 생성
  • 소프트웨어 빌드는 자동화될 수 있는 방식으로 수행되어야 합니다.
  • IDE에 의존하지 마세요
  • 변경되면 모든 것을 빌드하고 테스트하세요.
  • 데이터베이스 스키마는 모든 것으로 간주됩니다
  • 주요 지표를 찾아 시각적으로 추적하는 데 도움이 됩니다.
  • 자주 일찍 체크인하세요
  • 더 강력한 소스 코드 제어
  • 지속적인 통합은 코드를 커밋할 때마다 단위 테스트를 실행합니다.
  • 빌드 자동화 및 모두 테스트
  • 자동화된 배포로 빌드 속도를 빠르게 유지하세요

CI의 단점

지속적인 통합 프로세스의 단점/단점은 다음과 같습니다.

  • Cl 서버에 익숙해지기 위해서는 초기 설정 시간과 교육이 필요합니다.
  • 적절한 테스트 절차의 개발이 필수적입니다.
  • 잘 개발된 테스트 스위트에는 Cl 서버에 많은 리소스가 필요합니다.
  • 익숙한 프로세스의 변환
  • 추가 서버 및 환경 필요
  • 여러 개발자가 동시에 코드를 통합하려고 하면 대기 시간이 발생할 수 있습니다.

CI 프로세스 도구

다음은 가장 필수적인 CI/CD 도구입니다.

젠킨스

젠킨스

젠킨스 오픈 소스 지속적 통합 소프트웨어입니다. 를 사용하여 작성됩니다. Java 프로그래밍 언어. 보다 대규모 코드베이스에서 격리된 변경 사항에 대한 실시간 테스트 및 보고를 용이하게 합니다. 이 소프트웨어는 개발자가 코드베이스의 결함을 신속하게 찾아 해결하고 빌드 테스트를 자동화하는 데 도움이 됩니다.

Bamboo

Bamboo

Bamboo 는 단일 장소에서 자동 빌드, 테스트 및 릴리스를 수행하는 지속적인 통합 빌드 서버입니다. JIRA 소프트웨어 및 Bitbucket과 원활하게 작동합니다. Bamboo CodeDeply, Docker, Git, SVN, Mercurial, AWS 등과 같은 다양한 언어와 기술을 지원합니다. Amazon S3 버킷.

TeamCity

TeamCity

TeamCity 많은 강력한 기능을 지원하는 지속적인 통합 서버입니다. 빌드가 실행되지 않는 경우에도 CI 서버를 건강하고 안정적으로 유지합니다. 모든 프로젝트에 더 나은 코드 품질을 제공합니다.

요약

  • 지속적인 통합 정의: 지속적인 통합은 팀 구성원이 하루에 한 번 이상 작업을 통합할 수 있는 소프트웨어 개발 방법입니다.
  • CI/CD는 지속적인 통합과 지속적인 전달 또는 지속적인 배포의 조합을 의미합니다.
  • CI 없이 개발하면 많은 버그가 발생하는 반면 CI를 사용하여 개발하면 버그가 더 적습니다.
  • Continuous Integration의 중요한 활동은 1) DB 통합, 2) 코드 검사, 3) 자동화된 배포, 문서 생성 및 컴파일입니다.
  • 빌드는 cron 작업이 아닌 전용 Cl 서버를 사용하여 지속적으로 이루어져야 합니다.
  • CI의 중요한 요소는 1) 버전 관리 시스템 2) 가상 머신 3) 호스트 CI 도구 솔루션 4) 도구입니다.
  • 지속적인 통합 시스템을 사용하면 단일 소스 저장소만 유지 관리할 수 있습니다.
  • CI/CD 프로세스는 더 나은 품질의 소프트웨어를 구축하는 데 도움이 됩니다.
  • 가장 중요한 모범 사례 Azure 지속적인 통합 프로세스는 조기에 커밋하고 자주 커밋하는 것입니다. 깨진 코드는 커밋하지 않습니다.
  • 의 가장 큰 단점은 CI/CD 파이프라인 프로세스는 잘 개발된 테스트 스위트에는 Cl 서버에 많은 리소스가 필요하다는 것입니다.
  • 젠킨스, Bambook와 Team City는 유용한 AWS Continuous입니다. 통합 도구.