Preview

Труды Института системного программирования РАН

Расширенный поиск

Паттерны микросервисной архитектуры: многопрофильный обзор литературы

https://doi.org/10.15514/ISPRAS-2021-33(1)-6

Аннотация

Микросервисная архитектура позволяет разрабатывать распределенные системы с использованием набора независимых, легко связываемых, и пригодных к совместному использованию сервисов, удовлетворяющих насущным потребностям облачных вычислений. Каждый микросервис может быть реализован в различных технологиях с использованием общих каналов связи, что приводит к созданию гетерогенных распределенных систем, демонстрирующих высокую масштабируемость, эксплуатационную надежность, производительность и интероперабельность. В настоящее время существует множество вариантов построения микросервисов; некоторые из них основаны на паттернах, задающих общие структуры для решения повторяющихся задач. Тем не менее, поскольку микросервисы являются сравнительно новым трендом, взаимосвязи между атрибутами качества, метриками и паттернами четко не определены, что является проблемой с позиции программной инженерии, поскольку понимание этих взаимосвязей является фундаментом правильного проектирования систем с использованием этой архитектуры. Настоящая статья направлена на расширение знаний о проектировании микросервисных систем, представляя многопрофильный систематический обзор литературы о паттернах, касающихся микросервисов, и связывая их с атрибутами качества и метриками.

Об авторах

Хосе Али ВАЛЬДИВИЯ
Университет Веракрузана
Мексика

Бакалавр в области программной инженерии



Алонсо ЛОРА-ГОНСАЛЕС
Университет Веракрузана
Мексика

Бакалавр в области программной инженерии



Ксавье ЛИМОН
Университет Веракрузана
Мексика

Кандидат наук в области искусственного интеллекта, доцент факультета статистики и информатики



Карен КОРТЕС-ВЕРДИН
Университет Веракрузана
Мексика

Кандидат компьютерных наук, профессор факультета статистики и информатики



Хорхе Октавио ОЧАРАН-ЭРНАНДЕС
Университет Веракрузана
Мексика

Кандидат компьютерных наук, профессор факультета статистики и информатики



Список литературы

1. Д.А. Грушин, Н.Н. Кузюрин. О задаче эффективного управления вычислительной инфраструктурой. Труды ИСП РАН, том 30, вып. 6, 2018 г., стр. 123-142. DOI: 10.15514/ISPRAS-2018-30(6)-7 / D.A. Grushin and N.N. Kuzyurin. On Effective Scheduling in Computing Clusters. Programming and Computer Software, vol. 45, no. 7, 2019, pp. 398–404.

2. Б.М. Шабанов, О.И. Самоваров. Принципы построения межведомственного центра коллективного пользования общего назначения в модели программно-определяемого ЦОД. Труды ИСП РАН, том 30, вып. 6, 2018 г., стр. 7-24. DOI: 10.15514/ISPRAS-2018-30(6)-1 / B.M. Shabanov and O.I. Samovarov. Building the Software-Defined Data Center. Programming and Computer Software, vol. 45, no. 8, 2019, pp. 458–466.

3. Вл.В. Воеводин, Н. Н. Попова. Инфраструктура суперкомпьютерных технологий. Программирование, том 45, no 3, 2019, стр. 6–13 / V.V Voevodin and N.N. Popova. Infrastructure of Supercomputing Technologies. Programming and Computer Software, vol. 45, no. 3, 2019, pp. 89–95.

4. А.П. Крюков, А.П. Демичев. Децентрализованные хранилища данных: технологии построения. Программирование, том 44, no. 5, 2018, стр. 12–30. / A.P. Kryukov and A.P. Demichev. Decentralized Data Storages: Technologies of Construction. Programming and Computer Software, vol. 44, no. 5, 2018, pp. 303–315.

5. T. Hoff. Amazon Architecture. High Scalability, 2007. [Online]. Available: http://highscalability.com/blog/2007/9/18/amazon-architecture.html. [Accessed: 07-Nov-2018].

6. Netflix Technology Blog. Netflix Conductor: A microservices orchestrator. Netflix Techblog, 2016. [Online]. Available: https://medium.com/netflix-techblog/netflix-conductor-a-microservices-orchestrator-2e8d4771bf40. [Accessed: 07-Nov-2018].

7. P. Calçado. Building Products at SoundCloud – Part I: Dealing with the Monolith. Developers Soundcloud, 2014. [Online]. Available: https://developers.soundcloud.com/blog/building-products-at-soundcloud-part-1-dealing-with-the-monolith. [Accessed: 03-Nov-2018].

8. S. Newman, Building Microservices: Designing Fine-Grained Systems, 1st ed. O’Reilly Media, 2015, 280 p.

9. J. Lewis and M. Fowler. Microservices – A definition of this new architectural term. Martinfowler.Com, 2014. [Online]. Available: http://martinfowler.com/articles/microservices.html.

10. P. Clements, R. Kazman, and M. Klein. Evaluating Software Architectures: Methods and Case Studies. Addison-Wesley, 2001, 368 p.

11. L. Bass, P. Clements, and R. Kazman. Software Architecture in Practice, 3rd ed. Addison-Wesley Professional, 2012, 624 p.

12. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Longman Publishing Co., Inc., 1995, 416 p.

13. F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal. Pattern-Oriented Software Architecture – Volume 1: A System of Patterns. Wiley Publishing, 1996, 476 p.

14. D.C. Schmidt, M. Stal, H. Rohnert, and F. Buschmann. Pattern-Oriented Software Architecture, Volume 2: Patterns for Concurrent and Networked Objects. Wiley, 2000, 666 p.

15. K.H. Möller and D.J. Paulish. Software metrics: a practitioner’s guide to improved product development. IEEE Computer Society Press, 1993, 257 p.

16. P. Clements, F. Bachmann et al. Documenting Software Architectures: Views and Beyond, 2nd ed. Addison-Wesley Professional, 2010, 592 p.

17. D. Taibi, V. Lenarduzzi, and C. Pahl. Architectural Patterns for Microservices: A Systematic Mapping Study. In Proc. of the 8th International Conference on Cloud Computing and Services Science, vol. 1, 2018, pp. 221–232.

18. F. Osses, G. Márquez, and H. Astudillo. Exploration of academic and industrial evidence about architectural tactics and patterns in microservices. In Proc. of the 40th International Conference on Software Engineering, 2018, pp. 256–257.

19. G. Marquez and H. Astudillo. Actual Use of Architectural Patterns in Microservices-Based Open Source Projects. In Proc. of the 25th Asia-Pacific Software Engineering Conference (APSEC), 2018, pp. 31–40.

20. J.A. Valdivia, X. Limón, and K. Cortes-Verdin. Quality attributes in patterns related to microservice architecture: A Systematic Literature Review. In Proc. of the 7th International Conference in Software Engineering Research and Innovation (CONISOFT), 2019, pp. 181–190.

21. V. Garousi, M. Felderer, and M. V. Mäntylä. Guidelines for including grey literature and conducting multivocal literature reviews in software engineering. Information and Software Technology, vol. 106, 2019, pp. 101–121.

22. B. Kitchenham and S. Charters. Guidelines for performing Systematic Literature Reviews in Software Engineering. Technical Report EBSE-2007-01, Keele University, University of Durham, 2007.

23. G.W. Noblit and R.D. Hare. Meta-ethnography: Synthesizing qualitative studies. Counterpoints, vol. 44, 1988, pp. 93-123.

24. C. Wohlin. Guidelines for snowballing in systematic literature studies and a replication in software engineering. In Proc. of the 18th International Conference on Evaluation and Assessment in Software Engineering, 2014, article no. 38.

25. F. Khomh and S.A. Abtahizadeh. Understanding the impact of cloud patterns on performance and energy consumption. Journal of Systems and Software, vol. 141, 2018, pp. 151–170.

26. G. Hecht, B. Jose-Scheidt, C. De Figueiredo, N. Moha, and F. Khomh. An Empirical Study of the Impact of Cloud Patterns on Quality of Service (QoS). In Proc. of the IEEE 6th International Conference on Cloud Computing Technology and Science, 2014, pp. 278–283.

27. K. Aram. A Microservices implementation journey – Part 1. Medium Koukia blog, 2018. [Online]. Available: https://koukia.ca/a-microservices-implementation-journey-part-1-9f6471fe917. [Accessed: 12-Jan-2020].

28. K. Sahiti. Everything You Need to Know About Microservices Design Patterns. Edureka blog, 2019. [Online]. Available: https://www.edureka.co/blog/microservices-design-patterns. [Accessed: 12-Jan-2020].

29. Microsoft. Responsibility Segregation (CQRS) pattern. Azure Architecture Center, 2019. [Online]. Available: https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs. [Accessed: 13-Jan-2020].

30. J. Bogner, J. Fritzsch, S. Wagner, and A. Zimmermann. Assuring the Evolvability of Microservices: Insights into Industry Practices and Challenges. In Proc. of the IEEE International Conference on Software Maintenance and Evolution (ICSME), 2019, pp. 546-556.

31. A.K. Dwivedi and S.K. Rath. Incorporating Security Features in Service-Oriented Architecture using Security Patterns. ACM SIGSOFT Software Engineering Notes, vol. 40, no. 1, 2015, pp. 1-6.

32. K. Brown and B. Woolf. Implementation patterns for microservices architectures. In Proc. of the 23th International Conference on Pattern Languages of Programs, 2016, 35 p.

33. A. Balalaie, A. Heydarnoori, P. Jamshidi, D. A. Tamburri, and T. Lynn. Microservices migration patterns. Software Practice and Experience, vol. 48, no. 11, 2018, pp. 2019-2042.

34. G. Márquez and H. Astudillo. Identifying availability tactics to support security architectural design of microservice-based systems. In Proc. of the 13th European Conference on Software Architecture, vol. 2, 2019, pp. 123-129.

35. K.A. Torkura, M.I.H. Sukmana, F. Cheng, and C. Meinel. Leveraging Cloud Native Design Patterns for Security-as-a-Service Applications. In Proc. of the 2nd IEEE International Conference on Smart Cloud, 2017, pp. 90–97.

36. G. Rodríguez, J. A. Díaz-Pace, and Á. Soria. A case-based reasoning approach to reuse quality-driven designs in service-oriented architectures. Information Systems, vol. 77, 2018, pp. 167–189.

37. Microsoft. Designing a microservice-oriented application. .NET Microservices: Architecture for Containerized .NET Applications, 2018. [Online]. Available: https://docs.microsoft.com/en-us/dotnet/architecture/microservices/multi-container-microservice-net-applications/microservice-application-design. [Accessed: 12-Jan-2020].

38. C. Richardson. Building Microservices: Using an API Gateway. Nginx blog, 2015. [Online]. Available: https://www.nginx.com/blog/building-microservices-using-an-api-gateway/. [Accessed: 12-Jan-2020].

39. H. Harms, C. Rogowski, and L. Lo Iacono. Guidelines for adopting frontend architectures and patterns in microservices-based systems. In Proc. of the 11th Joint Meeting on Foundations of Software Engineering, 2017, pp. 902-907.

40. Microsoft. Gateway Routing pattern. Azure Architecture Center, 2017. [Online]. Available: https://docs.microsoft.com/en-us/azure/architecture/patterns/gateway-routing. [Accessed: 13-Jan-2020].

41. D. Müssig, R. Stricker, J. Lässig, and J. Heider. Highly Scalable Microservice-based Enterprise Architecture for Smart Ecosystems in Hybrid Cloud Environments. Proc. In Proc. of the International Conference on Enterprise Information Systems, vol. 1, 2017, pp. 454-459.

42. Microsoft. Backends for Frontends pattern. Azure Architecture Center, 2017. [Online]. Available: https://docs.microsoft.com/en-us/azure/architecture/patterns/backends-for-frontends. [Accessed: 12-Jan-2020].

43. Microsoft. Strangler pattern. Azure Architecture Center, 2017. [Online]. Available: https://docs.microsoft.com/en-us/azure/architecture/patterns/strangler. [Accessed: 13-Jan-2020].

44. Microsoft. Anti-Corruption Layer pattern. Azure Architecture Center, 2017. [Online]. Available: https://docs.microsoft.com/en-us/azure/architecture/patterns/anti-corruption-layer. [Accessed: 12-Jan-2020].

45. Microsoft. Bulkhead pattern. Azure Architecture Center, 2017. [Online]. Available: https://docs.microsoft.com/en-us/azure/architecture/patterns/bulkhead. [Accessed: 13-Jan-2020].

46. Microsoft. Ambassador pattern. Azure Architecture Center, 2017. [Online]. Available: https://docs.microsoft.com/en-us/azure/architecture/patterns/ambassador. [Accessed: 12-Jan-2020].

47. Microsoft. Sidecar pattern. Azure Architecture Center, 2017. [Online]. Available: https://docs.microsoft.com/en-us/azure/architecture/patterns/sidecar. [Accessed: 13-Jan-2020].

48. Microsoft. Gateway Aggregation pattern. Azure Architecture Center, 2017. [Online]. Available: https://docs.microsoft.com/en-us/azure/architecture/patterns/gateway-aggregation. [Accessed: 13-Jan-2020].

49. Microsoft. Gateway Offloading pattern. Azure Architecture Center, 2017. [Online]. Available: https://docs.microsoft.com/en-us/azure/architecture/patterns/gateway-offloading. [Accessed: 13-Jan-2020].

50. ISO/IEC 25010: 2011 Systems and Software Engineering-Systems and Software Quality Requirements and Evaluation (SQuaRE) – System and Software Quality Models. ISO, 2011.

51. R.N. Taylor, N. Medvidovic, and E. M. Dashofy. Software Architecture: Foundations, Theory, and Practice. Wiley Publishing, 2009, 750 p.

52. C. Carneiro and T. Schmelmer. Microservices from Day One: Build Robust and Scalable Software from the Start. Apress, 2016, 268 p.


Рецензия

Для цитирования:


ВАЛЬДИВИЯ Х., ЛОРА-ГОНСАЛЕС А., ЛИМОН К., КОРТЕС-ВЕРДИН К., ОЧАРАН-ЭРНАНДЕС Х. Паттерны микросервисной архитектуры: многопрофильный обзор литературы. Труды Института системного программирования РАН. 2021;33(1):81-96. https://doi.org/10.15514/ISPRAS-2021-33(1)-6

For citation:


VALDIVIA J., LORA-GONZALEZ A., LIMÓN X., CORTES-VERDIN K., OCHARÁN-HERNÁNDEZ J. Patterns Related to Microservice Architecture: a Multivocal Literature Review. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2021;33(1):81-96. (In Russ.) https://doi.org/10.15514/ISPRAS-2021-33(1)-6



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)