Service per VM

“Service per-VM” (VM당 서비스) 패턴은 마이크로서비스 아키텍처(MSA)의 배포 전략 중 하나로, 각 마이크로서비스를 독립적인 가상 머신(VM)에 배포하는 방식이다. 이 패턴의 주요 특징과 장단점을 자세히 살펴보겠습니다.

“Service per-VM” 패턴은 강력한 격리와 리소스 관리를 제공하지만, 리소스 오버헤드와 관리 복잡성 증가라는 대가가 따른다. 이 패턴은 높은 수준의 격리가 필요하거나 서비스 간 리소스 경쟁을 최소화해야 하는 경우에 적합하다.
그러나 리소스 효율성과 빠른 배포가 중요한 경우에는 다른 배포 패턴을 고려해볼 수 있다.

주요 특징

  1. 독립성: VM의 주요 이점은 각 서비스 인스턴스가 완벽히 독립되어 실행된다는 것이다. 각 서비스는 자체 VM에서 실행되므로 다른 서비스와 완전히 격리된다.
  2. 리소스 할당: 고정된 CPU와 메모리 리소스를 각 서비스에 할당할 수 있다. 이를 통해 각 서비스의 성능을 보장하고 예측 가능하게 만들 수 있다.
  3. OS 유연성: VM을 사용하면 macOS 또는 Windows 시스템에 Linux® 배포판을 실행하는 경우처럼 단일 컴퓨터에서 여러 운영 체제를 동시에 실행할 수 있다. 각 운영 체제는 호스트 하드웨어의 운영 체제나 애플리케이션과 동일한 방식으로 실행되므로 VM 내에서 에뮬레이션되는 최종 사용자 환경은 물리 머신에서 실행되는 실시간 운영 체제 환경과 거의 동일하다.

장점

  1. 격리성: 각 서비스가 독립적인 VM에서 실행되므로 한 서비스의 문제가 다른 서비스에 영향을 미치지 않는다.
  2. 확장성: 서비스를 가상 머신으로 배포할 때의 또 다른 큰 장점은 서비스의 구현 기술을 캡슐화할 수 있다는 것이다. 서비스가 VM으로 패키징되면 블랙박스가 된다. VM의 관리 API가 서비스 배포를 위한 API가 된다. 배포가 훨씬 더 간단하고 안정적으로 이루어진다.
  3. 리소스 관리: 각 VM에 필요한 만큼의 리소스를 할당할 수 있어 리소스 관리가 용이하다.
  4. 보안: VM 간의 강력한 격리로 인해 보안성이 향상된다.

단점

  1. 리소스 오버헤드: 한 가지 단점은 리소스 활용 효율성이 떨어진다는 점이다. 각 서비스 인스턴스에는 운영 체제를 포함한 전체 VM의 오버헤드가 있다. 또한, 일반적인 퍼블릭 IaaS에서는 VM이 고정된 크기로 제공되므로 VM의 활용도가 낮을 수 있다. 또한, 퍼블릭 IaaS는 일반적으로 사용 중인지 유휴 상태인지에 관계없이 VM에 대해 요금을 부과한다.
  2. 배포 속도: 이 접근 방식의 또 다른 단점은 일반적으로 새 버전의 서비스를 배포하는 속도가 느리다는 것이다. VM 이미지는 일반적으로 크기 때문에 빌드 속도가 느리다. 또한 VM은 일반적으로 크기 때문에 인스턴스화 속도가 느리다. 또한 일반적으로 운영 체제를 시작하는 데 시간이 다소 걸린다.
  3. 관리 복잡성: 가상 머신당 서비스 인스턴스 패턴의 또 다른 단점은 일반적으로 사용자(또는 조직의 다른 누군가)가 차별화되지 않은 많은 무거운 작업을 담당한다는 것이다. 가상 머신 구축 및 관리의 오버헤드를 처리하는 Boxfuse와 같은 도구를 사용하지 않는 한, 이 작업은 모두 사용자의 책임이다. 이 필요하지만 시간이 많이 걸리는 작업은 핵심 비즈니스에 방해가 된다.

구현 방법

  1. VM 이미지 생성:
    • 각 마이크로서비스를 포함한 VM 이미지를 생성한다.
    • 서비스의 실행 파일, 라이브러리, 종속성, 운영 체제 설정 등을 VM 이미지에 포함시킨다.
  2. VM 배포:
    • 생성된 VM 이미지를 클라우드 인프라나 데이터 센터에 배포한다.
    • 각 VM은 독립적으로 실행되며, 필요한 경우 자동 확장 및 부하 분산 설정을 구성한다.
  3. 모니터링 및 관리:
    • 각 VM의 상태, 성능, 로그 등을 모니터링하여 안정적인 운영을 유지한다.
    • 운영 체제 및 애플리케이션의 보안 패치와 업데이트를 정기적으로 수행한다.

예시

예를 들어, 전자상거래 애플리케이션에서 주문 관리 서비스와 결제 서비스를 각각 독립적인 VM으로 배포할 수 있다. 이렇게 하면 주문 관리 서비스의 업데이트나 장애가 결제 서비스에 영향을 주지 않으며, 각 서비스를 독립적으로 확장하거나 유지보수할 수 있다.


참고 및 출처