Cпособи розв’язання проблеми асинхронності зміни прикладного програмного інтерфейса в мікросервісній архітектурі

М.C. Ярошинський, аспірант, І.В. Пучко, аспірант
Інститут проблем моделювання в енергетиці ім. Г.Є. Пухова НАН України
Україна, 03164, Київ, вул. Олега Мудрака, 15
e-mail: Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.; Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її.

Èlektron. model. 2025, 47(4):57-72

https://doi.org/10.15407/emodel.47.04.057

АНОТАЦІЯ

Розглянуто явище асинхронних зміни прикладного програмного інтерфейса (Application Programming Interface —API) в мікросервісних системах, розглянуті причини та наслід­ки несумісних змін для функціонування та взаємозв’язків сервісів. Оцінено різні стра­те­гії мінімізації ризиків, такі як проміжне тестування, створення схеми протоколу, адап­тивна сумісність API, розгортання Blue/Green і впровадження версій API в протоколи.

КЛЮЧОВІ СЛОВА:

єволюція API, зворотна сумісність, мікросервісна архітектура, API тестування.

СПИСОК ЛІТЕРАТУРИ

  1. Woods E. Software Architecture in a Changing World. IEEE Software. 2016. Т. 33, № 6. С. 94—97. URL: https://doi.org/10.1109/ms.2016.149 (дата звернення: 03.04.2025).
  2. Richards M, Ford N. Fundamentals of Software Architecture: An Engineering Approach. 1st edition. Beijing Boston Farnham Sebastopol Tokyo: O’Reilly Media; 2020. 422 c.
  3. Microservices. martinfowler.com. URL: https://martinfowler.com/articles/microservices.html (дата звернення: 01.08.2024).
  4. Söylemez M., Tekinerdogan B., Tarhan A.K. Microservice reference architecture design: A multi‐case study. Software: Practice and Experience. 2023. URL: https://doi.org/ 10.1002/spe.3241 (дата звернення: 01.08.2024).
  5. Faustino D., Gonçalves N., Portela M., Silva A.R. Stepwise migration of a monolith to a microservice architecture: Performance and migration effort evaluation. Performance Evaluation. 2024. c. 102411. URL: https://doi.org/10.1016/j.peva.2024.102411 (дата звернення: 01.08.2024).
  6. Saukh S.Y., Puchko T.V. Sustainable web API evolution: Forecasting software development effort. IOP Conference Series: Earth and Environmental Science. 2024. T. 1415, № 1. C. 012077. URL: https://doi.org/10.1088/1755-1315/1415/1/012077 (дата звернення: 01.08.2024).
  7. Bonorden L., Riebisch M. API Deprecation: A Systematic Mapping Study. 2022 48th Euromicro Conference on Software Engineering and Advanced Applications (SEAA), м. Gran Canaria, Spain, 31 серп.—2 верес. 2022 р. 2022. URL: https://doi.org/10.1109/ seaa56994.2022.00076 (дата звернення: 03.04.2025).
  8. Zdun U., Wittern E., Leitner P. Emerging Trends, Challenges, and Experiences in DevOps and Microservice APIs. IEEE Software. 2020. Т. 37, № 1. С. 87—91. URL: https://doi.org/ 10.1109/ms.2019.2947982 (дата звернення: 03.04.2025).
  9. Zhou X., Peng X., Xie T. та ін. Fault Analysis and Debugging of Microservice Systems: Industrial Survey, Benchmark System, and Empirical Study. IEEE Transactions on Software Engineering. 2018. C. 1. URL: https://doi.org/10.1109/tse.2018.2887384 (дата звер­нення: 01.08.2024).
  10. Lercher A., Glock J., Macho C., Pinzger M. Microservice API Evolution in Practice: A Study on Strategies and Challenges. Journal of Systems and Software. 2024. C. 112110. URL: https://doi.org/10.1016/j.jss.2024.112110 (дата звернення: 01.08.2024).
  11. Cerny T., Donahoo M.J., Trnka M. Contextual understanding of microservice architecture. ACM SIGAPP Applied Computing Review. 2018. T. 17, № 4. C. 29—45. URL: https://doi.org/10.1145/3183628.3183631 (дата звернення: 01.08.2024).
  12. On the Nature of Issues in Five Open Source Microservices Systems: An Empirical Study / M. Waseem та ін. EASE 2021: Evaluation and Assessment in Software Engineering, Trondheim Norway. New York, NY, USA, 2021. URL: https://doi.org/10.1145/ 3463274.3463337 (дата звернення: 01.08.2024).
  13. Musavi P., Adams B., Khomh F. Experience Report: An Empirical Study of API Failures in OpenStack Cloud Environments. 2016 IEEE 27th International Symposium on Software Reliability Engineering (ISSRE), м. Ottawa, ON, Canada, 23—27 жовт. 2016 р. 2016. URL: https://doi.org/10.1109/issre.2016.42 (дата звернення: 03.04.2025).
  14. Historical and impact analysis of API breaking changes: A large-scale study / L. Xavier та ін. 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER), м. Klagenfurt, Austria, 20—24 лют. 2017 р. 2017. URL: https://doi.org/10.1109/saner.2017.7884616 (дата звернення: 03.04.2025).
  15. Chen F., Zhang L., Lian X. A systematic gray literature review: The technologies and concerns of microservice application programming interfaces. Software: Practice and Expe­rience. 2021. URL: https://doi.org/10.1002/spe.2967 (дата звернення: 01.08.2024).
  16. REST APIs don’t need a versioning strategy — they need a change strategy. Ben Morris Agile Enterp Archit n.d. https://www.ben-morris.com/rest-apis-dont-need-a-versioning-strategy-they-need-a-change-strategy/ (дата звернення: 01.08.2024).
  17. Dackebro E. An empirical investigation into problems caused by breaking changes in API evolution : thesis. 2019. URL: http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-255015 (дата звернення: 01.08.2024).
  18. Robbes R., Lungu M. A study of ripple effects in software ecosystems. Proceeding of the 33rd international conference, Waikiki, Honolulu, HI, USA, 21—28 May 2011. New York, New York, USA, 2011. URL: https://doi.org/10.1145/1985793.1985940 (дата звернення: 01.08.2024).
  19. Borito A., Valente M.T., Xavier L., Hora A. You broke my code: understanding the motivations for breaking changes in APIs. Empirical Software Engineering. 2019. T. 25, № 2. C. 1458—1492. URL: https://doi.org/10.1007/s10664-019-09756-z (дата звернення: 01.08.2024).
  20. Seyed Pooya M.M. API failures in OpenStack cloud environments : Maîtrise ès sciences appliquées. Montreal, 2017. 48 p. (дата звернення: 01.08.2024). https://publications.polymtl.ca/2715/1/2017_SeyedPooyaMusaviMirkalaei.pdf
  21. APIDiff: Detecting API breaking changes / A. Brito та ін. 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER), м. Campobas­so, 20—23 берез. 2018 р. 2018. URL: https://doi.org/10.1109/saner.2018.8330249 (дата звернення: 01.08.2024).
  22. The driving forces of API evolution / W. Granli та ін. ESEC/FSE’15: Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, м. Bergamo Italy. New York, NY, USA, 2015. URL: https://doi.org/10.1145/2804360.2804364 (дата звернення: 03.04.2025).
  23. Di Lauro F., Serbout S., Pautasso C. Towards Large-Scale Empirical Assessment of Web APIs Evolution. Lecture Notes in Computer Science. Cham, 2021. С. 124—138. URL: https://doi.org/10.1007/978-3-030-74296-6_10 (дата звернення: 03.04.2025).
  24. Lehman M.M. On understanding laws, evolution, and conservation in the large-program life cycle. Journal of Systems and Software. 1979. Т. 1. С. 213—221. URL: https://doi.org/ 10.1016/0164-1212(79)90022-0 (дата звернення: 03.04.2025).
  25. Teivonen P. Staging Environment Implementation in a Software Delivery Automation Pipeline. Oulu, 2024. 28 с. https://urn.fi/URN:NBN:fi:amk-2024060521178 (дата звернення: 01.08.2024)
  26. Everett G.D., Jr M.R. Software Testing: Testing Across the Entire Software Development Life Cycle. IEEE Computer Society Press, 2007. 345 c.
  27. Fowler S.J. Production-Ready Microservices: Building Standardized Systems Across an Engineering Organization. O’Reilly Media, Inc.; 2016. 172 c.
  28. Desikan S, Ramesh G. Software Testing: Principles and Practice. Pearson Education India; 2006. 450 c.
  29. Towards a Staging Environment for the Internet of Things / J. Beilharz та ін. 2021 IEEE International Conference on Pervasive Computing and Communications Workshops and other Affiliated Events (PerCom Workshops), м. Kassel, Germany, 22—26 берез. 2021 р. 2021. URL: https://doi.org/10.1109/percomworkshops51409.2021.9431087 (дата звер­нення: 03.04.2025).
  30. Fellows M., Introduction | Pact Docs 2022. https://docs.pact.io/ (дата звернення: 03.04.2025).
  31. Carver J.C. Software Engineering for Science. Computing in Science & Engineering. 2016. Т. 18, № 2. С. 4—5. URL: https://doi.org/10.1109/mcse.2016.31 (дата звернення: 01.08.2024).
  32. Viotti J.C., Kinderkhedia M. A Survey of JSON-compatible Binary Serialization Spe­cifications 2022. https://doi.org/10.48550/arXiv.2201.02089 (дата звернення: 01.08.2024).
  33. Hook-in Privacy Techniques for gRPC-Based Microservice Communication / L. Loechel та ін. Lecture Notes in Computer Science. Cham, 2024. С. 215—229. URL: https://doi.org/10.1007/978-3-031-62362-2_15 (дата звернення: 03.04.2025).
  34. Hüseyin B. GRPC Microservices in Go. Manning Publications Co. LLC, 2024.
  35. Friesen J. Java XML and JSON: Document Processing for Java SE. Apress, 2019. 548 с.
  36. Richardson C. Microservices Patterns: With Examples in Java. Manning Publications Co. LLC, 2018. 520 c.
  37. Practical API Design. Berkeley, CA : Apress, 2008. URL: https://doi.org/10.1007/978-1-4302-0974-4 (дата звернення: 03.04.2025).
  38. Humble J., Farley D. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley Professional, 2010. 484 с.
  39. Servile V. Continuous Deployment. O’Reilly Media, Incorporated, 2024. 446 c.
  40. Bhuyan A.P. Microservices Design Patterns: Best Practices for Cloud-Native Architectures. Aditya Pratap Bhuyan; 2024. 750 c.
  41. Serbout S., Pautasso C. An Empirical Study of Web API Versioning Practices. Lecture Notes in Computer Science. Cham, 2023. С. 303—318. URL: https://doi.org/10.1007/978-3-031-34444-2_22 (дата звернення: 03.04.2025).
  42. Knoche H., Hasselbring W. Continuous API Evolution in Heterogenous Enterprise Software Systems. 2021 IEEE 18th International Conference on Software Architecture (ICSA), м. Stuttgart, Germany, 22—26 берез. 2021 р. 2021. URL: https://doi.org/10.1109/ icsa51549.2021.00014 (дата звернення: 03.04.2025).
  43. Classification of Changes in API Evolution / R. Koci та ін. 2019 IEEE 23rd International Enterprise Distributed Object Computing Conference (EDOC), м. Paris, France, 28—31 жовт. 2019 р. 2019. URL: https://doi.org/10.1109/edoc.2019.00037 (дата звернення: 03.04.2025).

ЯРОШИНСЬКИЙ Микола Сергійович, аспірант Інституту проблем моделювання в енергетиці ім. Г.Є. Пухова НАН України. В 2009 р. закінчив Національний університет кораблебудування ім. адм. Макарова. Область наукових досліджень — програмування, розробка розподілених гетерогенних обчислювальних систем.

ПУЧКО Іван Вікторович, аспірант Інституту проблем моделювання в енергетиці ім. Г.Є. Пухова НАН України. В 2008 р. закінчив Національний авіаційний університет. Область наукових досліджень — масштабування розподілених обчислень у високона­вантажених системах, програмування.

Повний текст: PDF