Строгая типизация в событийной микросервисной парадигме
Аннотация
Микросервисная парадигма – популярный подход при разработке различных систем, который характеризуется разбиением монолитной системы на большое количество небольших по размеру приложений. Работающие вместе и реализующие необходимую логику, компоненты выполнены с применением наиболее подходящих для них технологий. Подход также позволяет осуществлять простое масштабирование наиболее нагруженных частей, однако, среда передачи данных между компонентами не позволяет в достаточной степени гарантировать их совместимость при разработке и поддержке. Существует очень ограниченный набор средств для поддержания согласованной работы всей системы при изменении входных или выходных параметров какого-либо микросервиса из её состава. Проблема особенно актуальна в случае асинхронного взаимодействия частей системы, так как существующие решения и стандарты покрывают в основном синхронное взаимодействие, основывающееся на протоколах семейства RPC или REST, или используются для высокоуровневого описания автоматизируемых бизнес-процессов. Один из способов обеспечения совместимости компонентов системы – предварительная проверка типов аргументов перед их запуском. Ранее нами была предложена реализация описанного способа, использующая отдельный сервис для проверки типов и композиции сервисов на основе описаний их интерфейсов. В текущей работе изложено дальнейшее развитие метода: реализована система с предварительной проверкой брокером сообщений типов передаваемых микросервисами данных и поддерживающая только асинхронное взаимодействие. Изложенный подход лишён выше упомянутых недостатков, и, хотя подходит только для асинхронной коммуникации, решает обозначенные проблемы эффективней, чем альтернативные решения.
Литература
R. Rodger, The tao of microservices, New York: Manning Publications Company, 2018, pp. 17–19.
N. Kratzke, “A Brief History of Cloud Application Architectures,” Applied Sciences, vol. 8, no. 8, 2018; doi: 10.3390/app8081368
M. Richards, Microservices vs. service-oriented architecture, Sebastopol: O’Reilly Media, 2015.
Q. Z. Sheng, X. Qiao, A. V. Vasilakos, C. Szabo, S. Bourne, and X. Xu, “Web services composition: A decade’s overview,” Information Sciences, vol. 280, pp. 218–238, 2014; doi: 10.1016/j.ins.2014.04.054
F. Casati and M. C. Shan, “Dynamic and adaptive composition of e-services,” Information Systems, no. 26, pp. 143–163, 2001; doi: 10.1016/S0306-4379(01)00014-X
A. Lazcano, G. Alonso, H. Schuldt, and C. Schuler, “The WISE approach to electronic commerce,” International Journal of Computer Systems Science and Engineering, vol. 15, no. 5, pp. 343–355, 2000.
F. Lecue, Y. Gorronogoitia, R. Gonzalez, M. Radzimski, and M. Villa, “SOA4All: an innovative integrated approach to services composition,” in Proc. 8th IEEE Int. Conf. on Web Services (ICWS’10), Miami, FL, USA, 2010, pp. 58—67; doi: 10.1109/ICWS.2010.68
A. L. Lemos, F. Daniel, and B. Benatallah, “Web Service Composition: A Survey of Techniques and Tools,” ACM Computing Surveys (CSUR), vol. 48, no. 3, pp. 1–41, 2015; doi: 10.1145/2831270
K. Verma, K. Sivashanmugam, A. Sheth, A. Patil, S. Oundhakar, and J. Miller, “METEOR-S WSDI: A Scalable P2P Infrastructure of Registries for Semantic Publication and Discovery ofWeb Services,” Information Technology and Management, vol. 6, no. 1, pp. 17–39, 2005; doi: 10.1007/s10799-004-7773-4
B. Orriens and J. Yang, “A Rule Driven Approach for Developing Adaptive Service Oriented Business Collaboration,” IEEE Int. Conf. on Services Computing (SCC’06), Chicago, IL, USA, 2006; doi:10.1109/SCC.2006.14.
M. Colombo, E. Di Nitto, and M. Mauri, “SCENE: A Service Composition Execution Environment Supporting Dynamic Changes Disciplined Through Rules,” in Service-Oriented Computing, A. Dan and W. Lamersdorf eds., 006; doi: 10.1007/11948148_16
S. R. Ponnekanti and A. Fox, “Sword: A developer toolkit for web service composition,” Proc. 11th Int. WWWConf, Honolulu, HI, USA, 2002.
L. Sun, H. Dong, F. Hussain, O. Hussain, E. Chang, “Cloud service selection: State-of-the-art and future research directions,” Journal of Network and Computer Applications, vol. 45, pp. 134–150, 2014; doi: 10.1016/j.jnca.2014.07.019
N. Gerasimov, “Static typing and dependency management for SOA,” Position Papers of the 2018 Federated Conference on Computer Science and Information Systems, vol. 16, pp. 105–107, 2018.
A. Wright, H. Andrews and G. Luff, “JSON Schema Validation: A Vocabulary for Structural Validation of JSON,” [Online]. Available: http://jsonschema.org/latest/json-schema-validation.html
B. Pierce, Types and Programming Languages London: MIT Press, 2002, pp. 251–254.
Материал публикуется под лицензией: