Capstone Project

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.