Scalable Marketing Automation
Thomas Kim
Systems Architect, Iterable
Tom Wang
Staff Software Engineer, Iterable
OUR AGENDA
2
1. Background: Iterable’s Marketing Automation
Tools
2. Background: Current Implementation
3. Design on Pulsar
4. Flink and Beyond
Your Subtitle Goes Here (Delete if not needed)
Iterable’s Marketing Automation: “Workflows”
● Drag and drop interface to mix and match
filters and actions to make marketing
campaigns
● Both blast and real-time
3
Workflow Campaigns: Delay Nodes
4
Your Subtitle Goes Here (Delete if not needed)
Workflow Campaigns: Visitor Tracking
5
Your Subtitle Goes Here (Delete if not needed)
visitor id 1234 is here
Workflow Campaigns: UI Observability
6
● Only need to use one column? Then this is the slide for you.
Your Subtitle Goes Here (Delete if not needed)
7
Workflow Campaigns: Entrance Limits
RabbitMQ
8
Your Subtitle Goes Here (Delete if not needed)
RabbitMQ Flow Control
9
Your Subtitle Goes Here (Delete if not needed)
Scale
10
● ~ 1B workflow node transitions every day
● ~ 100M new users entering into a workflow each day (double-check this?)
● At any point in time, hundreds of millions of users sitting somewhere in a workflow (in-flight, or in delay
nodes)
Your Subtitle Goes Here (Delete if not needed)
RabbitMQ + Redis + PG
11
Your Subtitle Goes Here (Delete if not needed)
Goal: Single Source of Truth
12
● Improves performance and correctness
Your Subtitle Goes Here (Delete if not needed)
● Queue drives processing
● Implicitly holds truth of visitor tracking state
Phase 1: Drop-in Replacement
13
Your Subtitle Goes Here (Delete if not needed)
● Already some benefits:
● Built-in support for scheduled messages
● Higher throughput
● Costs, compliance
Phase 1: Drop-in Replacement
14
Your Subtitle Goes Here (Delete if not needed)
Phase 2: Transactions
15
● Ack and re-enqueue need to be atomic
Your Subtitle Goes Here (Delete if not needed)
Phase 3: Derived UI State
16
Your Subtitle Goes Here (Delete if not needed)
Future: Flink and Beyond
17
● Use Flink, Pulsar Flink Connector, and Pulsar to process entrance limits
Your Subtitle Goes Here (Delete if not needed)
Entrance Limits with Flink
18
● Only need to use one column? Then this is the slide for you.
Your Subtitle Goes Here (Delete if not needed)
Recap
19
● Phased replacement of RabbitMQ and other data stores
● Improved correctness through transactions
Your Subtitle Goes Here (Delete if not needed)
Thanks
20
● Team members
● Iterable Pulsar team:
● Streamnative
Your Subtitle Goes Here (Delete if not needed)
21
Questions?
YOUR TITLE GOES HERE
22
● Only need to use one column? Then this is the slide for you.
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
23
● Only need to use one column? Then this is the slide for you.
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
24
● Only need to use one column? Then this is the slide for you.
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
25
● Only need to use one column? Then this is the slide for you.
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
26
● Only need to use one column? Then this is the slide for you.
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
27
● Only need to use one column? Then this is the slide for you.
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
28
● Only need to use one column? Then this is the slide for you.
Your Subtitle Goes Here (Delete if not needed)
● Are two columns more your style?
Then use this.
YOUR TITLE GOES HERE
Your Subtitle Goes Here (Delete if not needed)
29
● Are two columns more your style?
Then use this.
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
● Do you need three
columns instead of two?
Then use this.
● Do you need three
columns instead of two?
Then use this.
30
● Do you need three
columns instead of two?
Then use this.
YOUR DIVIDER SLIDE
TITLE GOES HERE
(MORE DIVIDER OPTIONS IN THE APPENDIX)
YOUR TITLE GOES HERE
Your Subtitle Goes Here (Delete if not needed)
● Use this slide if you have a stat that you
would like to use.
32
58%
This is where any info
pertaining to the stat
would go.
STAT CREDIT
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
● Have two stats you want to use?
Then this is the slide for you.
33
58%
This is where any info
pertaining to the stat
would go.
STAT CREDIT
29%
This is where any info
pertaining to the stat
would go.
STAT CREDIT
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
● Have stats that need to be displayed a little
differently? Use this slide if a bar graph is
more your style.
34
1 2 3 4
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
● Have stats that need to be displayed a little
differently? Use this slide if a table is more
your style.
35
TITLE TITLE TITLE
Stat Stat Stat
Stat Stat Stat
Stat Stat Stat
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
● Have an awesome image to go with your
content? Not a problem.
● Only want to use an image? Use the slide
after this!
36
REPLACE ME
REPLACE ME
37
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
● One screenshot to show?
I’m the slide for you.
38
REPLACE ME
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
● What about two?
39
REPLACE ME REPLACE ME
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
● Is a laptop more your style? Don’t worry.
40
REPLACE ME
41
REPLACE ME
42
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
● Have some extra white space that you’d
like to fill up? Use the Iterable nodes!
● You can move, rotate, and
resize these images.
43
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
● Have some extra white space that you’d
like to fill up? Use the Iterable nodes!
● You can move, rotate, and
resize these images.
44
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
● Have some extra white space that you’d
like to fill up? Use the Iterable nodes!
● You can move, rotate, and
resize these images.
45
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
● Have some extra white space that you’d
like to fill up? Use the Iterable nodes!
● You can move, rotate, and
resize these images.
46
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
● Have some extra white space that you’d
like to fill up? Use the Iterable nodes!
● You can move, rotate, and
resize these images.
47
Your Subtitle Goes Here (Delete if not needed)
YOUR TITLE GOES HERE
● Have some extra white space that you’d
like to fill up? Use the Iterable nodes!
● You can move, rotate, and
resize these images.
48
This is where your quote would go.
You can adjust the height as necessary
to accommodate for anything
that’s longer than this.
First Name Last Name
Job Title, Company
Q&A / END SLIDE
APPENDIX
RED
#EF3D55
PURPLE
#6A266D
COOL GREEN
#59C1A7
CYAN
#34C3F2
LAVENDER
#C29DC9
MUSTARD
#F2CA1B
SALMON
#F36F4C
NOT BLACK
#4D4D4D
GREY
#999094
COLORS
51
Primary
Secondary
Grey
SEND TIME
OPTIMIZATION
MODERN
ARCHITECTURE
WEBINAR
RE-ENGAGE
MESSAGING
ANNOUNCEMENTS
CHANNEL
OPTIMIZATION
CAMPAIGNS
RESPONSE
FEED
DATA
TARGETED
MARKETING
TRANSACTIONAL
FREQUENCY
OPTIMIZATION
PERSONALIZATION
LOW-LEVEL
PERSONALIZATION
SEGMENTATION
SMS
CADENCE
SINGLE DATA
PLATFORM
GROWTH
AUDIENCE
CONNECTION ERROR
DESKTOP
QUOTE
ONLINE
SHOPPING
WORKFLOW
STUDIO
DATA
SILOS
AUDIENCE
CONNECTION
CONTENT
CHECKED
RE-ENGAGEMENT
TRUE
CROSS-CHANNEL
EMAIL
ERROR
SEARCH
MEDIUMS
HIGHLIGHT
AUTOMATION
EASY TO
USE
EMAIL
BRAND
LOVE
EVENT
DATA
WELCOME
USER PROFILE
DATA
1-TO-1
RELEVANCE
SMART
PHONE
CAMPAIGN
SUCCESS
DIRECTION
PROMOTIONS
VALUE
RED ICONS
52
SEND TIME
OPTIMIZATION
MODERN
ARCHITECTURE
WEBINAR
RE-ENGAGE
MESSAGING
ANNOUNCEMENTS
CHANNEL
OPTIMIZATION
CAMPAIGNS
RESPONSE
FEED
DATA
TARGETED
MARKETING
TRANSACTIONAL
FREQUENCY
OPTIMIZATION
PERSONALIZATION
LOW-LEVEL
PERSONALIZATION
SEGMENTATION
SMS
CADENCE
SINGLE DATA
PLATFORM
GROWTH
AUDIENCE
CONNECTION ERROR
DESKTOP
QUOTE
ONLINE
SHOPPING
WORKFLOW
STUDIO
DATA
SILOS
AUDIENCE
CONNECTION
CONTENT
CHECKED
RE-ENGAGEMENT
TRUE
CROSS-CHANNEL
EMAIL
ERROR
SEARCH
MEDIUMS
HIGHLIGHT
AUTOMATION
EASY TO
USE
EMAIL
BRAND
LOVE
EVENT
DATA
WELCOME
USER PROFILE
DATA
1-TO-1
RELEVANCE
SMART
PHONE
CAMPAIGN
SUCCESS
DIRECTION
PROMOTIONS
VALUE
PURPLE ICONS
53
SEND TIME
OPTIMIZATION
MODERN
ARCHITECTURE
WEBINAR
RE-ENGAGE
MESSAGING
ANNOUNCEMENTS
CHANNEL
OPTIMIZATION
CAMPAIGNS
RESPONSE
FEED
DATA
TARGETED
MARKETING
TRANSACTIONAL
FREQUENCY
OPTIMIZATION
PERSONALIZATION
LOW-LEVEL
PERSONALIZATION
SEGMENTATION
SMS
CADENCE
SINGLE DATA
PLATFORM
GROWTH
AUDIENCE
CONNECTION ERROR
DESKTOP
QUOTE
ONLINE
SHOPPING
WORKFLOW
STUDIO
DATA
SILOS
AUDIENCE
CONNECTION
CONTENT
CHECKED
RE-ENGAGEMENT
TRUE
CROSS-CHANNEL
EMAIL
ERROR
SEARCH
MEDIUMS
HIGHLIGHT
AUTOMATION
EASY TO
USE
EMAIL
BRAND
LOVE
EVENT
DATA
WELCOME
USER PROFILE
DATA
1-TO-1
RELEVANCE
SMART
PHONE
CAMPAIGN
SUCCESS
DIRECTION
PROMOTIONS
VALUE
COOL GREEN ICONS
54
SEND TIME
OPTIMIZATION
MODERN
ARCHITECTURE
WEBINAR
RE-ENGAGE
MESSAGING
ANNOUNCEMENTS
CHANNEL
OPTIMIZATION
CAMPAIGNS
RESPONSE
FEED
DATA
TARGETED
MARKETING
TRANSACTIONAL
FREQUENCY
OPTIMIZATION
PERSONALIZATION
LOW-LEVEL
PERSONALIZATION
SEGMENTATION
SMS
CADENCE
SINGLE DATA
PLATFORM
GROWTH
AUDIENCE
CONNECTION ERROR
DESKTOP
QUOTE
ONLINE
SHOPPING
WORKFLOW
STUDIO
DATA
SILOS
AUDIENCE
CONNECTION
CONTENT
CHECKED
RE-ENGAGEMENT
TRUE
CROSS-CHANNEL
EMAIL
ERROR
SEARCH
MEDIUMS
HIGHLIGHT
AUTOMATION
EASY TO
USE
EMAIL
BRAND
LOVE
EVENT
DATA
WELCOME
USER PROFILE
DATA
1-TO-1
RELEVANCE
SMART
PHONE
CAMPAIGN
SUCCESS
DIRECTION
PROMOTIONS
VALUE
CYAN ICONS
55
SEND TIME
OPTIMIZATION
MODERN
ARCHITECTURE
WEBINAR
RE-ENGAGE
MESSAGING
ANNOUNCEMENTS
CHANNEL
OPTIMIZATION
CAMPAIGNS
RESPONSE
FEED
DATA
TARGETED
MARKETING
TRANSACTIONAL
FREQUENCY
OPTIMIZATION
PERSONALIZATION
LOW-LEVEL
PERSONALIZATION
SEGMENTATION
SMS
CADENCE
SINGLE DATA
PLATFORM
GROWTH
AUDIENCE
CONNECTION ERROR
DESKTOP
QUOTE
ONLINE
SHOPPING
WORKFLOW
STUDIO
DATA
SILOS
AUDIENCE
CONNECTION
CONTENT
CHECKED
RE-ENGAGEMENT
TRUE
CROSS-CHANNEL
EMAIL
ERROR
SEARCH
MEDIUMS
HIGHLIGHT
AUTOMATION
EASY TO
USE
EMAIL
BRAND
LOVE
EVENT
DATA
WELCOME
USER PROFILE
DATA
1-TO-1
RELEVANCE
SMART
PHONE
CAMPAIGN
SUCCESS
DIRECTION
PROMOTIONS
VALUE
GREY ICONS
56
WHITE ICONS
57
SEND TIME
OPTIMIZATION
MODERN
ARCHITECTURE
WEBINAR
RE-ENGAGE
MESSAGING
ANNOUNCEMENTS
CHANNEL
OPTIMIZATION
CAMPAIGNS
RESPONSE
FEED
DATA
TARGETED
MARKETING
TRANSACTIONAL
FREQUENCY
OPTIMIZATION
PERSONALIZATION
LOW-LEVEL
PERSONALIZATION
SEGMENTATION
SMS
CADENCE
SINGLE DATA
PLATFORM
GROWTH
AUDIENCE
CONNECTION ERROR
DESKTOP
QUOTE
ONLINE
SHOPPING
WORKFLOW
STUDIO
DATA
SILOS
AUDIENCE
CONNECTION
CONTENT
CHECKED
RE-ENGAGEMENT
TRUE
CROSS-CHANNEL
EMAIL
ERROR
SEARCH
MEDIUMS
HIGHLIGHT
AUTOMATION
EASY TO
USE
EMAIL
BRAND
LOVE
EVENT
DATA
WELCOME
USER PROFILE
DATA
1-TO-1
RELEVANCE
SMART
PHONE
CAMPAIGN
SUCCESS
DIRECTION
PROMOTIONS
VALUE
DIVIDER #1
DIVIDER #2
DIVIDER #3
DIVIDER #4
DIVIDER #5
DIVIDER #6
DIVIDER #7
DIVIDER #8
DIVIDER #9
DIVIDER #10
DIVIDER #11
DIVIDER #12
DIVIDER #13
THANK YOU!

Migrating a Billion Transactions a Day To Apache Pulsar - Pulsar Summit NA 2021

Editor's Notes

  • #8 Workflow has entrance limit checks Simultaneous Limit: How many times a contact can be in a workflow Lifetime Limit: How many times a contact can enter a workflow for the lifetime limit, this means we have to store the history of all users who have entered a workflow indefinitely
  • #14 discuss the core loop here