Спросите разработчика: Эллиот Миллар, старший разработчик программного обеспечения myDNA, об интеграции Braze, использовании AWS EventBridge и расстановке приоритетов перед проектными исследованиями

Опубликовано: 2022-04-30

Разработчики играют ключевую роль в обеспечении того, чтобы наши клиенты могли плавно интегрироваться и использовать преимущества платформы Braze для поддержки своих маркетинговых усилий. Чтобы узнать больше о работе, которую разработчики выполняют в связи с Braze, и о том, на что похож их опыт, я встретился с Эллиоттом Милларом, старшим разработчиком программного обеспечения в myDNA, ведущем бренде генетического здоровья. Вот что он сказал*:

Не могли бы вы немного рассказать нам о myDNA и вашей роли в ней?

myDNA — это компания, занимающаяся генетическим здоровьем, базирующаяся в Мельбурне, Австралия. Мы даем людям советы, основанные на их генетических результатах. Наши клиенты просто отправляют нам свой мазок из щеки, и мы обрабатываем их результаты ДНК и даем им информацию о ДНК и рекомендации по работе с их генетикой.

myDNA началась с фармакогеномных продуктов, которые могут помочь практикующим врачам более точно назначать лекарства своим пациентам, и это сильно изменило жизнь многих людей. Теперь есть много обширных исследований ДНК, показывающих, как генетика влияет на такие аспекты нашего здоровья, как диета, физические упражнения, сон и старение кожи, и это лишь некоторые из них, поэтому у myDNA теперь есть продукт для общего здоровья; этот продукт дает людям информацию и рекомендации по их ДНК, а также персонализированные планы питания и фитнеса, основанные на их генетических результатах, через наше приложение myDNA Unlocked. И здесь на помощь приходит Braze. Мы используем Braze, чтобы предоставлять персонализированный контент нашим клиентам через приложение, чтобы помочь им изменить свое поведение и достичь своих целей в области хорошего самочувствия.

Я старший разработчик программного обеспечения в myDNA. Я работаю в этой должности с октября, и одним из первых моих проектов была интеграция Braze в myDNA Unlocked. Я разработчик с полным стеком, поэтому я могу работать практически над всем в нашем программном пакете, будь то обращение к базе данных SQL, настройка нашего бэкэнда .net, работа с React Native или работа с Objective-C. На самом деле это не имеет значения — подбросьте меня куда угодно.

Вы упомянули, что интеграция Braze была одним из ваших первых проектов в myDNA — можете ли вы рассказать о графике этого проекта?

Ну, я забрал его в ноябре, и в итоге процесс занял три месяца с небольшим, не считая зимних каникул. Это началось, как только проект был в моих руках. До того, как я вмешался, был процесс адаптации, в ходе которого они работали над настройкой того, какие настраиваемые события и настраиваемые атрибуты собирались с помощью Braze, чтобы все это было подготовлено, когда мы приступим к работе. Думаю, это было примерно за шесть или восемь недель до того, как я начал работу над проектом.

Проводили ли вы какие-либо исследования перед тем, как начать проект интеграции Braze?

Я провел сумасшедшее количество исследований. Я посмотрел около 20 часов видео на LAB [Learning at Braze] и прочитал так много страниц документации — их невероятно много — потому что мне нужно было знать все об этом программном продукте; как еще я узнаю, работает ли он или что он должен делать? Мне также нужно было знать все с точки зрения нашей команды по работе с клиентами (CX), поскольку именно они в основном будут владеть Braze. Как мы на самом деле собираемся его использовать? Как это работает с iOS и Android? В начале я не был уверен, кто будет принимать участие в этом проекте, и если я руковожу проектом, мне нужно знать все о том, что происходит, чтобы я мог назначить работу, во всем разобраться и получить правильные оценки.

Поэтому я изучил руководства по персонализации Liquid, подключенному контенту, пользовательским атрибутам и пользовательским событиям, как интегрировать, что такое IP-тепло и как это сделать, как подходить к push-праймингу и тому подобное. Узнал много разных вещей, о которых нужно знать с помощью подключенного контента, таких как риск поломки ваших собственных API-интерфейсов или то, как вы должны использовать дельты, вместо того, чтобы пережевывать 450 миллионов точек данных только потому, что что-то происходит в ваших системах. И в документации есть все, от того, как настроить ваши веб-перехватчики, до того, как работают API-интерфейсы Braze и SDK.

И когда я закончил, я пошел и создал раздел в нашем Confluence, чтобы в основном отфильтровать всю эту информацию, которую я получал от Braze, в удобном для использования формате для других разработчиков. Таким образом, даже если им нужно было набрать скорость за 24 часа, вся необходимая информация находилась в одном центральном месте. Я всегда составлял объемный документ, в котором схематично описывалась наша интеграция с Braze, основываясь на всех исследованиях, которые я провел. Поэтому, когда пришло время это сделать, я был готов.

Не могли бы вы немного рассказать о том, почему было принято решение интегрировать Braze?

С Braze бизнес-кейс и все остальное было сделано задолго до того, как я пришел в myDNA. Но с моей точки зрения, есть действительно большое преимущество в том, чтобы дать нашей команде CX бразды правления и действительно позволить им взаимодействовать с клиентами напрямую, без какого-либо взаимодействия или вмешательства разработчиков. Наш старый подход требовал большой работы по разработке, чтобы внедрить и позволить новым функциям выходить, что усложняло команде CX контроль над тем, какие взаимодействия и контент передаются пользователям.

В рамках этого процесса мы в основном обнаружили, что есть три основные точки соприкосновения, которые нам нужно было выяснить, когда дело дошло до использования преимуществ Braze:

  • Установка SDK в наше мобильное приложение для поддержки контроля команды CX над обменом сообщениями

  • Управление быстродействующими и срочными данными путем подключения Braze к AWS EventBridge

  • Обработка менее срочных данных с помощью Braze вместе с Hightouch, FiveTran и другими технологиями.

Можете ли вы провести нас через эту первую точку взаимодействия, связанную с SDK и обменом сообщениями?

Что ж, до того, как мы интегрировали Braze в наше мобильное приложение, мы использовали Expo — инструмент, который мы использовали для упаковки нашего приложения и его развертывания в Apple App Store и Google Play. Braze не поддерживает Expo, поэтому, прежде чем мы смогли интегрироваться с Braze, нам пришлось отключить Expo и начать использовать голый рабочий процесс. Это означало приличный объем технического долга, с которым нам приходилось справляться, например, создание нового конвейера сборки. Кроме того, в нашем случае нам пришлось интегрировать Objective-C для iOS и Java для Android, а также React Native, чтобы все заработало. Это был большой объем работы, но у нас была отличная внутренняя команда, которая помогала и все это реализовывало. [ Примечание: Braze недавно обновил наши SDK для iOS и Android, чтобы использовать Swift и Kotlin соответственно.]

Мы развернули мобильное приложение, и все заработало, никакой драмы, и это было здорово. И как только мы запустили Braze SDK в нашем мобильном приложении, это означало, что мы могли использовать его для регистрации всех действий пользователей, происходящих в нем. Таким образом, он запускает пользовательские события, когда пользователи взаимодействуют с системой, а также, очевидно, получает помощь для информирования и включения всех различных каналов обмена сообщениями, которые использует команда CX, таких как push-уведомления, сообщения в приложении, карточки контента и т. д. этого хорошего материала.

В этот момент мы смогли перенести наше пост-озарение на Braze. Это то, что мы называем потоком, который происходит после того, как один из наших клиентов получает результаты анализа ДНК. Мы хотим, чтобы наша команда CX могла взаимодействовать с этими клиентами, чтобы действительно поздравить их, когда они хорошо справляются с планированием питания, планированием тренировок и всеми этими хорошими вещами. Команда CX создает несколько удивительных холстов, чтобы начать различные пути пользователей через push-уведомления, сообщения в приложении, карточки контента и электронные письма.

Сначала у нас были некоторые проблемы с push-уведомлениями, связанные с выбросом Expo, но нам удалось придумать действительно отличный способ решить их с помощью AWS EventBridge. Таким образом, вместо запуска push-уведомлений через Expo мы просто подключились к нашему конвейеру EventBridge, поэтому, когда Braze выходит, эй, у меня есть пользовательское событие для отправки с нашим push, сообщение отправляется с динамическим содержимым. Это позволило обойти проблему, связанную с Expo, потому что, как только у пользователя появится соответствующее обновление, Braze подберет push-токен и уйдет. Но до того, как эти пути до и после анализа были перенесены в Braze, все могло просто продолжать работать, как и было через CRM.

Говоря о EventBridge, не могли бы вы немного рассказать о том, как вы используете его в связи с Braze?

Ну, все началось, когда я думал о том, какие данные нам понадобятся, когда дело дойдет до Braze. По сути, нам нужно было разобраться с двумя разными подмножествами данных. Есть действительно важные данные, которые необходимо как можно скорее передать в Braze — это ваши своевременные, быстро меняющиеся данные. С другой стороны, есть также дополнительные данные, которые на самом деле не так чувствительны ко времени, но их все же необходимо перенести в Braze. Для медленных вещей он может пройти через нашу синхронизацию данных Hightouch, о которой я расскажу позже. Но для быстрых данных мы решили использовать EventBridge.

Что такое быстродействующие данные? Что ж, когда кто-то регистрируется в нашем продукте, нам нужно, чтобы он как можно скорее получил приветственное письмо от Braze. У нас есть функция шага регистрации, которая обрабатывает весь этот конвейер различных вещей, которые могут быть активированы для нового регистрирующегося пользователя. В рамках этого, когда пользователь настроен в нашей CRM, нам нужна вся эта информация для перехода в Braze, чтобы пользователь мог начать получать контент, например приветственное письмо. Итак, мы должны найти способ передать эти данные.

Как оказалось, EventBridge отлично подходит для этого случая. Мы создали новый репозиторий событий, в котором размещена эта архитектура AWS, и, поскольку мы используем AWS CDK [Cloud Development Kit] для всей нашей настройки и развертывания, сделать это было очень просто. Мы только что создали шину событий myDNA в AWS, и мы сказали, что если вы хотите подписаться на нее, все, что вам нужно сделать, это написать новое правило в вашем CDK для конкретной службы, которую вы используете, и подключить ее к этой шине. , а затем для всего, что попадет в эту шину, мы выполним стандартное сопоставление шаблонов.

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

У нас есть определенная точка входа для Braze, используемая веб-перехватчиком Braze, который просто отправляет событие в EventBridge и говорит: «Эй, я хочу запустить это конкретное событие для этого пользователя с этими параметрами». И тогда какие бы сервисы мы там ни использовали, они могут это слушать, затем подписываться, а затем запускать то, что они хотят.

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

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

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

Во время интеграции мы дудили, пытаясь понять, как это сделать. И я наткнулся на это видео из AWS, которое было буквально нашим примером использования — как вы запускаете веб-перехватчик из внешней службы, который инициирует событие в EventBridge. В итоге получилось пошаговое видеоруководство, которое буквально проведет вас через создание шлюза API и настройку правильного шаблона сопоставления. И если вы будете следовать ему, этот подход позволит вам взять ввод тела, сопоставить его с объектом подробностей EventBridge, а затем отправить его на вашу шину, и все; теперь он надежно защищен ключом API. Теперь у вас есть точка входа, в которую любой может отправлять данные в нужном вам формате с этой аутентификацией, и она будет срабатывать на вашей шине событий. И мы такие: «Это идеально».

Что вы можете рассказать нам о третьей точке взаимодействия и о том, как вы используете Braze и синхронизацию данных Hightouch?

Третья точка контакта очень проста. Он просто использует Hightouch, Fivetran и некоторые другие технологии для сбора данных из других мест, преобразования их в удобный формат, совместимый с хранилищем данных, а затем на постоянной основе передает их в Braze.

Это действительно предназначено для медленных данных, о которых я говорил ранее; то есть то, что либо важно иметь, но не становится менее важным со временем, или дополнительные метаданные — знаете, например, возрастную группу пользователя — которые будут использоваться в какой-то момент, но не нужны в данный момент. Поскольку информация не является срочной, мы настроили ее таким образом, чтобы синхронизация запускалась и просто спрашивала, в основном, что-нибудь изменилось? Да? Отлично, вот дельты. Нет? Тогда ничего не делайте.

Последние мысли

Хотите глубже изучить техническую сторону платформы Braze? Получите эксклюзивные истории, знания и идеи непосредственно от нашей организации по продуктам, проектированию и проектированию (PDE) в блоге продуктов Building Braze и изучите все тонкости нашего продукта с помощью документации Braze .

* Это преобразование было отредактировано для увеличения длины и ясности.