In this chapter, we've taken our Mail Ape app and launched it into a production environment in the AWS Cloud. We've used AWS CloudFormation to declare our AWS resources as code, making it as easy to track what we need and what changed as in the rest of our code base. We've built the image of our Mail Ape servers run using Packer, again giving us the ability to track our server configuration as code. Finally, we launched Mail Ape into the cloud and learned how to scale it up and down.
Now that we've come to the end of our journey learning to build Django web applications, let's review some of what we've learned. Over three projects we've seen how Django organizes code into models, views, and templates. We've learned how to do input validation with Django's form class and with Django Rest Framework's Serializer classes. We've examined security best practices, caching, and how to send emails. We've seen how to take our code and deploy into Linux servers, Docker containers, and the AWS...