М.C. Ярошинський, аспірант, І.В. Пучко, аспірант
Інститут проблем моделювання в енергетиці ім. Г.Є. Пухова НАН України
Україна, 03164, Київ, вул. Олега Мудрака, 15
e-mail:
È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 тестування.
СПИСОК ЛІТЕРАТУРИ
- 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).
- Richards M, Ford N. Fundamentals of Software Architecture: An Engineering Approach. 1st edition. Beijing Boston Farnham Sebastopol Tokyo: O’Reilly Media; 2020. 422 c.
- Microservices. martinfowler.com. URL: https://martinfowler.com/articles/microservices.html (дата звернення: 01.08.2024).
- 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).
- 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).
- 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).
- 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).
- 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).
- 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).
- 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).
- 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).
- 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).
- 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).
- 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).
- Chen F., Zhang L., Lian X. A systematic gray literature review: The technologies and concerns of microservice application programming interfaces. Software: Practice and Experience. 2021. URL: https://doi.org/10.1002/spe.2967 (дата звернення: 01.08.2024).
- 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).
- 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).
- 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).
- 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).
- 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
- APIDiff: Detecting API breaking changes / A. Brito та ін. 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER), м. Campobasso, 20—23 берез. 2018 р. 2018. URL: https://doi.org/10.1109/saner.2018.8330249 (дата звернення: 01.08.2024).
- 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).
- 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).
- 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).
- 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)
- Everett G.D., Jr M.R. Software Testing: Testing Across the Entire Software Development Life Cycle. IEEE Computer Society Press, 2007. 345 c.
- Fowler S.J. Production-Ready Microservices: Building Standardized Systems Across an Engineering Organization. O’Reilly Media, Inc.; 2016. 172 c.
- Desikan S, Ramesh G. Software Testing: Principles and Practice. Pearson Education India; 2006. 450 c.
- 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).
- Fellows M., Introduction | Pact Docs 2022. https://docs.pact.io/ (дата звернення: 03.04.2025).
- 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).
- Viotti J.C., Kinderkhedia M. A Survey of JSON-compatible Binary Serialization Specifications 2022. https://doi.org/10.48550/arXiv.2201.02089 (дата звернення: 01.08.2024).
- 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).
- Hüseyin B. GRPC Microservices in Go. Manning Publications Co. LLC, 2024.
- Friesen J. Java XML and JSON: Document Processing for Java SE. Apress, 2019. 548 с.
- Richardson C. Microservices Patterns: With Examples in Java. Manning Publications Co. LLC, 2018. 520 c.
- Practical API Design. Berkeley, CA : Apress, 2008. URL: https://doi.org/10.1007/978-1-4302-0974-4 (дата звернення: 03.04.2025).
- Humble J., Farley D. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley Professional, 2010. 484 с.
- Servile V. Continuous Deployment. O’Reilly Media, Incorporated, 2024. 446 c.
- Bhuyan A.P. Microservices Design Patterns: Best Practices for Cloud-Native Architectures. Aditya Pratap Bhuyan; 2024. 750 c.
- 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).
- 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).
- 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 р. закінчив Національний авіаційний університет. Область наукових досліджень — масштабування розподілених обчислень у високонавантажених системах, програмування.