Уже несколько лет IT индустрия идёт в направлении микросервисов. Можно долго спросить хорошо это или плохо, но от этого никуда не деться.
Из основных плюсов микросервисной архитектуры можно отметить:
- Разбиение кода по модулям (доменам)
- Независимое развёртывание
- Меньше проблем с конфликтами в коде
Из минусов:
- Распределённые вызовы
- Обеспечение согласованности
- Обновление библиотек во всех микросервисах
- Сложность эксплуатации
Последний пункт про трудность эксплуатации включает в себя много аспектов:
- Мониторинг
- Сквозное логирование (tracing)
- Одинаковость сервисов для эксплуатации (запуск, логирование, метрики, service discovery, etc …)
Чтобы обеспечить одинаковость сервисов нужно использовать общие библиотеки. С ростом количества микросервисов, да и просто со временем в разных микросервисах библиотеки будут разных версии. От этого никуда не деться, поэтому нужен механизм просмотра версий библиотек для всех микросервисов. Также это будет полезно для обновления критичных багов сторонних, да и своих библиотек.
Последнее время я имел опыт работы в основном с Go, и я в процессе работы столкнулся с этой проблемой. Нужно было обновлять внутреннюю библиотеку во всех микросервисах. И была написана библиотека для этого: github.com/stamm/dep_radar.
Что она умеет:
- Отображать используемые версии библиотек во всех микросервисах
- Возможность задавать различные параметры для конкретных библиотек:
- Рекомендуемую версию (подсветка красным или зелёным)
- Обязательность использования
- Обязательность указания версии, а не хэша
- Обязательность по неиспользованию (легаси)
- Поддерживает glide и godep
- Поддерживает github и приватный bitbucket
- Довольно быстрая работа (параллельность + не выкачивает весь код)
- Можно менять местами, что будет отображаться по горизонтали: сервисы или библиотеки
Архитектура этой тулзы позволяет дописать поддержку других менеджеров зависимостей, а также поддержку других сервисов по хранению кода (gitlab, например).
Если у вас репозитории на github’е, то можно сразу посмотреть результат через докер: docker run -p 8081:8081 stamm/dep_radar:latest -github_org="dep-radar"
Все замечания можно писать в issues или даже делать pull request: github.com/stamm/dep_radar.