Advertisement

Consistency and Availability in Microservice Architectures

  • Davide RossiEmail author
Conference paper
Part of the Lecture Notes in Business Information Processing book series (LNBIP, volume 372)

Abstract

For the most part, the first instances of microservice architectures have been deployed for the benefit of the so-called Internet-scale companies in contexts where availability is a critical concern. Their success in this context, along with their promise to be more agile than competing solutions in adapting to changing needs, soon attracted the interest of very diverse classes of business domains characterized by different priorities with respect to non-functional requirements. Microservices embraced this challenge, showing a unique ability to allow for a plethora of solutions, enabling developers to reach the trade-off between consistency and availability that better suits their needs. From a design point of view this translates into a vast solution space. While this can be perceived as an opportunity to enjoy greater freedom with respect to other architectural styles it also means that finding the best solution for the problem at hand can be complex and it is easier to incur in errors that can put a whole project at risk. In this paper we review some possible solutions to address common problems that arise when adopting microservices and we present strategies to address consistency and availability; we also discuss the impact these strategies have on the design space.

Keywords

Microservices architecture Service-Oriented Architecture Software architecture 

Notes

Acknowledgements

The work presented in this paper was partially supported by the MIUR PRIN 2015 GAUSS Project.

References

  1. 1.
    Buschmann, F., Henney, K., Schimdt, D.: Pattern-Oriented Software Architecture. On patterns and Pattern Languages, vol. 5. Wiley, New York (2007)Google Scholar
  2. 2.
    Rossi, D., Poggi, F., Ciancarini, P.: Dynamic high-level requirements in self-adaptive systems. In: Proceedings of the 33rd Annual ACM Symposium on Applied Computing, pp. 128–137. ACM, New York, NY, USA (2018)Google Scholar
  3. 3.
    Perry, D.E., Wolf, A.L.: Foundations for the study of software architecture. SIGSOFT Softw. Eng. Notes 17, 40–52 (1992)CrossRefGoogle Scholar
  4. 4.
    Lewis, F., Fowler, M.: Microservices. https://martinfowler.com/articles/microservices.html
  5. 5.
    Gilbert, S., Lynch, N.: Brewer’s conjecture and the feasibility of consistent, available partition-tolerant web services. SIGACT News. 33, 51–59 (2002)CrossRefGoogle Scholar
  6. 6.
    Coulouris, G., Dollimore, J., Kindberg, T., Blair, G.: Distributed Systems: Concepts and Design. Pearson, Boston (2011)zbMATHGoogle Scholar
  7. 7.
    Nygard, M.T.: Release It! Design and Deploy Production-Ready Software. Pragmatic Bookshelf, Raleigh (2018)Google Scholar
  8. 8.
    Burns, B., Oppenheimer, D.: Design patterns for container-based distributed systems. Presented at the 8th USENIX Workshop on Hot Topics in Cloud Computing (HotCloud 16) (2016)Google Scholar
  9. 9.
    Morgan, W.: What’s a Service Mesh? And Why Do I Need One?. https://dzone.com/articles/whats-a-service-mesh-and-why-do-i-need-one
  10. 10.
    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
  11. 11.
    Xie, C., et al.: Salt: combining ACID and BASE in a distributed database. In: OSDI, pp. 495–509 (2014)Google Scholar
  12. 12.
    Boehm, B.W.: Software risk management: principles and practices. IEEE Softw. 8, 32–41 (1991)CrossRefGoogle Scholar
  13. 13.
    Pritchett, D.: BASE: an acid alternative. Queue. 6, 48–55 (2008).  https://doi.org/10.1145/1394127.1394128CrossRefGoogle Scholar
  14. 14.
    Vogels, W.: Eventually consistent. Commun. ACM. 52, 40–44 (2009).  https://doi.org/10.1145/1435417.1435432CrossRefGoogle Scholar
  15. 15.
    Bailis, P., Fekete, A., Franklin, M.J., Ghodsi, A., Hellerstein, J.M., Stoica, I.: Feral concurrency control: an empirical investigation of modern application integrity. Presented at the Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data, 27 May 2015.  https://doi.org/10.1145/2723372.2737784
  16. 16.
    Garcia-Molina, H., Salem, K.: Sagas. In: Proceedings of the 1987 ACM SIGMOD International Conference on Management of Data, pp. 249–259. ACM, New York, NY, USA (1987).  https://doi.org/10.1145/38713.38742

Copyright information

© Springer Nature Switzerland AG 2019

Authors and Affiliations

  1. 1.Department of Computer Science and EngineeringUniversity of BolognaBolognaItaly

Personalised recommendations