마이크로서비스 기반 아키텍처는 각 서비스를 독립된 개별 산출물로 패키징하고 배포한다. 따라서 배포시 서비스 인스턴스는 신속하게 시작할 수 있는 환경을 고려해야 한다. MSA 기반 서비스는 아래와 같은 환경에서 배포를 결정할 수 있다.
기존의 온프레미스 환경
기존의 온레미스 환경에 마이크로서비스를 빌드하고 배포할 수는 있지만 여러 기술적인 어려움과 제약에 따른 어려움이 있어 이를 사용하는 조직은 거의 없다. 또한 기존의 온프레미스 환경은 서버 용량을 빠르게 늘릴 수 없고 마이크로서비스를 수평 확장하는 데 상당한 비용이 든다.
가상 머신 이미지
마이크로서비스의 주요 이점 중 하나는 확장하고 실패 이벤트를 받을 때 신속하게 마이크로서비스 인스턴스를 시작하고 종료할 수 있다는 것이다. 마이크로서비스를 가상 머신 이미지 환경에 패키징한다면 서비스의 여러 인스턴스를 신속하게 IaaS 형 클라우드에 배포하고 실행할 수 있다.
가상 컨테이너
가상 컨테이너는 가상 머신 이미지 기반의 마이크로서비스 배포를 자연스럽게 확장한 것이다. 서비스를 완전한 가상 머신에 배포하는 대신 도커 컨테이너로 서비스를 클라우드에 배포한다. 가상 컨테이너는 가상 머신 안에서 실행되며 가상 컨테이너를 활용하면 하나의 가상 머신을 같은 가상 머신 이미지를 공유하는 완전 자립현 프로세스로 분리할 수 있다. VM에 비해 컨테이너는 애플리케이션을 실행, 배포하는 과정이 가볍기 때문에 하나의 물리 서버에서 더 많은 애플리케이션을 구동시킬 수 있다.
클라우드에 기반을 둔 마이크로서비스는 새로운 가상 머신과 컨테이너를 빠르게 가동시킬 수 있다. 또한 사용량 만큼 비용을 지불하며 수평 확장이 쉬워진다 (서버와 서비스 인스턴스 추가). 또한 애플리케이션의 특정 기능에 문제가 생기더라도 다른 기능은 정상적으로 유지할 수 있다.
도커 컨테이너를 활용해 IaaS 기반 클라우드 공급자에 배포한다면 다음과 같은 이점을 얻을 수 있다.
간소화된 인프라스트럭처 관리
IaaS 솔루션를 이용하면 간단한 API 호출로 새로운 서비스를 시작하고 정지할 수 있다. 또한 IaaS 클라우드 솔루션은 사용한 만큼만 인프라 비용을 지불하면 된다.
수평 확장성
IaaS 솔루션을 사용하면 하나 이상의 서비스 인스턴스를 신속하고 간결하게 시작할 수 있다. 이 기능을 이용해 서비스를 재빨리 확장하고 장애가 난 서버를 우회할 수 있다.
지리적 분산을 이용한 중복성
IaaS 공급자는 대부분의 국가에 다수의 리전 (데이터센터)를 보유하므로 IaaS 클라우드 공급자가 마이크로서비스를 배포하면 데이터센터의 클러스터보다 더 높은 수준의 중복성을 얻을 수 있다.