Abstract
Some microservices proponents claim that microservices form a new architectural style; in contrast, advocates of service-oriented architecture (SOA) argue that microservices merely are an implementation approach to SOA. This overview and vision paper first reviews popular introductions to microservices to identify microservices tenets. It then compares two microservices definitions and contrasts them with SOA principles and patterns. This analysis confirms that microservices indeed can be seen as a development- and deployment-level variant of SOA; such microservices implementations have the potential to overcome the deficiencies of earlier approaches to SOA realizations by employing modern software engineering paradigms and Web technologies such as domain-driven design, RESTful HTTP, IDEAL cloud application architectures, polyglot persistence, lightweight containers, a continuous DevOps approach to service delivery, and comprehensive but lean fault management. However, these paradigms and technologies also cause a number of additional design choices to be made and create new options for many “distribution classics” type of architectural decisions. As a result, the cognitive load for (micro-)services architects increases, as well as the design, testing and maintenance efforts that are required to benefit from an adoption of microservices. To initiate and frame the buildup of architectural knowledge supporting microservices projects, this paper compiles related practitioner questions; it also derives research topics from these questions. The paper concludes with a summarizing position statement: microservices constitute one particular implementation approach to SOA (service development and deployment).
Similar content being viewed by others
Notes
This workshop was organized and primarily attended by practicing architects and software architecture thought leaders (rather than service-oriented computing researchers or microservices advocates).
Articles that are rooted in actual project experience, but not peer-reviewed and published in academic venues were considered to be relevant and eligible for the literature review.
The rationale for the selection of these two particular sources is a) the generality and breadth of the discussions and b) their popularity.
The above list is (roughly) ordered by phases in the software lifecycle; individual questions progress from abstract to concrete and from a more logical to a more physical view. The questions address practitioners with microservices experience (“you”) so that they can be used in interviews and assessments, e.g., when evaluating offerings w.r.t. maturity and vision.
This topic was for instance discussed in an ICWE 2016 WS-REST (un-)panel; the session notes are available at https://github.com/apiacademy/WSREST2016/wiki/Olaf-Zimmermann.
Assembly is a deliberately neutral term; related terms that were established earlier include service composition, business process management, and even workflow management.
Progress has been made in recent years; functionally rich (but sometimes cumbersome to use) various proprietary and open source package managers and integration servers are now available for programming languages and platforms such as Java, Ruby, Scala, and Linux.
References
Allamaraju S (2008) Describing RESTful applications. http://www.infoq.com/articles/subbu-allamaraju-rest. Accessed 29 June 2016
Cockroft A (2014) Migrating to microservices. http://www.infoq.com/presentations/migration-cloud-native. Accessed 29 June 2016
Evans E (2003) Domain-driven design: tackling complexity in the heart of software, 1st edn. Addison-Wesley Professional, Reading
Fairbanks G, Keeling M (2015) Microservices workshop at SEI SATURN 2015. https://github.com/michaelkeeling/SATURN2015-Microservices-Workshop. Accessed 29 June 2016
Fowler M (2002) Patterns of enterprise application architecture, 1st edn. Addison-Wesley Professional, Boston
Fowler M (2014) Microservices prerequisites. http://martinfowler.com/bliki/MicroservicePrerequisites.html. Accessed 29 June 2016
Giamas A (2016) From monolith to microservices, Zalando’s Journey. http://www.infoq.com/news/2016/02/Monolith-Microservices-Zalando. Accessed 29 June 2016
Haberle T, Charissis L, Fehling C, Nahm J, Leymann F (2015) The connected car in the cloud: a platform for prototyping telematics services. IEEE Softw 32(6):11–17
Hohpe G, Woolf B (2003) Enterprise integration patterns: designing, building, and deploying messaging solutions, 1st edn. Addison-Wesley Professional, Boston
Hüttermann M (2012) DevOps for developers (expert’s voice in Web development), 2012th edn. Apress, New York City
Jones S (2014) Microservices is SOA, for those who know what SOA is. http://service-architecture.blogspot.ch/2014/03/microservices-is-soa-for-those-who-know.html. Accessed 29 June 2016
Josuttis NM (2007) SOA in practice: the art of distributed system design (theory in practice), 1st edn. O’Reilly Media, Sebastopol, CA
Julisch K, Suter C, Woitalla T, Zimmermann O (2011) Compliance by design—bridging the chasm between auditors and IT architects. Comput Secur 30(6–7):410–426
Kruchten P (1995) The 4 + 1 view model of architecture. IEEE Softw 12(6):42–50
Kruchten P (2013) Agile architecture, blog post (with links to additional information). http://philippe.kruchten.com/2013/12/11/agile-architecture/. Accessed 29 June 2016
Lewis J, Fowler M (2014) Microservices—a definition of this new architectural term. http://martinfowler.com/articles/microservices.html. Accessed 29 June 2016
Little M (2015) SOA versus microservices? http://www.infoq.com/news/2015/02/special-microservices-mark-litle. Accessed 29 June 2016
Loftis H (2016) Why microservices matter. https://blog.heroku.com/archives/2015/1/20/why_microservices_matter. Accessed 29 June 2016
Manes AT (2009) SOA is dead; long live services. http://apsblog.burtongroup.com/2009/01/soa-is-dead-long-live-services.html. Accessed 29 June 2016
Meanjs (2014) Open-source full-stack solution for MEAN applications. http://meanjs.org/. Accessed 29 June 2016
Murer S, Hagen C (2014) Fifteen years of service-oriented architecture at Credit Suisse. IEEE Softw 31(6):9–15
Newman S (2015) Building microservices, 1st edn. O’Reilly Media, Sebastopol, CA
Nilsson J (2009) Chunk cloud computing. http://jimmynilsson.com/blog/posts/CCC.pdf. Accessed 29 June 2016
OASIS (2011) Service component architecture. http://www.oasis-opencsa.org/sca. Accessed 29 June 2016
Richardson C (2014) Microservices: decomposing applications for deployability and scalability. https://www.infoq.com/articles/microservices-intro. Accessed 29 June 2016
Rotem-Gal-Oz A (2014) Services, microservices, nanoservices—oh my! http://arnon.me/2014/03/services-microservices-nanoservices/. Accessed 29 June 2016
Spolsky J (2008) Architecture astronauts take over. http://www.joelonsoftware.com/items/2008/05/01.html. Accessed 29 June 2016
Steinacker G (2015) Otto case study. https://dev.otto.de/author/gsteinacker/. Accessed 29 June 2016
Strumpflohner J (2015) Notes and thoughts on Martin Fowler’s talk about microservices at XConf. http://juristr.com/blog/2015/01/notes-microservices-fowler-xconf/. Accessed 29 June 2016
Torres F (2015) Context is king: what’s your software’s operating range? IEEE Softw 32(5):9–12
Wähner K (2015) Do good microservices architectures spell the death of the enterprise service bus? https://www.voxxed.com/blog/2015/01/good-microservices-architectures-death-enterprise-service-bus-part-one/. Accessed 29 June 2016
Wiggins A (2012) The twelve-factor app. http://12factor.net/. Accessed 29 June 2016
Zimmermann O (2009) An architectural decision modeling framework for service-oriented architecture design. Ph.D. thesis, University of Stuttgart
Zimmermann O, Milinski S, Craes M, Oellermann F (2004) Second generation web services-oriented architecture in production in the finance industry. In: Companion to the 19th annual ACM SIGPLAN conference on object-oriented programming, systems, languages, and applications. ACM, pp 283–289
Zimmermann O, Wegmann L, Koziolek H, Goldschmidt T (2015) Architectural decision guidance across projects—problem space modeling, decision backlog management and cloud computing knowledge. In: 12th working IEEE/IFIP conference on software architecture (WICSA). IEEE Computer Society, pp 85–94
Acknowledgements
The author would like to thank Jonas Biedermann, Simon Brown, Wolfgang Giersche, Gregor Hohpe, Hansjörg Huser, Oliver Kopp, Frank Leymann, Daniel Lübke, Cesare Pautasso, Gerald Reif, Mirko Stocker, the attendees of the SEI SATURN 2015 workshop on microservices as well as the anonymous peer reviewers of and paper presentation/poster session attendees at SummerSoC 2016 for inspiring discussions and/or thoughtful comments on earlier versions of this article. The author would also like to thank James Lewis for the constructive and inspiring discussion following his ICWE 2016 keynote, which confirmed the SOA vs. microservices positioning presented in this paper, which had been accepted for publication previously.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Zimmermann, O. Microservices tenets. Comput Sci Res Dev 32, 301–310 (2017). https://doi.org/10.1007/s00450-016-0337-0
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00450-016-0337-0