Sometimes, one good thing leads to another. This is what we experienced as we began developing applications for the cloud. To better take advantage of what this new platform had to offer, we also started moving towards a microservice-based architecture. Right away we noticed how well the microservices pattern fit our agile project approach.
We found that our user stories describing the business needs mapped very cleanly to one or more microservices. Dependencies between microservices helped prioritize the product backlog. The granularity of the interfaces also greatly aided to breaking down the work during sprint planning, which in turn helped us remove the overhead and risk associated with larger increments.
A key principle behind our agile methodology is to be able to deliver a complete functional capability that can be fully tested and accepted at the end of each sprint if possible. Often we could build out an entire microservice in a single sprint, which supported this goal nicely. This allows us to plan for planning and managing progress since we can verify delivery of each incremental deliverable at the end of every sprint.
The sprint reviews became more focused as we honed in on individual business capabilities, and the frequent iterations and prototyping provided a means of collaboration with users. Feedback from the sprint reviews were used to further refine the microservice implementation, which allowed us to respond quickly to our customer’s needs. Additionally, the frequent reviews helped ensure a high quality deliverable.
Since each team owned a given microservice in its entirety, there is less of a need for intra-team communication, resulting in fewer delays. This focus within each team also produced better design and code. Knowledge sharing across teams became more about the interfaces and less about the details of the implementation. We experienced a clear separation between the work of one team and another.
It has become very clear to us that architectural patterns can impact the project approach and vice versa. In the case of agile, we have found that the microservices pattern provides the ideal architecture.
Contact us to see how microservices puts the execution of our agile projects into high gear.