Great writeup, thanks! Questions:
Pepster
11

Thank you for the feedback!

Regarding common code. Here you can take at least two approaches:

  1. Use common code as 3rd party library. Common code sits in separate git repo and you use it as any other library (import, etc.) as binary or code.
  2. If you would like to be on “bleading edge” of your common code, i.e. adopt every change immediately, use git submodule approach (works fine with GitHub too). This approach a little bit tricky, but works as expected.

We find ourselves mostly using the first approach, but in some cases second approach is also useful.

We do use Docker repository per microservice. Most of our microservices are open source, so we use public DockerHub (which is free). We also have our own Docker registry, running on AWS, but it’s currently used as a mirror (for cache optimization mainly). You can setup your own private Docker registry (it’s pretty easy task, even in HA mode) or will need to pay to DockerHub, JFrog, CoreOS Quay.io or other commercial Docker registry available.