Hacker News new | ask | show | jobs
by Lightbody 1145 days ago
We do something similar with Reclaim.ai:

It's one monolith Java repo, split into two major workloads that have the same runtime code but are configured differently. In our case, the two workflows are "api" and "jobs". This allows for operational issues on, say, jobs while still allowing user-facing APIs to be less likely to be impacted. The source code itself has many modules, but we deploy it as a single unified runtime.

We're very happy with this approach and so far have only been tempted a few times to break out micro/mini-services. I suspect we will eventually break out a few services, but by the time we do, it'll be for very good reasons.

1 comments

When you deploy a new version does it go out to all nodes? Or are the distinct workloads versioned separately?
For now, it goes out to all nodes, though the pace/rollout is different. For our jobs cluster, it swaps them out pretty quickly. For our API cluster, it takes longer so that in-flight requests gracefully get handled by our load balancer before pulled out of the cluster rotation. So far that has worked well enough for us.