No description
  • Python 86%
  • HCL 12.8%
  • Dockerfile 1.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Daed 19792d8651
Revise progress notes for clarity and detail
Updated thoughts section to include reference to AI run branch.
2026-03-19 22:00:23 +00:00
.github/workflows Initial commit 2026-03-16 11:15:02 -04:00
images feat: Dockerfile created and tested 2026-03-18 21:45:39 +00:00
k8s feat: k8s deployment done 2026-03-18 22:34:11 +00:00
python feat: Dockerfile created and tested 2026-03-18 21:45:39 +00:00
terraform feat: terraform portion complete 2026-03-17 21:30:48 +00:00
.gitignore feat: k8s deployment done 2026-03-18 22:34:11 +00:00
Dockerfile feat: Dockerfile created and tested 2026-03-18 21:45:39 +00:00
PROGRESS.md Revise progress notes for clarity and detail 2026-03-19 22:00:23 +00:00
README.md Initial commit 2026-03-16 11:15:02 -04:00

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

  1. Read the requirements: Review each part's README file for detailed guidance
  2. Part 1 - Infrastructure: Provision AWS infrastructure in ./terraform/ (see terraform/README.md)
  3. Part 2 - Application & Docker: Complete the FastAPI app in ./python/ and Dockerfile the root of the repo (see python/README.md)
  4. 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

  1. 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
  2. IAM Users: Create two users with programmatic access

    • Producer user for submitting jobs
    • Processor user for processing jobs and sending notifications

Deliverable

  • All your .tf files in the terraform/ directory
  • See terraform/README.md for detailed requirements

Part 2: Enhance & Containerize the Application (FastAPI & Docker)

Complete the provided FastAPI application and containerize it.

Tasks

  1. Complete the Health Check: Implement the /health endpoint to verify connectivity to AWS SQS with both producer and processor credentials

  2. 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.py with working health check
  • Passing tests
  • Dockerfile in the repository root
  • See python/README.md for 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.md for 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! 🚀