아래 내용 출처 :
10분 테코톡 찬, 레넌의 CI/CD와 무중단 배포
추가로 볼 자료
카카오엔터프라이즈가 GitHub Actions를 사용하는 이유
NHN Github Actions으로 배포 자동화하기
컴파일
- 프로그래머가 작성한 소스코드를 기계어로 변환하는 과정
빌드
- 소스코드 파일을 컴퓨터에서 실행할 수 있는 소프트웨어 산출물로 만드는 과정
배포
- 빌드의 결과물을 사용자가 접근할 수 있는 환경에 배치하는 것
CI (Continuous Integration)
- 지속적 통합이라는 뜻으로 개발을 진행하면서도 품질을 관리할 수 있도록 여러 명이 하나의 코드에 대해서 수정을 진행해도 지속적으로 관리할 수 있음을 의미한다.
마틴 파울러가 제시하는 CI 4가지 규칙
- 빌드 프로세스를 자동화해서 누구든 소스로부터 시스템을 빌드할 수 있게 할 것
- 테스팅을 자동화해서 언제든지 시스템에 대한 건전한 테스트 수트를 실행할 수 있게 할 것
- 모든 소스코드가 살아 있고 누구든 현재의 소스에 접근할 수 있는 단일 지점을 유지할 것
- 누구든 현재 실행 파일을 얻으면 지금까지 가장 완전한 실행 파일을 얻었다는 확신을 하게 할 것
CD (Continuous Deployment)
지속적 배포라는 뜻으로 빌드의 결과물을 프로덕션으로 릴리스하는 작업을 자동화하는 것을 의미한다.
무중단 배포
새로운 버전으로 배포하는 사이에 발생하는 다운타임을 해소하고자 등장한 개념
무중단 배포 구현 방법
- AWS에서 Blue-Green 무중단 배포
- 도커를 이용한 무중단 배포
- L4, L7 스위치를 이용한 무중단 배포
- Nginx를 이용한 무중단 배포
리버스 프록시
- 인터넷과 서버 사이에 위치한 중계 서버
- 클라이언트가 요청한 내용을 캐싱
- 서버 정보를 클라이언트로부터 숨길 수 있어 보안에 용이
로드 밸런싱
- 부하 분산
- 서버에 가해지는 부하를 분산해주는 역할
- 하나의 서버가 멈추더라도 서비스 중단 없이 다른 서버가 서비스를 계속 유지할 수 있는 무중단 배포가 가능
롤링 배포
- 서버를 차례대로 업데이트 하는 방식
단점
- 사용중인 인스턴스에 트래픽이 몰릴 수 있음
- 구버전과 신버전의 공존으로 인한 호환성 문제