Working in a high-performance organization
One of my must read books is Accelerate: Building and Scaling High Performance Organizations. The authors found that developers in high-performance organizations that practice continuous delivery can:
- Make large-scale changes to the design of their system without the permission of somebody outside the team
- Make large-scale changes to the design of their system without depending on other teams to make changes in their systems or creating significant work for other teams
- Complete their work without communicating and coordinating with people outside their team
- Deploy and release their product or service on demand, regardless of other services it depends upon
- Do most of their testing on demand, without requiring an integrated test environment
- Perform deployments during normal business hours with negligible downtime
Forsgren PhD, Nicole. Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations . IT Revolution Press. Kindle Edition.
These findings are significant since they require an architecture that is loosely coupled, testable and deployable. It’s likely that a small monolith will have these characteristics. However, as the application and its team grows it’s increasingly likely that the microservice architecture is a better fit. In other words, you will start with a monolith and then refactor to microservices.