Управление зависимостями в микросервисной архитектуре

9c5de26532154476a992f2e3232f80c0

Часто в микросервисной архитектуре возникают проблемы, связанные с обновлением версий библиотек или их подключением. Работая над каким-либо проектом в течение долгого времени можно столкнуться с тем, что разные микросервисы используют разные версии одной и той же библиотеки и ее обновление может затянуться из-за конфликтов. В данной статье я хотел бы описать один из способов решения этих проблем.

Использование своего parent pom

В большинстве случаев, готовые сборки зависимостей (например, spring-boot-starter-parent или напрямую spring-boot-dependencies) используются в pom файлах как parent. Но что, если в нескольких микросервисах нужно переопределить версию одной из зависимостей или добавить ту, которой в сборке нет?

В этом случае лучше создать свою собственную сборку версий зависимостей. Это поможет поддерживать одни и те же версии библиотек во всех микросервисах. Достаточно лишь следить за актуальностью версии вашего parent pom, а не решать конфликты в каждом микросервисе отдельно. Данный подход кажется очевидным, но почему-то многие им пренебрегают.

Делается своя сборка довольно просто с помощью менеджмента зависимостей. Также можно импортировать уже готовые сборки зависимостей. Удобнее всего выносить версии библиотек в переменные. Это поможет проще переопределять версию зависимости в конкретном микросервисе в случае крайней необходимости.


  17
  20231013
  3.1.5


  
    
      org.springframework.boot
      spring-boot-starter-parent
      {json.version}
    
  

В случае с плагинами вы также можете контролировать их версии:


  
    
      
        org.jsonschema2pojo
        jsonschema2pojo-maven-plugin
        ${jsonschema2pojo.version}
      
    
  

Для того, чтобы использовать ваш parent pom в микросервисе, необходимо опубликовать его в локальном репозитории командой mvn install (или же в другом хранилище, например, nexus). Далее нужно указать parent в вашем микросервисе и подключить нужные зависимости без указания версий:


  com.example
  base-pom
  0.0.1-SNAPSHOT


  
    org.json
    json
  

Полезные ссылки

© Habrahabr.ru