서비스 배포 패턴
애플리케이션 배포 작업은 모놀리스도 늘 쉬운 것은 아니지만, 배포할 애플리케이션이 하나밖에 없기 때문에 무척 직관적입니다. 물론 부하 분산기 뒷면에 애플리케이션 인스턴스를 여러 개 띄워 놓고 다중화하는 작업은 필요하죠.
마이크로서비스 애플리케이션은 다양한 언어와 프레임워크로 구현된 수십~수백 개의 서비스로 이루어져 있기 때문에 배포 작업이 훨씬 더 복잡하고 관리할 가동부(moving part)가 상당히 많습니다. 그래서 그림 1-15의 배포 패턴을 활용해야 합니다.
예전에는 보통 언어에 특정한 패키징 포맷(예: WAR 파일)으로 애플리케이션을 수동 배포했습니다. 하지만 이런 식으로는 마이크로서비스 아키텍처가 오래 버틸 수 없습니다. 고도로 자동화한 배포 인프라가 필요하죠. 개발자가 (CLI 또는 화면 인터페이스 형태의) 단순한 UI로 서비스를 배포/관리하고, 가상 머신(VM), 컨테이너, 서버리스 기술을 응용한 배포 플랫폼이 바람직합니다. 자세한 내용은 12장에서 다룹니다.
▲ 그림 1-15 마이크로서비스의 다양한 배포 패턴. 기존에는 흔히 서비스를 언어에 특정한 패키징 포맷으로 묶어 배포했다. 요즘은 크게 두 가지 방식으로 서비스를 배포한다. 첫째, VM이나 컨테이너에 배포한다. 둘째, 서버리스(서버가 없는) 방식이다. 그냥 서비스 코드만 업로드하면 서버리스 플랫폼이 코드를 알아서 실행한다. 서비스 배포 플랫폼은 서비스 배포/관리를 자동화한, 자체 서비스 플랫폼을 사용해야 한다