Fragen Sie einen Entwickler: myDNA Senior Software Developer Elliott Millar über die Integration von Braze, die Nutzung von AWS EventBridge und die Priorisierung der Vorprojektforschung

Veröffentlicht: 2022-04-30

Entwickler spielen eine Schlüsselrolle, um sicherzustellen, dass unsere Kunden die Braze-Plattform reibungslos integrieren und nutzen können, um ihre Marketingbemühungen zu unterstützen. Um mehr über die Arbeit von Entwicklern im Zusammenhang mit Braze und ihre Erfahrungen zu erfahren, habe ich mich mit Elliott Millar, Senior Software Developer bei myDNA, einer führenden Marke für genetische Wellness, zusammengesetzt. Hier ist, was er zu sagen hatte*:

Können Sie uns etwas über myDNA und Ihre Rolle dort erzählen?

myDNA ist ein genetisches Wellness-Unternehmen mit Sitz in Melbourne, Australien. Wir beraten Menschen basierend auf ihren genetischen Ergebnissen. Unsere Kunden schicken uns einfach ihren Wangenabstrich und wir verarbeiten ihre DNA-Ergebnisse und geben ihnen ihre DNA-Einblicke und Empfehlungen, um mit ihrer Genetik zu arbeiten.

myDNA begann mit pharmakogenomischen Produkten, die Ärzten helfen können, die Medikamente ihrer Patienten genauer zu verschreiben, und dies hat für viele Leben einen großen Unterschied gemacht. Jetzt gibt es eine Menge reichhaltiger DNA-Forschung, die zeigt, wie die Genetik Aspekte unseres Wohlbefindens wie Ernährung, Bewegung, Schlaf und Hautalterung beeinflusst – um nur einige zu nennen – also hat myDNA jetzt auch ein allgemeines Wellness-Produkt; Dieses Produkt gibt Menschen ihre DNA-Einblicke und Empfehlungen sowie personalisierte Ernährungs- und Fitnesspläne basierend auf ihren genetischen Ergebnissen über unsere myDNA Unlocked-App. Hier kommt Braze ins Spiel. Wir verwenden Braze, um unseren Kunden diese personalisierten Inhalte über die App bereitzustellen, damit sie ihr Verhalten ändern und ihre Wellness-Ziele erreichen können.

Ich bin Senior Software Developer bei myDNA. Ich bin seit Oktober in dieser Rolle und eines der ersten Projekte, die ich geleitet habe, war die Integration von Braze in myDNA Unlocked. Ich bin ein Full-Stack-Entwickler, also kann ich an so ziemlich allem in unserer Software-Suite arbeiten, ob es darum geht, eine SQL-Datenbank zu treffen, unser .net-Backend einzurichten, Dinge mit React Native zu tun oder sich mit Objective-C zu befassen. Es spielt keine Rolle – setz mich einfach irgendwo hin.

Sie haben erwähnt, dass die Integration von Braze eines Ihrer ersten Projekte bei myDNA war – können Sie etwas über den Zeitplan dieses Projekts sagen?

Nun, ich habe es im November abgeholt und der Prozess hat am Ende drei Monate und ein bisschen gedauert, die Winterferien nicht mitgerechnet. Das fängt an, sobald das Projekt in meinen Händen war. Bevor ich mich beteiligte, gab es einen Onboarding-Prozess, bei dem sie daran arbeiteten, festzulegen, welche benutzerdefinierten Ereignisse und benutzerdefinierten Attribute mit Braze erfasst werden, damit all diese Dinge vorbereitet werden, wenn wir loslegen. Ich glaube, das war ungefähr sechs oder acht Wochen, bevor ich mit dem Projekt begann.

Haben Sie recherchiert, bevor Sie mit dem Braze-Integrationsprojekt begonnen haben?

Ich habe wahnsinnig viel recherchiert. Ich habe mir ungefähr 20 Stunden Videos auf LAB [Learning at Braze] angesehen und so viele Dokumentationsseiten durchgelesen – es gibt eine erstaunliche Menge davon – weil ich alles über diese Software wissen musste; wie sonst würde ich wissen, ob es funktioniert oder was es tun soll? Ich musste auch alles aus der Perspektive unseres Customer Experience (CX)-Teams wissen, da sie diejenigen sind, die Braze in erster Linie besitzen werden. Wie werden wir es tatsächlich verwenden? Wie funktioniert es mit iOS und Android? Am Anfang war ich mir nicht sicher, wer an diesem Projekt teilnehmen würde, und wenn ich ein Projekt leite, muss ich alles darüber wissen, was vor sich geht, damit ich Aufgaben zuweisen, alles herausfinden und richtige Schätzungen bekommen.

Also habe ich mir Tutorials zu Liquid-Personalisierung, Connected Content, benutzerdefinierten Attributen und benutzerdefinierten Ereignissen angesehen, wie man integriert, was IP Warming ist und wie man es macht, wie man Push-Priming angeht, solche Dinge. Ich habe viele verschiedene Dinge gelernt, die Sie bei Connected Content beachten sollten, wie das Risiko, Ihre eigenen APIs zu zerstören, oder wie Sie Deltas verwenden sollten, anstatt 450 Millionen Datenpunkte zu durchkauen, nur weil Dinge in Ihren Systemen passieren. Und in der Dokumentation finden Sie alles, von der Einrichtung Ihrer Webhooks bis zur Funktionsweise von Braze-APIs und SDKs.

Und als ich fertig war, erstellte ich einen Abschnitt in unserem Confluence, um im Grunde alle diese Informationen, die ich von Braze erhielt, in ein nettes konsumierbares Format für die anderen Entwickler zu filtern. Selbst wenn sie innerhalb von 24 Stunden auf den neuesten Stand gebracht werden mussten, befanden sich auf diese Weise alle benötigten Informationen an einem zentralen Ort. Ich habe immer ein riesiges Dokument erstellt, das unsere Integration mit Braze auf der Grundlage all meiner Recherchen skizziert. Als die Zeit dafür gekommen war, fühlte ich mich also vorbereitet.

Können Sie ein wenig darüber sprechen, warum die Entscheidung getroffen wurde, Braze zu integrieren?

Bei Braze war der Business Case und alles lange vor meiner Zeit bei myDNA fertig. Aber aus meiner Sicht hat es einen wirklich großen Vorteil, unserem CX-Team die Zügel in die Hand zu geben und es ihm zu ermöglichen, direkt mit den Kunden zu interagieren, ohne dass Entwickler eingreifen oder eingreifen müssen. Unser alter Ansatz erforderte viel Entwicklungsarbeit, um neue Funktionen zu implementieren und zu ermöglichen, was es für das CX-Team schwieriger machte, zu kontrollieren, welche Interaktionen und Inhalte an die Benutzer gesendet wurden.

Als Teil dieses Prozesses stellten wir fest, dass es drei Hauptkontaktpunkte gab, die wir herausfinden mussten, wenn es darum ging, Braze zu nutzen:

  • Installieren des SDK in unserer mobilen App, um die Kontrolle des CX-Teams über Messaging zu unterstützen

  • Verwaltung schnelllebiger, zeitkritischer Daten durch die Verbindung von Braze mit AWS EventBridge

  • Umgang mit weniger dringenden Daten durch Verwendung von Braze zusammen mit Hightouch, FiveTran und anderen Technologien

Können Sie uns durch diesen ersten Berührungspunkt führen, der sich auf das SDK und das Messaging bezieht?

Nun, bevor wir Braze in unsere mobile App integriert haben, haben wir Expo verwendet, ein Tool, mit dem wir unsere App verpackt und im App Store von Apple und bei Google Play bereitgestellt haben. Braze unterstützt Expo nicht, also mussten wir Expo auswerfen und mit der Verwendung eines bloßen Workflows beginnen, bevor wir es in Braze integrieren konnten. Das bedeutete eine ansehnliche Menge an Tech-Schulden, die wir bewältigen mussten, wie die Einrichtung einer neuen Build-Pipeline. Außerdem mussten wir in unserem Fall Objective-C für iOS und Java für Android sowie React Native integrieren, um die Dinge zum Laufen zu bringen. Das war ein großer Teil der Arbeit, aber wir hatten intern ein großartiges Team, das uns half und alles möglich machte. [ Hinweis: Braze hat kürzlich unsere iOS- und Android-SDKs aktualisiert, um Swift bzw. Kotlin zu nutzen.]

Wir haben die mobile App bereitgestellt und alles hat funktioniert, kein Drama, was großartig war. Und sobald wir das Braze-SDK in unserer mobilen App zum Laufen gebracht hatten, bedeutete dies, dass wir es verwenden konnten, um alle dort stattfindenden Benutzerinteraktionen zu erfassen. Es löst also benutzerdefinierte Ereignisse aus, wenn Benutzer mit dem System interagieren, und es erhält offensichtlich auch Hilfe, um all die verschiedenen Messaging-Kanäle zu informieren und zu betreiben, die das CX-Team verwendet, wie Push-Benachrichtigungen, In-App-Nachrichten, Inhaltskarten, alles von diesem guten Zeug.

An diesem Punkt konnten wir unsere Post-Insight-Reise nach Braze verlegen. Das nennen wir den Flow, der passiert, nachdem einer unserer Kunden seine DNA-Ergebnisse erhalten hat. Wir möchten, dass unser CX-Team in der Lage ist, mit diesen Kunden zu interagieren und ihnen wirklich zu gratulieren, wenn sie bei ihrer Essensplanung, ihrer Trainingsplanung und all diesen guten Dingen gute Arbeit leisten. Das CX-Team erstellt einige erstaunliche Canvases, um verschiedene Benutzerreisen über Push, In-App-Nachrichten, Inhaltskarten und E-Mails anzustoßen.

Wir hatten anfangs einige Probleme mit Push-Benachrichtigungen im Zusammenhang mit dem Expo-Auswurf, aber wir haben es geschafft, mit AWS EventBridge eine wirklich großartige Möglichkeit zu finden, sie anzugehen. Anstatt also Push-Benachrichtigungen über Expo auszulösen, haben wir einfach in unsere EventBridge-Pipeline geleitet. Wenn also Braze sagt: „Hey, ich muss ein benutzerdefiniertes Ereignis mit unserem Push senden“, wird die Nachricht mit dynamischem Inhalt gesendet. Dadurch wurde das Problem im Zusammenhang mit Expo umgangen, denn sobald ein Benutzer ein relevantes Update hat, holt Braze den Push-Token und los geht's. Aber bevor diese Pre- und Post-Insight-Journeys zu Braze migriert wurden, konnte alles über das CRM einfach so weiterarbeiten, wie es war.

Apropos EventBridge, können Sie ein wenig darüber sprechen, wie Sie das in Verbindung mit Braze verwenden?

Nun, alles begann, als ich darüber nachdachte, welche Art von Daten wir für Braze benötigen würden. Im Wesentlichen gibt es zwei verschiedene Teilmengen von Daten, die wir herausfinden mussten. Es gibt die wirklich kritischen Dinge, die so schnell wie möglich in Braze gelangen müssen – das sind Ihre zeitnahen, sich schnell bewegenden Daten. Andererseits gibt es auch zusätzliche Daten, die wirklich nicht so zeitkritisch sind, aber dennoch in Braze portiert werden müssen. Für die langsamen Sachen kann es unsere Hightouch-Datensynchronisierung durchlaufen, auf die ich später zurückkomme. Aber für die sich schnell bewegenden Daten haben wir uns entschieden, EventBridge zu nutzen.

Was sind schnelllebige Daten? Nun, wenn sich jemand für unser Produkt registriert, muss er so schnell wie möglich eine Willkommens-E-Mail von Braze erhalten. Wir haben eine Registrierungsschrittfunktion, die diese ganze Pipeline verschiedener Dinge handhabt, die für einen neuen Benutzer, der sich registriert, aktiviert werden könnten. Als Teil davon benötigen wir, wenn der Benutzer in unserem CRM eingerichtet ist, alle diese Informationen, um zu Braze zu wechseln, damit der Benutzer beginnen kann, Inhalte wie diese Willkommens-E-Mail zu erhalten. Also müssen wir einen Weg finden, diese Daten zu übermitteln.

Wie sich herausstellte, funktioniert EventBridge wirklich gut für diesen Anwendungsfall. Wir haben ein neues Ereignis-Repository erstellt, das diese AWS-Architektur hostet, und da wir AWS CDK [Cloud Development Kit] für unsere gesamte Einrichtung und Bereitstellung verwenden, war dies supereinfach. Wir haben gerade einen myDNA-Ereignisbus in AWS erstellt und gesagt, dass Sie, wenn Sie ihn abonnieren möchten, lediglich eine neue Regel in Ihr CDK für den jeweiligen Dienst schreiben müssen, den Sie ausführen, und ihn an diesen Bus anhängen , und dann führen wir für alles, was diesen Bus trifft, die Standardmusterzuordnung durch.

Bei diesem Ansatz haben wir einen Braze-Dienst, der sagt, hey, ich möchte wichtige Benutzerereignisse wie Bestellaktualisierungen, Kundenregistrierungen und eine Handvoll anderer spezifischer Dinge abhören, und ich möchte, dass diese Daten an Braze weitergeleitet werden – aber ohne dass all diese verschiedenen Microservices an Braze gebunden sind. EventBridge macht das möglich. Außerdem haben wir eine Einbahnstraße. Egal, ob wir Daten nach Braze verschieben oder Webhooks von Braze auslösen lassen, sie alle können die Hauptarchitektur von EventBridge durchlaufen.

Wir haben einen speziellen Einstiegspunkt für Braze, der von einem Braze-Webhook verwendet wird, der einfach ein Ereignis an EventBridge sendet und sagt: „Hey, ich möchte dieses bestimmte Ereignis für diesen Benutzer mit diesen Parametern starten. Und dann, was auch immer die Dienste sind, die wir dort sitzen, können sich das anhören, dann abonnieren und dann loslegen, was sie wollen.

Jetzt haben wir also diese großartige Architektur eingerichtet, in der wir Sachen an Braze schicken können, die von allem anderen entkoppelt sind. Unsere Registrierungsschrittfunktion wird also ausgelöst und sagt, hey, ich habe einen neuen Benutzer erstellt, und unser Braze-Dienst wird das erhalten. Und es führt eine Step-Funktion aus, die sagt, hey, ich mache XYZ und schicke es dann an Braze. Als Teil davon haben wir ein Rückrufmuster – wenn das Braze-Setup fehlschlägt, ist das schließlich ein kritischer Fehler, da wir die Registrierung nicht erfolgreich abschließen können, ohne dass Braze diesen Benutzer erstellt. Wenn die Braze-Aufgabe auf diese Weise fehlschlägt, schlägt die Schrittfunktion für die Gesamtregistrierung fehl. Und das wird alles von AWS unter der Haube erledigt, was großartig ist.

Etwas, das ich nicht erwähnt habe, ist, dass wir einen Einstiegspunkt für Braze brauchten. Wir wollten die Schlüssel an das CX-Team übergeben, damit sie die Kontrolle darüber haben, welche Aktionen in unserer App ausgelöst werden. Eine dieser Aktionen war die Veröffentlichung von Erkenntnissen. Diese Reise war wirklich mit unserem CRM verbunden – es würde im Grunde sagen, hier sind unsere Engagement-Events, veröffentlichen Sie an diesem Tag diese Erkenntnis, veröffentlichen Sie drei Tage später diese Erkenntnis usw. Und wir wollten diese Reise ändern, um sie für Benutzer dynamischer zu gestalten .

Um dies im Rahmen einer Braze-Kampagne oder eines Canvas zu ermöglichen, mussten wir in der Lage sein, den Benutzern Einblicke auf individueller Basis zu präsentieren, und das bedeutete, einen Weg zu finden, einen Endpunkt in unserem Service zu erreichen, um die richtigen Informationen zu portieren. Zum Glück hat Braze zwei großartige Funktionen, um dies zu ermöglichen – Webhooks und Connected Content.

Während der Integration kritzelten wir herum und versuchten herauszufinden, wie es geht. Und ich bin über dieses Video von AWS gestolpert, das buchstäblich genau unser Anwendungsfall war – wie löst man einen Webhook von einem externen Dienst aus, der ein Ereignis für EventBridge auslöst. Am Ende war es ein Schritt-für-Schritt-Video-Tutorial, das Sie buchstäblich durch die Erstellung des API-Gateways und die Einrichtung der richtigen Zuordnungsvorlage führt. Und wenn Sie ihm folgen, können Sie mit diesem Ansatz die Body-Eingabe nehmen, sie einem EventBridge-Detailobjekt zuordnen und sie dann an Ihren Bus senden, und das war's; Es ist jetzt stark mit einem API-Schlüssel gesichert. Sie haben jetzt einen Einstiegspunkt, an den jeder mit dieser Authentifizierung Daten im gewünschten Format senden kann, und er wird an Ihren Event-Bus gesendet. Und wir sagten: „Das ist perfekt.“

Was können Sie uns über Berührungspunkt drei erzählen und wie Sie Braze und Ihre Hightouch-Datensynchronisierung verwenden?

Der dritte Touchpoint ist super einfach. Es werden lediglich Hightouch, Fivetran und einige andere Technologien verwendet, um Daten von anderen Standorten zu sammeln, sie in ein nettes Data-Warehouse-kompatibles Format umzuwandeln und dieses dann kontinuierlich in Braze zu leiten.

Dies ist wirklich für die sich langsam bewegenden Daten gedacht, über die ich zuvor gesprochen habe; Das heißt, Dinge, die entweder wichtig sind, aber im Laufe der Zeit nicht weniger wichtig werden, oder zusätzliche Metadaten – Sie wissen schon, wie die Altersgruppe eines Benutzers – die irgendwann verwendet werden, aber im Moment nicht benötigt werden. Da die Informationen nicht dringend sind, haben wir sie so eingerichtet, dass die Synchronisierung startet und im Grunde nur fragt, ob sich etwas geändert hat? Ja? Großartig, hier sind die Deltas. Nein? Dann nichts tun.

Abschließende Gedanken

Möchten Sie tiefer in die technische Seite der Braze-Plattform eintauchen? Holen Sie sich im Building Braze-Produktblog exklusive Geschichten, Erkenntnisse und Einblicke direkt von unserer Produkt-, Design- und Engineering-Organisation (PDE) und erkunden Sie die Besonderheiten unseres Produkts mit der Braze-Dokumentation .

*Diese Konvertierung wurde aus Gründen der Länge und Klarheit bearbeitet.