Search code examples
servicedeploymentconfigurationmicroservicesvocabulary

What would be a good/correct term to designate a group of microservices?


I am opening this topic looking for an advice to solve/help in the following problem:

  • I am currently working with other people on a project with a microservices architecture, using cloud computing.
  • There are 6 different microservices, and there are some couples of microservices that are not compatible, therefore not able of being instantiated within the same machine.
  • Each microservice has a version number.
  • In order to launch one or more new instances of any microservice, we have to define which microservices will run on this new machine, via a static configuration.
  • This static configuration, that we call so far as a "deploy" contains the microservices that are being deployed, and the version of each microservice. (ex: (XY,[(X,v1),(Y,v2)]) - X and Y are microservices, and the XY deploy instantiates version 1 of X and version 2 of Y)
  • Those "deploys" also have their own version number. Altering the version number of a microservice within a deploy requires altering the version of any "deploy" containing the microservice. (ex: (XY,v1,[(X,v1),(Y,v2)]) and (XY,v2,[(X,v1),(Y,v3)]))

The question is: what would be a correct, or at least, a good term to refer to this entity that I have previously called a "deploy"?

Many developers are writing programs around our architecture and using different names for such entity, which causes syntaxic and semantic incompatibility inside our team.

Of those different names, all have pros and cons:

  • deploy: makes sense because you are deploying all the microservices in the list. However, the term deploy already designate another part of our process, and there could be some over utilization of the same term. (Deploying the XY deploy will deploy microservices X and Y in a machine)
  • cluster: good name for a group of things, but you can deploy multiple machines from a configuration, and the term cluster already applies to this group of machines.
  • service: a service would be a group of microservices. Makes sense, but many pieces of codes refer to a microservice as 'service', and that could lead to a confusion. (def get_version(service) - Is he talking about a service or a microservice?)

Does any of you could give us any opinion or enlightenment on the question? Thanks!


Solution

  • You might take a hint from the 12-factor App, and call them releases (http://12factor.net/build-release-run)

    You then deploy a versioned release.