Завтрак с миллиардом электронных писем
Опубликовано: 2020-02-05Гладкая Черная пятница - это все, о чем мы просим
К тому времени, когда я завтракал примерно в 8 утра по стандартному тихоокеанскому времени (PST) каждый день в выходные, посвященные Черной пятнице, Twilio SendGrid уже обработал более 1 миллиарда электронных писем, рассчитанных по восточному стандартному времени США (EST).
Глядя на статистику, мы обработали более 16,5 млрд электронных писем с Дня благодарения до Киберпонедельника и более 22,3 млрд за неделю, начавшуюся во вторник перед Днем благодарения. Это действительно хорошие цифры для бизнеса. С точки зрения инженерной организации, делать это без срабатывания предупреждений или ухудшения качества обслуживания клиентов было невероятно приятно.
Я рекомендую прочитать эту статью в блоге «Масштабирование нашей инфраструктуры для 4+ миллиардов электронных писем за один день» , написанную моей коллегой Сарой Сэдиния, в которой говорится о важности бесперебойной работы в таком масштабе для нашего бизнеса и для предприятий, которые полагаются на нас. Здесь я собираюсь сосредоточиться на нашей подготовке, которая сделала самые важные выходные года для наших клиентов электронной почты самыми гладкими на данный момент.
Как мы устроили эти выходные в Черную пятницу без проблем? Обработка наших самых больших дней отправки требует тщательного планирования, многочисленных тестов на изменение региона, множества людей, анализирующих данные, и ужесточения циклов обратной связи, когда мы проверяем улучшения наших систем на основе наблюдений телеметрии. У нас все еще есть дополнительные средства автоматизации и улучшения, которые мы будем вносить, чтобы продолжать радовать наших клиентов и обеспечивать быструю отправку нужных сообщений нужным получателям.
Понимание нашего бизнеса
Бизнес-модель SendGrid требует, чтобы мы всегда были на связи — у нас нет периодов обслуживания для приема и доставки почты. Наши клиенты нуждаются в надежном сервисе, который принимает и доставляет почту без перебоев. Это означает, что все изменения нашей инфраструктуры, как аппаратного, так и программного обеспечения, должны быть выполнены, пока мы продолжаем обрабатывать и доставлять электронные письма без каких-либо заметных задержек.
Количество электронных писем, которые мы обрабатываем, значительно выросло за последние несколько лет, как показано на следующем графике.
У нас был наш первый день 1B в середине 2016 года, и у нас был наш первый день 4B в эту Черную пятницу. Это рост на 400% менее чем за 4 года. Чтобы учитывать постоянно растущие масштабы, поддерживать управляемость затрат и обеспечивать большую надежность для наших клиентов, нам пришлось перепроектировать и развить наш конвейер обработки почты.
Черная пятница приближается
Люди спрашивают меня: «Почему Черная пятница и Киберпонедельник так важны для вас?» В этот Киберпонедельник мы обработали на 45 % больше писем, чем в пиковый период предыдущего года. Черная пятница — одно из самых важных событий в сфере розничной торговли и расходов в США. Традиционно это день, когда ритейлеры будут в плюсе (чистый плюс) за год. Электронный маркетинг и использование транзакционной электронной почты стали критически важными для всех предприятий.
От розничных продавцов до компаний, которые обеспечивают автоматизацию маркетинга, проблемы с надежной доставкой электронных писем в выходные в Черную пятницу могут привести к значительной потере доходов. В результате эти выходные часто становятся для нас деловыми выходными. Мы делаем все возможное, чтобы сделать это как можно проще для наших инженеров, агентов службы поддержки, менеджеров по работе с клиентами, руководителей и, самое главное, для наших клиентов.
Подготовка к черной пятнице
Итак, как нам подготовиться к Черной пятнице? Мы покупаем футболки! (И сделать массу работы.) Читайте дальше о том, как мы готовимся.
Члены офиса Twilio SendGrid в Ирвине
Некоторые из членов офиса Twilio SendGrid в Денвере.
Статистика
Начнем со статистики:
- Обработано более 4,1 млрд электронных писем в Черную пятницу и более 4,2 млрд электронных писем в Киберпонедельник.
- Обработано более 16,5 млрд электронных писем с Дня Благодарения до Киберпонедельника.
- Обработано более 315 миллионов писем в час пик
- «Черная пятница» и «Киберпонедельник» по 8 часов подряд обрабатывали 220 млн электронных писем и более.
- И все это при среднем времени доставки электронных писем, равном 1,9 секунды.
- В среднем мы выдаем примерно 5,5 событий на сообщение. Исходя из этого, наши системы сгенерировали и обработали более 91 млрд событий с Дня Благодарения до Киберпонедельника, 23 млрд+ только за Киберпонедельник.
Испытания
Никогда ранее не встречавшийся масштаб : масштаб, который мы планируем протестировать, должен соответствовать прогнозируемой пиковой нагрузке. Когда в начале апреля мы провели наш первый тест для подготовки к прошлому году, наш средний объем в будние дни был меньше половины нашего пикового прогноза. Наши часовые пики не были даже половиной того, на что мы будем тестировать.
Управление нашей средой : электронная почта — это рабочий процесс с отслеживанием состояния: необходимо отслеживать состояние сообщения. Таким образом, по мере того, как сообщение перемещается по конвейеру, мы отслеживаем, отскакивает ли оно или откладывается, и предотвращаем дублирование. Таким образом, наш почтовый конвейер представляет собой гибридную облачную и локальную архитектуру, и автоматическое масштабирование не является волшебным решением. Наша задача состоит в том, чтобы максимально повысить эффективность услуг нашего центра обработки данных, одновременно подготовив ресурсы для обработки значительных пиковых объемов, не влияя на стоимость для клиентов.
Масштабирование нелинейно : не все системы масштабируются линейно. Поскольку наш прогнозируемый масштаб намного выше, чем при первом запуске тестирования, мы не можем просто рассчитать потребности в оборудовании с помощью простой математической модели. Также важно помнить, что слепое масштабирование служб приведет к перегрузке зависимостей, а такие зависимости, как база данных, не масштабируются так же, как наш агент передачи почты (MTA).
Балансировка наших инвестиций . Поскольку мы продолжаем внедрять инновации, гарантируя, что мы поддерживаем потребности клиентов, связанные с доставкой их электронной почты, мы понимаем, что наши функции не представляют для наших клиентов никакой ценности, если они недоступны и не работают должным образом. Мы должны найти баланс и соответствующим образом инвестировать в тестирование, обучение, обновление и улучшение наших систем, чтобы они были надежными и устойчивыми в нашем масштабе. Это позволяет нам продолжать инвестировать в инновации.
Как мы это сделали?
Мы сделали это вместе, как одна команда. Рука об руку, как говорится. В нашей подготовке в этом году, с апреля по ноябрь, участвовало более 100 человек из разных команд. Моделирование прогнозов пиков, определение критериев наблюдаемости, обучение на основе наших наблюдений, внесение необходимых изменений, планирование и управление требуют различных навыков от нескольких людей.
Мы доверяли друг другу, сохраняя друг друга честными, оставаясь сосредоточенными и достигая наших целей.
Эффективный и постоянно совершенствующийся процесс был нашим другом.
Планирование
У нас есть три центра обработки данных для обработки электронной почты клиентов. Чтобы спланировать недостижимый масштаб, мы подтверждаем, что можем справиться с прогнозируемым пиковым трафиком, имея только два доступных центра обработки данных. Чтобы соответствовать нашему соглашению об уровне обслуживания высокой доступности, наша инфраструктура имеет встроенный отказоустойчивый регион. Это означает, что у нас есть возможность аварийного переключения трафика между регионами.
Мы используем эту возможность с частым интервалом в течение года в качестве стандартной операционной процедуры и ускоряем ее в рамках наших усилий, чтобы продемонстрировать, что мы можем обслуживать пиковые объемы Черной пятницы/Киберпонедельника при сохранении качества обслуживания. Если телеметрия системы приближается к порогу нашего целевого уровня обслуживания (SLO), мы можем быстро использовать несколько регионов для восстановления номинального состояния. Затем мы используем собранную телеметрию, чтобы определить, где нам нужно внести изменения.
Параллельно мы начали пересматривать и уточнять наши цели уровня обслуживания (SLO), которые дают нам точную цифровую цель для доступности системы, и наши индикаторы уровня обслуживания (SLI), которые показывают нам частоту успешных проверок наших систем.
Наблюдения, обучение и общение
Каждый тест давал большой объем информации. Одна из проблем, с которыми мы столкнулись, заключалась в эффективном документировании и обмене наблюдениями между меняющимися тестовыми группами, а затем в анализе данных в нескольких системах. Хотя у нас есть стандартные командные информационные панели, у каждого члена может быть что-то особенное, что он наблюдает.
Мы начали ретроспективное тестирование с командами тестирования, чтобы проанализировать всю техническую информацию, полученную для нескольких сервисов, управляемых несколькими командами. Эти ретроспективы были длинными и большую часть времени были полезны только одной или двум командам за тест. В конце концов мы перешли на использование Slack Thread для ретро-заметок, что позволило сэкономить 10 часов человеческих встреч на тест.
В нашу команду по управлению тестированием входили два инженера-менеджера, один архитектор и один старший инженер. Менеджеры играли ключевую роль в планировании и управлении зависимостями, в то время как технические специалисты помогали обрабатывать и анализировать информацию на сквозном системном уровне.
На основе анализа доступной информации мы неоднократно подтверждали, что наши SLI строго соответствуют нашим SLO. Мы точно настроили наши оповещения и сделали некоторые критические оповещения более чувствительными, чтобы заблаговременно выявлять любую потенциальную деградацию системы.
Приоритизация и реализация
Мы зарегистрировали предложенные изменения, и команды расставили эти заявки по приоритету. Первой задачей здесь было управлять этими заявками на нескольких командных досках. Еще одна проблема заключалась в том, чтобы безжалостно расставить приоритеты для работы в Черную пятницу по сравнению с другими приоритетами.
Нам нужно было предоставить нашим инженерам творческую свободу для поиска решений сложных проблем. В то же время мы должны были убедиться, что эти решения соответствуют нашим долгосрочным планам. Также было очень важно, чтобы мы всегда осознавали любой конфликт интересов, что означало избегание любых краткосрочных решений, которые могли бы обернуться против нас.
Проверка внесенных изменений станет нашей целью для предстоящих тестов.
Поддержание и ускорение темпа по мере приближения к Черной пятнице было серьезной проблемой при планировании и выполнении.
Ускорение
Когда мы вошли в сентябрь, мы начали проводить несколько стресс-тестов каждую неделю. Это требовало от нас более быстрого выявления, исправления и проверки проблем. Это также обеспечило нам гораздо более быстрый цикл обучения и адаптации.
В дополнение к полномасштабному тестированию почтового конвейера, как описано ранее, в это же время мы также начали стресс-тестирование наших вспомогательных служб. В тот же период мы начали проводить нагрузочные тесты с одним из наших крупнейших клиентов, чтобы убедиться, что наши входящие геоподы без проблем справятся с ожидаемыми массовыми отправками в праздничный сезон.
Из-за долгих часов и сложности управления работой наши команды выгорали. Мы перечислили наиболее важные оповещения, необходимые для остановки нашего теста в случае необходимости, и сделали их более чувствительными. Это позволило нам начать проводить тесты, не требуя нашего присутствия для мониторинга наших систем рано утром.
Скорость с осторожностью
Когда мы приблизились к концу сентября, возникло опасение, что мы, возможно, недостаточно быстро движемся в правильном направлении. Мы создали команду тигров, команду специалистов, которая могла работать над любым тикетом в нескольких командах, и команду, которая работала с гораздо более компактным процессом на ежедневном уровне.
Мы значительно улучшили нашу операционную инфраструктуру, а также наше программное обеспечение для обработки почты в рамках подготовки к Черной пятнице. Этим изменениям уделялось особое внимание, и командам приходилось работать в тесной координации друг с другом. Это был отличный опыт для тех, кто поставил SendGrid на первое место. Мы вносили изменения в приложения, инфраструктуру и увеличивали мощность нашего оборудования, одновременно запуская ядро бизнес-подразделения публичной компании, и все это в темпе запуска. Лучше всего то, что мы сделали все это без какого-либо ухудшения качества обслуживания наших клиентов.
Планы на будущее
Мы потратили много человеческих часов на подготовку к Черной пятнице 2019 года. Наши уроки, полученные в этом году, помогут нам автоматизировать большую часть нашей подготовки к Черной пятнице и Киберпонедельнику в 2020 году. -превышение объемов праздничных отправлений для наших клиентов и наших сотрудников.