3

Looking for advice in how to do release management of microservices built with Spring Boot.

Most projects I've worked use the release plugin (maven) to create tags as well as to release maven projects (jar, war, rpm). Usually, this relies on the maven parent/child relationship for all sub-projects (jars, wars) during the release process (monolith source code, all living in a single git repository). I'm wondering how do people maintain different boot projects (microservices) and make releases.

The way I see it, the following are possible strategies:

  1. One Spring Boot project (microservice maven project) per git repository so that releases are managed independently.
  2. A Multi-Module maven project with each module being a microservice. All submodules (microservices) will have to be released together. The parent pom will have to use a Boot's parent pom.
  3. Rely on the maven-release-plugin ability to release only certain sub-modules based on a release. This will make each maven sub-module have different versions (potentially).

What has your team found useful? I like Boot's programming model, but I'm hopeful I can use a release strategy that is consistent with Boot model of keeping things simple.

Alberto
  • 801
  • 6
  • 10
  • For me only 1 is a valid point. If you work like in point 2, then there is no point in doing microservices, if you have to or want to release them all together. – dunni Oct 08 '16 at 12:55
  • I agree, however I suspect that this is going to grow as micro services are added, thus making microservices release management complicated. Lot's of integration testing and regression testing. – Alberto Oct 08 '16 at 16:16
  • Of course it will do. That's a drawback of a microservice architecture, and you should be sure that you can handle it (i.e. you should have a highly automated infrastructure in place). – dunni Oct 08 '16 at 17:12
  • Thanks @dunni for the comment – Alberto Oct 21 '16 at 20:12
  • Have a look also at https://stackoverflow.com/questions/27865238/parent-pom-and-microservices – Grigory Kislin May 26 '18 at 12:18

1 Answers1

1

Just to close the loop on this, I'm using option 1. While having multiple repositories may seem like a lot, implementing a microservices architecture precludes a good devops process to make this release management process simpler.

Alberto
  • 801
  • 6
  • 10