ABOUT AWS Amazon Web Services (AWS) is the world’s most comprehensive and broadly adopted cloud platform, offering over 200 fully featured services from data centers globally. Millions of customers — including the fastest-growing startups, largest enterprises, and leading government agencies — are using AWS to lower costs, become more agile, and innovate faster.
#AWS #AmazonWebServices #CloudComputing
Content
18.481 -> Hello.
19.048 -> Hello, welcome to Solving with AWS Solutions.
21.25 -> Your deep dive into reference architectures
23.152 -> built by AWS that are ready to deploy
25.221 -> instantly in the cloud.
26.356 -> I'm Rob and I'm here with Eric.
28.024 -> Today we're going to be talking about
29.258 -> Distributed Load Testing on AWS.
31.494 -> This solution lets you test your application
33.296 -> by simulating thousands of users sending
35.231 -> traffic to your endpoint.
36.232 -> Sounds great.
36.833 -> Let's take a look.
39.502 -> All right, let's hear about Distributed Load
41.004 -> Testing on AWS.
42.538 -> Absolutely.
43.139 -> So here we've got the landing page for
45.274 -> the solution, and we've got links to our
48.344 -> implementation guide where you can get some
49.746 -> instructions on how to deploy it and details
53.149 -> about the solution.
54.15 -> We've also got a link to our
55.084 -> CloudFormation template.
56.052 -> You can deploy that right into your account
57.487 -> with him with one click.
58.988 -> And then we've got a link to our source code,
60.723 -> which is open source.
61.791 -> It's on GitHub.
62.458 -> So lots of good resources for our customers.
64.527 -> Absolutely.
65.194 -> Let's bring up the architecture diagram and
66.863 -> take a look.
67.43 -> Sure.
68.731 -> So here we have the architecture diagram.
70.133 -> Nice.
70.7 -> Looks like we have front and back end.
71.968 -> So let's walk through the front end first.
73.736 -> Where is this being hosted?
74.804 -> So we've got the application hosted in an
76.939 -> S3 bucket, distributed with a
78.174 -> CloudFront distribution.
79.842 -> And it's a kind of very standard application
82.879 -> using amplifier to interact with the backend.
84.614 -> And this is where we're going to configure the
86.182 -> actual parameters for the
87.383 -> load testing itself.
88.017 -> Yes, exactly.
88.684 -> And how is it authenticated?
89.986 -> So we're using Cognito as
91.387 -> our authentication layer.
93.089 -> So that handles our
94.123 -> authentication and authorization.
95.725 -> All right.
96.292 -> So switching to the back end.
97.293 -> Now let's talk about the Docker image.
99.695 -> What are we doing with Docker image?
101.497 -> Sure.
102.065 -> So we've got this Docker image pipeline which
105.568 -> will run through and build a tourist container
108.404 -> image and store that into your account.
110.773 -> What is Taurus?
111.607 -> So Taurus is an open source testing
113.976 -> application that's and that is hosted
116.145 -> on Docker Hub.
116.946 -> So when you deploy the solution, we will pull
119.582 -> that image into an S3 bucket in your account.
122.285 -> And then there's a code pipeline called Build
123.986 -> Project that will build that image.
125.188 -> So this is the software that you're actually
126.989 -> going to be using to drive the load for the
128.958 -> testing of your application.
130.293 -> And it's hosted where?
131.794 -> Once it's built, we'll host it in an
134.163 -> Amazon container registry.
135.465 -> OK.
136.032 -> OK, cool.
136.733 -> So what's happening when we actually launch
138.434 -> one of the tests?
139.268 -> Sure.
139.836 -> So when you launch a test, a step function's
142.205 -> workflow will become initiated.
144.073 -> So that's happening here.
146.042 -> That will manage bringing up all the
148.444 -> containers in Fargate and then when they're
150.379 -> all ready to start testing, will actually
152.248 -> initiate the test.
153.149 -> And those step functions are configured as
154.884 -> part of the CloudFormation template.
156.219 -> Yep, that's right.
156.886 -> Awesome.
157.453 -> So now we have these containers running and
160.89 -> this is where the load is actually
161.991 -> being generated?
162.558 -> That's right.
163.126 -> Yeah.
163.693 -> So now your application endpoint is being hit
166.329 -> with those simulated users.
167.597 -> OK, cool.
168.164 -> And were the results stored?
169.365 -> So we store the results in DynamoDB.
171.934 -> So after each container is done, it will
174.403 -> report its output into DynamoDB.
176.973 -> And then when the entire workflow is done,
178.841 -> it will collate all those results into a
180.843 -> single result that you can see
182.245 -> in the dashboard.
182.845 -> Nice.
183.412 -> Can you show me what the front end looks like?
184.68 -> What does the UX look like?
185.615 -> Yeah, absolutely.
186.749 -> So flip over here and this is our our main
189.185 -> dashboard where you can see previous tests
191.921 -> that you've run, any test that
192.989 -> are currently running.
194.524 -> And then you can go up here and create
196.659 -> a test, a new test.
197.693 -> What are some of the highlights of the
199.195 -> parameters we need to look at when we're
200.63 -> creating a new test?
201.764 -> Yeah, absolutely.
202.565 -> So the first thing you do, give you a test,
205.134 -> a name in a description, and then down here is
207.036 -> where you actually start configuring
208.871 -> your test.
209.872 -> So the test count is the number of containers
212.375 -> that you want to spin up.
213.276 -> Is there a maximum for the number?
214.844 -> Yes, you can go up to a thousand
216.112 -> containers.
216.679 -> OK.
217.246 -> And what is the concurrency?
218.915 -> So concurrency is for
220.249 -> each individual container.
221.484 -> How many users do we want to simulate?
223.352 -> All right.
223.92 -> And is there a maximum on that?
225.855 -> Recommended amount maybe?
226.589 -> Recommended amount is about 200.
228.124 -> OK.
228.691 -> Yeah.
229.258 -> So that that's what we recommend.
229.992 -> All right.
230.56 -> Nice.
231.127 -> What other parameters?
231.727 -> So ramp up and hold for.
233.329 -> So ramp up is how long do you want it to take
235.998 -> to get to the maximum amount of concurrent
238.234 -> users?
238.801 -> OK.
239.368 -> And then once you're at that maximum, how long
240.536 -> do you want to hold that?
241.137 -> So it's not just an immediate blast of
242.872 -> thousands and thousands of years.
244.106 -> OK.
244.674 -> Exactly.
245.641 -> And then down here is where you can actually
247.443 -> say whether you want to run this on demand run
249.312 -> now or run on a schedule.
250.78 -> Oh, that's nice.
251.814 -> So you could schedule periodic tests of this?
254.116 -> Yeah, you can schedule daily, weekly, or you
256.252 -> can just schedule a one time test at some
258.354 -> point in the future.
258.988 -> OK, cool.
259.956 -> What else we have?
260.69 -> So up here is where you kind of detail the
264.16 -> scenario of the test.
265.061 -> So we have two options here.
266.696 -> So you can do a single HTTP endpoint, which is
269.865 -> basically just get put post delete requests or
272.969 -> you can run a JMeter test.
274.27 -> OK.
274.837 -> So JMeter is an open source testing framework
277.106 -> that we also support with the solution.
278.875 -> So you can select that.
280.476 -> And then with with HTTP, we have
283.012 -> different HTTP methods.
284.28 -> You can configure headers and then you can
286.015 -> select what endpoint you want to hit,
287.516 -> maybe a request payload.
289.018 -> So some flexibility in the type of load that
291.053 -> we're actually driving.
291.687 -> Absolutely.
292.455 -> Yeah.
293.022 -> Nice.
293.589 -> So can we see some of the results of some of
295.191 -> the tests you've run?
295.791 -> Yeah, absolutely.
296.525 -> So let's go back here to the dashboard.
298.394 -> And then if we look at a previous test that
300.096 -> I've run, let's check out this one.
303.266 -> You see this one is when I ran a little bit
304.834 -> earlier and it's completed.
306.802 -> So now if you scroll down to the bottom,
308.404 -> you can see some statistics about the average
310.973 -> response time, the average latency.
313.276 -> And then all the way at the bottom, you can
314.977 -> see a history.
315.611 -> So you can see over time I've run this test
318.848 -> several times and you can see all the major
322.752 -> metrics for each individual test.
324.787 -> And this dashboard, again, was pre built as
326.555 -> part of the CloudFormation template,
327.79 -> automatically gathering all these metrics.
329.458 -> Yeah, that's right.
330.159 -> That's pretty cool.
330.793 -> Lots of ways to test the application.
332.561 -> Mm hmm.
333.129 -> Absolutely.
333.696 -> Appreciate it.
334.563 -> Thank you.
336.432 -> Thanks for joining us as we explore
337.934 -> distributed low testing on AWS.
340.069 -> You can find this and many other great
341.737 -> solutions on our AWS Solutions website.