본문 바로가기

Study/용어익히기

헷갈리는 IT 용어 이해하기__3. CI/CD

# 도입 배경 

- 요즘같이 빠르게 진화하고 변화하는 시대에 어떻게 하면  시장과 고객의 요구에 빠르게 반응해서 제품을 출시, 업데이트 할것인가는 큰 과제이다. 바로 이것을 위해 세계적으로 많은 기업들이 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 등 다양한 



참고 : https://youtu.be/0Emq5FypiMM