Предполагаются несколько типов сервисов:
- По принадлежности
- opensource
- vendor
- По зависимости
- зависит от
- незвисим
- требуется для
- По необходимости ожидания
- без ожидания
- бережная остановка
- [бережный старт] (??)
Процедура обновления в docker swarm предполагает поэтапную работу оркестратора.
Поддерживаются стратегии обновления для сервисов:
- start first
- stop first
Эти стратегии оказывают влияние на прерывание (stop first) или нет работу сервиса до поднятия обновленного.
Сервисы обновляются/запускаются одновременно! Это нужно учитывать.
Следовательно зависимости между сервисами нужно реализовывать в самих сервисах, например с использованием healthcheck.
Например, в сервис "А" с типом "зависим от Б" можно добавить проверку доступности требуемого сервиса "Б" в helthcheck метод (cli или http).
А в сервисе "Б" тоже нужно добавить самопроверку. Тогда, если что-то случится с сервисом "Б" при обновлении произойдет откат цепочки зависимых сервисов.
Важно не замкнуть круг зависимостей, не получить цикл.