Skip to main content

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

  • Conference paper
  • First Online:
Reliable Software Technologies – Ada-Europe 2018 (Ada-Europe 2018)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 10873))

Included in the following conference series:

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    http://en.cppreference.com/w/cpp/thread/shared_mutex.

  2. 2.

    https://akka.io/.

  3. 3.

    https://elixir-lang.org/.

  4. 4.

    https://redis.io/.

  5. 5.

    https://www.rabbitmq.com/.

  6. 6.

    https://www.docker.com/.

  7. 7.

    https://docs.docker.com/engine/swarm/.

  8. 8.

    A Docker Engine is the OS-level service which handles the container runtime.

  9. 9.

    https://rancher.com/rancher-os/.

  10. 10.

    https://travis-ci.org/.

  11. 11.

    https://jenkins.io/.

References

  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 2017

    Google Scholar 

  2. Charette, R.N.: Why software fails [software failure]. IEEE Spectr. 42(9), 42–49 (2005). https://doi.org/10.1109/MSPEC.2005.1502528

    Article  Google Scholar 

  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. Myers, G.J., Sandler, C., Badgett, T.: The Art of Software Testing. Wiley, New York (2011)

    Google Scholar 

  5. Beck, K.: Extreme Programming Explained: Embrace Change. Addison-Wesley Professional, Boston (2000)

    Google Scholar 

  6. Beck, K.: Test-Driven Development: By Example. Addison-Wesley Professional, Boston (2003)

    Google Scholar 

  7. Bass, L., Weber, I., Zhu, L.: DevOps: A Software Architect’s Perspective. Addison-Wesley Professional, Boston (2015)

    Google Scholar 

  8. Martin, R.C.: Clean Architecture: A Craftsman’s Guide to Software Structure and Design. Prentice Hall, Englewood Cliffs (2017)

    Google Scholar 

  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)

    Article  Google Scholar 

  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). https://doi.org/10.1016/j.bdr.2015.01.001

    Article  Google Scholar 

  11. Maurer, B.: Fail at scale. Queue 13(8), 30:30–30:46 (2015). http://doi.acm.org/10.1145/2838344.2839461

    Google Scholar 

  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. Fielding, R.T.: Architectural styles and the design of network-based software architectures. Ph.D. thesis (2000). aAI9980887

    Google Scholar 

  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. Hohpe, G., Woolf, B.: Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. Addison-Wesley Professional, Reading (2004)

    Google Scholar 

  16. Goetz, B., Peierls, T.: Java Concurrency in Practice. Pearson Education (2006)

    Google Scholar 

  17. Armstrong, J.: Erlang. Commun. ACM 53(9), 68–75 (2010). http://doi.acm.org/10.1145/1810891.1810910

    Article  Google Scholar 

  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). https://doi.org/10.1007/978-1-4757-3472-0_16

    Chapter  Google Scholar 

  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. 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). http://doi.acm.org/10.1145/3093742.3093908

  21. Burns, B., Grant, B., Oppenheimer, D., Brewer, E., Wilkes, J.: Borg, omega, and kubernetes. Commun. ACM 59(5), 50–57 (2016). http://doi.acm.org/10.1145/2890784

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Sebastiano Valle .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2018 Springer International Publishing AG, part of Springer Nature

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Munari, S., Valle, S., Vardanega, T. (2018). Microservice-Based Agile Architectures: An Opportunity for Specialized Niche Technologies. In: Casimiro, A., Ferreira, P. (eds) Reliable Software Technologies – Ada-Europe 2018. Ada-Europe 2018. Lecture Notes in Computer Science(), vol 10873. Springer, Cham. https://doi.org/10.1007/978-3-319-92432-8_10

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-92432-8_10

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-92431-1

  • Online ISBN: 978-3-319-92432-8

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics