Унифицированная модель данных и её применение в микросервисной архитектуре
Authors: Балес А.И. 
Published: December 2024

В настоящее время широкое распространение получила микросервисная архитектура, появляется множество приложений (микросервисов), которые так или иначе между собой взаимодействуют. Микросервисы, как правило, объединяются в целые платформы. Встает острый вопрос взаимодействия их друг с другом, хранения и обмена справочными данными. Эталонного решения данной проблемы не существует, на данный момент, но в данной работе описан симбиоз различных подходов, а также приведена конкретная реализация – унифицированная модель справочников в микросервисной платформе, которая позволяет обмениваться справочными данными десяткам микросервисов (на момент написания статьи количество сервисов в платформе составляет 57 штук). Была спроектирована метамодель, с помощью которой описываются сущности справочников: справочники, категории, связи между справочниками и между сущностями справочников. Архитектура такой модели микросервиса справочников позволяет абстрагироваться от конкретных реализаций СУБД, таким образом не происходит «сильной связности» с SQL или NoSQL базой данных. Данный микросервис имеет искусственно введеные ограничения запись данных от сторонних микросервисов. Миграция данных осуществляется вручную посредством Liquibase скриптов, что позволяет поддерживать справочники в одинаковом состоянии на всех стендах разработки, быстро и легко восстанавливать до любого состояния слепки справочников. Дальнейшее развитие микросервиса справочников может иметь следующий вид: разработка UI форм для ручного заполнения справочников и сохранение новых данных в модели или в скрипты Liquibase, что уже на данном этапе является очень актуальной проблемой для группы сопровождения и администраторов микросервисной платформы.
Today, the microservice architecture has become widespread and most popular in software engineering; many applications (microservices) are forced to communicate with each other. In the future, microservices are combined into entire application platforms. The acute issue of interaction of microservices with each other, storage and exchange of dictionary data have appeared in the minds of developers. A standard solution to this problem does not exist at the moment, but this article describes the symbiosis of various approaches, and also provides a specific implementation - a unified data model of dictionary in a microservice platform. It allows dozens of microservices to exchange dictionary data (now, the number of services in the platform is 57 pieces). This article describes the metamodel which help to design and create entities of dictionary, there are: category of dictionary, relations between categories and between directories. Such data model architecture of microservice allowed me to abstract from specific DBMS implementations, i.e. I am not hard tied on SQL or NoSQL database. This microservice has artificially introduced restrictions on data recording by other microservices. Data migration is carried out manually by Liquibase scripts, which allows maintaining dictionaries in the same state at all development stands, quickly and easily restore dictionaries to any state. Further evolution of the dictionary microservice could be as follows: the development of a user interface for filling dictionaries by administrator`s hands and saving new data in unify data models or auto generation Liquibase scripts. At this stage this problem is very urgent for the support group and administrators of the microservice platform.