【Design Pattern】Microservices - Service Instance per Host Pattern

Posted by 西维蜀黍 on 2021-06-29, Last Modified on 2022-12-10

Context

You have applied the Microservice architecture pattern and architected your system as a set of services. Each service is deployed as a set of service instances for throughput and availability.

Problem

How are services packaged and deployed?

Forces

  • Services are written using a variety of languages, frameworks, and framework versions
  • Each service consists of multiple service instances for throughput and availability
  • Service must be independently deployable and scalable
  • Service instances need to be isolated from one another
  • You need to be able to quickly build and deploy a service
  • You need to be able to constrain the resources (CPU and memory) consumed by a service
  • You need to monitor the behavior of each service instance
  • You want deployment to reliable
  • You must deploy the application as cost-effectively as possible

Solution

Deploy each single service instance on its own host

Examples

Resulting context

The benefits of this approach include:

  • Services instances are isolated from one another
  • There is no possibility of conflicting resource requirements or dependency versions
  • A service instance can only consume at most the resources of a single host
  • Its straightforward to monitor, manage, and redeploy each service instance

The drawbacks of this approach include:

Reference