Live data from Hacker News

Ask HN: How do you keep track of releases/deployments of dozens micro-services?

news.ycombinator.com

1–10 of 140 posts

Re: Ask HN: How do you keep track of releases/deployments of dozens micro-services?

#4
We just made all the microservices into one big monorepo and we deploy all at the same time.

To be honest we tried to avoid the monorepo but it was hellish. Maybe if each microservices was larger and our team was larger but then are they microservices any more?

Re: Ask HN: How do you keep track of releases/deployments of dozens micro-services?

#5
I'm curious to see how micro service management evolves over time and learn whether or not it will become viable for small companies. Hopefully one day its as cheap as writing a function is.

As it stands, with what I've seen and heard about microservices, I'd say the best way to deal with micro service anything is to use a monolith 90% of the time and for the rest of the time make sure your micro service could stand as it's own SAAS if given enough love.

Not a direct solution to your problem but might be an indirect one.

Re: Ask HN: How do you keep track of releases/deployments of dozens micro-services?

#6
post #4

We just made all the microservices into one big monorepo and we deploy all at the same time. To be honest we tried to avoid the monorepo but it was hellish. Maybe if each microservices was larger and our team was larger but then are they microservices any more?

Microservice is a misnomer; it should have a responsibility, but that could be 10 lines of code or 10 million.

Anyway, it sounds like you have a distributed monolith. If you cannot maintain and deploy a microservice independently, it should not be a microservice.

Re: Ask HN: How do you keep track of releases/deployments of dozens micro-services?

#8
My usual setup is pretty simple with each service in its own git repository with a Gitlab pipeline:

  * build code
  * run tests (unit + integration using database)
  * build docker image
  * push to gitlab registry
  * deploy to staging k8s environment by using a custom image that just templates a .yml and does `kubectl apply` against the staging cluster
  * optional extra "deploy to production" that works in the same way but is triggered with a manual button click in the pipeline.
I don't do canary deploys or anything. Just deploy to staging, and if it works, promote to production.

For some projects I have "staging test scripts" which I can run from my devmachine or CI that check some common scenarios. The test scripts are mostly blackbox using an HTTP client to perform a series of requests and assert responses. (signup flow scenario for example)

I would like to move to a monorepo, but I have not yet figured out an easy way to have a separate pipeline for each service that is only triggered when that service has changed.

edit: formatting

Re: Ask HN: How do you keep track of releases/deployments of dozens micro-services?

#9
post #4

We just made all the microservices into one big monorepo and we deploy all at the same time. To be honest we tried to avoid the monorepo but it was hellish. Maybe if each microservices was larger and our team was larger but then are they microservices any more?

+1 to this. In our case we say "deploy all" but use Zim[1] to automatically determine which services have associated changes. This keeps the overall deploy quick.

This is comparable to CloudFormation or Terraform in terms of determining whether something is up-to-date, but more general purpose.

[1] https://github.com/fugue/zim/

Re: Ask HN: How do you keep track of releases/deployments of dozens micro-services?

#10
Frankly, we don't do a great job of it. We have some Ansible deploying to OpenShift via openshift applier, that gets run from some Jenkins jobs. We use a form of Git Flow to do branching and tag releases. It's messy.

I've been looking at Sentry for this, recently. They have a specific feature for tracking releases (and even relating them to errors vs. commits) which looks very interesting. Haven't tried it yet though.

Post reply on HN