DevOps Capstone Project: QR Code Generator
An app that converts a URL to a QR Code. The app has three components: Front-end, API and Storage. All 3 components should be hosted in containers utilizing the cloud provider of your choice. The sample application code is provided, your goals is to apply DevOps practices like containerization, CI/CD, observability and monitoring for the application.
- Front-End Container: Hosts the website where users can input URLs.
- API Container: Handles the QR code generation for given URLs.
- Storage Container: Stores the generated QR codes.
Details
1. Application
- Front-End: A web application where users can submit URLs.
- API: An API that receives URLs and generates QR codes. The API can store the QR codes in cloud storage(S3 Bucket, Azure Blob Storage, GCP Cloud Buckets).
- Storage: A storage solution (like Azure Blob Storage, AWS S3 or Google Cloud Storage) to hold the QR codes. Ensure security and accessibility for the stored data.
2. Programming
A sample application is available here rishabkumar7/devops-qr-code (opens in a new tab). It has the front-end built in NextJS, uses FastAPI Python framework for the API and AWS S3 for storage.
Required
- Containerization: Containerize both the front-end and API by creating a
Dockerfile
. - CI/CD: Write CI/CD pipeline to automate deployment of the containers, once your source code is changed.
- Infrastructure as Code (IaC): Use Terraform to define and deploy the cloud Infrastructure(Kubernetes cluster).
- Kubernetes YAML Files: Create deployment and service YAML files for both the Next.js front-end and the FastAPI backend.
Optional
Optionally you can customize the already provided app. Sample app uses AWS S3. You can utilize cloud SDKs/modules (e.g.,
boto3
for AWS,google-cloud
for GCP,azure
for Azure) to interact with cloud storage service from respective cloud providers.
3. Deployment
- Containerize the front-end, API using Docker.
- Setup CI/CD: Push the containers to a container registry (Azure Container Registry, Amazon ECR, Google Container Registry or Docker hub).
- Setup Kubernetes service within your cloud provider (Azure AKS, Amazon EKS or GCP GKE).
- Use IaC like Terraform to define and deploy the Kubernetes cluster.
- Deploy the front-end and API containers to the cluster.
- Ensure containers are interconnected for seamless data flow.
- Setup CI/CD pipeline to deploy the Kubernetes manifests to cluster after source is changed.
4. Implementation
- Web-app: Users are able to access the front-end, make sure the web-app is publicly accessible via a URL and has an input field to enter URLs.
- API: Once the URL is entered by a user, the web-app makes the request to the API container to convert the URL into a QR Code.
- Storage: The generated QR Code is stored and also displayed on the web-app for user.
- CI/CD: Setup CI/CD pipeline to deploy the containers and application after the source is changed. You can utilize tools like GitHub Actions or Azure DevOps.
- Monitoring: Setup monitoring for containers for key metrics and insights. You have Azure Monitor for AKS, Amazon CloudWatch Container Insights for EKS, or take it a step further by setting up Grafana.