Однажды тихим днем в нашу службу поддержки поступил запрос с гаража. Клиенткой, пусть мы назовем ее Анной, была выполнена аутентификация в портале для проверки состояния своего автомобиля. Процесс входа прошел идеально. Портал даже приветствовал ее по имени. Она перешла к своему автомобилю и оказалась лицом к лицу с чужой машиной. Неправильная марка, неправильный год, неправильный номер, сервисные заметки с упоминанием механика, которого она никогда в жизни не встречала. Ее первая мысль, вполне разумная, заключалась в том, что кто-то украл ее аккаунт. Никто не крал. Процесс входа вернул именно того человека, кто должен был произвести аутентификацию. Знаменитая задача по подтверждению вашей личности работала безупречно. Однако часть, отвечающая за получение данных о вашем автомобиле, извлекла не тотrecord. Все индикаторы аутентификации светились зеленым. Проблема находилась где-то там, куда эти индикаторы не светят.

Очевидным решением было бы тщательно проверить процесс аутентификации. Мы так и сделали. Он был безупречен. Маленький запечатанный токен, который система выдает вам при входе, был верным во всех отношениях. Имя на нем было Анна. Сессия была свежей. По всем учебным тестам система верно определила, кто она. Реальная проблема находилась на этаж ниже. В двух разных гаражах у двух клиентов были одинаковые адреса электронной почты. Два реальных человека с одним общим почтовым ящиком в небольшом семейном бизнесе. А часть, которая извлекала данные о машине, искала людей только по электронной почте, потому что только этого ей было приказано, без понимания, к какому гаражу относится запрос. Процесс аутентификации указывал системе, кто. Но он никогда не сообщал частям, которые находились ниже, где.

Это ловушка, о которой никто не предупреждает, когда вы стыкуете инструменты вместе. Подтверждение личности оказывается легкой частью. Понимание контекста — это сложная часть. Клиент — это не просто имя. Это имя, в определенном бизнесе, в определенной роли, на определенном устройстве, на определенном языке, с определенной валютой. Каждый из этих фактов должен путешествовать вместе с запросом. Когда у вас есть один инструмент, контекст невидим, потому что инструмент знает только о себе. Когда у вас есть пять инструментов, контекст должен быть передан громко, иначе каждый инструмент придумает свой собственный ответ. Иногда ответы расходятся, и клиент оказывается перед лицом чужого автомобиля.

Это беспокоило нас больше, чем обычный баг, потому что затрагивало доверие. Поэтому мы провели несколько напряженных дней, создавая то, что мы называем слоем контекста. Первый шаг состоял в быстром исправлении, достаточном, чтобы остановить утечку. Затем мы сделали все правильно. Теперь каждый внутренний запрос содержит запечатанный глазом недоступный конверт, описывающий не только то, кто спрашивает, но и какой бизнес, в какой роли, на каком языке, действующий только на короткий период. Каждая часть читает из этого конверта и никогда не импровизирует. Конверт проверяется на каждом шаге. Если он отсутствует, запрос отклоняется. Если конверт говорит о одном бизнесе, а запись принадлежит другому, запрос также отклоняется. Сегодня Анна столкнулась бы с вежливым и решительным отказом, а не с автомобилем незнакомца.

Если вы управляете бизнесом, собранным из нескольких инструментов, вы уже заплатили за этот урок, не заметив этого. Каждый инструмент проверяет пользователя через вашу единую систему аутентификации. Затем каждый инструмент самостоятельно решает, что показать. Передача данных между ними включает в себя электронную почту, возможно, токен, но почти никогда не содержит четкого утверждения о том, что этот человек действует в этой роли, в этом бизнесе. Итак, инструменты импровизируют. Один ищет людей по электронной почте. Другой — по телефону. Третий — по имени. Рано или поздно две записи сталкиваются, и клиент видит что-то, чего ему никогда не предназначалось.

Счет приходит в виде постоянной капли мелких неловкостей, а не одного драматического бедствия. Лояльный постоянный клиент остается встреченным как совершенно новый контакт. Скидка оказывается на неправильного сотрудника. Счет уходит компании с похожим названием. Каждое такое событие требует пяти минут извинений по телефону. Пять минут умножить на тысячу таких звонков в год — это работа на неполный рабочий день, на которую никто не нанимает, и она полностью оплачивается доброй волей ваших клиентов.

Лечение скучно и неэпично. Выберите один истинный источник для того, чтобы узнать, какой бизнес; один — для того, чтобы узнать, кто человек; один — для понимания роли. Передавайте их вместе в запечатанном конверте, а не в разбросанных осколках, которые каждый инструмент трактует по-своему. Отклоняйте все, что появляется без конверта. Вы не покупаете скорость, когда делаете это. Вы покупаете право никогда больше не обсуждать ситуацию с Анной, и это стоит больше, чем все инструменты, которые вы собрали, чтобы избежать ее построения.