Матрица «известное/неизвестное» (known/unknown) может оказаться невероятно полезной для понимания того, на каком этапе реализации наблюдаемости вы находитесь, пишет на портале The New Stack Хейзел Викли, член совета директоров Haskell Foundation.
В процессе внедрения наблюдаемости каждая компания, как правило, проходит несколько конкретных этапов. Понимание того, как они разворачиваются и приобретают форму по мере развития практики наблюдаемости, поможет вам определить, что вы столкнулись с определенными проблемами и что вам действительно нужны определенные инструменты и практики для решения этих проблем.
При этом, когда вы рассказываете об этом другим, вы можете обнаружить, что вам трудно объяснить, откуда вы знаете, на каком этапе пути вы находитесь, или сформулировать проблемы, с которыми вы сталкиваетесь. Часто люди испытывают трудности с достижением общего понимания, и именно здесь могут пригодиться мнемоники и ментальные модели.
В частности, матрица «известное/неизвестное» может оказаться невероятно полезной для понимания того, на каком этапе пути к наблюдаемости вы находитесь.
Матрица «известное/неизвестное» — это инструмент дизайн-мышления, который помогает определить уровень знакомства с темой. Он состоит из четырёх категорий: «Известные известные», «Известные неизвестные», «Неизвестные известные» и «Неизвестные неизвестные».
Известные известные — информация или знания, которые считаются верными. Известные неизвестные — информация, о существовании которой известно, но ничего не известно по её поводу. Неизвестные известные — информация, которая считается верной на основе опыта, но её нельзя объяснить. Неизвестные неизвестные — информация, о которой нет никакого представления.
Каждая из категорий этой матрицы соответствует различным способам подхода к трем очень важным задачам в работе с системой: задавать вопросы, изучать систему и объяснять то, что вы узнали.
Эти три задачи, в двух словах, — то, к чему можно свести почти все, что мы делаем в области платформенного инжиниринга, наблюдаемости, обеспечения бесперебойной работы высоконагруженных сервисов (SRE), DevOps и т. д. Так что давайте рассмотрим их и посмотрим, как можно использовать матрицу, чтобы понять, на каком этапе вы находитесь, и поделиться этим пониманием с другими.
Известные известные
Известные известные, когда они используются для описания того, где вы находитесь на пути к наблюдаемости, — это первый этап. Вы знаете, какой вопрос задаете и что рассматриваете. Здесь вы хотите иметь возможность заглянуть в прошлое и спросить: «Что произошло?».
Некоторые примеры:
- На сайте произошел всплеск ошибок. Где, как, почему?
- В последней версии мобильного приложения происходит больше сбоев. Это ошибка только в последней версии?
- Наш сервис авторизации полностью не работает, но только в одной географической зоне. Что это значит?
Несмотря на то что это первый этап, на самом деле он один из самых сложных. Большинство компаний и большинство инженеров никогда не проходят дальше этого этапа, и почти все инструменты и поставщики, с которыми вы столкнетесь, в первую очередь заинтересованы в этом этапе. Все потому, что на этом этапе нужно уметь задавать осмысленные вопросы о прошлом, а оказывается, что «осмысленность» — это непростое понятие.
Если это сложно, то разобраться с тем, как сделать так, чтобы ваши инструменты и системы позволяли задавать эти вопросы, будет еще сложнее. Неудивительно, что большинство людей застревают на этом этапе и им бывает трудно объяснить, почему это только начало пути.
В конце концов, если так много компаний могут быть дико успешными без всего этого, вы можете задуматься, нужно ли вообще начинать этот путь к наблюдаемости.
Известные известные — это про исследование.
По правде говоря, если вы не можете достаточно четко сформулировать, почему путь к наблюдаемости критически важен для компании, вы никогда не пройдете этот путь. Человеческое понимание и общая мотивация должны быть на первом месте.
Вы находитесь на этом этапе, если:
- Вы задаете исследовательские вопросы, например «Эй, а что произошло во время...?»
- Вы в основном учитесь, делая выводы и исследуя систему, а не предсказывая и предвосхищая.
- Вы строите повествования на основе исторических записей.
Давайте разберем все по порядку.
Исследовательские вопросы — это основной вид анализа, который вы здесь проводите со своими системами. Вы находитесь на этапе исследования, в той части процесса обучения, где самое важное — выяснить, почему, как, что и где. Оказывается, на основные вопросы бывает очень и очень сложно ответить. Вы не можете просто сказать, что это была DNS, и оставить все как есть; вы должны быть в состоянии выяснить, что и как.
Это означает, что вам придется потратить много времени на логические выводы и изучение системы. Вы не сможете получить ощущение будущего поведения системы, но именно здесь инженеры формируют глубокую интуицию относительно системы и ее поведения. Изучайте ее! Играйте с ней! Пробуйте разные вещи! Здесь можно экспериментировать и узнавать что-то новое. Инструменты, которые здесь лучше всего подходят, — это те, которые позволяют получать мгновенную и поэтапную обратную связь.
Как вы делитесь результатами того, что вы узнали? Составляя повествование. Особенно с историческими записями. Ретроспективы происшествий должны будут здесь совершенно уместны, особенно с временными метками.
Известные неизвестные
Известные неизвестные можно использовать для описания второго этапа. Они подходят, потому что мы рассматриваем вещи, которые, как мы знаем, нам неизвестны, но мы пытаемся увидеть, насколько хорошо мы можем развить понимание этих неизвестных, тогда как если бы это были неизвестные неизвестные, мы бы даже не знали, с чего начать.
Если на первом этапе вы используете большинство инструментов наблюдаемости, то это эра установки целевых значений количественной оценки работы сервисов (SLO); это также этап, когда наблюдаемость начинают формулировать в манере «да, и». Наблюдаемость? Да, и мониторинг производительности, и SLO, и опыт разработчиков, и опыт пользователей, и ...
Развив способность понять, что вы можете задавать вопросы о том, что происходило в системе в прошлом, вы, вероятно, теперь в первую очередь озабочены статистическими вопросами и получением более полных корреляций.
Примеры:
- Наши конечные точки обычно работают быстро (откликаются в течение 200 мс), но насколько медленный отклик можно считать слишком медленным?
- Мы обновили некоторые зависимости, и теперь наш сайт внезапно стал работать на 60% быстрее. Это... нормально?
- Наше первоначальное распределение времени отклика так сильно меняется между платформами, что все наши оповещения сломались, когда мы добавили мобильные SLO. Как нам это учесть?
Недостаточно знать, произошло ли что-то, теперь вы хотите выяснить, насколько это аномально. Именно здесь вы узнаете, что аномально хорошее может быть так же опасно для системы, как и аномально плохое.
Известные неизвестные — это про анализ.
Вы находитесь на этом этапе, если:
- Вы задаете статистические вопросы, например «Насколько необычным является ... ?».
- Вы в основном учитесь, прогнозируя и предвидя, а не экспериментируя или играя.
- Вы строите повествование на эмоциях удивления и новизны.
Давайте разберем все по порядку.
Основным видом анализа здесь являются статистические вопросы, а не исследовательские, потому что вы пытаетесь выяснить, как система ведет себя со временем, чтобы начать предвидеть и предсказывать ее поведение. Конечно, вы все еще копошитесь в системе и что-то там ковыряете, но когда у вас появляются статистические данные, подтверждающие гипотезу о том, что произойдет с системой после изменений, вы переходите на второй этап. Именно поэтому инструмент, позволяющий сопоставлять самые разные потоки данных, вычислять количественные показатели, а затем аннотировать их человеческими заметками, оказывается таким ценным.
Кроме того, один из самых интересных моментов здесь — это изменение ваших отчетов о происшествиях: они перестают интересоваться тем, что произошло, и начинают интересоваться тем, насколько это было необычно или удивительно.
Вы воочию видели этот этап пути к наблюдаемости в действии, если когда-нибудь читали ретроспективу, в которой говорилось что-то вроде: «Мы были удивлены обнаруженным поведением, поэтому мы стали копать. Несмотря на то что наши предупреждения говорили нам о том, что проблема заключается в другом, мы сначала исследовали этот удивительный факт».
Неизвестные известные
Здесь мы вступаем на интересную территорию. Это этап пути к наблюдаемости, который мы начинаем с «понятия не имеем». Эта стадия — неизвестные известные, — это способность предсказать, как поведет себя система при наступлении определенных событий. Именно здесь в игру вступают искусственное создание сбоев и пользовательские эксперименты.
Примеры:
- Что произойдет, если мы отключим зону доступности?
- Наше приложение поддерживает отказоустойчивость, но работает ли она?
- Насколько эффективны наши программы обеспечения удовлетворенности пользователей? Можем ли мы ввести сбои и посмотреть, как это отразится на поддержке клиентов?
- Влияют ли обновления нашего мобильного приложения по воздуху (OTA), выходящие за пределы определенного размера, на коэффициент конверсии?
Мы знаем, что мы собираемся сделать с системой, но мы понятия не имеем, что система сделала или сделает. Захватывающе!
Неизвестные известные — это про эксперимент.
Вы находитесь на этом этапе, если:
- Вы задаете экспериментальные вопросы, например «Что будет, если мы...?».
- Вы в основном учитесь, экспериментируя и играя, а не моделируя или осмысливая.
- Вы строите повествования вокруг экспериментов и полученных знаний.
Поскольку эксперименты — это здесь основной метод анализа, мы проверяем границы системы и выясняем, где они находятся и как она себя ведет. Вы можете думать об этом как о постепенном приобретении опыта во всех необходимых аспектах для понимания возникающего поведения и способности считаться с ним (вставьте предчувствие).
По мере того, как вы будете совершенствоваться, разработчики станут меньше экспериментировать; флаги функций можно будет использовать и для A/B-тестирования, персонализации контента и создания маркетинговых воронок. На этом этапе вам следует привлечь всех сотрудников компании, потому что эксперименты — это обучение, а обучение должно быть междисциплинарным, чтобы быть максимально эффективным.
Неизвестные неизвестные
Именно здесь вы начинаете пытаться понять, какой должна будет выглядеть в будущем ваша система и как найти эффективный компромисс между людьми и компьютерами. В игру вступают бюджеты на ошибки, на основе данных формируются «достаточно хорошие» цели, а связь между SLO и соглашениями об уровне обслуживания (SLA) переходит от управляемой «вибрациями» к управляемой предсказаниям.
Примеры здесь просто восхитительны:
- Какие кодовые базы представляют наибольший риск для непрерывности бизнеса? Какими должны быть наши SLA в соответствии с этим?
- Какая воронка продаж наиболее эффективна, и как на это влияет отказоустойчивость системы?
- Что даст бóльшую окупаемость инвестиций (ROI) через два квартала: создание дополнительных общедоступных функций или инвестиции во внутренние инструменты для команды по работе с клиентами?
- Какой аспект производительности нашего мобильного приложения больше всего влияет на показатель ежедневных активных пользователей (DAU)?
Если выразиться словами Донеллы Медоуз, которая была пионером в области устойчивого развития и системного мышления, «вы танцуете с системами».
Неизвестные неизвестные — это про танцы.
Вы находитесь на этом этапе, если:
- Вы задаете модельные вопросы, например «Как должна выглядеть наша система, чтобы достичь...?».
- Вы учитесь путем моделирования, осмысления и междисциплинарного обмена знаниями.
- Вы строите повествования вокруг взаимодействий социотехнической динамики.
Когда вы придете сюда, вы почувствуете себя странно, потому что вам будет казаться, что вы вообще не занимаетесь наблюдаемостью. На самом деле наблюдаемость, опыт разработчиков, платформенный инжиниринг, рост, управляемый продуктом, и многие другие вещи — все они оказываются здесь. Оказывается, когда рынок сложен и ваша система сложна, вам нужно развивать экспертизу в понимании эмерджентного поведения. Раскрою тайну: именно в этом и заключается весь путь к наблюдаемости — понимание систем за пределами ограничивающих парадигм «команда и контроль» или «предсказание и контроль».
Путешествие ждет вас
Собственно, и все. Четыре этапа и способ связать их в единое повествование, чтобы все сотрудники вашей компании, а не только инженеры, понимали, с какими проблемами вы столкнетесь и какие инструменты вам понадобятся для совместной работы над решением этих проблем.
Если вкратце:
1. Известные известные: расследование
- Вы здесь, если хотите узнать: «Что произошло во время...?».
- Вам нужны инструменты, позволяющие быстро и интерактивно запрашивать данные.
2. Известные неизвестные: анализ
- Вы здесь, если хотите узнать: «Насколько странным является ... ?».
- Вам понадобятся инструменты, позволяющие сопоставлять множество различных источников.
3. Известные неизвестные: эксперименты
- Вы здесь, если хотите узнать: «Что произойдет, если мы сделаем ... ?».
- Вам нужны инструменты, которые позволят всем в компании проводить эксперименты и делиться результатами.
4. Неизвестные неизвестные: танцы
- Вы здесь, если хотите узнать: «Как должна выглядеть система, чтобы достичь ... ?».
- Вам нужна культура системного мышления (извините, здесь нет инструментов).
Здесь не хватает одной важной вещи — понимания мотивации для участия в путешествии, увязывания ее с пониманием того, где вы находитесь и куда вам нужно двигаться. Этого не хватает по важной причине: это должно быть написано вами. Ваша история и ваши мотивы станут той критической энергией, которая будет питать вас на пути к целостному пониманию вашей системы в масштабах всей компании.