Validation Microservice
An asynchronous FastAPI validation service built for a B2B data client, designed to process large validation batches reliably under real-world API constraints.
The problem
The client needed to validate large volumes of records against multiple external services in real time. Their previous workflow relied heavily on manual checks and inconsistent scripts, which became increasingly unreliable as data volume grew. The system also had to respect strict third-party API rate limits while remaining responsive under concurrent load.
Key decisions
FastAPI and asyncio for I/O-bound workloads
The workload spent most of its time waiting on external HTTP responses, making asynchronous execution the natural fit. FastAPI and asyncio allowed the service to process many outbound requests concurrently without introducing unnecessary infrastructure complexity.
Proactive concurrency control
Rather than reacting to API throttling after failures occurred, I implemented semaphore-based concurrency limits using asyncio. This allowed the service to stay within external rate limits consistently while still processing batches efficiently.
Production-oriented deployment architecture
The service was deployed on AWS EC2 behind Nginx and Gunicorn using a conventional production deployment pattern. Nginx handled SSL termination and reverse proxying while Gunicorn managed worker processes for reliability and operational stability.
Outcome
The system was deployed successfully and handled the client’s workload reliably in production. The client CTO reviewed the implementation directly and specifically praised both the architecture and code quality.
What I learned
This project reinforced how important predictable behavior becomes once software interacts with unreliable external systems. Much of backend engineering is less about ideal-case logic and more about handling retries, rate limits, partial failures, and inconsistent upstream behavior gracefully.