CI/CD 등장배경:
소프트웨어가 거대해지고 복잡해지면서 팀 단위로 개발하게 되었고, 그 과정에서 분업과 협업은 필수가 되었는데, 이 분업과 협업의 과정에서 코드의 Merge 과정이 까다롭게 되었고, 테스트하는데 큰 자원이 소비되게 되었다. 이 문제를 해결하기 위해 도입된 방법론이며 개발 - 테스트 -빌드 단계에서 시간을 절약하는 효과를 발휘하게 되었다.
더 빠른 릴리스 주기는 마이크로 서비스 아키텍처를 채택하는 가장 큰 이유
모놀리식 응용 프로그램에서 출력이 응용 프로그램 실행 파일인 단일 빌드 파이프라인이 존재
즉, 모든 개발 작업은 이 파이프라인으로 피드하게 되는데, 이는 새로운 기능의 릴리스를 지연시킬 수 있게됨.
마이크로 서비스 기본 원칙을 따르면 모든 팀이 줄을 서야 하는 불편함이 없음
즉, 서비스 "A"를 빌드하는 팀은 병합, 테스트 및 배포될 서비스 "B"의 변경 내용을 기다릴 필요 없이 언제든지 업데이트를 릴리스할 수 있음
=> CI/CD 프로세스는 이를 가능하게 만드는 데 중요.
즉, 릴리스 파이프라인은 업데이트 배포의 위험이 최소화되도록 자동화되고 매우 안정적이어야 하고
매일 또는 하루에 여러 번 프로덕션에 대해 릴리스하는 경우 재발 또는 서비스 중단은 매우 드물어야 함
CI/CD에 대해 논의할 때 실제로 여러 가지 관련된 프로세스: 지속적인 통합, 지속적인 업데이트 및 지속적인 배포에 대해 논의합니다.
지속적인 통합은 주 분기의 코드가 항상 프로덕션 수준이 되도록 자동화된 빌드 및 테스트 프로세스를 사용하여 코드 변경 내용이 주 분기로 자주 병합됨을 의미
지속적인 업데이트는 CI 프로세스를 전달하는 코드 변경 내용이 프로덕션 환경과 유사한 환경으로 자동으로 게시되는 것을 의미
지속적인 배포는 CI/CD 프로세스를 전달하는 코드 변경 내용이 프로덕션 환경으로 자동으로 배포되는 것을 의미
방식:
CI/CD는 애플리케이션 통합과 딜리버리 단계를 자동화하고 애플리케이션 구성을 표준화한다. 개발자가 새 코드를 체크인하면, CI/CD 파이프라인이 빌드, 테스트, 데이터 마이그레이션, 애플리케이션 배포, 서비스 호출 및 기타 스크립트화된 절차에 따라 대상 환경에서 코드 변경을 실행한다. 팀은 이러한 자동화를 통해 작업 방식을 조정해서 코드를 체크인하고 더 빈번하게 애플리케이션을 통합, 테스트, 제공한다.
기대효과:
- 빠른 개발 및 적용
- 안정적 시스템 운영
- 단위 테스트 및 테스트주도 개발 방법
- 테스트자동화 구축
- 매일 코드변경을 커밋하도록 개발자 독려
[출처] CI/CD, 서버패턴|작성자 demonic
[출처] https://docs.microsoft.com/ko-kr/azure/architecture/microservices/ci-cd
'정보관리기술사 도전 > 용어 정의' 카테고리의 다른 글
DB 분류 및 종류 (0) | 2018.11.20 |
---|---|
REDIS( REmote DIctionary Server) (0) | 2018.11.20 |
멀티테넌시(Multitenancy) (0) | 2018.11.20 |
DC/OS(Data Center Operating System) (0) | 2018.11.20 |
깃허브(GitHub) (0) | 2018.11.19 |