Skip to main content

Offer Single-Node Deployment

Context

Microservices are adopted. Microservices have infrastructure services or other microservices as dependencies.

Problem

  • Developers cannot test their implementations on their local machine or setting up the environment manually is complext and error prone
  • The application is not mature enough to justify the complexity caused by deploying to a distributed environment

Solution

Use deployment tools for a single-node environment to spawn local deployments for development or a first single-node deployment.

In literature, we found Docker Compose to be used broadly which simplifies single-node deployment. Instead of manually starting depending services, the developers can use the deployment file to easily spawn a deployment with one command. In multi-repo setups we advice to use artifact registries in order to easily access deployment artifacts of other services.

Most tools rely on declarative deployment configuration and can be checked into version control. They usually provide support to configure the virtualization of the network.

A disadvantage of a single-node deployment influences the performance of the deployment caused by the limited resources compared to a multi-node setup. For production environments, we advice to utilize more sophisticated cluster managers or clouds platforms.

Maturity

Proposed, to be evaluated.

Sources of Evidence

L3:

  • Context: case study
  • Docker image of each service in private docker registry
  • allowed to run whole system in Docker Compose with only one config file
    • => automated deployment on a single server
  • deployment to dev env is difficult!
    • developers must deploy dependent services to run on their machines
    • the problem occurred after they introduced dynamic service collaboration
    • Docker Compose as solution: put sample deployment description fil in each service
      • dependent service can easily deploy them from private Docker registry

L12:

  • Context: Migration steps in example system
  • Docker image of each service in private docker registry
  • allowed to run whole system in Docker Compose with only one config file
    • => automated deployment on a single server
  • Deployment in dev env is difficult!
    • need to deploy all dependent services
    • deployment complexities are not normal for novice developers
    • need for facility in place for setting up dev env with minimum effort
    • their case: Docker Compose to easily deploy dependent services from private registry

L15:

  • When too many containers placed on same host directly => poor performance
    • hypothesis: container initialization requires network and disk IO resources contributing to poor performance

L19:

  • Context: case study
  • place to store deployment scripts for different environments
  • Docker Compose used to instrument containers declaratively
  • easy to replicate or setup a new running environment as needed

L23:

  • new research topics:
    • performance isolation and characterization techniques when multiple microservices run on same container or same physical host

L24:

  • Context: benchmark requirements on open source microservice systems
    • Acme Air: no deployment
    • Spring Cloud Demo Apps: Docker-Compose for single-machine deployment
    • Socks Show: multiples; Docker Swarm, K8s, Mesos
    • MusicStore: no deployment

L45:

  • Context: automated architecture recovery on Acme Air
  • Docker-compose file used to extract service descriptors

L47:

  • Docker Compose allowed to easily deploy any number of services by composing in a text file an application made of several services
  • Docker Compose with webhook-based integration => best low coupling to complexity ratio
  • Docker Swarm will improve the ratio

LN44:

  • services of bank model can be run as separate process or docker containers
  • whole application can be deployed by compose tool
    • automates configuration and creation of containers
    • start up system with a single command

LM43:

  • Context: SLR findings about microservices in DevOps
  • S12 recommends Docker Compose tool
    • can work as staging, development, deployment and testing environment
    • smoothes deployment process in development environment
  • Docker compose used frequetly in industry

LM48:

  • Context: microservice migration describes an examples project (FX Core) and compares back to monolith
  • MSAs can be deployed to single host but would not contribute to scalabiltiy
  • Docker compose for local deployment
    • also deploys all dependencies
    • environment exactly the same as in production (where they use Docker Swarm cluster)