CI/CD 자동화 소프트웨어 빌드 devops

소프트웨어 빌드?

개발한 소프트웨어를 최종적으로 출시하기 위한 형태(패키지)로 만드는 것 docker image

CI Continuous Integration, CD Continuous Delivery

테스트 test 가 빌드의 중요한 일부로 포함 (unit test, 통합테스트, acceptance test 등) 소프트웨어 안정성에 영향을 미침

개발자가 코드 추가, 커밋 등등을 할 때마다 test하는 과정을 CI라고 한다.

Software Engineering Practice의 하나

기본 원칙

- 코드 repo는 하나만 유지 (Master 혹은 Main)

   - 새로운 branch를 두고 작업 후 merge

- 코드 변경을 최대한 자주 반영

   - 한번에 merge 하기 보다는 기능별, 이슈별 조금씩 자주 하기 

- 테스트를 최대한 추가

    - Test Coverage 

- 빌드를 계속적으로 수행 (자동화)

    - Commit Build vs. Nightly Build

- 성공한 빌드의 프로덕션 릴리스 (자동화)

    - CD: Continuous Delivery

 

코드의 품질을 관리하는 과정 CI, CD

 

빌드가 실패했다?!

새 코드의 커밋으로 테스트가 실패하는 경우

-  빌드 실패시 다시 성공할 때까지 코드 변경을 금지하도록 함

 

CI/CD 과정과 DevOps팀의 역할

(개발자가) code commit -> ci -> cd -> 프로덕션 서버에서 서비스

  (다양한 종류의)  테스트 수행! (SW를 프로덕션에 배포하기 위한 형태로 패키징) 소프트웨어 배포

 

데브옵스 팀이 프로세스를 만들고 관리감독

배포자동화 배포후 모니터링 문제 발생시 롤백 등

코드변경이 생길때마다 반영됌

 

배포 자동화하는데 docker환경이 사용되고 있고

프로덕션 서버 환경을 가 K8s 환경으로 플랫폼이 쓰고 있음