Course Wrap Up
Start course
1h 59m

For years, web development has continued to evolve alongside programming languages, tooling, and frameworks. It started out with static web sites before moving on to dynamic sites that were rendered on the server. Over time, as JavaScript frameworks gained functionality and popularity, there was a shift towards putting more of the logic into the front end, and using the back-end as a supporting API.

Throughout all the changes in web development over the years, the server has been a constant. Regardless of the languages, tools, and frameworks used, there’s always a server running the code. And that’s something that hasn’t changed. What has changed is that cloud providers now make it easy for software engineers to focus on writing their code, without having to focus on the underlying server.

In this course, you'll build a serverless web application using Python 3.6. You'll use Lambda, API Gateway, S3, DynamoDB, and Cognito to create a multi-user to-do list application based on Vue.js.

Note: The Apple M1 chip isn't compatible with this course currently. We recommend using a different device.

Learning Objectives

  • Outline the architecture of a serverless web application
  • Set up the AWS services required for the app
  • Create and deploy an API using Python 3.6
  • Explain the value of creating unit tests
  • Use a Cognito User Pool within your app

Intended Audience

  • Developers
  • DevOps Engineers
  • Site Reliability Engineers


  • Familiar with AWS
  • Development experience
  • Familiar with the CLI



Welcome back. I wanna wrap up this course with a summary of what was covered as well as talk about what's next. At the start of the course, we talked about the road to serverless applications and we reviewed some of pros and cons. Native serverless applications can be easier to develop because there's usually a lot less application code.

However, they also require a lot more test code because there's a lot of services that we're going to need mock out. The todo application we built in this course uses several managed services including Cognito, S3, APIGateway, Lambda and DynamoDB. By using APIGateway to kick off our Lambda functions, we ended up with a highly scalable app that's highly available within a single region.

Our application was built with Python 3.6 and we used the included unit test module for our testing. To mock out DynamoDB, we used the moto framework that is a mock version of boto. We used view Vue. js on the front end to facilitate kicking off a call to Cognito to authenticate. Then we passed the authtoken to APIGateway where it decoded and passed the claims over to our Lambda functions.

Once the functions ran, they used boto to make calls to DynamoDB and then sent the response back through APIGateway back to the Vue. js application. So, while it was a simple application, there are a lot of moving parts. Alright, at the start of the course I said that there were some learning objectives that you would understand by the end of the course.

Specifically, that you should understand the architecture of a serverless web application, that you should understand how to setup the AWS services required for the app. I said that you'd be able to create and deploy an API using Python 3.6 and that you should understand the value of creating unit tests, also, that you'd be able to setup a Cognito User Pool for your application.

So, having made it this far, hopefully by now you feel comfortable with each of these learning objectives. So, what's next? What comes after this? Next up is to try this all out for yourself. Hands on experience is the best teacher. So, I recommend that you try this for yourself. Now, depending on when you take this course there may already be an accompanying lab that you can try out.

When you try this for yourself, I recommend building on what we've done. Not all of the functionality that the UI has was implemented in Lambda. So, I recommend that you try adding some of that for yourself. Try adding a function that will mark all of the to do items as completed. Try adding a function that removes all of the completed items and then once you've done those try something more advanced like the ability to share your to do list with other users.

Alright, that's gonna wrap up this course. As I mentioned at the start, I enjoy hearing from you. If you don't provide feedback about what you like and dislike with the content, I can't improve upon it. So, if you want to reach out to me, you can do so via support@cloudacademy. com or on Twitter I'm @sowhelmed.

That's going to do it for this course. Thanks for watching. I hope that this course has been useful to you and I had fun making it so I hope you enjoyed it. I'm Ben Lambert from Cloud Academy myself. Thanks for watching.

About the Author
Learning Paths

Ben Lambert is a software engineer and was previously the lead author for DevOps and Microsoft Azure training content at Cloud Academy. His courses and learning paths covered Cloud Ecosystem technologies such as DC/OS, configuration management tools, and containers. As a software engineer, Ben’s experience includes building highly available web and mobile apps. When he’s not building software, he’s hiking, camping, or creating video games.