Как мы привыкли измерять успех
Как измерить успех: секреты эффективных измерений
«Как успехи?»
Сколько раз вам задавали такой вопрос о вашем предприятии?
Можете ли вы ответить на него полно и исчерпывающе?
Если ответ у вас есть, это уже хорошо. Значит, вы знаете,
куда движется ваше предприятие. Преуспевающие и прибыльные компании непрерывно
оценивают себя и улучшают методы оценки своего бизнеса.
Если вы неспособны рассказать о своих успехах, это сигнал
тревоги. Значит, вас и ваше предприятие ждут трудные времена. Мы раскроем вам
секреты «сильных» измерений, которые повысят эффективность вашего бизнеса.
Что такое измерение?
Измерение – это стандартная мера оценки вашей работы в
определенной области. Измерение – сердце хорошей системы управления процессами,
ориентированной на клиента, и любой программы непрерывного совершенствования.
Внимание к клиентам и рабочим показателям проявляется в форме измерений, которые
отражают, насколько вы соответствуете требованиям клиентов и задачам бизнеса.
Секрет 1: Измерять то, что нужно
Ясно, что измерять финансовые показатели необходимо. Сегодня
преуспевающие предприятия понимают, что этого недостаточно. Ваша система
измерений должна охватывать, по крайней мере, следующие участки:
Имея полный или хотя бы достаточный комплекс текущих
измерений, можно спросить себя: помогают ли эти измерения действовать правильно?
«Правильные действия» – это те, которые принесут наилучшие результаты сегодня и
в будущем.
Секрет 2: Создать эффективные измерения
Задача кажется простой, но таит много ловушек, большинство из
которых можно избежать. Вот примеры обычных ошибок:
Итак, вам нужны измерения Конкретные, Исчисляемые,
Определенные, Значимые и Своевременные.
«Конкретные» – это значит, что ваши измерения конкретны и
нацелены на измеряемые участки. Например, для оценки удовлетворенности клиентов
хорошим измерением будут прямые клиентские отзывы о ваших услугах или товарах.
Менее эффективно количество возвратов или жалоб клиентов, так как оно дает
косвенную информацию, что может создать неверное впечатление и привести к
неприятным сюрпризам.
«Исчисляемые» – возможен сбор точных и полных данных.
«Определенные» – измерения просты для восприятия и при
составлении плана работы видно, куда двигаться надо, а куда – нет.
«Значимые» – измерения действительно важных параметров.
Частая ошибка профессионалов в работе с процессами или группами стандартов –
измерение всего.
«Своевременные» – те, для которых вы можете получить данные в
нужный момент.
Измерения должны быть простыми. Тогда они легче
воспринимаются людьми и более эффективны.
Как правило, измерения делятся на две категории:
Рабочие измерения оценивают то, что вы делаете. Они дают
общие показатели по измеряемым областям. Внешние по природе, они наиболее тесно
связаны с производительностью, требованиями клиентов и потребностями процесса.
Диагностические – определяют, почему процесс не соответствует
ожиданиям. Они, как правило, направлены внутрь, связаны с внутренними шагами
процесса и данными, полученными от поставщиков.
Частая ошибка – начинать с диагностических (внутренних)
измерений, хотя первоочередными являются внешние, касающиеся клиентов.
Секрет 3: Следовать проверенному процессу
Один из проверенных подходов к созданию измерений
предусматривает пять простых шагов.
Первое. Определите своих клиентов и результаты процесса.
Клиентами могут быть конечные пользователи товаров и услуг, менеджеры или
пользователи процессов.
Второе. Определите потребности/требования клиентов. Для этого
можно использовать собеседования или опросы. Примените этот же метод к
поставщикам, чтобы измерить качество их поставок и создать дух сотрудничества.
Третье. Обязательно проясните основные задачи предприятия
(см. Wesner, глава 9, где описан процесс постановки целей).
Четвертое. Определите эффективные измерения, рабочие и
диагностические. Наиболее действенные методы – мозговой штурм и диаграммы
свойств (affinity diagrams).
Наконец, сравните/отфильтруйте/выровняйте свои измерения для
данного процесса и для процессов более высокого уровня. Создайте таблицу, в
столбцах которой перечислите главные области измерения (названные в начале
статьи). В колонках обозначьте такие пункты как: описание измерения, текущий
рабочий уровень, краткосрочная цель, долгосрочная цель, эталонное сравнение.
Насколько хороши ваши измерения?
Определившись с тем, что именно вы хотите измерить, сделайте
шаг назад и оцените все еще раз. Задайте себе вопросы:
Не следует недооценивать последний пункт. Ваши сотрудники
основные усилия бросят на то, что вы – своими измерениями – определили как
важное. Их действия могут вас удивить, показаться близорукими и совсем не
такими, каких вы ожидали.
Задайте себе вопросы: Поощряет ли измерение желательное
поведение? Какой тип поведения вызовет измерение? Поведет оно бизнес туда, где
ему надо быть через месяцы и годы?
Такие категории измерения, как время, качество, затраты и
удовлетворенность клиентов, подходят для всех отраслей. Организационные схемы
разработки продукта по первым трем категориям включают: время до поставки на
рынок (time-to-market), надежность продукта и затраты по всем направлениям.
В последнюю категорию входит удовлетворенность как конечных
пользователей, так и клиентов более низкого уровня (например, отделы
производства и обслуживания).
Рассмотрим основные цели Lands End, известной компании,
делающей одежду на заказ:
Мы можем найти в этих целях элементы времени (п. 3), качества
(п. 1), затрат (п. 2) и удовлетворенности клиентов (п. 4).
Дальнейшие шаги
Если вы удовлетворены оценкой ваших измерений, если они у вас
есть и начат сбор данных, вы можете начать отслеживать свой прогресс. Для этого
чаще всего используются диаграммы, показывающие выполнение работы за
определенный период времени. Такая диаграмма представляет собой график, где на
оси Х – время, а на оси Y – показатели выполнения. Собирая данные, вы обновляете
графики и анализируете тенденцию.
Вероятно, у вас возникнут вопросы: Достаточно ли быстро я
продвигаюсь? На тех ли задачах сосредоточился? Ответить на них можно, сравнив
свои показатели с данными конкурентов.
9 способов измерить успех, не заглядывая в кошелек
Почему-то слово «успех» ассоциируется в первую очередь с деньгами. Понятно, что чаще всего счастье в деньгах, но успешность — это немного другой случай. Скажем так, успешный человек так или иначе не будет бедным, главное — быть самодостаточным в других сферах.
Успешный человек доволен если не всем, то многим. Успешный человек чувствует себя счастливым и не жалеет о потраченных напрасно минутах. Ну а если подробнее, то специально для тебя мы размусолили истинное значение слова «успешность».
Отдых отдельно от работы
У тебя остается время на походы в кино, встречи с друзьями, поездки на дальние расстояния, игру в приставку в перерывах между работой? Если да, то прими наши искренние поздравления, ты счастливчик. Хотя нет, стоп, небольшая поправочка. У тебя хватает денег хотя бы на часть из вышеперечисленного? Твоя работа позволяет тебе расслабиться по-царски? Потому что можно иметь кучу свободного времени и питаться хвощом да дождевой водой.
Вообще, возможность почувствовать себя абсолютно расслабленным, не нуждаясь ни в чем, очень ценна. Какой смысл в миллиардных счетах, если тебе некогда спать? Иначе придется тратить всё заработанное на психологов и других врачей.
Удовольствия в приоритете
Нам вроде бы говорят, что гедонизм — это плохо, что ты не должен жить для себя, нужно жить для семьи и для общества. Нужно налоги раздать, на благотворительность скинуться, детишек нарожать сразу пятьдесят штук, а на себя хрен положить. Потому что ты же мужик, ты же должен всех обеспечивать и показывать рабский пример. Но нужно себя баловать и оставлять приоритет удовольствиям.
Для кого-то это алкоголь, для кого-то 13 часов сна, для кого-то путешествия — да хоть ритуальные танцы нагишом. Даже если это вредно для здоровья, лучше умереть довольным, чем быстрее засохнуть от хандры. Да здравствует рай на земле, построенный нами самими. Нужно отдыхать так, чтобы потом хотелось пойти на работу. К черту тех, кто будет утверждать обратное, это скучные, сухие люди. Помни, дети из программы «Самый умный» никогда не отдыхали, а потом, в результате перенапряжения и подросткового бунта, спились к 16 годам. Они не знали, что такое удовольствия. Не будь таким.
Наличие хобби
Как самочувствие?
Обратите внимание на свое тело, на самочувствие. Нигде не колет, ничего не болит? Может, ты устал или чувствуешь опасное напряжение? В пузе нет постыдных реакций? Не кашляешь? Зубки не болят? Изо рта не воняет? В коленных суставах нет никаких неприятных ощущений? А отжаться 20 раз сможешь? А присесть? Тебе, кстати, как сидится, никаких болезненных ощущений? Стул не кровавый? Как «в каком смысле», во всех! В общем, если ты себя чувствуешь отменно и пробегаешь 300 метров, не упав в обморок, то искренне завидуем. Обычно ведь у всех в твоем возрасте мигрень, геморрой размером с кулак и каловых камней с полкило. Страшно представить, что с ними будет, когда им исполнится 26.
Если у тебя всё хорошо с самочувствием, значит, твое психическое состояние тоже в порядке. Состояние здоровье — это барометр, который показывает, что твою жизнь накрыло огромной, страшной и волосатой печалью. Если ты умудряешься достаточно спать и оставаться эталоном человеческого здоровья, то поверь, ты гораздо успешнее Илона Маска и генпрокурора Чайки.
Доволен ли ты своей жизнью?
А ты сам как ответишь на свой вопрос? Понятно, что ты слишком молод, чтобы делать какие-либо эмпирические выводы. Но если представить, что тебе сейчас было бы 50, и никто не узнает про наш разговор, то что бы ты ответил? Пускай сейчас ответить трудно, но когда в следующий раз задумаешься о своей успешности, просто задайся вопросом, всё ли тебя устраивает, и если бы тебе была дана еще одна возможность, ты бы стал кардинально менять свою жизнь или сделал бы всё точно так же? Это очень сложный вопрос, на который не ответишь за секунду. Может быть, даже одной поездки в трамвае будет недостаточно, чтобы всё обдумать. Будь максимально откровенным, и если окажется, что ничего менять не нужно, то это успех. Другое дело, что не у всех хватает мужества быть честными даже с самими собой.
Нам всем не мешало бы как можно чаще задумываться об этом. В процессе быстро идентифицируются вещи, которые мешают быть успешным.
Твои отношения с другими людьми
Вместо того, чтобы ругать своего начальника и обвинять обстоятельства и родителей в том, что они постоянно мешают тебе в твоем жизнеутверждении, попробуй наладить отношения с людьми. Поверь, можно жить в мире и согласии, ни с кем не ругаясь и не поджигая дерьмо под дверью своего врага. Если у тебя хорошие отношения хотя бы с близкими родственниками, друзьями и коллегами, с которыми тебе приходится иметь дело чаще всего, то ты великий человек. А если окружающие тебя люди не «свиньи, педерасты, гады и масоны», а нормальные люди, то ты успешный человек. Они не должны и не могут все поголовно быть хорошими и приятными, но если ты сумел с ними ужиться и не считаешь их причиной всех своих проблем, то ты слишком самодостаточная личность. Такие люди не винят в бедах евреев, инопланетян и власть, а знают, что всё можно изменить собственноручно.
Предвкушение светлого будущего
Успешные люди знают, что будущее будет еще лучше, чем настоящее. Хотя понятно, что ничего лучше прошлого не будет, трава, знаешь ли, зеленая, было время на мечты, солнце яркое и всё такое. Правда, если ты знаешь, что весна будет лучше зимы только потому, что у она у тебя была такая же веселая, как финал «Зеленой мили», то это не считается. Нужно позитивно относиться к настоящему и знать, не верить, не надеяться, а знать, что будущее будет лучше. И как ты оцениваешь свои перспективы, бедняжечка?
Как часто ты испытываешь радость
Как часто ты смеешься? Как часто твою голову навещают позитивные мысли? Это имеет значение, ибо успешный человек позитивно воспринимает то, что негативно воспринимает пессимист. Так-то. Знаешь, сколько смеется 4-летний парень? 30 раз в день. А 34-летний? 3 раза. Это подсчет психологов, не наш. Ты должен не соответствовать большинству, успех — синоним уникальности.
Достижение поставленных целей
Наверное, ты ожидал увидеть этот пункт в самом начале, но тогда ты бы уделил меньше внимания первым восьми. Не нужно считать его основополагающим, поскольку он не всегда приносит моральное удовлетворение. Как говорят умные люди, бойся своей мечты. Но именно осуществление задуманного, та самая пресловутая сбыча мечт — то, что заставляет чувствовать себя успешным. Да и по большому счету, успех — это ощущение после достижения поставленных целей. Но не только материальных и коммерческих, это важно. Настоящим успехом это будет считаться только в том случае, если спустя определенное время, 5 или 25 лет, достигнутое будет доставлять радость, удовольствие и приносить прибыль.
Как можно измерить успех?
Успех не всегда можно измерить в цифрах, как это зачастую происходит в бизнесе. Иногда совершенно непонятно, в правильном ли мы движемся направлении, ведь никаких индикаторов нет. Но численные подтверждения порой не только не нужны, они еще и ограничены, потому что цифрами всего измерить нельзя. Даже деньги порой — не лучшая единица измерения. Нужны совершенно другие факторы.
Мы постарались найти те самые индикаторы, которые в сумме скажут гораздо больше, чем простые цифры.
Позитивное влияние, которое вы оказываете на других
Это все — не то же самое, что манипулировать людьми. Манипуляция — это достижение лишь своих целей с вредом для окружающих. Так что посмотрите, какое количество окружающих поддается вашему позитивному влиянию.
Способность преодолеть препятствия
Это простой индикатор. Последовательность должна быть такая:
Если все останавливается на второй стадии, значит есть большие проблемы в психике, которые нужно исправить. Реакция на проблему — вот что важно.
Достижение целей
Почему достижение целей так важно, несмотря на мнение, что главное — сам процесс достижения? Успех строится на терпении и настойчивости. С целью все обстоит точно так же. Для того, чтобы достичь цели, нужно научиться мотивировать и дисциплинировать себя.
Создание собственного пути
Успех — это не повторение чужого пути, а создание собственного. Если появится второй Джобс или Тарантино, это будет выглядеть фальшиво. Нужна уникальность.
Сначала нужно повторять то, что делали великие, но в какой-то момент следует выбрать собственный путь. Это работает во всех сферах жизни.
Любить то, что делаешь
Тут все просто: чтобы стать мастером в чем-то, стоит долго заниматься тем, что любишь. Причина в том, что в данном случае не нужно себя дополнительно мотивировать, все происходит естественно. Возникает страсть, которую за деньги не купишь.
Обратите внимание на этот параметр. Любите ли вы то, что делаете? Можете ли представить полноценную свою жизнь без этой деятельности? Если таких дел несколько, определите, что ценнее всего.
Создание чего-нибудь ценного
Эйнштейн говорил, что человек тогда успешен, когда создает что-то ценное. Этот критерий был важным для выдающегося физика. Сложно его обвинить здесь в неправоте.
Возможно Чехов, Микеланджело и Маск были или есть хорошими людьми, но любим мы их не за это. Им есть что показать миру. Они создали ценные продукты, которыми наслаждается человечество.
Умение наслаждаться каждым моментом жизни
Не прожигать, а наслаждаться — это большая разница. Искренне наслаждаться можно в том случае, если мы знаем, что делаем то, что нравится и влияем на окружающих. То есть гордимся собой и тем, что делаем жизнь людей лучше.
Достижение мастерства
Зачастую люди занимаются чем-то достаточно долго, а затем им становится скучно. Берутся за что-то еще и снова бросают. Успешные люди могут сменить род деятельности, но не потому что скучно, а потому что достигли мастерства в одной сфере и теперь хотят проверить себя в чем-то другом.
Расти как личность
Существует большое количество черт характера и навыков, которые должен развить в себе каждый, кто хочет вырасти как личность. Это не академические знания. Это так называемые «мягкие навыки», которые позволяют становиться лучше.
Как измерить успех. Стратегии мониторинга и их связь с бизнес-проблемами
Перед тем, как ответить на вопрос «Как измерить успех?», надо понять, что значит «успех» именно для вас. Для Dev и Ops определение успеха отличается. Для Dev успешный проект полностью проходит тестирование. Для эксплуатации — мониторинг. Тестирование и мониторинг нужны, но тесты никогда не дают 100% покрытия проблемы, а ответа 200 от HTTP недостаточно, чтобы быть уверенным в том, что система хорошо работает. Leon Fayer на РИТ++ отстаивал точку зрения, что DevOps платят не за то, чтобы все метрики в мониторинге были в зеленой зоне. Платят за то, чтобы пользователи были довольны. Если недовольны — бизнес теряет деньги, и никого не волнует, что все зеленое.
Под катом много примеров из практики, которые доказывают эту точку зрения. Разберем, зачем понимать бизнес, как следить за успехом с точки зрения бизнеса, и зачем это нужно простым разработчикам.
О спикере: Leon Fayer родился в когда-то дружественной республике, но вырос в США. Начал заниматься программированием очень много лет назад, и за это время работал программистом, менеджером — кем только не работал. Участвовал в стартапах — некоторые были более удачные, а некоторые не очень.
Много лет Леон работает в OmniTI. Эта компания специализируется на разработке масштабируемых систем, поэтому Леон имеет уникальную возможность проектировать и строить системы для самых посещаемых сайтов в мире — Wikipedia, National Geographic, White House, MTV и т.д.
Перед тем, как ответить на вопрос «Как измерить успех?», надо понять, что значит «успех» именно для вас. Для каждого человека ответ будет разный.
Если вы читаете эту статью, скорее всего, вы имеете отношение к DevOps. Вы больше Dev, чем Ops? Или, наоборот, больше Ops, чем Dev? Для Dev и Ops определение успеха немного разное: для Dev — это, естественно, тестирование.
Тестирование
Для меня, как для программиста, успешное тестирование означает, что все в порядке, все хорошо, все работает — можно запускать в production. Проблема в том, что я еще и циник, и не фанат тестирования как такового. Не потому, что это трудно, и не потому, что это долго — а потому, что тестирование не дает то, что я хочу.
Поймите меня правильно, тестирование — это обязательный процесс, оно должно быть включено в любой проект, но его явно недостаточно, чтобы гарантировать успех.
Есть много разных вариантов тестирования:
Сколько вы используете методов тестирования — 1, 2, 3, 5? И что, вас не будят по ночам алерты? Все работает в production?
Проблема в том, что тестирование дает иллюзию успеха. Оно предопределено: мы знаем, что поезд должен выйти из пункта А и дойти в пункт В, на это мы и тестируем. Есть варианты, которые мы продумываем. Если у поезда отвалится колесо или закончатся дрова, это не будет неожиданностью. Но мы не тестируем, например, ограбление поезда. Мы не можем это тестировать, потому что мы не знаем, что такой вариант возможен.
Есть парочка проблем, из-за которых тестирования просто недостаточно. Первая из них, естественно, проблема с данными. То, что задача работает локально, но почему-то не работает в production — стандартная проблема.
Неважно, насколько мы стараемся. Неважно, сколько репликаций мы делаем вживую —development и production никогда не будет равен. Будет ли еще одна строка в базе данных, будет ли еще один лишний запрос — в production всегда будет что-то, на что мы не рассчитывали.
Wolfe+585 — самая длинная фамилия в мире:
Hubert Blaine
Wolfeschlegelsteinhausenbergerdorffwelchevoralternwaren-gewissenhaftschaferswessenschafewarenwohlgepflegeundsorgfaltigkeitbeschutzen-vorangreifendurchihrraubgierigfeindewelchevoralternzwolfhunderttausendjahres-vorandieerscheinenvonderersteerdemenschderraumschiffgenachtmittungsteinund-siebeniridiumelektrischmotorsgebrauchlichtalsseinursprungvonkraftgestartsein-langefahrthinzwischensternartigraumaufdersuchennachbarschaftdersternwelchege-habtbewohnbarplanetenkreisedrehensichundwohinderneuerassevonverstandig-menschlichkeitkonntefortpflanzenundsicherfreuenanlebenslanglichfreudeundruhe-mitnichteinfurchtvorangreifenvorandererintelligentgeschopfsvonhinzwischensternartigraum,
Sr.
Немногие системы выдержит, если кто-то введет такую фамилию в форму. Я знаю минимум 5 разных точек, в которых может полететь вся система.
Поэтому вторая проблема — это проблема с пользователями.
Это такие интересные люди, которые поломают все, что угодно. Если бы не было пользователей, все было бы гораздо легче, честно скажу.
Даже если в вашем UI будет одна кнопка, они все равно найдут метод, как поломать то, что мы делаем.
Самый лучший пример — это World of Warcraft.
Для тех, кто не знает, — это онлайн игра, в которую играли 10 млн людей. В свое время там были довольно легендарные баги. Corrupted blood bug — это идеальный пример того, насколько пользователи все портят.
В городе находились тысячи людей любых уровней, самых маленьких тоже. Мало того, там были еще неигровые персонажи, которые тоже заражались проклятьем. В течение суток серверы опустели. Нельзя было выйти никуда, где еще были другие игроки. Это стало игровой чумой в прямом смысле этого слова. Пришлось сделать round restart всех серверов для того, чтобы убрать проклятье и поменять механику. И все из-за одного тестировщик — даже не знаю, как его назвать.
Третья основная проблема — это проблема с внешней зависимостью. Мы все с этим сталкивались: API, от которого ты зависишь, вдруг перестает работать; или ты перестаешь контролировать API.
Но есть еще бо́льшая проблема с этим. Внешняя зависимость может быть не только прямая, но еще и косвенная. Мы все сейчас используем OpenSource. Каждый OpenSource продукт зависит от каких-то библиот6ек, которые тоже OpenSource и которые поддерживает кто-то другой. Когда что-то ломается, оно ломается не только в этом маленьком модуле, но и во всем, что зависит от него.
Наверное, самый идеальный пример этому был недавно, примерно год назад — это left—pad. Это npm модуль на node.js, который выставляет пробелы перед string (в начале строки). Не будем обсуждать, зачем этот модуль был сделан. Но оказывается, его включили в очень много популярных модулей. В какой-то момент автор решил, что с него хватит, убрал этот модуль из npm, и полетело 70% кода, написанного на node.js.
Если вы думаете, что это единичный случай, — вы ошибаетесь.
Есть еще модуль is-odd, который и сейчас есть в npm. Этот модуль определяет четное число или нет.
Не будем обсуждать то, что 3 миллиона людей не знают, как проверять четность/нечетность. Но там еще 12 модулей, которые его используют! И неизвестно, сколько этих модулей используют еще модули. Если вам кажется, что в нем нечему ломаться — там 5 версий!
Возвращаясь к нашим баранам — есть еще много вариантов:
Есть хороший пример снова с World of Warcraft — у них много хороших примеров на эту тему.
Спустя полгода после выхода игры, в поддержку начали приходить обращения, что в одну пещеру не могут зайти некоторые игроки. Обнаружилось, что только один вариант расы и пола не мог войти в эту пещеру — это были таурены женского пола.
Почему потребовалось 6 месяцев, чтобы найти эту ошибку — ведь играют миллионы людей? Потому, что таурены — это вымышленная раса, смесь человека и быка. Таурен-женщина — это говорящая корова. Никто не хотел играть коровой, поэтому за 6 месяц ни один человек не дошел до максимального уровня, чтобы зайти в пещеру и найти этот баг. Соответственно, никто его не протестировал.
В любом случае тестов мало не бывает. Но тесты не дают 100% покрытия. Поэтому тестирование не дает гарантию успеха. Это постепенно подводит нас ко второй части — Ops. Для эксплуатации успех — это мониторинг.
Мониторинг
Есть много причин, зачем нужен мониторинг:
Мониторинг нужен потому, что все меняется. Это основная причина. Причем именно в production, там все меняется постоянно, и нам нужно это обнаруживать.
Что должен покрыть мониторинг? — Все! Это короткий ответ, но он должен покрыть все.
Это все немного абстрактно. На самом деле, у нас всех есть чек-лист, что мы мониторим:
Там может быть миллион вещей. Многие собирают сотни, тысячи и десятки тысяч метрик на своих системах.
Мы соберем очень много метрик для вот этого:
Конечно, я утрирую, но все, что нам нужно с точки зрения Ops — это чтобы HTTP вернуло 200. Это значит, что с сайтом все хорошо. Раз сайт работает, значит, базы данных работают, приложения работают — все в порядке. С точки зрения Ops успех — это именно это: все графики в зеленой зоне, все работает правильно — все хорошо!
Все знают, что такое Twitter. Они обрабатывают 500 миллионов твитов в день —сумасшедшая цифра.
Но они также известны своими ошибками. Ошибки легендарные по своей сложности или легкости — с какой стороны посмотреть.
У них была ошибка: сайт работал, клиент мог написать твит, нажать кнопочку, ему говорили спасибо, твит отсылался — и все! Он нигде не появлялся и просто пропадал, а мониторинг показывал, что все в порядке. Сайт возвращает на запрос 200 — API работает. А твитов нет!
«Пока я продолжаю делать деньги, мне по***, что сервера горят».
В чем-то это очень правильно, и пример Твиттера это подтверждает: все метрики показывали, что все было в порядке с точки зрения разработчиков, но с точки зрения работы именно бизнеса — совсем не в порядке.
Если честно, виноваты в этом мы все. Конечно, в основном виноваты компании, которые выпускают продукты для мониторинга. Но мы тоже, потому что традиционно мы собираем системные метрики. Мы привыкли работать с маленькими системами — один, может быть, два сервера. Если они работают, значит, все в порядке.
Теперь серверов у нас чуть-чуть больше, чем два, или даже 10, и просто измерять здоровье системы или здоровье программы — мало. Мы должны отслеживать работу чего-то другого.
Возвращаясь к цитате — мне платят не за то, чтобы все было зеленым. Мне платят за то, чтобы мои пользователи или мои менеджеры были довольны — кто-то должен быть доволен результатом. Если все пользователи недовольны, никого это не волнует, что все зеленое.
Бизнес-мониторинг
Мы говорили, что мониторинг нужен, потому что все меняется. Но когда все меняется, изменения влияют на бизнес: что-то поломалось — перестали приходить деньги, что-то починилось — деньги начали опять идти — прямая корреляция. Или не влияют — но, если мы не мониторим бизнес, мы этого не знаем.
Как живой пример — график чтения кэша, знакомый всем.
90% времени все в порядке, почти все запросы идут в кэш. И вдруг что-то случилось — причем очень серьезное. Это проблема, которая должна разбудить в 3 часа ночи кого-то, кто ее решит. Но, если скорость загрузки для пользователей не меняется, действительно ли это проблема?
В английском есть термин Observability — наблюдаемость. Это: monitoring, logging, alerting. Поэтому термин мониторинг немного. Мы хотим наблюдать за всем — собирать системные метрики на каждом узле, если нужно. Но мониторить мы хотим именно бизнес, потому что он волнует всех. Это показатель успеха.
Чтобы это сделать, мы должны:
1. Понять проблему — что именно нам нужно мониторить.
2. Определить базовую линию — то есть достаточно ли того, что скорость загрузки у пользователя не изменилась для того, чтобы никто не просыпался посреди ночи, когда чтение из кэша перестало работать.
3. Коррелировать данные — один из самых важных факторов. Если маркетинг собирает данные по доходу, а вы собираете данные по серверам и не можете сопоставить эти два наблюдения, то в них очень мало смысла.
Обычно я привожу очень много примеров. Насколько абсурдными они бы не выглядели, они все из моей жизни, и я на них потратил очень много нервов.
Пример: у меня был клиент со 100 млн пользователей. Это была интернет-маркетинговая компания, которая отправляла много e-mail и использовала A/B тестирование. Для них мы собирали 6 тысяч метрик.
Все, как всегда, началось со звонка. Звонит телефон — значит, что-то случилось.
— ОК, что именно не работает? В чем это выражается?
— Мы стали получать меньше дохода.
— Что-то не работает в системе.
— Не понял. Если меньше доход — поговори со своим отделом продаж. Зачем ты звонишь мне?
— Нет, я уверен, что это что-то в системе не работает!
— Хорошо, давай посмотрим.
Слава Богу, у нас была метрика дохода, поэтому мы могли посмотреть. На графике действительно видно, что в какой-то момент доходы у них упали на 15 %. Учитывая количество пользователей, это довольно существенно.
Ладно, надо посмотреть. Первым делом проверяю скорость загрузки — нормальная.
Посмотрели на нагрузку на базу данных — все в разумных пределах, вроде бы ничего не изменилось. Дальше мы начали смотреть на cpu-нагрузку, на отдельные узлы, на кэши.
Все было в порядке., пока мы не дошли до метрик e-mail рассылки. Один из больших провайдеров случайно поставил их домен в black-list. Процент их e-mail маркетинга перестал доходить до пользователей, что означает, что меньше людей: получили письма, нажали на кнопочку, зашли на сайт и что-то купили.
Вот такая корреляция!
Нам повезло, что у нас были эти метрики. Если бы у нас их не было, мы бы их добавили — это очень простой ответ.
Самая большая ошибка, которую люди делают — это считают, что мониторинг можно поставить в конце проекта. Это как фича: сделать свой проект, поставить мониторинг — и все, мы готовы!
Инструментовка никогда не может быть закончена. Всегда находятся проблемы, о которых неизвестно с самого начала. Как и с тестированием — нельзя написать тесты и покрыть все, потому что ты не знаешь, что такое «все». Мы не умеем предсказывать будущее и не умеем предсказывать бизнес, поэтому мы не знаем, что такое «все».
Абсолютно идентичный пример тому, о чем я говорю. Это был CEO, который на конференции в Париже проснулся утром, выпил кофе, просмотрел свою почту и отчет о доходах, и позвонил мне с той же проблемой: доход упал.
Я это хорошо помню, потому что у него было 9 утра, а у меня на 6 часов раньше, еще и в субботу. Меня только что транспортировали домой с празднования дня рождения — но это не важно. Так вот, в 3 утра я сажусь за компьютер, и мы начинаем идти теми же шагами. То есть смотрим на нагрузку на систему, на номер регистрации, на все.
Единственное отклонение от нормы, которое мы нашли, — это ниже процент успешных авторизаций. То есть количество такое же, а процент чуть-чуть ниже. Я знаю, что это может быть спам и т.д. Но все остальные технические метрики абсолютно в норме. Причем мы дошли до того, что уже чуть ли не по строкам в базе данных шли и пытались свериться — есть ли что-то, что можно глазом поймать. Абсолютно ничего!
Просидели мы полвоскресенья, в понедельник тоже продолжили, но уже были уверенны, что проблема не техническая. Пусть сами ее решают. И вот в понедельник я сижу на работе и мне звонит сотрудник из их бухгалтерии:
— Можешь снять значок «American Express» с сайта?
— Конечно могу! А чего вдруг?
— Знаешь, мы здесь с ними спорим, и пока мы не принимаем American
Express вообще.
— Извиняюсь спросить, а когда вы перестали их принимать?
— Перед выходными, по-моему — в пятницу или в субботу.
Ни один человек в здравом уме никогда бы не поставил сбор метрики на процент авторизаций с определенного вида кредитной карточки! После этого случая мы, конечно, поставили.
К чему я это рассказываю? Надо сначала смотреть на бизнес, потому что все эти системные проблемы были просто невидимы. Они никого не будили посреди ночи, мы не видели, что это проблемы. Легко заметить падение дохода, а все остальное нужно отслеживать, чтобы можно было коррелировать эти данные с данными бизнеса.
Успех для бизнеса
Для бизнеса успех может быть разным, он зависит от целей. Самое важное — как это можно измерить? Традиционно мы измеряем системные показатели, иногда, как инженеры, забывая, что измерить можно все, что угодно.
Например, можно измерить собственный алкоголизм. Кстати, я не шучу. У нас в офисе стоит бочковое пиво с четырьмя краниками. Так как мы все инженеры, мой коллега решил на поставить сенсоры Raspberry Pi, чтобы посмотреть, сколько пива мы пьем и какого.
Это выглядит как простая шутка, но на самом деле это удобно, потому что мы видим, когда пиво подходит к концу и надо заменить бочку. И вообще мы можем посмотреть, когда народ пьет, какое ему больше нравится пиво — темное, светлое и т.д. Кстати, пик — это мой день рождения.
Абсолютно случайно мы нашли еще одно применение этому.
На графике потребление пива за несколько дней и в выходные. К выходным потребление алкоголя обычно уменьшается, практически сходит на нет. Однажды мы приходим в понедельник, смотрим на график и видим, что кто-то в субботу выпил четверть бочки пива. На графике видно точное время в пределах получаса. Оказалось, что уборщикам, которые приходили в субботу, надо было похмелиться, вот они и похмелялись.
Шутка шуткой, но в конце концов у них были серьезные проблемы, потому что вообще плохо пить на работе, да еще и чужое пиво!
В конце концов любые метрики могут быть полезными. Даже эта метрика, которую мы собирали чисто для собственного фана, оказалась важной в чем-то другом. Но в основном действительно нужные метрики сводятся к деньгам. Деньги для бизнеса важнее всего.
Обычно критерии успеха бизнеса — это что-то, что в конечном итоге связано с деньгами:
Все это имеет денежный эквивалент. Кстати, скорее все, все эти метрики уже собираются в вашей компании — либо продажами, либо маркетингом. Так что не нужно придумывать колесо, можно просто взять уже имеющиеся метрики в собственную систему.
Все должно рассматриваться в контексте бизнеса. Мы говорили про специальные метрики для бизнеса. Другие, именно технические метрики, тоже могут рассматриваться в этом контексте.
Например, скорость загрузки —довольно стандартный график. Сначала все в порядке, идет вверх — вниз, вверх — вниз, и вдруг явная проблема. Ее починили, и график вернулся к стандартному виду — 99-й процентиль ниже порога, SLA не нарушается.
Если взять тот же график и посмотреть на количество пользователей, которые были затронуты, проблема сразу смотрится по-другому.
Эти пользователи не потратили деньги, то есть принесли убытки. Более того, когда никакие алерты не пришли и считалось, что все в порядке, тоже были проблемы. Здесь это видно гораздо лучше, чем на графиках системных метрик.
Каждый пользователь важен. Мы это забываем, потому что мы смотрим на среднее количество на интервале времени. Но каждый пользователь несет определенную ценность. Маркетинг об этом очень хорошо знает. Сумму, которую каждый пользователь потратит в следующие 3 месяца, маркетологи очень хорошо знают.
Среднее величина — это зло. Не то чтобы она не нужна, она дает нам информацию, которая действительно необходима, когда мы пытаемся найти проблему, но как измерения ее недостаточно.
На графике средняя скорость загрузки.
Опять все стандартно: сначала все в порядке, потом маленькая проблема, и дальше серьезная проблема, которую кто-то решал.
Это тепловая карта, которая касается индивидуальных пользователей в каждую секунду. Там, где график средней скорости загрузки показывает, что все в порядке, 50 % пользователей действительно попадают в категорию «все в порядке», но у остальных загрузка либо медленнее, либо вообще не происходит.
Насколько ценна 1 секунда?
Сейчас мало систем с 1-2 запросами в секунду. Мы работаем в системах десятки тысяч запросов в секунду. Там есть 10 000 разных вариантов, что может пойти не так. Скорее всего, это 10 000 разных пользователей, которые могут быть как-то затронуты.
Построим распределение скорости ответа на 1 секунду. Загрузка страницы для каждого пользователя в среднем занимает 600-700 мс. Конечно, 600 мс — это не самое лучшее время, но вроде бы в разумных пределах. Но если посмотреть детально, то видны пользователи, у которых загрузка заняла больше секунды. Уже с 800 мс начинается область, где можно терять деньги, потому что пользователи будут просто уходить — грузится слишком медленно.
Интересно, что проблема может быть и там, где время загрузки близко к нулю. Если ответ вернулся за 0 секунд, явно что-то пошло не так, совсем не так! Но по среднему никакие алерты не пойдут.
Каждый пользователь важен, поскольку несет какую-то сумму. Гистограммы и тепловые карты — это самый лучший способ отследить картину, поскольку они показывают разброс индивидуальных пользователей и как он соотносятся с метрикой.
На этой карте показаны 99-й и 50-й процентили, среднее и разброс индивидуальных пользователей. Можно посмотреть, насколько они отличаются друг от друга.
Еще один момент, о котором хотелось бы поговорить — это то, о чем говорят в DevOps в последнее время — это измерение эффективности процесса.
Эффективность процесса
В каждом процессе есть много маленьких процессов, в каждой компании есть разные процессы, и каждый этап этих процессов может быть оптимизирован.
Value stream mapping — это разбиение процесса на составляющие и оптимизация индивидуальных шагов. Берешь весь процесс и записываешь, что именно происходит пошагово. Например, кто должен поставить галочку, где работал автоматический тест, сколько он занимает, что случается после этого, какой процент ошибок. После этого смотришь, где лучше всего оптимизировать этот процесс, чтобы увеличить доходы.
Есть четыре основные метрики:
На паре своих проектов, я вычислял, сколько денег компания делает в час, и потом из этого экстраполировал, сколько денег приносит один пользователь. Путем нехитрых вычислений получалось: «Если просто регистрация будет не работать час — вот сколько денег потеряет компания. Не теоретических или потенциальных, а физических денег теряет компания, если регистрационная страница не работает».
Если процесс можно оптимизировать, он отнимает меньше ресурсов, стоит меньше. Это в конце концов повышает доходы компании, которые тоже нужно измерять.
Таким образом ваша работа заключается в поддержке бизнеса. Мы это иногда забываем и считаем, что наша работа — в том, чтобы написать лучше программу, сделать самую прикольную архитектуру. В конце концов все это делается для того, чтобы поддержать бизнес. Научитесь понимать бизнес.
Как понимать бизнес — это отдельный разговор, который может занять гораздо больше времени, потому что мы с ними говорим на разных языках. Но поймите, какие данные нужно собирать, что именно важно, что должно будить вас среди ночи. Потому что успех для вас — это успех для бизнеса.
1 и 2 октября в Москве состоится профессиональная конференция по интеграции процессов разработки, тестирования и эксплуатации DevOpsConf Russia.
Если вы только начинаете работать по принципам DevOps, это будет отличной возможностью посмотреть на реальные работающие примеры от старта и до успешного внедрения, и проникнуться такими идеями, как в докладе Леона. Для продвинутых специалистов, будут доклады с глубоким погружением в тему и важными подробностям, и обсуждения новинок.
Приходите и увидите, как разработка, тестирование и эксплуатация могут быть нераздельны.