A look at Netflix online advertising personalization platform which supports our digital marketing efforts and delivers billions of highly targeted ad impressions monthly.
Introduction and set out the landscape: introducing the Netflix Ad Personalization platform
At Netflix we make fresh content available on the platform daily. This year alone we are on track for producing 1,000 hours of original content.
That makes btw 41 days of continuous binge-watching!
Add the rest of the non-original content and you get a few more thousands of hours. Soon there will not be enough hours in a year to watch all the hours of content available on our service.
Not only do we produce a lot of content but also the amount of content is growing rapidly every year. And these titles come in different languages, different ratings and sensitivity factors and different licensing parameters.
Netflix is not just a hollywood/English content platform -- take Club de Cuervos, Suburra or Marseille for example and you will see that we are nowadays producing and serving local content in a lot of countries.
We are fast becoming the world's largest studio. Several teams are helping and the ads personalization team is working to help marketing scale to keep pace with our growing content slate.
We are a global company and serve our content all over the globe. As such we are delivering our marketing messaging to every country in the world.
There are over 190 countries. There are about 7,000 languages in the world but 23 of them cover more than half of the population.
The combinatorics of this grows very quickly as you can imagine.
It’s not just the ad format, delivering the wrong language messaging to the user not only means wasting impressions (and money) but it generates also negative sentiment with the users.
Consider for instance Matt: he is an American, and if he is traveling to any other country in the world, we want to make sure our message reaches him in the language he understands.
Deliver the wrong one and we are generating a negative user experience.
If Matt for instance decides to go to Egypt to see the pyramids, he should not see the ad at the bottom here. Or if he goes to France he shouldn’t see the top ad, he should see one in USA.
Right now though all the ad servers out there would target the message to poor Matt based on the country he is in. This is one of the many problems we are trying to solve for instance in our platform.
Data is at the core of everything we do in Netflix. Did our new mobile app decrease the number of re-buffers? We have data to tell us. Will automatic playing of the selected title render more views or will it upset viewers? We can set off to do a A/B test and the data will tell us.
We apply the same Netflix data-driven approach in our advertising platform and supply tools which allow large number of A/B tests to be deployed part of our digital marketing rollout. Which allows us to raise interesting questions: for instance, should we use image A or image B? Use a black background stack or overlay simply text over the image? Or maybe change the ad format - does the an ad size deliver better than another? Should we try the square unit or the wide one? The answer to all of these is of course: YES :)
We want to A/B test and find out what works.For that audience. For that ad format. In that language. On that particular platform - be it Facebook, DoubleClick, YouTube and so on.
And every A/B test data is a mine of more and more interesting insights waiting to be dug up. For instance Brits really love the image of the crown whereas countries like Australia and US not so much .
The crown was a small A/B test we ran and let’s look at some of the other interesting numbers behind this test:
We A/B tested 6 ad concepts
In approx 30 languages
In about 10 different ad formats
On 3 different ad platforms
This results in more than 5,000 unique ads to manage, deploy and report on.
And this is one title. Imagine doing this for the 1,000’s of titles we have on our platform!
One thing that remains the same is that things will change.
And in Netflix we like constantly changing things :)
One of the challenges we are dealing with is that the number of parameters we combine for delivering an ad to the end user generates a huge amount of permutations. Consider just all the possible ad dimensions and the color combinations and the resulting number of combinations you get are pretty high.
Standard approaches to generating these combinations and QA would render slow and unscalable.
This is a screenshot of my very own experience when I log into Netflix and it contains recommendations that mostly my 2 years old absolutely loves! At Netflix we have a state-of-the-art recommendation system which uses a lot of contextual data such as your viewing history to deliver personalized recommendations on our service. (BTW did you guys know that the image I’m seeing for “Parks and recreation” is actually different to the ones you might see when you log into Netflix!) We are taking a highly personalized approach to our service and this yields to higher customer engagement: these are all titles I interact with every time I log in. We know in Netflix that people interact with recommendations when we make them personal.
What happens though outside of Netflix? Remember our user Matt from before? Well turns out that Matt doesn’t have a Netflix account.He is in the USA, he’s reading an article on cnn.com about health and fitness.People like Matt who signed up to Netflix watched “Cooked” , “Ultimate Beastmaster”We can infer with high degree of confidence that Matt would like “Cooked” and “Ultimate Beastmaster”.Matt wouldn’t sign up for Netfix if we show him this ad (“Dinotrux”), but we’re highly confident that he would if he saw an ad for “Cooked” and “Ultimate Beastmaster”.
As you can see this is very similar system to the recommendation system we already have on the Netflix service.
And because we know that personalized recommendations work, and because the only way to solve a the problems mentioned before at scale is through a ML based platform, with our ad platform we are bringing recommendations to online advertising. This allows us to take these challenges at scale heads-on with what we are building in our ad recommendations platform … and do more than that in fact.
Our ML-based platform is challenged constantly to deliver personalized recommendations in ad units. And we are trying to continuously test our advertising delivery, learn from our user engagement (clicks, conversions, interactions) with our units and then by using that learning we are looking to innovate our platform in various dimensions: optimize our bid prices, our audience targeting, the content we are targeting and so on.
I know you are all waiting for a bit of architecture so here is a glimpse of what our platforms looks like in some parts.
We adopted the well known Netflix microservices approach -- some of them shown in this diagram.
At the core the platform has 2 major components: Heisenberg and Monet. Heisenberg is our ad server which delivers about 3B personalized impressions a month.
Monet is the platform we build for our marketing folks to manage this inventory of 3,000+ and growing titles in many languages on many ad platforms and so on.
We are Netflix, we use all the juicy technologies Netflix created, embraced and supports.
Historically Netflix has been a Java stack company whereas nowadays we are more of a JVM stack company -- and aiming to become language agnostic. We use Java, Groovy, Kotlin and I’ve seen Scala creeping into our platform too :) We rely heavily on RxJava and RxNetty especially for our ad server.
We use a mix of JS/ES6 for front end but also now this has started to spill in the backend through various nodejs modules. It’s a mixture
Of course are running everything in AWS, we produce tons of data which we mine through Hive and the likes, we use mostly Cassandra for our fast data store and ElasticSearch for fast querying. We have a plethora of dockers and a whole bunch other of other technologies which didn’t fit anymore on this slide -- all of these are helping us gather and crunch a lot of data, based on machine learning and magical Netflix dust.