5 ms·
> With hundreds of commits trying to go out every day, probability that at least one would break something approached 1. Then everything had to be rolled back.
by stock_toaster 7y ago
> With hundreds of commits trying to go out every day, probability that at least one would break something approached 1. Then everything had to be rolled back. Getting unrelated concerns into separate deployable artifacts rescued our velocity.
Software tends to reflect the structure of the organization that creates it, so this makes sense to me. If you have multiple teams contributing to a stack, eventually it is easier to have the teams work on their own (micro-)service(s).
I recommend to most people that stacks should start out as monoliths though, and move to microservice architectures only when they encounter enough pain. I think starting out with microservices from the get-go just reduces initial velocity with little payoff until you hit a certain scale.
- andrewprock 7y agoI think you are missing the intermediate step of libraries. 1. monolith 2. libraries 3. services If you skip step 2, there is a high probability that the services you end up with are going to be just as disorganized as the monolith which is causing grief.
- stock_toaster 7y agoyup, agreed. I generally would consider your step2 as part of the lifecycle of a well architected monolith, but calling it out as a separate step is certainly clearer, and does reflect more of what I have seen "work well" in the real world too.