Introduction
Part 1, Chapter 1
There are a lot of options to choose from when it comes to building a web application. Every step of the way, from the frontend to the backend to deployment, you'll have to choose the tools and technologies. This can be overwhelming.
- Which backend framework? What about the testing library?
- Which JavaScript framework?
- Should I use a SQL or NoSQL database?
- Should I deploy to some cloud provider? Will that cost me a lot?
- What about scalability of my application?
- How should I deploy it? Manually or CI/CD?
If you want to build modern, insanely scalable applications that run on AWS for low prices this is course for you. It will teach you how to:
- Build serverless FastAPI APIs that run on AWS Lambda
- Use DynamoDB as the main database for your applications
- Deploy FastAPI apps to AWS Lambda using CI/CD on GitHub Actions and Serverless Framework
- Use Cognito for authentication inside your APIs
- Consume the backend FastAPI API from the frontend Vue application
- Deploy Vue applications to S3
- Use Cognito for authentication inside Vue applications
- Serve your applications with CloudFront CDNs on custom domains
- Set up monitoring and alerting for your applications with CloudWatch
App Overview
By the end of this course, you'll have developed a web application (both the backend API and frontend UI) for managing your tasks. We'll cover the following use cases:
- create a task
- list open tasks
- list closed tasks
- close a task
You'll set up a git repository from scratch, build the API, set up a CI/CD pipeline, build a DynamoDB data model, use Cognito for authentication, build a Vue application, monitor your application, and deploy new versions of the application.
What's This Course About?
This course will teach you how to use the most modern tools that play nicely together to build a full web application. Plus, you'll get all of that without having to manage any servers since we'll leverage "serverless" technologies: FastAPI will run on AWS Lambda, Vue will be served from S3 via a CDN, Cognito will take care of authentication, DynamoDB will store your data, and CloudWatch will monitor your application. All of those services are available as part of the free-tier on AWS, so you won't need to pay for anything unless you have a lot of traffic. Don't worry -- we'll still follow good old Test-driven Development and set up CI/CD.
Tools, Frameworks, and Services
Along the way, you'll be using several development tools. Feel free to swap out the tools used in this course for the ones that solve your problems.
GitHub
GitHub is a solution for managing the full software development lifecycle. You'll use it for:
- external git repository
- CI/CD pipeline
You can replace it with:
- Bitbucket (with pipelines)
- GitLab
- GitHub + CircleCI
Poetry
Poetry is a tool used for Python dependency management. You'll use it for managing dependencies.
You can replace it with:
- pip
- pipenv
FastAPI
FastAPI is a high-performance, easy-to-learn, fast-to-code, ready-for-production web framework for building APIs with Python. You'll use it for building a web application.
You can replace it with:
- Flask
- Django
- Pyramid
Vue
Vue is a an approachable, performant, and versatile framework for building web user interfaces with JavaScript/TypeScript. You'll use it for building a web application.
You can replace it with:
- React
- Svelte
- Angular
pytest
The pytest framework makes it easy to write Python tests. You'll use it to write tests for the web application.
You can replace it with:
- unittest
- nose
AWS DynamoDB
Amazon DynamoDB is "fast, flexible NoSQL database service for single-digit millisecond performance at any scale". You'll use it to persist data used by the web application.
You can replace it with:
- Postgres
- MongoDB
AWS Cognito
Amazon Cognito is AWS service that simplifies authentication management by a lot. You'll use it sign-up and sign-in your users.
You can replace it with:
- Auth0
- Okta
AWS Cloudwatch
Amazon CloudWatch is a monitoring and observability service. You'll use it to gather and search logs and monitor resources (like CPU and memory usage) used by the web application.
You can replace it with:
- Prometheus
- Datadog
- New Relic
- Splunk
AWS Lambda
AWS Lambda is a serverless, event-driven compute service that lets you run code for virtually any type of application or backend service without provisioning or managing servers. You'll use it to run API of your web application.
You can replace it with:
- Azure Functions
- GCP Cloud Functions
CloudFormation
CloudFormation is an AWS service used to model, provision, and manage AWS resources. You'll use it to manage the AWS infrastructure (DNS, CloudFront, etc.) required for running your application.
You can replace it with:
- Terraform
- Ansible
- Pulumi
Serverless Framework
Serverless Framework is framework used for developing, deploying, troubleshooting, and securing your serverless applications. You'll use it to manage application resources, like AWS Lambda functions and environment variables, and deploying your applications.
You can replace it with:
- Zappa
- Chalice
CloudFront
CloudFront is low-latency content delivery network. You'll use it to serve the Vue application from S3 and API from Lambda.
You can replace it with:
- Cloudflare
- Google Cloud CDN
- Microsoft Azure CDN
Codecov
Codecov is service that helps you track the coverage of your code. You can track changes and compare branches and commits. It helps to focus on changes instead of the current code coverage percentage.
You can replace it with:
- Coveralls
- Github Action Code Coverage Report
Mangum
Mangum is an adapter for running ASGI applications in AWS Lambda environment. It handles API Gateway events sent to Lambda and responses returned from ASGI application.
✓ Mark as Completed