CI/CD
CI/CD (Continuous Integration/Continuous Delivery)는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법입니다. CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포
지속적 통합 / 지속적 배포 결합 사례를 의미한다고 한다
컴파일 : 프로그래머가 작성한 소스코드를 기계어로 변환하는 과정
빌드 : 소스 코드 파일을 컴퓨터에서 실행할 수 있는 소프트웨어 산출물로 만드는 과정
배포 : 빌드 결과물을 사용자가 접근할 수 있는 환경에 배치하는 것
백엔드의 요구사항
-> 쉘 스크립트 또는 CI 도구를 이용한 배포 자동화
CI/CD
마틴 파울러가 제시한 CI 의 4가지 규칙
1. 모든 소스코드가 살아있고 누구든 현재의 소스에 접근할 수 있는 단일 지점을 유지시킨다
2. 빌드 프로세스를 자동화하여 누구든 소스로 부터 시스템을 빌드할 수 있도록 한다
3. 테스팅을 자동화해서 언제든지 시스템에 대한 건전한 테스트 수트를 실행할수 있게 한다
4. 누구든 현재 실행 파일을 얻으면 지금까지 가장 완전한 실행 파일을 얻었다는 확신을 하게 한다
소규모의 서버 규모라면 직접 서버에 등록하면 되지만,
서버의 규모가 커지면서 CD가 등장한다
CI/CD tool
- Jenkins
- Travis CI
- Github Actions
무중단 배포
이를 해결 하기 위한 개념이 무중단 배포
Nginx는 쉽고 저렴하다는 점에서 많이 사용됨
리버스 프록시
- 인터넷과 서버 사이에 위치한 중계 서버
- 클라이언트가 요청한 내용을 캐싱
- 서버 정보를 클라이언트로부터 숨길 수 있어 보안에 용이함
로드 밸런싱
- 부하 분산
- 서버에 가해지는 부하를 분산해주는 역할
- 하나의 서버가 멈추더라도 서비스 중단 없이 다른 서버가 서비스를 계속 유지할 수 있는 무중단 배포가 가능하다
무중단 배포 방식
- Rolling 배포
무중단 배포의 가장 기본적인 방식
서버를 차례대로 배포시키는 방식
배포 전 로드밸런싱을 중단 시킨 뒤 배포 후 다시 로드밸런싱 연결해주기 위해 라우팅 추가
이걸 차례대로 함
- Canary 배포
가스에 민감한 카나리아 새를 이용해 가스 누출 위험을 감지했던 것에서 유래됨
신버전의 소수의 사용자들에게만 배포
문제가 없는 것을 확인 후에 점진적으로 다른 서버에 신버전 배포
배포할 테스트 서버에 라우팅 연결을 끊은 뒤 배포 시킨 후
문제가 없는 것을 확인하면 전체 업데이트
- Blue / Green 배포
Blue(구버전) Green(신버전)을 뜻함
구버전과 동일하게 신버전의 인스턴스를 구성
신버전 배포 시 로드 밸런서를 통해 신버전으로만 트래픽을 전환시킴
대기중인 그린 서버에게 일단 신버전 배포 업데이트해서 그 서버를 사용,
그 후에 구 버전이였던 블루 서버는 다음번 배포 시 업데이트 할 그린서버가 되는 것
정리!
'Web > tip' 카테고리의 다른 글
[LocalDateTime Date] Convert (0) | 2023.05.03 |
---|---|
[Exception] (0) | 2023.04.29 |
[Persistence] JDBC, SQLMAPPER, ORM (0) | 2023.04.16 |
[IntelliJ] 단축키 적극활용 (0) | 2023.04.16 |
[Java Stream] stream (0) | 2023.04.16 |