Microservices tenets

Agile approach to service development and deployment
Special Issue Paper

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).

Keywords

Architectural principles Architectural styles Domain-driven design IDEAL cloud application architectures DevOps Loose coupling Messaging Patterns REST Service-oriented computing SOA Systems management 

References

  1. 1.
    Allamaraju S (2008) Describing RESTful applications. http://www.infoq.com/articles/subbu-allamaraju-rest. Accessed 29 June 2016
  2. 2.
    Cockroft A (2014) Migrating to microservices. http://www.infoq.com/presentations/migration-cloud-native. Accessed 29 June 2016
  3. 3.
    Evans E (2003) Domain-driven design: tackling complexity in the heart of software, 1st edn. Addison-Wesley Professional, ReadingGoogle Scholar
  4. 4.
    Fairbanks G, Keeling M (2015) Microservices workshop at SEI SATURN 2015. https://github.com/michaelkeeling/SATURN2015-Microservices-Workshop. Accessed 29 June 2016
  5. 5.
    Fowler M (2002) Patterns of enterprise application architecture, 1st edn. Addison-Wesley Professional, BostonGoogle Scholar
  6. 6.
    Fowler M (2014) Microservices prerequisites. http://martinfowler.com/bliki/MicroservicePrerequisites.html. Accessed 29 June 2016
  7. 7.
    Giamas A (2016) From monolith to microservices, Zalando’s Journey. http://www.infoq.com/news/2016/02/Monolith-Microservices-Zalando. Accessed 29 June 2016
  8. 8.
    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–17CrossRefGoogle Scholar
  9. 9.
    Hohpe G, Woolf B (2003) Enterprise integration patterns: designing, building, and deploying messaging solutions, 1st edn. Addison-Wesley Professional, BostonGoogle Scholar
  10. 10.
    Hüttermann M (2012) DevOps for developers (expert’s voice in Web development), 2012th edn. Apress, New York CityGoogle Scholar
  11. 11.
    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
  12. 12.
    Josuttis NM (2007) SOA in practice: the art of distributed system design (theory in practice), 1st edn. O’Reilly Media, Sebastopol, CAGoogle Scholar
  13. 13.
    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–426CrossRefGoogle Scholar
  14. 14.
    Kruchten P (1995) The 4 + 1 view model of architecture. IEEE Softw 12(6):42–50CrossRefGoogle Scholar
  15. 15.
    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
  16. 16.
    Lewis J, Fowler M (2014) Microservices—a definition of this new architectural term. http://martinfowler.com/articles/microservices.html. Accessed 29 June 2016
  17. 17.
    Little M (2015) SOA versus microservices? http://www.infoq.com/news/2015/02/special-microservices-mark-litle. Accessed 29 June 2016
  18. 18.
    Loftis H (2016) Why microservices matter. https://blog.heroku.com/archives/2015/1/20/why_microservices_matter. Accessed 29 June 2016
  19. 19.
    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
  20. 20.
    Meanjs (2014) Open-source full-stack solution for MEAN applications. http://meanjs.org/. Accessed 29 June 2016
  21. 21.
    Murer S, Hagen C (2014) Fifteen years of service-oriented architecture at Credit Suisse. IEEE Softw 31(6):9–15CrossRefGoogle Scholar
  22. 22.
    Newman S (2015) Building microservices, 1st edn. O’Reilly Media, Sebastopol, CAGoogle Scholar
  23. 23.
    Nilsson J (2009) Chunk cloud computing. http://jimmynilsson.com/blog/posts/CCC.pdf. Accessed 29 June 2016
  24. 24.
    OASIS (2011) Service component architecture. http://www.oasis-opencsa.org/sca. Accessed 29 June 2016
  25. 25.
    Richardson C (2014) Microservices: decomposing applications for deployability and scalability. https://www.infoq.com/articles/microservices-intro. Accessed 29 June 2016
  26. 26.
    Rotem-Gal-Oz A (2014) Services, microservices, nanoservices—oh my! http://arnon.me/2014/03/services-microservices-nanoservices/. Accessed 29 June 2016
  27. 27.
    Spolsky J (2008) Architecture astronauts take over. http://www.joelonsoftware.com/items/2008/05/01.html. Accessed 29 June 2016
  28. 28.
    Steinacker G (2015) Otto case study. https://dev.otto.de/author/gsteinacker/. Accessed 29 June 2016
  29. 29.
    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
  30. 30.
    Torres F (2015) Context is king: what’s your software’s operating range? IEEE Softw 32(5):9–12CrossRefGoogle Scholar
  31. 31.
    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
  32. 32.
    Wiggins A (2012) The twelve-factor app. http://12factor.net/. Accessed 29 June 2016
  33. 33.
    Zimmermann O (2009) An architectural decision modeling framework for service-oriented architecture design. Ph.D. thesis, University of StuttgartGoogle Scholar
  34. 34.
    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–289Google Scholar
  35. 35.
    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–94Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2016

Authors and Affiliations

  1. 1.University of Applied Sciences of Eastern Switzerland (HSR FHO)RapperswilSwitzerland

Personalised recommendations