Обработка множественных зависимостей является (по крайней мере, на мой взгляд) одной из основных проблем при работе с несколькими микросервисами.Вот несколько способов, которые я могу придумать или увидеть:
Наличие Monorepo -
Становится намного легче, если у вас есть всеВаши услуги расположены в одном хранилище.Это означает, что вы можете использовать помощников монорепо, таких как lerna (для проектов JS) или аналогичных.В этом случае вы можете иметь структуру папок, например -
- root
---- файлы общей схемы (с версиями)
----сервис 1
---- сервис 2
Наличие службы, предоставляющей файлы схемы -
Идея состоит в том, чтобы создать отдельный репозиторий для файлов схемы и обслуживать их при загрузке любого приложения.Это можно сделать несколькими способами -
а).Поддерживая разные пакеты для разных языков - например, gems для ruby и node_modules для проектов Node.Затем эти модули отвечают за выбор соответствующих схем из центрального репо.
б).Имея образ докера, работающий локально, вы также можете сохранить эти схемы в виде образа докера (с версионированием, конечно) и сервировать их, монтируя их как логические тома.Образ может содержать все виды вспомогательных библиотек, которые могут вам понадобиться для поддержки схемы (например, валидаторы, тесты и представления пользовательского интерфейса для схем).
PS: вы также можете захотеть взглянутьв таких инструментах, как prototool .