Microservices Resources and Positions
Updates: Blog post on Microservices Positions and Consolidated Definitions
Blog post on Microservice API Patterns (MAP) and pattern language writing
Positions: Overview and Evidence (for Position 3)
Three rather different positions can be observed, both online and in print:
- Microservices as a new architectural style competing with SOA and to be contrasted with it.
- Microservices as a synonym to SOA ("nothing new"), see e.g. this blog post and this one.
- Microservices as a substyle, variant, and/or implementation approach to SOA ("SOA done right"), see e.g. several positions from SEI SATURN 2015 microservices workshop.
In this Software Engineering Radio interview, James Lewis highlights the close connection from/to SOA (assuming that SOA is understood and done right). And in this goto 2014 presentation, Martin Fowler points out that it is fair to say that the microservices approach has been done under the name of SOA for at least a decade if not more (with the term SOA being too broad, and meaning different things to different people). In his SATURN 2017 keynote, Chris Richardson makes similar remarks and defines (micro-)services as loosely coupled and organized around business capabilities (which is very much in line with SOA introductions such as one in an OOPSLA tutorials given from 2005 to 2008).
A Jan./Feb. 2017 interview with James Lewis, Mike Amundsen and Nicolai Josuttis in IEEE Software, facilitated by the Insights department editors Cesare Pautasso and Olaf Zimmermann, contains a side bar that comes to similar conclusions. The article also discusses the relationship of Domain-Driven Design and microservices as well as other service design issues. Part 2 of the interview was published in the March/April issue and covers architectural and organizational concerns such as service composition, data integrity, and versioning.
Finally, position 3 from above is also supported by the findings in our SummerSoC 2016 paper published in Springer Computer Science - Research and Development (online access, authors copy). The paper compares definitions and identfies seven microservices tenets:
- Fine-grained, message-based remote APIs exposing independently deployable services,
- Business-driven development (e.g. domain-driven design, behaviour-driven development),
- IDEAL cloud application architectures,
- Polyglot programming and persistence,
- Lightweight container deployment,
- Decentralized continuous delivery, and
- DevOps with holistic service monitoring.
These seven tenets are featured in this presentation from Microservices 2019 and this one given at VSS 2019. In addition, our CSCUBS 2017 keynote presentations discusses loose coupling and service granularity and reports on related research and development effort as well as miscellaneous projects lessons learned. An earlier and shorter version of this talk was presented as an invited talk at the HPI FutureSoC 2017 conference. The most recent version of the 7-tenet definition of microservices can be found in a presentation of Context Mapper, our DDD modeling tool, at JUG CH (slide 6 in this deck).
Resources: Introductions and Definitions
You can start with the following online articles and post:
- J. Lewis and M. Fowler, Microservices - a definition of this new architectural term (but also listen to their presentations and interviews)
- C. Richardson, Microservices: Decomposing Applications for Deployability and Scalability (InfoQ) and Introduction to Microservices (NGINX)
- Microservices in Practice, Part 1: Reality Check and Service Design, IEEE Software, 2017.
- Microservices in Practice, Part 2: Service Integration and Sustainability, IEEE Software, 2017.
- A Gartner definition is referenced in this TM Forum Open API discussion.
Reflection: What are the new facets in these definitions (in terms of business and design goals, principles, patterns, practices, and technologies)? Which of the above positions do the articles and definitions support?
- Netflix (on the NGINX site and on their TechBlog)
- The Guardian
- See Wikipedia page on Microservices for more
Exercise: Can you find the SOA principles and microservices tenets that have been applied? What are the business drivers and contexts?
Presentations, Articles and Books (not up to date)
- S. Newman, Building Microservices – Designing Fine-Grained Systems, O’Reilly, 2015
- M. Amundsen et al, Microservices Architecture – Aligning Principles, Practices and Culture, O’Reilly, 2016
- B. Familiar, Modern Apps and Microservices
Many more articles can be found e.g. at InfoQ and DZone. Note: Be aware of "microservicification" of earlier material, as well as the "trend surfing" phenomenon. Has semantic diffusion occurred again? Make sure to ask the right questions to decide whether microservices are for you, for example the ones listed here.
Research articles on microservices co-authored by us include:
- Pardon, G., Pautasso, C., Zimmermann, O.: Consistent Disaster Recovery for Microservices: the Backup, Availability, Consistency (BAC) Theorem. In: IEEE Cloud Computing, 5(1) 2018, pp. 49-59.
- Pahl, C.; Jamshidi, P.; Zimmermann, O.: Architectural Principles for Cloud Software. In: ACM Trans. on Internet Technology (TOIT), 18 (2) 2018, pp. 17:1-17:23.
- Furda, A.; Fidge, C.; Zimmermann, O.; Kelly, W.; Barros, A.: Migrating Enterprise Legacy Source Code to Microservices: On Multitenancy, Statefulness, and Data Consistency. In: IEEE Software, 35 (3) 2018, pp. 63-72.
- Pautasso, C.; Zimmermann, O.: The Web as a Software Connector. Integration Resting on Linked Resources. In: IEEE Software, 35 (1) 2018, pp. 93-98.
- Neri D., Soldani, J., Zimmermann, O., Brogi, A: Design Principles, Architectural Smells and Refactorings for Microservices. A Multivocal Review. In: SICS Software-Intensive Cyber-Physical Systems (Springer 2019), 2019.
Open sourced: Microservice API Patterns and Microservices Domain-Specific Language (MDSL).
Related Research Venues (not up to date)
- Microservices 2019 was a hybrid event bringing together practitioners and academics (IFS keynote, MAP overview paper in postproceedings). The CFP of the 2020 edition can be found here. There also is a microservices community.
- SummerSoC focuses on all things service orientation (and cloud computing).
- The European Conference on Service-Oriented and Cloud Computing, ESOCC, does so too.
SOA and microservices are also welcome topics at general software architecture conferences such as ECSA and ICSA. Have a look a the call for papers (presentations,tutorials) of the industry track!
More Information and Related Topics
- Microservice Prerequisites and other microservices material on M. Fowler's bliki
- DZone RefCard, https://dzone.com/refcardz/getting-started-with-microservices
- InfoQ content, https://www.infoq.com/microservices/
- µCon: The Microservices Conference (many slide casts)
- API Design and Management advice, see this page