Ways to Solve the Problem of Asynchronous Changes of the Application Programming Interface in Microservice Architecture

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

  1. Woods, E. (2016). Software Architecture in a Changing World. IEEE Software, 33(6), 94-97. https://doi.org/10.1109/ms.2016.149.
  2. Richards, M., & Ford, N. (2020). Fundamentals of Software Architecture: An Engineering Approach. O’Reilly Media.
  3. Lewis J. & Fowler M. (2014) Microservices. Microservices. URL: https://martinfowler.com/ articles/microservices.html (date of access: 01.08.2024).
  4. 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.
  5. 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
  6. 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
  7. 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
  8. Zdun, U., Wittern, E., & Leitner, P. (2020). Emerging Trends, Challenges, and Experien­ces in DevOps and Microservice APIs. IEEE Software, 37(1), 87-91. https://doi.org/10.1109/ ms.2019.2947982
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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).
  17. 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).
  18. Robbes, R., & Lungu, M. (2011). A study of ripple effects in software ecosystems. У Procee­ding of the 33rd international conference. ACM Press. https://doi.org/10.1145/1985793. 1985940
  19. 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
  20. 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)
  21. 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
  22. 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
  23. 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
  24. 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
  25. Teivonen P. (2024). Staging Environment Implementation in a Software Delivery Automation Pipeline. Oulu, 2024. 28 с. https://urn.fi/URN:NBN:fi:amk-2024060521178
  26. McLeod, R.J., & Everett, G.D. (2007). Software Testing: Testing Across the Entire Software Development Life Cycle. Wiley-IEEE Computer Society Pr. 345 p.
  27. Fowler S.J. (2016) Production-Ready Microservices: Building Standardized Systems Across an Engineering Organization. O’Reilly Media, Inc.
  28. Desikan S & Ramesh G. (2006). Software Testing: Principles and Practice. Pearson Education India.
  29. 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
  30. Fellows M., (2022). Introduction | Pact Docs 2022. https://docs.pact.io/ (accessed November 14, 2024).
  31. Carver, J. C. (2016). Software Engineering for Science. Computing in Science & Engineering, 18(2), 4-5. https://doi.org/10.1109/mcse.2016.31
  32. Viotti J.C. & Kinderkhedia M. (2022) A Survey of JSON-compatible Binary Serialization Specifications. https://doi.org/10.48550/arXiv.2201.02089.
  33. 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
  34. Hüseyin B. (2023). GRPC Microservices in Go. Manning Publications Co. LLC.
  35. Friesen, J. (2019). Java XML and JSON: Document Processing for Java SE. Apress.
  36. Richardson, C. (2018). Microservices Patterns: With Examples in Java. Manning Publications Co. LLC.
  37. Practical API Design. (2008). Apress. https://doi.org/10.1007/978-1-4302-0974-4
  38. Humble J. & Farley D. (2010). Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation. Addison-Wesley Professional.
  39. Servile V. (2024). Continuous Deployment. O’Reilly Media, Incorporated.
  40. Bhuyan A.P. (2024). Microservices Design Patterns: Best Practices for Cloud-Native Architectures. Aditya Pratap Bhuyan.
  41. 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
  42. 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
  43. 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

Full text: PDF