- PVSM.RU - https://www.pvsm.ru -
Давайте сразу определимся: самым важным в разработке сейчас является производительность и надежность вашей инфраструктуры, потому что если ваш проект лагает или работает через раз, вас не спасут никакие фичи. Клиент просто уйдет к конкурентам.
Исходя из постулата выше, роль мониторинга систем в последние годы резко возросла. Наши системы перешли от технологических новшеств к статусу критической инфраструктуры, без которой повседневная жизнедеятельность просто невозможна. Однако существует зияющая пропасть между формальным мониторингом и мониторингом, который будет соответствовать сложности и глубине современных систем.
Зачастую, даже не смотря на то, что инженеры признают важность эффективного мониторинга, ожидания почти никогда не сходятся с реальностью построения и эксплуатации подобных систем. Ведь достижение всестороннего охвата, который бы полноценно отражал взаимодействие с пользователем, является крайне непростой задачей. И тут на первый план выходят идеи Observability или «наблюдаемости». Воспринимать его стоит не просто как мониторинг или комплекс мер, а как глобальный системный подход к выстраиванию работы с инфраструктурой проекта и его системами.
Наблюдаемость (англ. observability) — это подход к разработке программного обеспечения и управления инфраструктурой, направленный на применение методов, которые позволяют контроллируемо вести разработку приложения и в любой момент времени четко понимать его состояние и статус.
Часто усилия по внедрению обсервабилити начинаются за здравие, и как и нужно — фокусируются вокруг работоспособности критического пользовательского опыта в приложении. Однако, организация действительно полноценного обсервабилити требует больших усилий, и поэтому часто происходят обломы. Этот процесс требует глубокого понимания работы системы за пределами простых проверок, которые лежат на поверхности: «сайт работает», «сервис доступен». Это требует понимания того, что обсервабилити — фундаментальная часть понимания того, как вообще работает система, и как организован пользовательский опыт в приложении (user journey — т.е. как пользователь использует приложение).
К сожалению, многие разработчики даже зная сказанное выше, наступают на одни и те же грабли. Сначала они стремятся всесторонне контролировать свои приложения и сервисы, а в итоге оказываются ограничены приоритетами бизнес-процессов или вовсе изначально скудным инструментарием мониторинга. В итоге мы получаем перекос между скоростью разработки и наблюдаемостью системы, то есть ситуацию, когда разработчик больше не имеет сил и ресурсов бороться с запросами бизнеса на новые фичи и окончательно концентрируется исключительно на кодинге того, что сказали кодить. В такой ситуации развитие системы мониторинга остается за бортом.
По-настоящему глубокий подход к наблюдаемости требует перехода к системному анализу, пониманию пользовательских потоков и симметричного проявления воли как со стороны команды разработки, так и со стороны менеджмента проекта. На практике это означает, что вам нужно не просто расставить галочки мониторинга функций, а постоянно получать обратную связь от своих коллег. Фактически, наблюдаемость теперь — еще один процесс в разработке программного обеспечения, так как в нем участвуют все звенья команды, от рядовых инженеров до специалистов по продукту и менеджеров проекта. Без полноценного вовлечения в процесс построения наблюдаемости всех частей команды вы не сможете составить реальную карту пользовательского пути и определить ключевые узлы, на которые стоит обратить внимание.
Далее по тексту мы представим идеальное видение того, какой должна быть система наблюдаемости и способы ее реализации. Конечно же, мы понимаем, что идеал в современных реалиях практически недостижим из-за самой природы современной разработки с ее постоянно изменяющимся инструментарием, инновационными подходами и бесконечным пилением новых фич. Но условное описание «идеальной сферической системы в вакууме» может использоваться в качестве эталона, к которому можно будет «приложить» свою текущую систему мониторинга и проверить, насколько далеко вы от подобной системы на данный момент.
Ниже мы рассмотрим две самые критические вещи, за которыми нужно следить обязательно.
Чтобы обеспечить непрерывную работу приложений, нужно прибегнуть к проверкам, которые повторяют действия браузера, имитируя пользовательскую активность. В этот перечень входят проверки возможности логина, проверка корректного функционирования типичных пользовательских операций и выполнение основных действий в приложении.
Ответ | |
---|---|
Цель | Убедиться в работоспособности базовых функций приложения. |
Кто предоставляет метрики | Команда управления продуктом, которая определяет критические пользовательские сценарии и функциональные возможности. |
Инструменты | Синтетический мониторинг (через браузер), мониторинг деятельности реальных пользователей (Real User Monitoring или RUM). |
Что отслеживать | доступность, функциональность и производительность ключевых функций и пользовательских сценариев. |
Чек-лист покрытия:
Чек-лист оповещений:
Кроме инженеров вы можете получить информацию о проблемах или сбоях от вашей бизнес-команды, которая отслеживает конверсии, продажи и доходы от продукта. На первый взгляд все может идти хорошо, но если внезапно у вас обвалились продажи подписок, это может свидетельствовать о проблемах за пределами поля зрения команды, которая занимается мониторингом. Своевременное распознавание таких проблем позволит принять более взвешенное решение и спокойно построить работу продуктовой и технической команды, вместо того, чтобы в панике латать дыры, когда ситуация примет угрожающий характер.
Ответ | |
---|---|
Цель | Убедиться, что критические бизнес-процессы протекают в штатном режиме, причем проверка должна проводиться без привязки к результатам технического мониторинга. |
Кто предоставляет метрики | Бизнес-аналитики в связке с командой управления продуктом. |
Инструменты мониторинга | Инструменты бизнес-аналитики (BI), интегрированный с бизнес-аналитикой APM (мониторинг производительности приложения), информационные панели. |
Что отслеживать | Изменения в бизнес-показателях, закономерности и тренды, которые могли бы указать на наличие технической проблемы, оказывающей влияние на поведение пользователей или достижение бизнес-целей. |
Чек-лист покрытия:
Чек-лист оповещений:
Если погрузиться в нашу экосистему еще сильнее, то для начала важно определить, возникают ли проблемы с интерфейсом, либо же с API-сервисами на серверной части, ориентированными на интерфейс.
Ответ | |
---|---|
Цель | Определить, где возникают проблемы, во внешнем или внутреннем интерфейсном API. |
Кто предоставляет метрики | Команды фронтенд- и бэкэнд-разработки. |
Инструменты | Синтетический мониторинг, мониторинг реальных пользовательских пользователей (RUM), интерфейсные API, также рассмотрите возможность использования таких инструментов, как AlertSite, RunScope, Pingdom и т.п. |
Чек-лист покрытия:
Чек-лист оповещений:
Если проблема находится на фронтэнде, то команда деплоя должна откатиться к предыдущей рабочей версии, отключить поломанную функцию с помощью флага, либо же выкатить фикс, который закроет проблему.
Если же что-то произошло с интерфейсным API на бэкэнде, то, в идеальном мире, следующим шагом будет локализация проблемы. Это будет возможно в случае, если все приложение покрыто логированием и трассировкой ошибок, что позволит быстро выявить проблемный участок и облегчит работы по устранению.
К сожалению, мы живем не в идеальном мире и на практике такое получается провернуть не всегда, так что о более реалистичных ситуациях, когда информации недостаточно и где искать — непонятно, мы поговорим далее.
Ответ | |
---|---|
Цель | Определить точное место и причину ошибок на серверной части, отслеживания источник проблем при мониторинге всего стека служб. |
Кто предоставляет метрики | Команды внутренней разработки и эксплуатации. |
Инструменты | Инструменты распределенной трассировки (например, Jaeger, Zipkin), инструменты агрегирования журналов (например, ELK, Splunk) и инструменты мониторинга производительности приложений (APM). |
Что отслеживать | Производительность конечных точек и частоту ошибок для выявления сбоев серверных служб, журналы ошибок (для понимания характера проблем серверной части), распределенные трассировки запросов (для отслеживания пути ошибки через стек сервисов). |
Чек-лист покрытия:
Чек-лист оповещений:
Пусть тут и приведены основные кейсы, на практике все происходит зачастую совершенно иначе. Разработка продукта, особенно коммерчески прибыльного продукта, проходит в довольно гибком режиме и высоком темпе. В итоге команды разработки могут легко что-нибудь пропустить или попасть в нестандартную ситуацию. Например, трассировка может быть не настроена, из-за чего микросервис вместо корректной информации о сбое может просто не отвечать по HTTP 200. В таких случаях, вместо того, чтобы надеяться исключительно на трассировку, нужно отслеживать ошибки и сбои через специализированные сервисы мониторинга.
Ответ | |
---|---|
Цель | Обнаружить конкретное место в приложении, где возникла проблема. |
Кто предоставляет метрики | Команды внутренней разработки и эксплуатации. |
Инструменты | Используйте инструменты, которые позволяют выполнять пользовательские запросы к API-интерфейсам серверных микросервисов для мониторинга, такие как Postman для ручного тестирования и автоматизированных сценариев, Prometheus для сбора метрик и оповещений на основе этих метрик и Grafana для создания панелей мониторинга, визуализирующих данные. |
Что отслеживать | Частота и типы ошибок по службам, время ответа службы и выбросы. |
Чек-лист покрытия:
Чек-лист оповещений:
Теперь крайне важно получать подробную информацию о потенциальных причинах сбоя или о снижении производительности. Эти проблемы могут быть связаны с деградацией базовой инфраструктуры либо же вызвана связью с другими компонентами системы. Во втором случае речь идет о микрослужбах внутри приложений, подключениях к базам данных, кэшам и прочим хранилищам. Также не стоит забывать о сторонних API и других внешних факторах. На данном этапе крайне важным становится профилирование служб для точного определения неисправной функциональности.
Ответ | |
---|---|
Цель | Получать подробные профилированные показатели службы, чтобы иметь возможность выявить снижение производительности сервиса или зафиксировать зависшие/прерванные подключения к другим службам. |
Кто предоставляет метрики | Команда разработки. |
Инструменты | Инструменты управления производительностью приложений (APM), инструменты мониторинга производительности сети и инструменты сетевого наблюдения. |
Что отслеживать | Время выполнения службой различных функций, частота ошибок и точки сбоя при взаимодействии с зависимыми службами. |
Чек-лист покрытия
Чек-лист оповещений
Итак, мы наконец-то дошли до той области, наблюдаемость которой нормально выстроена в большинстве экосистем. Конечно же, речь идет о серверной/облачной инфраструктуре, на которой и крутится основной продукт. Хотя большинство сценариев, описанных выше (такие как сбои на уровне приложений, проблемы взаимодействия сервисов или неполадки интерфейсов), напрямую не связаны с серверной частью, шанс возникновения многих проблем в работе приложений напрямую зависит от производительности инфраструктурной части или от ее деградации.
Ответ | |
---|---|
Цель | Выявлять и распознавать проблемы, возникающие на уровне приложений, а так же проблемы, возникающие на уровне базовой инфраструктуры. |
Кто предоставляет метрики | Команды по инфраструктуре и эксплуатации. |
Инструменты | Инструменты мониторинга инфраструктуры, такие как Prometheus, Grafana, Datadog, а также собственные инструменты мониторинга облачного провайдера. |
Что отслеживать | Метрики оркестрации контейнеров (например, работоспособность кластера Kubernetes, статусы модулей).
Показатели сервера, включая уровень утилизации ЦП, использование памяти, операции дискового ввода-вывода. Сетевые показатели, такие как использование канала, пинг, потеря пакетов. Работоспособность и доступность облачных сервисов и других критически важных компонентов инфраструктуры. |
Чек-лист покрытия
Чек-лист оповещений
На наш взгляд, перечисленные шаги выстраивают близкую к идеальной экосистему наблюдения, которую хотелось бы видеть на любом проекте. Конечно же, идеал недостижим и к нему можно только стремиться, но всегда приятнее иметь хоть какой-то более-менее релевантный ориентир для установления вектора развития проекта и компании в целом.
На этом можно было бы и заканчивать текст, но есть еще один достаточно распространенный сценарий: когда проблемы с приложением остаются незамеченными и достигают широких слоев пользователей. В такие моменты на саппорт начинает сыпаться гора сообщений от недовольных клиентов, которые решили лично сообщить о сбоях или проблемах с производительностью.
Зачастую клиентская поддержка и разработка существуют в разных плоскостях. Пока девелоперы генерируют идеи и разрабатывают разные крутые фичи, команда саппорта оправдывается за то, в чем не виновата и выслушивает просьбы и требования, которые не в состоянии выполнить. Чаще всего саппорт используют в качестве спам-фильтра, задача которого оградить девелоперов от слишком активных пользователей и позволить им спокойно делать свою работу, параллельно собирая обратную связь от клиентов. Очень часто саппорт сообщает разработчикам о критических сбоях или неполадках, потому что в их случае техподдержка получает целый шквал писем. Однако в идеальном мире саппорт должен служить не первой линией оповещения, а только источником подтверждения ранее полученной информации и способом обратной связи с пользователем. То есть, о проблемах с сервисом вы, как девелоперы, должны узнавать не от собственной техподдержки и клиентов, а от систем мониторинга сбоев и производительности.
Только в этом случае вы сможете начать ликвидацию сбоя еще до возникновения вала тикетов, который похоронит под собой ваш саппорт на несколько суток, и сможете дать своим клиентам реальный и правдивый ответ о том, что проблема известна и на текущий момент устраняется. В случае же, если о сбое станет известно непосредственно от клиентов, это приведет только к росту недовольства пользователей.
Однако мир неидеален, так что у вас всегда будут ситуации, когда о проблеме знают только ваши клиенты и сообщают о ней через вашу техническую поддержку. И такие репорты ни в коем случае нельзя игнорировать.
Ответ | |
---|---|
Цель | Использовать отзывы пользователей для выявления и определения приоритетности проблем, не обнаруженных автоматизированными системами мониторинга. |
Кто предоставляет метрики | Команды поддержки клиентов и управления продуктами. |
Инструменты | Платформы обратной связи с клиентами, системы заявок в службу поддержки, интегрированные с инструментами мониторинга, инструменты анализа настроений для социальных сетей и форумов. |
Что отслеживать | Объем и характер проблем, о которых сообщили пользователи.
Анализ настроений и отзывов пользователей по различным каналам. Выявление корреляции между отзывами пользователей и показателями, собираемыми системами мониторинга. |
Чек-лист покрытия
Чек-лист оповещений
В этой статье мы изложили базовые элементы философии построения целенаправленной экосистемы наблюдения, а так же подчеркнули важность согласованности усилий по мониторингу, анализу пользовательского опыта и поддержанием работоспособности приложений. Уже в другой публикации мы постараемся рассмотреть конкретные кейсы и разобрать некоторые вещи на практике.
Самое важное в нашем ТГ-канале [2]. Без лишнего спама.
Автор: ITSumma
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/oshibki/392898
Ссылки в тексте:
[1] Image: https://www.itsumma.ru/services/big-data/data-ops?utm_source=habr&utm_medium=bannernews&utm_campaign=dataops
[2] ТГ-канале: https://t.me/itsumma
[3] Источник: https://habr.com/ru/companies/itsumma/articles/814195/?utm_source=habrahabr&utm_medium=rss&utm_campaign=814195
Нажмите здесь для печати.