Hello.
Hello, welcome to Solving with AWS Solutions.
Your deep dive into reference architectures
built by AWS that are ready to deploy
instantly in the cloud.
I'm Rob and I'm here with Eric.
Today we're going to be talking about
Distributed Load Testing on AWS.
This solution lets you test your application
by simulating thousands of users sending
traffic to your endpoint.
Sounds great.
Let's take a look.
All right, let's hear about Distributed Load
Testing on AWS.
Absolutely.
So here we've got the landing page for
the solution, and we've got links to our
implementation guide where you can get some
instructions on how to deploy it and details
about the solution.
We've also got a link to our
CloudFormation template.
You can deploy that right into your account
with him with one click.
And then we've got a link to our source code,
which is open source.
It's on GitHub.
So lots of good resources for our customers.
Absolutely.
Let's bring up the architecture diagram and
take a look.
Sure.
So here we have the architecture diagram.
Nice.
Looks like we have front and back end.
So let's walk through the front end first.
Where is this being hosted?
So we've got the application hosted in an
S3 bucket, distributed with a
CloudFront distribution.
And it's a kind of very standard application
using amplifier to interact with the backend.
And this is where we're going to configure the
actual parameters for the
load testing itself.
Yes, exactly.
And how is it authenticated?
So we're using Cognito as
our authentication layer.
So that handles our
authentication and authorization.
All right.
So switching to the back end.
Now let's talk about the Docker image.
What are we doing with Docker image?
Sure.
So we've got this Docker image pipeline which
will run through and build a tourist container
image and store that into your account.
What is Taurus?
So Taurus is an open source testing
application that's and that is hosted
on Docker Hub.
So when you deploy the solution, we will pull
that image into an S3 bucket in your account.
And then there's a code pipeline called Build
Project that will build that image.
So this is the software that you're actually
going to be using to drive the load for the
testing of your application.
And it's hosted where?
Once it's built, we'll host it in an
Amazon container registry.
OK.
OK, cool.
So what's happening when we actually launch
one of the tests?
Sure.
So when you launch a test, a step function's
workflow will become initiated.
So that's happening here.
That will manage bringing up all the
containers in Fargate and then when they're
all ready to start testing, will actually
initiate the test.
And those step functions are configured as
part of the CloudFormation template.
Yep, that's right.
Awesome.
So now we have these containers running and
this is where the load is actually
being generated?
That's right.
Yeah.
So now your application endpoint is being hit
with those simulated users.
OK, cool.
And were the results stored?
So we store the results in DynamoDB.
So after each container is done, it will
report its output into DynamoDB.
And then when the entire workflow is done,
it will collate all those results into a
single result that you can see
in the dashboard.
Nice.
Can you show me what the front end looks like?
What does the UX look like?
Yeah, absolutely.
So flip over here and this is our our main
dashboard where you can see previous tests
that you've run, any test that
are currently running.
And then you can go up here and create
a test, a new test.
What are some of the highlights of the
parameters we need to look at when we're
creating a new test?
Yeah, absolutely.
So the first thing you do, give you a test,
a name in a description, and then down here is
where you actually start configuring
your test.
So the test count is the number of containers
that you want to spin up.
Is there a maximum for the number?
Yes, you can go up to a thousand
containers.
OK.
And what is the concurrency?
So concurrency is for
each individual container.
How many users do we want to simulate?
All right.
And is there a maximum on that?
Recommended amount maybe?
Recommended amount is about 200.
OK.
Yeah.
So that that's what we recommend.
All right.
Nice.
What other parameters?
So ramp up and hold for.
So ramp up is how long do you want it to take
to get to the maximum amount of concurrent
users?
OK.
And then once you're at that maximum, how long
do you want to hold that?
So it's not just an immediate blast of
thousands and thousands of years.
OK.
Exactly.
And then down here is where you can actually
say whether you want to run this on demand run
now or run on a schedule.
Oh, that's nice.
So you could schedule periodic tests of this?
Yeah, you can schedule daily, weekly, or you
can just schedule a one time test at some
point in the future.
OK, cool.
What else we have?
So up here is where you kind of detail the
scenario of the test.
So we have two options here.
So you can do a single HTTP endpoint, which is
basically just get put post delete requests or
you can run a JMeter test.
OK.
So JMeter is an open source testing framework
that we also support with the solution.
So you can select that.
And then with with HTTP, we have
different HTTP methods.
You can configure headers and then you can
select what endpoint you want to hit,
maybe a request payload.
So some flexibility in the type of load that
we're actually driving.
Absolutely.
Yeah.
Nice.
So can we see some of the results of some of
the tests you've run?
Yeah, absolutely.
So let's go back here to the dashboard.
And then if we look at a previous test that
I've run, let's check out this one.
You see this one is when I ran a little bit
earlier and it's completed.
So now if you scroll down to the bottom,
you can see some statistics about the average
response time, the average latency.
And then all the way at the bottom, you can
see a history.
So you can see over time I've run this test
several times and you can see all the major
metrics for each individual test.
And this dashboard, again, was pre built as
part of the CloudFormation template,
automatically gathering all these metrics.
Yeah, that's right.
That's pretty cool.
Lots of ways to test the application.
Mm hmm.
Absolutely.
Appreciate it.
Thank you.
Thanks for joining us as we explore
distributed low testing on AWS.
You can find this and many other great
solutions on our AWS Solutions website.
Thanks for watching.