Hi, welcome to 'This is My Architecture'.
My name is Andrea,
and I'm here with Vipul from ADP.
Hi Vipul, thanks for being here.
Hi Andrea, how are you?
I am good, thank you.
So, what do you guys do?
So, at ADP we're one of the country's largest providers,
actually, one of the world's largest providers of HR systems, and payroll.
Great.
So, we're here to talk about Workforce Now,
- which sits on AWS. - Yes.
So, tell our viewers what that is.
So, ADP Workforce Now is our human resource, HR,
and human capital management and payroll system.
We've got benefits.
We've got talent management.
We've got recruiting.
As we say, from hire to retire.
And it is our solution that's used in the mid-market.
It goes from some very small clients, all the way up to enterprise size.
Great.
Let's dive into the architecture.
I see lots of different services.
- And so, you have users, I'm sure. - Yep.
Right? Employees.
- And I see some mobile devices, - Yeah.
and computer systems, and ELB.
How do you access the system?
So, we have an API layer
that all requests come in.
They go through our load balancer,
and then right into our EKS cluster.
Okay.
So, this must be the heart of this whole architecture, right?
Yes.
The application logic.
Tell us what size EKS cluster you're running.
Well, we have hundreds of microservices
that are running inside this EKS cluster,
and those microservices are grouped together in node clusters.
I see.
Because depending on what part of the application you're in,
there are different characteristics of that.
In addition to that, one of the services we're running here
is our continuous calculation, real-time payroll engine.
Okay.
So, it depends, obviously.
Me, myself, logging into my system,
- I might do it early in the day. - Yep.
- I'm sure you have seasonality. - Yes.
And there's also time of day.
How do you scale up and down?
So, again, as you just said,
we have seasonality during the year for like, let's say, benefits annual enrollment.
October-November are the busy months when people go do that.
It can happen at other times in the year too,
but that's traditionally a busy time.
So, we scale up those benefit services during that period of time.
But on a daily basis, we have people clocking in and clocking out,
just to start and end their shift.
And so, those services scale up on a daily basis,
and then they scale back down again when traffic is low.
Oh, that makes perfect sense for performance and cost,
- I'm sure. - Yep.
So, I see streaming for Kafka.
What do you use that for?
So, let's say with the clocking out example.
When someone clocks out, an event is dropped onto Kafka.
That event is read by our continuous calc payroll engine.
And once that clock out event is read,
immediately for that user their payroll up-to-the-minute for that day is calculated.
In addition to that, at the company level all the liabilities,
because it's a continuous real-time payroll
all those liabilities at the company level are known as well.
Okay. So, it's event management at high speed.
It is, yes.
And you do this to keep, obviously, information current and available real-time.
Where do you store this information?
So, all the information is stored in Aurora.
- That's our system of record. - Okay.
We're using a Postgres on Aurora.
Okay.
Once that information is stored in there,
we synch it back up with ElastiCache, and Elasticsearch as well.
I see.
So, again, when someone logs in,
the first thing when they log into these services
we go over here to our cache service,
and say, hey, what are you entitled to,
and we bring back and retrieve the data that that user,
and by the way, that user could be an employee,
it could be a manager, or it could be what we call a practitioner.
I see.
The data that that user needs readily.
So, you make this information readily available quickly through ElastiCache.
Yes.
And then Elasticsearch.
Yes.
Are you using Elasticsearch?
- We are using Elasticsearch too. - Okay.
So, Elasticsearch, again,
back to whether it's the employees or the employers, right,
there's various different bits of information they want to look up.
As an employer, I may want to look at all my employees.
Mm-hm.
As an employee, I may want to look at my payroll history, let's say.
I see.
Or other history.
So, we use Elasticsearch to go get that data,
and serve it back up to the client.
This is very sensitive information.
It is.
I'm sure no one wants to have access to anyone else's data.
How do you secure it in Aurora?
All of the security in Aurora is done at the row level.
So, we do row level security.
And by the way, encryption as well too.
In fact, the entire environment,
for all the data that's in transit or at rest, is fully encrypted.
Yeah, that's very impressive.
And also, let's talk about geographic, say, the regions you're using.
I'm sure you have users all around the world.
Yes.
What's the geographic presence?
Yeah. So, we're using multi availabilities on multi-region,
throughout the US, and throughout Canada, right?
I see.
And, in fact, our systems,
so, Workforce Now today has about 70,000 clients on it,
with tens of millions of users.
So, everything that we've architected over here is to handle that load.
And as we're moving our clients and putting live on this,
we're ready for that load,
and that's what it was architected for, was to handle those loads.
And quite frankly, it'll scale even larger.
Yeah, very interesting architecture.
You walked us through the Workforce Now platform,
which is highly scalable,
and handling all the application logic with the EKS,
as well event management at high speed with Kafka.
And then storing, making data accessible,
and encrypting data for users using RDS,
as well ElastiCache and Elasticsearch.
So, thanks for walking us through this architecture.
Thank you for having me today.
Yeah, and thank you for watching 'This is My Architecture'.