On Monday, April 27, before the start of SATURN 2015, a small group of 16 software engineers met to explore ideas around the emerging microservices architecture trend. Microservices have seen a rapid rise in popularity over the past year or so, and we thought it would make an interesting topic of discussion. Sam Newman’s book covers significant ground and yet there there are still many nuances that we don’t fully understand.
You can read the raw notes and a summary of our findings on the workshop GitHub page. Here’s a snapshot of some of the “ah-ha!” moments that came out of our discussions.
- Microservices is a specific variant of Service-Oriented Architecture (SOA) that aims to promote high delivery velocity and agility.
- Decentralized design authority enforced through tooling and enabled by an “architect as coach” seems to be essential to the success of microservices implementations.
- Microservice size is a function of team size, cost tolerances, required (desired) agility, and knowledge of the domain model the services will represent.
- Process, culture, and tools are key enablers for success of microservices.
- The choice to use microservices is less technical and more driven by business. Promoting agility, delivery speed, innovation, scalability, and independence can be a significant business advantage but this comes at a cost. Do the benefits make sense relative to the costs to achieve them
- Microservices transform traditionally static properties into dynamic properties that require reasoning about or observing the running system. As an example, given the loosely coupled and emergent nature of microservices the notion of “version” of an application comprising many services only manifests at run time.
The workshop was facilitated by Michael Keeling and George Fairbanks with significant guidance from Dennis Mancl in helping plan the workshop. Participants included Len Bass, Simon Brown, Amine Chigani, Tom Citriniti, George Fairbanks, Gregor Hohpe, Jim Hurne, Michael Keeling, Jon Keneyer, Eianar Landre, Dennis Mancl, Jorn Olmheim, Mary Shaw, Rebecca Wirfs-Brock, Joe Yoder, and Olaf Zimmerman.
All workshop materials are hosted on GitHub in the spirit of free and open collaboration among the broader software engineering community. If this topic is interesting to you, you are welcome to re-use or remix the workshop materials to run your own workshop on the topic. All we ask is that you let us know what you’ve learned and send us a link so we can share your outcomes with the broader community!
– Michael Keeling