Skip to main content

The Aspect of Resilience in Microservices-Based Software Design

  • Conference paper
  • First Online:
Software Technologies: Applications and Foundations (STAF 2018)

Abstract

This paper discusses two approaches in microservices-based software design, from the perspective of failure possibility. The first approach accepts the fact that complex distributed software systems with many communicating components, such as microservices-based software, could fail (it is not important when), and is focused on the resilient software design. Resilient software design provides strategies and mechanisms for dealing with failures. While robust system just continues functioning in the presence of a failure, resilient system is prepared to adapt yourself while continuing functioning. Second approach is to try to build ideal software that will never fail. Lot of theory behind behavioral type systems is devoted to this – choreographic programming for example. Choreographic programming relies on choreographies as global descriptions of system implementations – behavior of all entities (e.g. microservices) in a system - are given in a single program. The first approach is in more tight relation with real software systems, while the second one has more theoretic background. In this paper authors discuss on the pros and cons of aforementioned methods and presents the ideas for its fusion (e.g. to use patterns for microservices).

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

Access this chapter

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Similar content being viewed by others

References

  1. Friedrichsen, U.: Patterns of resilience. https://www.slideshare.net/ufried/patterns-of-resilience. Accessed 23 Apr 2018

  2. Friedrichsen, U.: The 7 quests of resilient software design. https://www.slideshare.net/ufried/the-7-quests-of-resilient-software-design. Accessed 23 Apr 2018

  3. Monti, G.: Resilience Engineering #1: Robust Vs. Resilient (2011). http://www.activegarage.com/resilience-engineering-1-robust-resilient. Accessed 20 Apr 2018

  4. Department of Defense: FACT SHEET: Resilience of Space Capabilities. National Security Space Strategy, Washington (2015)

    Google Scholar 

  5. Taleb, N.: Antifragile: Things That Gain from Disorder. Random House, New York City (2012)

    Google Scholar 

  6. Hanmer, R.: Patterns for Fault Tolerant Software. Wiley, Hoboken (2013)

    Google Scholar 

  7. Merkow, M.S., Raghavan, L.: Secure and Resilient Software Development, 1st edn. Auerbach Publications, Boca Raton (2010)

    Book  Google Scholar 

  8. Mackey, A.: Building Resilient Systems. https://gooroo.io/GoorooTHINK/Article/16830/Building-Resilient-Systems/23368#.Wt2zeBuFPZ4. Accessed 23 Apr 2018

  9. Wasson, M.: Design patterns for microservices. https://azure.microsoft.com/en-us/blog/design-patterns-for-microservices/. Accessed 23 Apr 2018

  10. Hüttel, H., et al.: Foundations of session types and behavioural contracts. ACM Comput. Surv. 49(1), 36 (2016). https://doi.org/10.1145/2873052. Article no. 3

    Article  Google Scholar 

  11. Visser, E., Benaissa, Z., Tolmach, A.: Building program optimizers with rewriting strategies. In: Proceedings of the Third ACM SIGPLAN International Conference on Functional Programming (ICFP 1998), pp. 13–26. ACM, New York (1998). http://dx.doi.org/10.1145/289423.289425

  12. Giedrimas, V., Omanovic, S., Grigorenko, P.: The evolution of automated component-based software development tools: from structural synthesis of programs to behavioral types. In: 2017 International Conference on Information Science and Communications Technologies (ICISCT), Tashkent, pp. 1–6 (2017)

    Google Scholar 

  13. Poernomo, J.H., Crossley, J.N., Wirsing, M.: Adapting Proofs-as-Programs: The Curry-Howard Protocol. Springer, Heidelberg (2005). https://doi.org/10.1007/0-387-28183-5

    Book  MATH  Google Scholar 

  14. Gay, S., Ravara, A. (eds.): Behavioural Types: From Theory to Tools. River Publishers, San Francisco (2017). https://doi.org/10.13052/rp-9788793519817

    Book  Google Scholar 

  15. Wadler, P.: Propositions as types. Commun. ACM 58(12), 75–84 (2015)

    Article  Google Scholar 

  16. Cazanescu, V.E.: Programming via rewriting. In: 13th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (2010)

    Google Scholar 

  17. Fiadeiro, J.L., Lopes, A.: A model for dynamic reconfiguration in service-oriented architectures. Softw. Syst. Model. 12(12), 349–367 (2013)

    Article  Google Scholar 

  18. Dragoni, N., et al.: Microservices: yesterday, today, and tomorrow (2017). https://arxiv.org/abs/1606.04036. Accessed 28 Apr 2018

  19. Cruz-Filipe, L., Montesi, F.: Choreographies in Practice. In: Albert, E., Lanese, I. (eds.) FORTE 2016. LNCS, vol. 9688, pp. 114–123. Springer, Cham (2016). https://doi.org/10.1007/978-3-319-39570-8_8

    Chapter  Google Scholar 

  20. Giaretta, A., Dragoni, N., Mazzara, M.: Joining Jolie to Docker - Orchestration of Microservices on a Containers-as-a-Service Layer. CoRR abs/1709.05635 (2017)

    Google Scholar 

  21. Chor - choreography programming language. http://www.chor-lang.org. Accessed 25 Apr 2018

  22. Garriga, M.: Towards a taxonomy of microservices architectures. In: Cerone, A., Roveri, M. (eds.) SEFM 2017. LNCS, vol. 10729, pp. 203–218. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-74781-1_15

    Chapter  Google Scholar 

  23. Newman, S.: Building Microservices: Designing Fine-Grained Systems, 1st edn, pp. 215–216. O’Reilly Media, Newton (2015)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Vaidas Giedrimas .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2018 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Giedrimas, V., Omanovic, S., Alic, D. (2018). The Aspect of Resilience in Microservices-Based Software Design. In: Mazzara, M., Ober, I., Salaün, G. (eds) Software Technologies: Applications and Foundations. STAF 2018. Lecture Notes in Computer Science(), vol 11176. Springer, Cham. https://doi.org/10.1007/978-3-030-04771-9_44

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-04771-9_44

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-04770-2

  • Online ISBN: 978-3-030-04771-9

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics