M.S. Yaroshynsky, I.V. Puchko
Èlektron. model. 2025, 47(4):57-72
https://doi.org/10.15407/emodel.47.04.057
ABSTRACT
The phenomenon of asynchronous changes in the Application Programming Interface (API) in microservice systems, the causes and consequences of incompatible changes for the functioning and interconnections of services are considered. Various risk minimization strategies are evaluated, such as intermediate testing, protocol schema creation, adaptive API compatibility, Blue/Green deployment, and API versioning in protocols.
KEYWORDS
API evolution, backward compatibility, microservice architecture, API testing.
REFERENCES
- Woods, E. (2016). Software Architecture in a Changing World. IEEE Software, 33(6), 94-97. https://doi.org/10.1109/ms.2016.149.
- Richards, M., & Ford, N. (2020). Fundamentals of Software Architecture: An Engineering Approach. O’Reilly Media.
- Lewis J. & Fowler M. (2014) Microservices. Microservices. URL: https://martinfowler.com/ articles/microservices.html (date of access: 01.08.2024).
- Söylemez, M., Tekinerdogan, B., & Tarhan, A.K. (2023). Microservice reference architecture design: A multi‐case study. Software: Practice and Experience. https://doi.org/10.1002/spe.3241.
- Faustino, D., Gonçalves, N., Portela, M., & Rito Silva, A. (2024). Stepwise migration of a monolith to a microservice architecture: Performance and migration effort evaluation. Performance Evaluation, 102411. https://doi.org/10.1016/j.peva.2024.102411
- Ye Saukh, S., & Puchko, T.V. (2024). Sustainable web API evolution: Forecasting software development effort. IOP Conference Series: Earth and Environmental Science, 1415(1), 012077. https://doi.org/10.1088/1755-1315/1415/1/012077
- Bonorden, L., & Riebisch, M. (2022). API Deprecation: A Systematic Mapping Study. У 2022 48th Euromicro Conference on Software Engineering and Advanced Applications (SEAA). IEEE. https://doi.org/10.1109/seaa56994.2022.00076
- Zdun, U., Wittern, E., & Leitner, P. (2020). Emerging Trends, Challenges, and Experiences in DevOps and Microservice APIs. IEEE Software, 37(1), 87-91. https://doi.org/10.1109/ ms.2019.2947982
- Zhou, X., Peng, X., Xie, T., Sun, J., Ji, C., Li, W., & Ding, D. (2018). Fault Analysis and Debugging of Microservice Systems: Industrial Survey, Benchmark System, and Empirical Study. IEEE Transactions on Software Engineering, 1. https://doi.org/10.1109/tse. 2018.2887384
- Lercher, A., Glock, J., Macho, C., & Pinzger, M. (2024). Microservice API Evolution in Practice: A Study on Strategies and Challenges. Journal of Systems and Software, 112110. https://doi.org/10.1016/j.jss.2024.112110
- Cerny, T., Donahoo, M.J., & Trnka, M. (2018). Contextual understanding of microservice architecture. ACM SIGAPP Applied Computing Review, 17(4), 29-45. https://doi.org/10.1145/ 3183628.3183631
- Waseem, M., Liang, P., Shahin, M., Ahmad, A., & Nassab, A.R. (2021). On the Nature of Issues in Five Open Source Microservices Systems: An Empirical Study. У EASE 2021: Evaluation and Assessment in Software Engineering. ACM. https://doi.org/10.1145/ 3463274.3463337
- Musavi, P., Adams, B., & Khomh, F. (2016). Experience Report: An Empirical Study of API Failures in OpenStack Cloud Environments. У 2016 IEEE 27th International Symposium on Software Reliability Engineering (ISSRE). IEEE. https://doi.org/10.1109/issre. 2016.42
- Xavier, L., Brito, A., Hora, A., & Valente, M.T. (2017). Historical and impact analysis of API breaking changes: A large-scale study. У 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER). IEEE. https://doi.org/10.1109/ saner.2017.7884616
- Chen, F., Zhang, L., & Lian, X. (2021). A systematic gray literature review: The technologies and concerns of microservice application programming interfaces. Software: Practice and Experience. https://doi.org/10.1002/spe.2967
- Morris, B. (2015) 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/ (date of access: 01.08.2024).
- Dackebro, E. (2019) An empirical investigation into problems caused by breaking changes in API evolution : thesis. URL: http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-255015 (date of access: 01.08.2024).
- Robbes, R., & Lungu, M. (2011). A study of ripple effects in software ecosystems. У Proceeding of the 33rd international conference. ACM Press. https://doi.org/10.1145/1985793. 1985940
- Brito, A., Valente, M.T., Xavier, L., & Hora, A. (2019). You broke my code: understanding the motivations for breaking changes in APIs. Empirical Software Engineering, 25(2), 1458-1492. https://doi.org/10.1007/s10664-019-09756-z
- Seyed Pooya, M.M. (2017). API failures in OpenStack cloud environments [Maîtrise ès sciences appliquées, UNIVERSITÉ DE MONTRÉAL]. https://www.proquest.com. (https://publications.polymtl.ca/2715/1/2017_SeyedPooyaMusaviMirkalaei.pdf)
- Brito, A., Xavier, L., Hora, A., & Valente, M. T. (2018). APIDiff: Detecting API breaking changes. У 2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER). IEEE. https://doi.org/10.1109/saner.2018.8330249
- Granli, W., Burchell, J., Hammouda, I., & Knauss, E. (2015). The driving forces of API evolution. У ESEC/FSE’15: Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering. ACM. https://doi.org/10.1145/2804360.2804364
- Di Lauro, F., Serbout, S., & Pautasso, C. (2021). Towards Large-Scale Empirical Assessment of Web APIs Evolution. У Lecture Notes in Computer Science (с. 124-138). Springer International Publishing. https://doi.org/10.1007/978-3-030-74296-6_10
- Lehman, M.M. (1979). On understanding laws, evolution, and conservation in the large-program life cycle. Journal of Systems and Software, 1, 213-221. https://doi.org/ 10.1016/0164-1212(79)90022-0
- Teivonen P. (2024). Staging Environment Implementation in a Software Delivery Automation Pipeline. Oulu, 2024. 28 с. https://urn.fi/URN:NBN:fi:amk-2024060521178
- McLeod, R.J., & Everett, G.D. (2007). Software Testing: Testing Across the Entire Software Development Life Cycle. Wiley-IEEE Computer Society Pr. 345 p.
- Fowler S.J. (2016) Production-Ready Microservices: Building Standardized Systems Across an Engineering Organization. O’Reilly Media, Inc.
- Desikan S & Ramesh G. (2006). Software Testing: Principles and Practice. Pearson Education India.
- Beilharz, J., Wiesner, P., Boockmeyer, A., Brokhausen, F., Behnke, I., Schmid, R., Pirl, L., & Thamsen, L. (2021). Towards a Staging Environment for the Internet of Things. У 2021 IEEE International Conference on Pervasive Computing and Communications Workshops and other Affiliated Events (PerCom Workshops). IEEE. https://doi.org/10.1109/ percomworkshops51409.2021.9431087
- Fellows M., (2022). Introduction | Pact Docs 2022. https://docs.pact.io/ (accessed November 14, 2024).
- Carver, J. C. (2016). Software Engineering for Science. Computing in Science & Engineering, 18(2), 4-5. https://doi.org/10.1109/mcse.2016.31
- Viotti J.C. & Kinderkhedia M. (2022) A Survey of JSON-compatible Binary Serialization Specifications. https://doi.org/10.48550/arXiv.2201.02089.
- Loechel, L., Akbayin, S.-R., Grünewald, E., Kiesel, J., Strelnikova, I., Janke, T., & Pallas, F. (2024). Hook-in privacy techniques for grpc-based microservice communication. У Lecture notes in computer science (с. 215-229). Springer Nature Switzerland. https://doi.org/ 10.1007/978-3-031-62362-2_15
- Hüseyin B. (2023). GRPC Microservices in Go. Manning Publications Co. LLC.
- Friesen, J. (2019). Java XML and JSON: Document Processing for Java SE. Apress.
- Richardson, C. (2018). Microservices Patterns: With Examples in Java. Manning Publications Co. LLC.
- Practical API Design. (2008). Apress. https://doi.org/10.1007/978-1-4302-0974-4
- Humble J. & Farley D. (2010). Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley Professional.
- Servile V. (2024). Continuous Deployment. O’Reilly Media, Incorporated.
- Bhuyan A.P. (2024). Microservices Design Patterns: Best Practices for Cloud-Native Architectures. Aditya Pratap Bhuyan.
- Serbout, S., & Pautasso, C. (2023). An Empirical Study of Web API Versioning Practices. У Lecture Notes in Computer Science (с. 303-318). Springer Nature Switzerland. https://doi.org/10.1007/978-3-031-34444-2_22
- Knoche, H., & Hasselbring, W. (2021). Continuous API Evolution in Heterogenous Enterprise Software Systems. У 2021 IEEE 18th International Conference on Software Architecture (ICSA). IEEE. https://doi.org/10.1109/icsa51549.2021.00014
- Koci, R., Franch, X., Jovanovic, P., & Abello, A. (2019). Classification of Changes in API Evolution. У 2019 IEEE 23rd International Enterprise Distributed Object Computing Conference (EDOC). IEEE. https://doi.org/10.1109/edoc.2019.00037