무중단 배포 - pjhdev/UAD2 GitHub Wiki

[개요]

서비스 중인 uad2 서버에 업데이트 또는 긴급 패치를 해야 할 경우, 서비스를 다운타임이 없도록(혹은, 최소화)를 위해 nginx 의 reverse proxy 기능을 이용하여 무중단 배포를 구성.

[nginx 리버스 프록시를 이용한 서비스 구조도]

기존 version 1.0

nginx_reverse_proxy_1

배포된 version 1.1

nginx_reverse_proxy_2

[배포 전체 구성]

nginx_spring_deploy_workflow

[배포 워크플로우]

  1. 개발서버(로컬)에서 개발한 코드를 github 에 커밋&푸시
  2. 젠킨스 배포 실행
    1. test code 실행
    1. 테스트코드 성공시 build / 테스트 코드 실패 시 mail 또는 기타 협업도구에 알람
    1. 빌드 성공 후 협업도구에 알람 & 생성된 jar 파일 jar directory 로 전송(날짜별 혹은 빌드버전별로 폴더링)
    1. 새로 빌드된 jar 파일을 기존 jar 파일(심볼릭링크) 와 교체
  1. 젠킨스 배포 완료 후 유휴 nginx port 에 업데이트된 버전의 스프링 서비스 실행
  2. 이전 버전의 스프링 서비스 kill
  3. 무중단 배포 완료