Deploying a Django Virtual Event Platform Using Containers and Terraform

By Calvin Hendryx-Parker

Elevator Pitch

Learn to leverage cloud native tools and launch a scalable Python and Django application into the Cloud with Fargate. Leave the legacy deployments behind and forge bravely into the new world of Cloud Native applications.

Description

Abstract

Learn to leverage cloud native tools and launch a scalable Python and Django application into the Cloud with Fargate. We’ll dive in with how to getting up and running fast, but leaving the overhead of managing virtual machines and Kubernetes behind. Create and store the application Docker images in a container repository and without touching the AWS console we can create fully Infrastructure as Code automated deployments via CodePipeline into Fargate containers and S3 buckets. Deliver the React application via CloudFront and S3 for full global scalability. Leave the legacy deployments behind and forge bravely into the new world of Cloud Native applications.

Audience

This talk is aimed at Intermediate Web Application developers looking to learn how to deploy Django applications in a Cloud Native fashion using Open Source tools. The audience is expected to have an understanding of how to build basic web applications with Django and Python, but want to expand their knowledge to scale an application to handle large scale loads gracefully. The audience will leave the talk with an understanding of how to leverage container best practices for deploying Python Django applications and an overview of what serverless means in the modern public cloud.

Outline

  • Intro to Cloud Native deployment — 10%
    • Hitchhikers Guide to Cloud Native vocabulary
  • Laying the groundwork for going Cloud Native — 10%
    • Containerizing your app
    • Preparing your image for production
  • Building the pipeline — 20%
    • Sketching out your infrastructure
    • Moving to Terraform
    • Creating a CI/CD workflow
  • Playing with Building Blocks — 20%
    • Leveraging AWS Cloud Components for Delivery
    • Using Environment Variables and keeping Secrets
  • Scaling Considerations, Load Balancers and CDNs — 20%
    • Many routes behind one URL
    • Enable effective caching
    • Keep things on a need to know basis (only pass what you need)
  • Load Testing — 10%
    • Build test plans with Locust.io (Python powered!)
    • Testing and debugging load tests with remote PDB
  • Conclusion — 10%