MARK MIRCHANDANI: Ad handling at scale
requires a combination of millions
of requests, rapid bids, and serving the ads themselves.
Join us as we talk to Unity about how
they've built out their ad system on this episode of Stack
Chat.
Thanks for joining us, TJ.
Tell us a little bit more about what Unity does.
THOMAS MERRITT: Thanks, Mark.
Unity builds a high definition, 3D, real-time graphics
rendering engine.
And it's used in game development platforms as well
as a variety of other applications
like automotive, architecture, and film.
On the game development side, we have
a number of back-end services to support game publishers,
in particular the part I'm involved in is monetization.
And we have in-app purchase services as well as
ad services.
MARK MIRCHANDANI: So, yeah, I'd love
to hear more about how the architecture actually
supports all of the ad requests that come in for a game.
THOMAS MERRITT: So we get about tens
of thousands of ad requests a second.
So it's pretty high volume.
And those all go into a public GKE cluster.
And that service also makes bid requests
to third parties at the rate of about a million a second.
And those requests are all public IP
addresses so that we can get good performance going
to those bidders.
We had tried it on Outbound Map and that didn't work as well.
Additionally, we have a private GKE cluster
where all of our support services
run for security reasons.
And that cluster is only accessible internally.
And we also have virtual machines
that are running a variety of databases that also provide
support for our ad network.
Additionally, we have data that's
going into Nats and Kafka before hitting
other parts of our system.
And we have log-in going to Stock Driver.
MARK MIRCHANDANI: What are some of the other parts
of the system that Kafka sends the data to?
THOMAS MERRITT: So other parts of the system
are billing, business intelligence, and some machine
learning systems that make training models that
are used for making decisions at various stages within our ad
network.
MARK MIRCHANDANI: So was this architecture built natively
on GCP?
Or was it migrated from somewhere else?
THOMAS MERRITT: We migrated from another cloud provider
into GCP about a year ago.
And in the prior environment, we had
a lot of services that were on [INAUDIBLE] [? verse ?]
machines.
We had some services in Kubernetes.
We had a variety of different CI/CD processes.
So early on in the migration process,
we did some engineering work to figure out
how we were going to migrate our services.
We wanted to have a consistent CI/CD pipeline
for all of our services in GCP.
And so a lot of the pre-work was to upgrade
the CI/CD pipeline for all our services to be standardized.
And that pipeline also supported the GCP migration.
Additionally, getting the ad serving component migrated over
required solving a couple of technical problems around DNS
and just the volume of traffic that we have.
MARK MIRCHANDANI: So now that you've
got all this up and running in GCP,
are there any changes that you would make?
Or if you could go back, would you do anything differently?
THOMAS MERRITT: We're pretty happy with the structure
we have in GCP right now, being on a standardized CI/CD
pipeline has been really helpful for us.
It makes it easy to deploy any services.
We have a process for doing that.
And in particular, changes that we are making
are migrating towards managed database services
like [INAUDIBLE] and dropping some of our more
customized database systems.
MARK MIRCHANDANI: Sounds good.
Well thank you so much for coming in today
and telling us about how you built the ad request network.
THOMAS MERRITT: Great to be here.
Thanks.
MARK MIRCHANDANI: Check out this deep dive
on building an advertising platform on Google Cloud
Platform.
Thanks for watching and make sure to subscribe
for more great Google Cloud Platform content.
We'll see you next time on Stack Chat.