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).
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
References
Friedrichsen, U.: Patterns of resilience. https://www.slideshare.net/ufried/patterns-of-resilience. Accessed 23 Apr 2018
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
Monti, G.: Resilience Engineering #1: Robust Vs. Resilient (2011). http://www.activegarage.com/resilience-engineering-1-robust-resilient. Accessed 20 Apr 2018
Department of Defense: FACT SHEET: Resilience of Space Capabilities. National Security Space Strategy, Washington (2015)
Taleb, N.: Antifragile: Things That Gain from Disorder. Random House, New York City (2012)
Hanmer, R.: Patterns for Fault Tolerant Software. Wiley, Hoboken (2013)
Merkow, M.S., Raghavan, L.: Secure and Resilient Software Development, 1st edn. Auerbach Publications, Boca Raton (2010)
Mackey, A.: Building Resilient Systems. https://gooroo.io/GoorooTHINK/Article/16830/Building-Resilient-Systems/23368#.Wt2zeBuFPZ4. Accessed 23 Apr 2018
Wasson, M.: Design patterns for microservices. https://azure.microsoft.com/en-us/blog/design-patterns-for-microservices/. Accessed 23 Apr 2018
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
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
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)
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
Gay, S., Ravara, A. (eds.): Behavioural Types: From Theory to Tools. River Publishers, San Francisco (2017). https://doi.org/10.13052/rp-9788793519817
Wadler, P.: Propositions as types. Commun. ACM 58(12), 75–84 (2015)
Cazanescu, V.E.: Programming via rewriting. In: 13th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (2010)
Fiadeiro, J.L., Lopes, A.: A model for dynamic reconfiguration in service-oriented architectures. Softw. Syst. Model. 12(12), 349–367 (2013)
Dragoni, N., et al.: Microservices: yesterday, today, and tomorrow (2017). https://arxiv.org/abs/1606.04036. Accessed 28 Apr 2018
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
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)
Chor - choreography programming language. http://www.chor-lang.org. Accessed 25 Apr 2018
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
Newman, S.: Building Microservices: Designing Fine-Grained Systems, 1st edn, pp. 215–216. O’Reilly Media, Newton (2015)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer Nature Switzerland AG
About this paper
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)