무중단 배포가 무엇이고 왜 중요한가?
프로젝트를 개발하고 나면 마지막 단계에서 빌드,테스트,배포를 진행한다.
빌드 : 프로젝트가 출시될 때 이것들은 다른 형태로 변형되거나 압축되어 보내지는데 이러한 과정
테스트 : 코드를 테스트하는 것
배포 : 코딩해서 빌드한 결과물을 사용자에게 전달하는 과정
컴파일러 : 기계어로 번역하는 작업을 미리 해놓는 것
인터프리터 : 반대로 한줄씩 그때마다 번역하는 것
CI/CD : 개발-빌드-테스트-배포까지의 전 과정을 자동화
하지만, 여기서 문제는 배포하는 시간동안 애플리케이션이 중단된다. 인턴과정에서 배웠던 가상화,이중화,로드밸런싱 등등은 모두 애플리케이션 및 서버가 중단되지 않아야하는 것에 중점을 두었다.
사용자가 서비스를 사용할 수 없는 시간을 최대한 줄이는것이 중요하기 때문에, 나온 개념이 무중단 배포!
무중단 배포 = 서비스를 중단하지 않고 배포하는 것
무중단 배포를 검색하면 가장 많이 나오는 웹 서버 소프트웨어는 바로, 세번째인 Nginx 이다.
이 블로그에 이해가 쉽게 작성되어있어서 글을 가져와봤다.
1. 사용자는 서비스 주소로 접속 (http의 경우 80 포트, https의 경우 443 포트)
2. Nginx는 사용자 요청을 받아 현재 연결된 Spring boot로 요청 전달
3. 두 번째 Spring boot는 연결되어 있지 않아 요청받지 못한다.
기존 프로젝트+Nginx 의 구조
이러한 배포 작업을 포함한 개발-빌드-테스트-배포의 자동화(CI/CD)로 보다 편리하게 개발 가능
참고링크