728x90
반응형
SMALL
Deploy 배포 관련 용어 정리
컴파일
- 사용자가 작성한 코드를 컴퓨터가 이해할 수 있는 언어로 번역하는 일
빌드
- 컴파일된 코드를 실제 실행할 수 있는 상태로 만드는 일
배포
- 빌드가 완료된 실행 가능한 파일을 사용자가 접근할 수 있는 환경에 배치시키는 일, 혹은 war, jar 등의 실행 파일을 뽑아내는 과정
- 일반적으로 컴파일을 포함한 배포하기 직전까지의 모든 과정을 '빌드한다'라고 표현하기도 한다.
- IntelliJ 혹은 Eclipse 등에서 Run을 누르는 순간 컴파일이 자동으로 이루어지기에 바로 실행이 된다.
- 이러한 반복작업은 하루에 몇 번씩 반복되고 실수를 유발하기 쉽기에 '빌드 자동화', '배포 자동화' 개념이 등장했다.
자동화
- 개발자는 단순히 작업을 하고 Git에 수정된 코드를 올린다.
- 이후, 컴파일과 테스트, 빌드, 배포 등의 과정은 자동으로 수행되고 결과를 개발자에게 리포트해주는 것이 자동화이다.
- CI (빌드, 테스트, 병합) → CD (버그테스트, 릴리즈, 배포)
CI
- 지속적인 통합(Continuos Integreation)
- 개발자를 위한 자동화 프로세스
- 개발자간의 코드 충돌을 방지
- 정기적인 빌드 및 테스트를 거쳐 공유 레포지터리에 병합되는 과정
- 지속적인 통합 방식 예
- 개발자는 퇴근 전 자신의 코드를 중앙 코드와 통합
- 통합된 코드에서 본인의 코드가 제대로 동작하는지 테스트
- 통합된 코드가 빌드 테스트
- 결과를 정리하고, 버그가 있다면 다음날 수정
- 이를 자동화하면
- 모든 개발자는 퇴근 전 자신의 코드를 중앙 코드와 통합
- 자동화를 통해 다음날 출근 시 결과 리포트를 확인하고 버그가 있으면 수정
CD
- 지속적인 배포(Continuous Deploy)
- 소프트웨어가 항상 신뢰 가능한 수준에서 배포될 수 있도록 지속적으로 관리하는 개념
- CI의 연장선, 배포 이전에 테스트와 빌드는 필수적이기에 사실상 CD가 되려면 CI가 선행되어야 한다.
- 즉, CI를 통해 개발중에 지속적으로 빌드와 테스트를 진행하고, 이를 통과한 코드에 대하여 테스트 서버와 운영 서버에 그 내용을 배포해 반영하는 것이다.
- 한 번에 많이 수정하지 말고, 조금 수정하여 여러 번 배포하기.
CI/CD를 자동화하기 위해서는 고려 사항이 많다.
- 언제?
- 어떤 자동화 프로세스로?
- 어떻게 돌릴지?
- 어떤 방식으로 결과 리포트를 받을지 등
이를 도와주는 솔루션으로 CircleCI, Travis, Jenkins 등이 존재한다.
대부분 Jenkins를 사용하는?? 듯해 보인다. 아니면 내가 경험해보지 못한 것이거나...
728x90
반응형
LIST
'Develope > ETC' 카테고리의 다른 글
[객체 지향] SOLID 법칙 - 객체 지향 설계 5대 원리 (0) | 2022.08.12 |
---|---|
[Computer Science] 운영체제 (0) | 2022.08.09 |
[Jackson] JSON 처리를 위한 Jackson Library (0) | 2021.01.28 |
[JSON] Json이란 무엇인가? (0) | 2020.03.17 |
[WAS] Web Application Server? Web Server? NAS? (0) | 2020.03.17 |