Advertisement

The Aspect of Resilience in Microservices-Based Software Design

  • Vaidas Giedrimas
  • Samir Omanovic
  • Dino Alic
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 11176)

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

Keywords

Microservices Failure Software resilience 

References

  1. 1.
    Friedrichsen, U.: Patterns of resilience. https://www.slideshare.net/ufried/patterns-of-resilience. Accessed 23 Apr 2018
  2. 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. 3.
    Monti, G.: Resilience Engineering #1: Robust Vs. Resilient (2011). http://www.activegarage.com/resilience-engineering-1-robust-resilient. Accessed 20 Apr 2018
  4. 4.
    Department of Defense: FACT SHEET: Resilience of Space Capabilities. National Security Space Strategy, Washington (2015)Google Scholar
  5. 5.
    Taleb, N.: Antifragile: Things That Gain from Disorder. Random House, New York City (2012)Google Scholar
  6. 6.
    Hanmer, R.: Patterns for Fault Tolerant Software. Wiley, Hoboken (2013)Google Scholar
  7. 7.
    Merkow, M.S., Raghavan, L.: Secure and Resilient Software Development, 1st edn. Auerbach Publications, Boca Raton (2010)CrossRefGoogle Scholar
  8. 8.
    Mackey, A.: Building Resilient Systems. https://gooroo.io/GoorooTHINK/Article/16830/Building-Resilient-Systems/23368#.Wt2zeBuFPZ4. Accessed 23 Apr 2018
  9. 9.
    Wasson, M.: Design patterns for microservices. https://azure.microsoft.com/en-us/blog/design-patterns-for-microservices/. Accessed 23 Apr 2018
  10. 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. 3CrossRefGoogle Scholar
  11. 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. 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. 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-5CrossRefzbMATHGoogle Scholar
  14. 14.
    Gay, S., Ravara, A. (eds.): Behavioural Types: From Theory to Tools. River Publishers, San Francisco (2017).  https://doi.org/10.13052/rp-9788793519817CrossRefGoogle Scholar
  15. 15.
    Wadler, P.: Propositions as types. Commun. ACM 58(12), 75–84 (2015)CrossRefGoogle Scholar
  16. 16.
    Cazanescu, V.E.: Programming via rewriting. In: 13th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (2010)Google Scholar
  17. 17.
    Fiadeiro, J.L., Lopes, A.: A model for dynamic reconfiguration in service-oriented architectures. Softw. Syst. Model. 12(12), 349–367 (2013)CrossRefGoogle Scholar
  18. 18.
    Dragoni, N., et al.: Microservices: yesterday, today, and tomorrow (2017). https://arxiv.org/abs/1606.04036. Accessed 28 Apr 2018
  19. 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_8CrossRefGoogle Scholar
  20. 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. 21.
    Chor - choreography programming language. http://www.chor-lang.org. Accessed 25 Apr 2018
  22. 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_15CrossRefGoogle Scholar
  23. 23.
    Newman, S.: Building Microservices: Designing Fine-Grained Systems, 1st edn, pp. 215–216. O’Reilly Media, Newton (2015)Google Scholar

Copyright information

© Springer Nature Switzerland AG 2018

Authors and Affiliations

  1. 1.Siauliai UniversityŠiauliaiLithuania
  2. 2.University of SarajevoSarajevoBosnia and Herzegovina

Personalised recommendations