Соавтором этого сообщения в блоге является Гирдхар Малхотра, менеджер по продукту Intuit.

В Intuit мы создали платформу инфраструктуры приложений, на которой размещены предложения продуктов, включая QuickBooks®, TurboTax® и Mint, тем самым обеспечив поддержку миллионов пользователей. Доступность не только критична для нашего бизнеса, но и гарантирует, что пользовательский опыт TurboTax не будет затруднен в дни пиковой загруженности во время налогового сезона. Даже несколько минут простоя могут негативно повлиять на производительность, удержание и общую удовлетворенность клиентов, одновременно повышая требования к персоналу колл-центра.

Вот почему все больше и больше организаций, таких как Intuit, стремятся к устойчивости с целью ›доступности 99,99%, чтобы пользователи или клиенты почти всегда могли получить доступ к своим предложениям. Несмотря на очевидную важность доступности, 96% организаций, опрошенных по всему миру, испытали по крайней мере один сбой в прошлом году, показывая, что проблемы с простоями распространяются повсюду, независимо от размера компании, вертикали или местоположения [1].

Определение времени простоя означает, что система недоступна. Проведенное в 2019 году Исследование надежности серверных ОС показало, что один час простоя стоит: [2]

  • Не менее 100000 долларов для 98% компаний
  • 300 000 долларов США или выше для 86% предприятий
  • От 1 млн долларов США до более 5 млн долларов США для 34% опрошенных компаний

Средняя почасовая стоимость простоя корпоративных серверов во всем мире в 2019–2020 годах:

Решение для обеспечения высокой доступности в Intuit

Вот как мы разработали механизм аварийного переключения, чтобы исключить вероятность простоев из-за сбоев при запуске.

Динамические одностраничные приложения

В прошлом месяце мы описали нашу платформу AppFabric в Intuit Medium Tech Blog: как мы разделили наше монолитное приложение на интерфейс, бэкэнд и даже разделили интерфейс на несколько микро-интерфейсов для независимого выпуска и отката различными командами. Индексная страница приложения SPA на микро-интерфейсе (одностраничное приложение) обычно динамически составляется серверной службой (служба динамического приложения Node.js® на диаграмме ниже).

Сервис динамических приложений обрабатывает весь входящий веб-трафик для более чем 200 приложений, включая TurboTax. Целью этой службы является динамическое создание начальной страницы индекса SPA в формате HTML. Это основано на различных конфигурациях приложений, таких как аналитика, ведение журналов, экспериментирование и т. Д. В состав также входят артефакты микро-интерфейса (также известные как плагины) и другие специфические для приложения контексты через зависимые службы.

Единая точка отказа

Если сервису приложения не удается составить первый SPA HTML и ответить на запрос браузера, пользователи не смогут получить доступ к приложению. Выполнения мер по изоляции и HADR (аварийное восстановление с высокой доступностью) для обеспечения доступности службы в нескольких регионах будет недостаточно. Даже эффективных механизмов автоматического масштабирования для обеспечения высокой доступности недостаточно, поскольку есть вероятность, что служба не сможет ответить из-за различных зависимостей нисходящего потока или потенциально плохого кода.

Механизм отката CDN

Какое наше решение гарантирует, что на пользователя не повлияют какие-либо первоначальные неправильные настройки системы? Это наш резервный механизм CDN, архитектура, которая ведет себя как машина времени. Это дает пользователю возможность испытать опыт работы с продуктом, который он получил бы до того, как начался сбой.

Механизм отката CDN состоит из двух частей:

  1. Автоматическое задание, которое периодически вызывает службу приложения Node JS для приложения (например, https://myturbotax.intuit.com/), захватывает динамически сгенерированную HTML-страницу покадрового индекса SPA приложения и загружает этот снимок в CDN.
  2. Когда происходит реальный запрос пользователя, шлюз обнаруживает любые признаки сбоев в службе приложения, проверяя как ошибки 5xx / 429, так и порог регулирования (например, 4 секунды), по которому служба должна ответить.

В обычном сценарии служба приложения будет обслуживать страницу индекса SPA пользователю напрямую. Однако, когда шлюз обнаруживает сбой для входящего трафика, он автоматически перенаправляет трафик на соответствующий URL-адрес CDN для конкретного приложения, где доступна покадровая копия HTML-страницы индекса. HTML-код SPA структурирован таким образом, что скелетное приложение может запускаться без какого-либо пользовательского контекста; все пользовательские контекстные данные извлекаются из браузера. Веб-приложение SPA полностью функционально, чтобы конечный пользователь мог перемещаться по нему, даже когда служба приложения не работает.

Когда шлюз снова начинает получать успешные ответы (код состояния 200) в течение порогового времени (4 секунды), трафик автоматически возобновляет нормальный поток.

Дизайн для изящного взаимодействия с пользователем

Механизм аварийного переключения CDN обеспечивает 100% доступность первой страницы для наших пользователей TurboTax, избегая пустых / неожиданных экранов ошибок сервера. Это также усилило наше дизайнерское мышление, чтобы убедиться, что мы позволяем пользователю видеть значимую первую страницу и постепенно загружать всю необходимую информацию о контексте / содержании, специфичную для пользователя, на стороне браузера.

Обучение

В течение периода начала подачи налоговой декларации в феврале 2021 года мы выпустили инфраструктуру аварийного переключения для TurboTax и успешно предотвратили тысячи внутренних сбоев последующих сервисов, которые могли повлиять на доступ пользователей к сервисам TurboTax, что потенциально могло привести к потере доходов в десятки тысяч долларов.

Мы гордимся тем, что выполнили обещание о создании отказоустойчивой системы, которая обеспечивает высокую доступность такого важного бизнес-приложения в пик налогового сезона. Это беспроигрышный вариант для наших клиентов и бизнеса Intuit.