Це важко здійснити через визначення того, що є здоровим
Ви відповіли на власне запитання тут. Визначення медичної перевірки буде різним, оскільки те, що є здоровим, змінюється. Це також залежить від того, що видає перевірку здоров’я.
Хороше запитання, яке потрібно задати собі, "з точки зору запитувача, чи перевірена служба працює так, як очікувалося?" Якщо це ти, ти можеш це визначити. Якщо це інша команда / служба, вам потрібно визначити, що таке стандарт / специфікація для перевірок здоров'я.
Ймовірно, у великій організації у вас з’явиться якийсь стандарт для того, що слід робити. Виясніть це.
Зокрема, ваш приклад webapp означає, що він не повинен повертатися здоровим, оскільки webapp не здоровий. Але, можливо, ваше визначення поняття "здоровий" буде включати це як "добре". Це частина обговорення вимог вище (знову ж таки, навіть якщо це лише ваш власний код).
Моя рекомендація, припускаючи, що вона не вказана в іншому місці, полягала б у тому, щоб мати якийсь код статусу, пов'язаний з різними відмовами. Коли ви запитуєте веб-сервер, він може повернути помилку, яка говорить про те, що "залежна послуга мертва", і тому ваш клієнт (або що завгодно виконує перевірку здоров'я) може знати причину того, що клієнт мертвий.
Для відредагованих питань:
Чи достатньо добре вважати послугу здоровою, якщо система оркестрації повідомляє, що завдання виконується?
Ні, тільки те, що процес запущений, не означає, що він не вичерпаний, абсолютно нефункціональний або велика кількість інших можливостей.
Або ми повинні вручну підписувати кожну послугу?
Це може працювати, залежно від обсягу функціональних можливостей вашої програми. Якщо перевірка служби відповідає на "Ви живі?" ping, то це може бути все, що потрібно. Але якщо служба легко може бути "живою та чуйною, але насправді не працює", то, можливо, вам потрібно перевірити й інші речі.
Або варто піти далі і намагатися забезпечити, щоб веб-додаток робив те, що належить робити, як показати веб-сторінку?
Ваша перевірка здоров'я повинна гарантувати, що потрібна функціональність, яка очікується, працює так, як очікувалося.
Якщо ваш додаток повертає «здоровий» і не може робити те , що йому потрібно зробити, ви можете також позбутися від усього Healthcheck , оскільки це дає помилкові спрацьовування (не кажучи вже про заплутати риси з людей , які намагаються налагодити цю проблему - «агов наш веб-сервер показує здоровий, чому ми не можемо побачити сторінку? ').
Чи має також перевірка здоров’я перевірити, чи працюють також деякі залежні служби? Як і база даних, або сама система оркестрації. Або це відповідальність чергової перевірки здоров’я?
Це дещо залежить. Якщо ваша послуга залежить від іншої послуги, характер цієї взаємодії повинен відображатися в API / мережевих дзвінках, надісланих їй у вашому додатку, та включених у перевірку здоров'я.
Наприклад, веб-сервер, який читає з бази даних, повинен мати інформацію про стан вбудованої в нього бази даних - або веб-додаток просто вийде з ладу, якщо виклики API не вдаються. Ви можете банально змінити ці дзвінки, щоб вони були включені у вашу перевірку здоров'я.
Однак якщо ваша служба надсилає події споживачам, які слухають, без будь-якої перевірки, то для функціональності вашого додатка менш важливо, щоб споживачі були живими. "Здоровий" до вашої програми надсилає повідомлення, а фактично їх не отримує.
В основному, якщо вашій службі потрібно поговорити з іншими службами і перевірити їх здоров'я в будь-якому разі, має сенс принаймні встановити базовий рівень перевірки на предмет перевірки здоров'я вашої служби. Це має мати сенс концептуально з огляду на те, що я щойно сказав, оскільки ваша програма вже буде вирішувати цю проблему (або, напевно, виходить з ладу).
І, нарешті, якщо одна із залежних служб померла, а веб-додаток згодом вийшов з ладу, чи повинен веб-додаток повідомляти про погане здоров’я, чи це добре здоров’я, оскільки це не вина веб-додатків?
На це в основному відповіді вище. Я рекомендую, щоб ваша медична перевірка повернула код / повідомлення / все, що дає цю інформацію. Обидві відомості важливі: що залежна від вашої послуги послуга мертва та що ваша послуга не працюватиме так, як очікувалося.