По варианту 3 прям не соглашусь -> Если у тебя HEALTHCHECK в микросервисе зависит от HEALTHCHECK других микросервисов и на основе этого вычисляет здоров ли первый микросервис, то это уже не микросервисная архитектура, а распределенный монолит. Проверка здоровья микросервиса не должен зависить от здоровья каких-то внешних ресурсов, иначе может случиться какой-нибудь дедлок или каскадный отказ, когда одно тащит на дно все остальное, дебажить такое будет больно и муторно, так как не понятно в каком конкретном месте произошла изначальная поломка. Т.е. мы должны видеть в логах на что конкретно ругается тот или иной микросервис и где происходит затык, но их жизненные показатели не должны зависеть друг от друга. Во всяком случае для кубернетиса это так, я хочу увидеть отказ конкретного POD, а не как с поломкой этого POD все остальные деплойменты начнут рестартовать, потому что их healthchek оказался сломан.
Но зависимые сервисы сами мониторятся ХЧ. Получается, что достаточно иметь граф зависимостей сервисов и нетранзитивный ХЧ, чтобы вычислить реальный статус инстанса. Единственный случай, когда такое не работает - если по какой-то причине сервис-зависимость здоров, но нет связности между ним и зависимым сервисом т.е. проблема с инфрой вроде балансера, реверс-прокси или сетевой конфигурации
Спасибо, очень информативно! С новым годом вас!
По варианту 3 прям не соглашусь -> Если у тебя HEALTHCHECK в микросервисе зависит от HEALTHCHECK других микросервисов и на основе этого вычисляет здоров ли первый микросервис, то это уже не микросервисная архитектура, а распределенный монолит. Проверка здоровья микросервиса не должен зависить от здоровья каких-то внешних ресурсов, иначе может случиться какой-нибудь дедлок или каскадный отказ, когда одно тащит на дно все остальное, дебажить такое будет больно и муторно, так как не понятно в каком конкретном месте произошла изначальная поломка. Т.е. мы должны видеть в логах на что конкретно ругается тот или иной микросервис и где происходит затык, но их жизненные показатели не должны зависеть друг от друга. Во всяком случае для кубернетиса это так, я хочу увидеть отказ конкретного POD, а не как с поломкой этого POD все остальные деплойменты начнут рестартовать, потому что их healthchek оказался сломан.
Но зависимые сервисы сами мониторятся ХЧ. Получается, что достаточно иметь граф зависимостей сервисов и нетранзитивный ХЧ, чтобы вычислить реальный статус инстанса. Единственный случай, когда такое не работает - если по какой-то причине сервис-зависимость здоров, но нет связности между ним и зависимым сервисом т.е. проблема с инфрой вроде балансера, реверс-прокси или сетевой конфигурации