# 도입 배경
- 요즘같이 빠르게 진화하고 변화하는 시대에 어떻게 하면 시장과 고객의 요구에 빠르게 반응해서 제품을 출시, 업데이트 할것인가는 큰 과제이다. 바로 이것을 위해 세계적으로 많은 기업들이 CI/CD를 도입했다.
# 간단히
어플리케이션 개발부터 배포까지 이 모든 단계들을 자동화를 통해서 조금 더 효율적이고 빠르게 사용자에게 빈번히 배포할 수 잇도록 만드는 것을 말한다.
# CI란?
- Continuous Intrgration (지속적인 통합) 의 약자.
- 버그수정이나 새로 만드는 기능들이 메인 리파지토리에 주기적으로 빌드되고, 테스트 되어서 머지 되는 것을 의미한다.
- 1991년 Grady Booch에 의해 사용되어지다가, 후일 Extreme Programming 개발방법론에 채택되었다.
- 2가지가 중요하다
1) 개발자들은 그들의 코드 변경사항을 주기적으로 빈번하게 머지해야한다.
- 주기적, 빈번하게 머지함으로써 소스코드의 충돌 방지
- 버그를 수정하거나 새로운 기능을 개발 할 때는 기능을 최대한 작은 다위로 나워서 개발하고 통합해 나가야함다.
2) 통합을 위한 단계 (빌드, 테스트, 머지)의 자동화
- 주기적으로 머지된 코드의 변경사항이 자동으로 빌드가 되어서 코드변경 이후에도 빌드가 성공적으로 되는지 확인
- 새로 추가된 코드가 기존의 시스템에 다른 버그를 초래하지 않는지 자동으로 테스트가 되어야한다.
# CI 사용의 장점
1) 개발 생산성 향상과 코드 퀄리티 향상
- 주기적인 머지로 머지 충돌을 피할수 있다.
- 코드들은 자동으로 빌드되고 테스트 되기 때문에 코드의 결함이나 문제점을 빠르게 찾고, 빠르게 수정할수있다.
- 주기적으로 머지하기 위해 코드의 변경사항이 작고, 문제점이 있더라도 작업 영역이 작은단위로 쪼개져 있어서 수정에 더욱 용이하다.
# CD란?
- Continous Delivery (지속적 제공) 혹은 Continous Deplement (지속적인 배포) 의 약자
- CI단계에서 머지되고 빌드된 작업들을 어떻게 배포하느냐에 따라 Delivery or Deplement 로 나뉜다.
- CI단계에서 작업된 코드를 수동적으로 배포한다면 => Continous Delivery (지속적 제공)
- CI단계에서 작업된 코드를 자동적으로 배포한다면 =>Continous Deplement (지속적인 배포)
# 사진으로 간단하게 요약!
# CI/CD를 위한 다양한 툴!
Jenkins, Bulidkite, Github Actions, GitLab CI/CD, Bitbucket Pipelines, circleci 등 다양한
'Study > 용어익히기' 카테고리의 다른 글
헷갈리는 IT 용어 이해하기__6. 데이터베이스 (0) | 2021.11.28 |
---|---|
헷갈리는 IT 용어 이해하기__5. 웹 이해하기 (0) | 2021.11.27 |
헷갈리는 IT 용어 이해하기__4. API/JSON (0) | 2021.11.26 |
헷갈리는 IT 용어 이해하기__2. JAVA니가 먼데? (0) | 2021.11.21 |
헷갈리는 IT 용어 이해하기__1. 클라이언트와 서버 (0) | 2021.11.20 |