개발 프로세스 CI/CD란?

January·2023년 1월 20일
0

Frontend

목록 보기
26/31
post-thumbnail

시장과 고객의 요구에 빠르게 반응해서 제품을 출시하고 업데이트할지에 대한 고민으로 CI/CD 개발 프로세스를 채택한다.

CI/CD란?

어플리케이션 개발 단계부터 배포 때까지 모든 단계들을 자동화를 통해서 더 효율적이고 빠르게 사용자에게 빈번히 배포할 수 있도록 만드는 것을 말한다.

CI (Continuous Intergration)

지속적인 통합은 버그 수정 또는 새로 만든 기능들이 Main Repository에 주기적으로 빌드 되고 테스트가 되어서 merge 되는 것을 말한다.

CI 원칙의 장점

  1. 주기적으로 머지 하기 때문에 머지 충돌을 피할 수 있어서 개발 생산성이 향상된다.
  2. 머지되는 코드들은 자동으로 빌드 되고 테스트되기 때문에 코드의 결함 또는 문제점을 빠르게 발견할 수 있다.
  3. 작은 단위로 코드의 변경이 일어나기 때문에 빠르게 버그 수정하기 용이이다.

이런 장점은 코드의 퀄리티 향상으로 이어진다
CI를 잘 운용하기 위해서 작성한 코드는 단위가 작아 유닛 테스트를 꼭 포함한다. 이는 안정성이 있는 제품을 개발하는 것을 의미한다.

1. 코드 변경사항을 주기적으로 빈번하게 머지해야 한다.

팀원 간 서로 다른 코드를 작성하고 있다가 오랜 기간 머지 하지 않고 변경하고서 나중에 merge를 하게 되면 서로 다른 코드를 어떻게 통합해서 적용할지 많은 고생을 하게 된다.

새로운 기능을 개발하기 위해서 코드를 작성한 시간보다 merge conflict를 해결하기 위해서 더 많은 시간을 써야 할지 모른다.

그래서 버그나 새로운 기능을 개발할 때는 어떻게 작은 단위로 나눌지에 대해 고민을 해봐야 한다. 최대한 작은 단위로 나누어서 개발하고 통합해나가는 것이 중요하다.

2. 통합을 위한 단계 (빌드, 테스트, 머지) 자동화

CI Server

코드 리뷰를 통해서 코드가 적절한지 확인이 되고 merge가 되면 자동으로 팀에서 만든 CI Script를 통해 추가된 코드와 함께 Repository가 build 된다. 이 과정이 잘 되었다면 팀에서 작성한 여러 가지 테스트들도 Script를 통해서 실행이 된다.

CD(Continuous Delivery)

지속적인 제공은 CI를 통해서 주기적으로 머지 된 코드 변경사항들이 자동으로 빌드가 된다. 그리고 테스트를 정상적으로 마쳤다면 배포하는 단계에서 Release 준비 과정을 거친다.

Prepare Release가 문제가 없어서 최종적으로 배포하기로 결정이 된다면 수동적으로 배포하는 단계를 Continuous Delivery라고 한다.

CD(Continuous Deployment)

지속적인 배포는 Prepare Release가 되자마자 자동으로 사용자에게 배포한다. 모든 과정을 자동화하는 것을 Continuous Deployment라고 한다.

Delivery와 비슷하지만 최종 단계가 자동화가 되었는지에 따라 다르다.

정리

CI/CD는?

  1. 개발자가 작은 단위로 기능을 나눠서 main Repository에 머지
  2. 자동으로 빌드, 테스트
  3. 릴리즈 준비
  4. 수동적으로 배포 또는 자동적으로 배포

0개의 댓글