728x90
CI(Countinuous Integration) - 빌드/테스트 자동화
- 개발자를 위해 빌드 및 테스트를 자동화 해준다
- 새로운 소스코드의 빌드, 테스트, 병합
- CI 절차 예시
- 개발자는 자신의 로컬에서 코드를 수정하고 Github에 해당 내용을 Push한다.
- CI 도구에서 변경된 코드로 인해 빌드와 테스트를 새로 수행하고 결과를 피드백해준다.
- 개발자는 자신이 개발한 소프트웨어의 소스코드를 공통된 버전 관리시스템(github 등)에 저장합니다.
- 소스코드상에 변동이 생기면 버전 관리 시스템에서는 CI 툴 (Jenkins)로 소스코드 변경을 알립니다.
- CI툴에서는 변경된 소스코드를 대상으로 Build, Test, Merge를 진행합니다. 이 과정들이 완료되면 슬랙, 카카오톡, 메일 등을 통해 통합 결과를 알립니다.
CD(Continuous Delivery/Continous Deployment) - 배포 자동화
-
CI 로 새롭게 빌드된 파일을 서비스 중인 서버에 자동으로 배포한다.
-
변경사항이 레포지토리를 넘어, 고객의 프로덕션 환경까지 릴리즈
-
자동화 수준에 따라 아래 2가지로 구별 가능하다
-
Continous Delivery(지속적인 배송) : 프로덕션 환경에 수동 배포
- - 빌드파일을 배포(서비스)까지는 하지않고 스테이징까지만 한다.
- - 배포는 운영팀이 직접한다.
-
Continous Deployment(지속적 배포) : 프로덕션환경에 자동 배포
-
빌드파일을 배포까지 자동으로 한다. 이 경우 배포 중 서비스가 잠시 끊기게된다.
※ 스테이징 환경: 운영환경과 거의 동일한 환경을 만들어놓고, 여러가지 비 기능적인 부분을 검증하는 환경
※ 프로덕션 환경: 실제 서비스를 위한 운영환경
-
-
-
CD 절차 예시
- CI가 정상적으로 수행되고 나면 빌드된 파일을 CD에 전달한다.
- CD에서는 빌드가 완료된 파일을 받아서 전처리 / 후처리 등을 수행한다. 아
- 기존에 동작하던 애플리케이션을 종료시키고 업데이트된 빌드 파일로 애플리케이션을 구동
- 새로 업데이트된 파일을 다른 포트에 풀어놓고 구동이 완료되면 프락시에서 들어오는 요청을 스위칭함. (무중단 배포)
-
CI/CD 합친 예시
- Github에 소스코드를 푸시하면 Github에서는 Jenkins로 Web Hook을 날립니다.
- Jenkins에서 빌드-테스트를 진행하고 검증된 소스코드로 도커 이미지를 만듭니다.
- Jenkins 내부에 설정된 스크립트로 만들어진 도커 이미지를 Docker hub로 푸시합니다.
- Jenkins에서 프로덕션 서버로 스크립트 실행 명령을 날립니다. 해당 스크립트를 받은 운영서버는 Docker hub에서 이미지를 다운로드한 후 애플리케이션을 배포합니다.****
'기타' 카테고리의 다른 글
Blocking vs Non-Blocking / Synchronous vs Asynchronous (0) | 2021.06.05 |
---|---|
MVC 란? (0) | 2021.05.19 |
library vs framework (0) | 2021.03.07 |