2

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!

3 Answers3

1

It sounds like you want a suitable collective noun. I suggest you Google "collective nouns", to find numerous lists. Read some of the lists and pick a noun that you think is appropriate.

Alternatively, the term cooperative (or co-op for short) might be suitable if one of the defining characteristics of an instantiation collection of microservices is that they complement, or cooperate with, each other.

Ciaran McHale
  • 2,126
  • 14
  • 21
1

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.

ebullient
  • 1,250
  • 7
  • 16
0

I have used the term "complex" (as in the "mortgage risk" complex vs the "compliance" complex). It seemed unambiguous.

People also used the term within a project for deployed sets of microservices (e.g the production complex vs the test complex).