Microservice-Based Agile Architectures: An Opportunity for Specialized Niche Technologies

  • Stefano Munari
  • Sebastiano Valle
  • Tullio Vardanega
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 10873)


This work discusses lessons learned from the development of a medium-size peer-to-peer distributed software system centered around asynchronous computation and message-/stream-oriented communication. Albeit foreign to traditional high-integrity systems, these architectural characteristics are making rapid headway into large-scale mission-critical and business-critical software infrastructures, thus becoming candidate solutions for the design of reliable systems. We wanted our software architecture to be agile, that is, versatile, easy to evolve and modify, and resilient enough not to degrade across changes. To meet this goal, we adopted the microservices style, which afforded us the choice of best-of-breed technology to implement the individual system parts. Embracing heterogeneity while seeking agility however challenged our ability to design effective solutions for component coordination and interaction, as well as the goodness of fit of the used technologies for system integration and testing. Reflecting on our experience, we distill the lessons we learned in terms of architectural patterns, highlighting the pros and cons we saw in the microservices style and in our technologies selection.


Microservices architecture Distributed systems Agility Scalability Heterogeneity Patterns 


  1. 1.
    Vashi, S., Ram, J., Modi, J., Verma, S., Prakash, C.: Internet of things (IoT): a vision, architectural elements, and security issues. In: 2017 International Conference on I-SMAC (IoT in Social, Mobile, Analytics and Cloud) (I-SMAC), pp. 492–496, February 2017Google Scholar
  2. 2.
    Charette, R.N.: Why software fails [software failure]. IEEE Spectr. 42(9), 42–49 (2005). Scholar
  3. 3.
    Blair, M., Obenski, S., Bridickas, P.: Patriot missile defense: Software problem led to system failure at Dhahran. Report GAO/IMTEC-92-26 (1992)Google Scholar
  4. 4.
    Myers, G.J., Sandler, C., Badgett, T.: The Art of Software Testing. Wiley, New York (2011)Google Scholar
  5. 5.
    Beck, K.: Extreme Programming Explained: Embrace Change. Addison-Wesley Professional, Boston (2000)Google Scholar
  6. 6.
    Beck, K.: Test-Driven Development: By Example. Addison-Wesley Professional, Boston (2003)Google Scholar
  7. 7.
    Bass, L., Weber, I., Zhu, L.: DevOps: A Software Architect’s Perspective. Addison-Wesley Professional, Boston (2015)Google Scholar
  8. 8.
    Martin, R.C.: Clean Architecture: A Craftsman’s Guide to Software Structure and Design. Prentice Hall, Englewood Cliffs (2017)Google Scholar
  9. 9.
    Basiri, A., Behnam, N., de Rooij, R., Hochstein, L., Kosewski, L., Reynolds, J., Rosenthal, C.: Chaos engineering. IEEE Softw. 33(3), 35–41 (2016)CrossRefGoogle Scholar
  10. 10.
    Pääkkönen, P., Pakkala, D.: Reference architecture and classification of technologies, products and services for big data systems. Big Data Res. 2(4), 166–186 (2015). Scholar
  11. 11.
    Maurer, B.: Fail at scale. Queue 13(8), 30:30–30:46 (2015). Scholar
  12. 12.
    Simioni, A., Vardanega, T.: In pursuit of architectural agility: experimenting with microservices. Submitted to IEEE International Conference on Services Computing (2018)Google Scholar
  13. 13.
    Fielding, R.T.: Architectural styles and the design of network-based software architectures. Ph.D. thesis (2000). aAI9980887Google Scholar
  14. 14.
    Abbott, M.L., Fisher, M.T.: The Art of Scalability: Scalable Web Architecture, Processes, and Organizations for the Modern Enterprise. Pearson Education (2009)Google Scholar
  15. 15.
    Hohpe, G., Woolf, B.: Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Addison-Wesley Professional, Reading (2004)Google Scholar
  16. 16.
    Goetz, B., Peierls, T.: Java Concurrency in Practice. Pearson Education (2006)Google Scholar
  17. 17.
    Armstrong, J.: Erlang. Commun. ACM 53(9), 68–75 (2010). Scholar
  18. 18.
    Hoare, C.A.R.: Communicating sequential processes. In: Hansen, P.B. (ed.) The Origin of Concurrent Programming, pp. 413–443. Springer, New York (1978). Scholar
  19. 19.
    Kreps, J., Narkhede, N., Rao, J., et al.: Kafka: a distributed messaging system for log processing. In: Proceedings of the NetDB, pp. 1–7 (2011)Google Scholar
  20. 20.
    Dobbelaere, P., Esmaili, K.S.: Kafka versus RabbitMQ: a comparative study of two industry reference publish/subscribe implementations: industry paper. In: Proceedings of the 11th ACM International Conference on Distributed and Event-Based Systems, DEBS 2017, pp. 227–238. ACM, New York (2017).
  21. 21.
    Burns, B., Grant, B., Oppenheimer, D., Brewer, E., Wilkes, J.: Borg, omega, and kubernetes. Commun. ACM 59(5), 50–57 (2016). Scholar

Copyright information

© Springer International Publishing AG, part of Springer Nature 2018

Authors and Affiliations

  • Stefano Munari
    • 1
  • Sebastiano Valle
    • 1
  • Tullio Vardanega
    • 1
  1. 1.Department of MathematicsUniversity of PaduaPadovaItaly

Personalised recommendations