We are looking for a backend developer for our team. The main work involves developing and supporting a monorepository of Python services: public APIs for several products, admin panel, background workers, billing, and integrations with external AI providers.
Tasks
- New features in services on FastAPI: endpoint, DB schema, worker, tests.
- Integrations with external AI APIs — OpenAI, ElevenLabs, video generation providers, and others: timeouts, retries, error handling, cost accounting.
- Billing: debiting and refunding credits, webhooks for purchases and subscriptions (Apphud, App Store), idempotent processing.
- Background processors on RabbitMQ: task queues, retries, outbox, reconciliation of stuck tasks.
- MySQL (schema, indexes, Alembic migrations, query optimization), Redis (caching, rate limiting), ClickHouse (analytics and metrics).
- Incident analysis using logs and metrics, fixing bugs based on support requests.
- Tests and code reviews.
Stack
- Python 3.12, FastAPI, Pydantic v2
- SQLAlchemy 2 (async), Alembic, MySQL
- Redis, RabbitMQ (FastStream), ClickHouse, S3-compatible storage (including Alibaba OSS)
- Docker, Kubernetes, Nginx
- uv, pytest, mypy, ruff
- Django for internal admin panel, Telegram bots, ffmpeg, yt-dlp
Architecture is layered: interface → application → domain ← infrastructure, with protocols, unit of work, and dependency injection.
What we expect from you
- Commercial Python development experience of 1 year or more.
- Proficient Python: typing, dataclasses, context managers, exceptions.
- Understanding of asyncio: event loop, why a blocking call in asynchronous code slows down the entire service, timeouts and task cancellation.
- FastAPI or another asynchronous framework (aiohttp, Starlette, Litestar).
- SQL and relational databases (MySQL or PostgreSQL): indexes, transactions.
- SQLAlchemy 2.x, preferably async, and Alembic migrations.
- Redis and at least one message broker (RabbitMQ, Kafka, Redis Streams).
- Docker and docker-compose: setting up a project and understanding why it's not starting.
- pytest, tests for edge cases and errors.
- Git, pull requests, code reviews.
- Willingness to dive into a large existing codebase and work within its established architecture.
Will be a plus
- Understanding of transaction isolation levels and locking in MySQL/PostgreSQL.
- Experience with message acknowledgement and redelivery in a message broker, building idempotent handlers, outbox pattern.
- FastStream or aio-pika.
- ClickHouse or other analytical databases.
- Kubernetes: deployment, logs, graceful worker shutdown.
- Integrations with payment or subscription systems (Apphud, RevenueCat, App Store Server API).
- Working with LLM and AI APIs, media processing via ffmpeg.
- mypy and ruff in daily work.
- Clean Architecture or DDD in practice.
- Django.
We offer
- Competitive salary (based on interview results).
- Fully remote work — from any city.
- 5/2 work schedule.
- Opportunity to directly influence product development and see the results of your work.
- Modern stack of tools and all necessary resources.
- Prospects for professional and career growth.