Suppose you have an organization where:
- Pull requests sit four weeks before making it into production
- QA inspection, as it were, if performed at all, is performed by a contracting team halfway around the world with 12-hour feedback delays
- There are few to no automated tests
- Various silos operate like warring factions
- No one can rebuild the main production database, and the database has a different schema in all environments
- There are outages every week, and this is just accepted as normal
- Releases are once-a-quarter in a good quarter
- Deployments are “artisanal” meaning every team does it differently, and some teams have multiple ways of deploying
- There is no observability and keeping the system running required managers spending nights, weekends, and holidays tinkering around on production servers
And so forth.
Microservices aren’t going to help this organization. Not yet anyway.
In fact, no technology is going to help this organization. You can’t fix people problems with technology. You shouldn’t try to “fix” people either. Ruthlessly fix and optimize systems, but respect people.
If you manage to get incentives aligned and allow saboteurs to go work some place where they’d be happier, then microservices will make it so that your codebase doesn’t fight against you in this new world.
Flow, Feedback, and Continuous Improvement are what make companies successful. Microservices is just one part Flow.