Developing FastAPI Application using K8s & AWS
Build seamless FastAPI applications in PyCharm through Kubernetes & AWS.
FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.
This tutorial will be entirely focused on FastAPI along-with playing with titans like Kubernetes & Amazon Web Services.
There are a lot of features we are going to cover:
- Working with SQLAlchemy & Alembic
- Implementing APIs along-with securing with JSON Web Tokens (JWT)
- Integrating with Celery & Redis
- Async Tests
- Helm Charts
- Deploying Apps using Kubernetes & AWS EKS (Elastic Kubernetes Service)
Note: We'll be using PyCharm Professional Edition for all the steps in this tutorial.
Introduction
Introducing FastAPI, a modern, fast (high-performance), web framework.
![Project Setup](/guide/assets/thumbnail-58b204cb.png)
Project Setup
Setting up FastAPI project type in PyCharm Professional.
![Database Setup - Part I](/guide/assets/thumbnail-475fdaaf.png)
Database Setup - Part I
Configuring database connection with SQLAlchemy and FastAPI.
![Database Setup - Part II](/guide/assets/thumbnail-321dfe7a.png)
Database Setup - Part II
Setting up database migrations with Alembic.
![REST API - Part I](/guide/assets/thumbnail-e474baaa.png)
REST API - Part I
Implementing a REST API for User modules using Pydantic & API Router.
![REST API - Part II](/guide/assets/thumbnail-75dc01d9.png)
REST API - Part II
Performing CRUD operations in our User module.
![REST API - Part III](/guide/assets/thumbnail-6866f71e.png)
REST API - Part III
Performing CRUD operations in Products & Category Module.
![REST API - Part IV](/guide/assets/thumbnail-95ef5c26.png)
REST API - Part IV
Performing CRUD operations in Orders & Cart Module.
![REST API - Part V](/guide/assets/thumbnail-959af113.png)
REST API - Part V
Performing CRUD operations in Orders along with placing a new order.
![Celery & Redis](/guide/assets/thumbnail-2cb5298d.png)
Celery & Redis
Configuring Celery & Redis with FastAPI.
![Authentication](/guide/assets/thumbnail-67980f54.png)
Authentication
Integrating FastAPI with JWT Tokens.
![Testing](/guide/assets/thumbnail-09ac5d18.png)
Testing
Writing Unit Tests using Pytest & Asyncio.
![Kubernetes Deployment](/guide/assets/thumbnail-11a845c3.png)
Kubernetes Deployment
Writing K8s manifests & deploying in minikube.
![Helm Charts](/guide/assets/thumbnail-01ff435e.png)
Helm Charts
Combine your K8s manifests into a single package using Helm Charts.
![Elastic Kubernetes Service (EKS)](/guide/assets/thumbnail-b746bbb5.png)
Elastic Kubernetes Service (EKS)
Deploying application using EKS, RDS, ElastiCache, Route53 & AWS Certificate Manager.
![Cleanup](/guide/assets/thumbnail-043c3f32.png)
Cleanup
Cleaning up stack (removing RDS, EKS, ElastiCache, LoadBalancer, Route53).
![References](/guide/assets/thumbnail-b3809bdc.png)
References
Reference materials which helped to prepare this tutorial.