- Python 86%
- HCL 12.8%
- Dockerfile 1.2%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .github/workflows | ||
| images | ||
| k8s | ||
| python | ||
| terraform | ||
| .gitignore | ||
| Dockerfile | ||
| PROGRESS.md | ||
| README.md | ||
Platform Engineering Challenge
Overview
Build a complete job processing system comprising AWS SQS queues for message handling, a FastAPI application for job submission and processing, and a Kubernetes deployment for orchestration. This challenge tests your skills across infrastructure provisioning, application development and containerization.
The Challenge
You'll build this system through three interconnected parts, each building on the previous one:
- Part 1: Provision AWS infrastructure with Terraform/OpenTofu
- Part 2: Complete FastAPI application and containerize with Docker
- Part 3: Deploy to local Kubernetes cluster
While the challenge is designed to take approximately 2-3 hours, please feel free to spend additional time to showcase your approach and complete all elements.
Prerequisites
- AWS Account: Required for Part 1. The SQS queues and IAM resources used in this challenge fall within the AWS free tier, so there should be no cost involved
- AWS CLI: Configured with appropriate credentials for your account
- OpenTofu >= 1.10.0 or Terraform >= 1.0
- Docker Desktop: Installed and running
- Python 3.11+ and uv package manager
- kubectl: Kubernetes command-line tool
- Local Kubernetes Runtime: Any local Kubernetes environment (KIND, minikube, k3d, Docker Desktop Kubernetes, etc.). We provide setup instructions for KIND.
Getting Started
- Read the requirements: Review each part's README file for detailed guidance
- Part 1 - Infrastructure: Provision AWS infrastructure in
./terraform/(see terraform/README.md) - Part 2 - Application & Docker: Complete the FastAPI app in
./python/and Dockerfile the root of the repo (see python/README.md) - Part 3 - Kubernetes: Deploy to local Kubernetes cluster in
./k8s/(see k8s/README.md)
Part 1: Provision Cloud Infrastructure (Terraform/OpenTofu)
Create AWS infrastructure to support a job processing workflow.
Requirements
-
SQS Queues: Provision queues for job processing workflow
- Main processing queue for job submissions
- Main completed queue for job notifications
- Dead letter queues (DLQs) for capturing failed messages
-
IAM Users: Create two users with programmatic access
- Producer user for submitting jobs
- Processor user for processing jobs and sending notifications
Deliverable
- All your
.tffiles in theterraform/directory - See
terraform/README.mdfor detailed requirements
Part 2: Enhance & Containerize the Application (FastAPI & Docker)
Complete the provided FastAPI application and containerize it.
Tasks
-
Complete the Health Check: Implement the
/healthendpoint to verify connectivity to AWS SQS with both producer and processor credentials -
Write a Dockerfile: Containerize the FastAPI application for deployment
FastAPI Application
The application provides these endpoints:
| Endpoint | Method | Description |
|---|---|---|
/health |
GET | (To be implemented) Verify connectivity to AWS SQS |
/submit_job |
POST | Submit a job using producer credentials |
/process_job |
GET | Process a job using processor credentials |
Deliverables
- Completed
python/src/platform_challenge/health.pywith working health check - Passing tests
Dockerfilein the repository root- See
python/README.mdfor detailed requirements
Part 3: Deploy to Kubernetes (Local)
Deploy your containerized application to a local Kubernetes cluster.
Requirements
Deploy your FastAPI application so that it:
- Is accessible for HTTP requests
- Successfully connects to your AWS SQS queues created in the previous step
Note: You can use any local Kubernetes development environment you prefer. We've provided setup instructions for KIND in k8s/README.md as a convenient option.
Deliverable
- Kubernetes manifests (YAML files), Helm chart, or Kustomize configuration
- See
k8s/README.mdfor setup guide and detailed requirements
Success Criteria
- ✅ Infrastructure provisioned successfully
- ✅ Health check endpoint implemented and working
- ✅ Application containerized and running
- ✅ Application deployed to Kubernetes and accessible
- ✅ End-to-end job processing workflow functional
Submission
Commit and push your work directly to this repository as you progress through the challenge.
Important:
- ✅ Commit regularly - we want to see your commit history and how you approach the problem
- ❌ Do not commit any secrets
Once you've completed the challenge, let the recruiter know and we'll review your repository directly.
Good luck, and have fun! 🚀