[Deploy] Deploy & CI & CD 배포 관련 용어 정리

728x90
반응형
SMALL

출처 : https://ko.m.wikipedia.org/

 

Deploy 배포 관련 용어 정리

컴파일

  • 사용자가 작성한 코드를 컴퓨터가 이해할 수 있는 언어로 번역하는 일

 

빌드 

  • 컴파일된 코드를 실제 실행할 수 있는 상태로 만드는 일

 

배포 

  • 빌드가 완료된 실행 가능한 파일을 사용자가 접근할 수 있는 환경에 배치시키는 일, 혹은 war, jar 등의 실행 파일을 뽑아내는 과정
  • 일반적으로 컴파일을 포함한 배포하기 직전까지의 모든 과정을 '빌드한다'라고 표현하기도 한다.
  • IntelliJ 혹은 Eclipse 등에서 Run을 누르는 순간 컴파일이 자동으로 이루어지기에 바로 실행이 된다.
  • 이러한 반복작업은 하루에 몇 번씩 반복되고 실수를 유발하기 쉽기에 '빌드 자동화', '배포 자동화' 개념이 등장했다.

 

자동화

  • 개발자는 단순히 작업을 하고 Git에 수정된 코드를 올린다.
  • 이후, 컴파일과 테스트, 빌드, 배포 등의 과정은 자동으로 수행되고 결과를 개발자에게 리포트해주는 것이 자동화이다.
  • CI (빌드, 테스트, 병합) → CD (버그테스트, 릴리즈, 배포) 

 

CI 

  • 지속적인 통합(Continuos Integreation)
  • 개발자를 위한 자동화 프로세스
  • 개발자간의 코드 충돌을 방지
  • 정기적인 빌드 및 테스트를 거쳐 공유 레포지터리에 병합되는 과정

 

  1. 지속적인 통합 방식 예
    • 개발자는 퇴근 전 자신의 코드를 중앙 코드와 통합
    • 통합된 코드에서 본인의 코드가 제대로 동작하는지 테스트
    • 통합된 코드가 빌드 테스트
    • 결과를 정리하고, 버그가 있다면 다음날 수정

  2. 이를 자동화하면
    • 모든 개발자는 퇴근 전 자신의 코드를 중앙 코드와 통합
    • 자동화를 통해 다음날 출근 시 결과 리포트를 확인하고 버그가 있으면 수정

 

CD

  • 지속적인 배포(Continuous Deploy)
  • 소프트웨어가 항상 신뢰 가능한 수준에서 배포될 수 있도록 지속적으로 관리하는 개념
  • CI의 연장선, 배포 이전에 테스트와 빌드는 필수적이기에 사실상 CD가 되려면 CI가 선행되어야 한다.
  • 즉, CI를 통해 개발중에 지속적으로 빌드와 테스트를 진행하고, 이를 통과한 코드에 대하여 테스트 서버와 운영 서버에 그 내용을 배포해 반영하는 것이다.
  • 한 번에 많이 수정하지 말고, 조금 수정하여 여러 번 배포하기.

 

CI/CD를 자동화하기 위해서는 고려 사항이 많다.

  • 언제?
  • 어떤 자동화 프로세스로?
  • 어떻게 돌릴지?
  • 어떤 방식으로 결과 리포트를 받을지 등

 

이를 도와주는 솔루션으로 CircleCI, Travis, Jenkins 등이 존재한다. 

 

대부분 Jenkins를 사용하는?? 듯해 보인다. 아니면 내가 경험해보지 못한 것이거나...

 

 

728x90
반응형
LIST