Middle Python Developer
Минск, БеларусьМиддл
Удаленная работа
Опыт работы от 3 до 5 лет250 000 ₽
Опыт работы от 3 до 5 лет250 000 ₽
Короткая ссылка: gkjb.ru/g19aA
О себе
На данный момент Middle Python Developer.
Мои компетенции и опыт
Backend-разработчик на Python, в коммерческой разработке с 2023 года. Основной стек – FastAPI, asyncio, SQLAlchemy, PostgreSQL; есть рабочий опыт с Django и DRF.
Дважды запускал бэкенд с нуля: приходил в проект, где не было кодовой базы, и доводил его до продакшена – проектирование схемы данных и API, декомпозиция задач, настройка окружений, CI/CD, доменов и SSL, деплой и администрирование сервера. Умею принимать архитектурные решения и защищать их: на текущем проекте инициировал и провёл миграцию с Django на FastAPI, когда синхронная модель перестала отвечать требованиям к работе с большим числом WebSocket-соединений.
Сильные стороны – проектирование хранения и обработки больших объёмов бинарных данных (S3, дедупликация по хешу, чанковая загрузка с докачкой, потоковая обработка), фоновые и периодические задачи на Celery, интеграции с внешними сервисами. Работал в MedTech и EdTech, знаком с требованиями к обезличиванию медицинских данных.
Провожу код-ревью, собеседовал и онбордил разработчика в команду, пишу техническую документацию по API для смежных команд. Регулярно общаюсь с заказчиком напрямую и помогаю доводить требования до реализуемого вида.
Отдельно интересна DevOps-часть: администрирование Linux-серверов, Docker, GitLab CI/CD, Nginx, SSL, systemd – настраивал всё это самостоятельно на нескольких проектах.
Знаком на уровне концепций и отдельных практических задач: Kafka, gRPC (использовал при написании нагрузочного тестирования внутреннего сервиса). Готов углубляться в новые технологии – быстро вхожу в незнакомые области и беру ответственность за результат.
Английский: свободно читаю техническую документацию и профессиональную литературу, разговорный подтягиваю.
Почта: нужен доступ к резюме
Telegram: нужен доступ к резюме
Опыт работы — 3 года 3 месяца
- Fox3
Март 2025 — Август нужен доступ к резюме год 6 месяцев
Backend-разработчик (Python, FastAPI)
Платформа родительского контроля: сбор данных с мобильных устройств (файлы, аудиозаписи, геолокация), расписания сбора, уведомления и веб-панель для родителей. Пришёл в проект на этапе идеи – кодовой базы не существовало, бэкенд проектировал и запускал с нуля.
Команда: 2 backend, 2 frontend, 1 mobile, DevOps. Kanban.
Архитектура и ключевые решения
Спроектировал и реализовал бэкенд платформы с нуля: схема данных на SQLAlchemy с версионированием через Alembic, структура API, разбиение на сервисный слой, инфраструктура, деплой.
Провёл миграцию проекта с Django на FastAPI. Прототип был написан на Django; с появлением требования удерживать постоянные WebSocket-соединения с большим числом устройств синхронная модель Django стала архитектурным ограничением. Обосновал переход перед руководством, спланировал и выполнил перевод системы на FastAPI и asyncio без остановки разработки продукта.
Разработал протокол инкрементальной синхронизации файлов с устройств. Устройство отправляет манифест изменений (путь, SHA-256, тип операции), сервер сверяет хеши с уже сохранёнными и запрашивает только те файлы, которых действительно нет – дедупликация полностью исключает повторную передачу и повторное хранение одинаковых данных.
Реализовал чанковую загрузку через S3 Multipart Upload с проксированием через сервер: устройство не получает прямого доступа к хранилищу, ETag'и частей хранятся в Redis, при обрыве связи загрузка возобновляется с недостающих частей, а не с нуля.
Реализовал фоновую обработку загруженных архивов на Celery: потоковая распаковка без выгрузки архива на диск сервера, сверка SHA-256 архива и каждого файла внутри, отбраковка повреждённых архивов до распаковки – защита от битых данных и zip-бомб.
Спроектировал хранилище по принципу content-addressable storage (blob_storage/{hash_prefix}/{hash}): физически одинаковые файлы хранятся в единственном экземпляре. Поверх реализовал версионирование файлов, журнал операций и мягкое удаление – история изменений на устройстве восстанавливается целиком.
Реализовал жизненный цикл сессий загрузки: статусная модель, опрос статуса устройством с таймаутом, периодические задачи Celery Beat для сборки зависших сессий и временных объектов, lifecycle-правила очистки временной зоны в S3.
Разработка и инфраструктура
- Разработал REST API для мобильного клиента и веб-панели администрирования.
- Реализовал WebSocket-слой для обмена с устройствами в реальном времени и доставки команд.
- Реализовал отложенные и периодические задачи на Celery и Celery Beat (расписания сбора данных, уведомления), подключил Flower для мониторинга очередей.
- Провёл рефакторинг ранней кодовой базы после миграции.
- Настроил Docker и docker-compose для локального и продакшен-окружений, собрал CI/CD-пайплайны в GitLab.
Работа с командой
Провёл техническое собеседование, онбординг и код-ревью второго backend-разработчика.
Веду техническую документацию по API и протоколу синхронизации для мобильной и фронтенд-команд.
Стек: Python, FastAPI, Django, asyncio, WebSocket, PostgreSQL, SQLAlchemy, Alembic, Redis, Celery, Celery Beat, Flower, S3 (MinIO), Docker, docker-compose, GitLab CI/CD, Linux.
- BillimLand
Октябрь 2024 — Март нужен доступ к резюме месяцев
Backend-разработчик (Python)
Образовательная компания (частная школа, Казахстан). Два проекта.
Проект 1 – ИИ-агент службы поддержки:
Разработал ИИ-агента первой линии поддержки для обращений учеников и родителей, интегрированного с системой тикетов Omnidesk.
Собрал RAG-пайплайн на инструментах OpenAI: база знаний из внутренних регламентов школы и векторный поиск по ней. Агент отвечает по фактическим документам компании, а не по общим знаниям модели.
Спроектировал и реализовал MCP-слой поверх внутреннего API: агент получает доступ к данным через описанный набор инструментов с контролируемыми правами вместо прямого доступа к базе.
Обработку обращений вынес в асинхронную очередь на RabbitMQ, Redis использовал для кэша и хранения состояния диалога. Важную роль играла реализация идемпотентности, приходящих по вебхуку, сообщений.
Стек: Python, OpenAI API, RAG, MCP, RabbitMQ, Redis, Omnidesk.
Проект 2 — Платформа оценки переговорных поединков:
Веб-платформа для проведения и судейства переговорных поединков. Команда: 2 backend, 2 frontend.
Разработал REST API на FastAPI для клиентской части.
Реализовал регистрацию и авторизацию на JWT.
Реализовал хранение видеозаписей поединков в S3 (Yandex Cloud) с выдачей доступа через presigned URL с ограниченным временем жизни.
Реализовал систему подсчёта баллов для судей с выгрузкой отчётов в нескольких форматах.
Настроил отправку транзакционных писем от имени домена через Yandex Cloud Postbox.
Собрал CI/CD-пайплайны в GitLab, поднял и настроил GitLab Runner.
С нуля подготовил продакшен-сервер: конфигурация Nginx, DNS-записи домена, SSL-сертификат и HTTPS.
Стек: Python, FastAPI, PostgreSQL, Redis, S3 (Yandex Cloud), Nginx, Docker, GitLab CI/CD, Linux.
- Aibion Technologies
Июнь 2023 — Октябрь нужен доступ к резюме год 5 месяцев
Backend-разработчик (Python)
MedTech-компания. Два проекта.
Проект 1 – ETL-сервис сбора медицинских изображений (DICOM):
Сервис, разворачиваемый в контуре клиники: забирает исследования из локального хранилища, валидирует, обезличивает и выгружает в облако для последующей врачебной разметки и обучения ML-модели. Команда: 2 backend, data engineer, 2 frontend, DevOps.
Реализовал конвейер выгрузки DICOM-исследований в S3 и спроектировал стандартизированную структуру хранения, единую для всех подключаемых клиник.
Обрабатывал реальный поток порядка 9 ГБ медицинских данных в сутки (около 30 исследований по ~300 МБ с 2–3 клиник); хранилище и схему данных проектировал с запасом на масштабирование до ~50 клиник.
Реализовал валидацию DICOM и анонимизацию персональных тегов.
Реализовал извлечение метаданных DICOM в PostgreSQL: поиск и фильтрация исследований выполняются по базе, без чтения самих файлов из хранилища.
Участвовал в проектировании следующего этапа конвейера: врачебная разметка исследований и передача датасета в обучение модели через Apache Airflow.
Стек: Python, PyDicom, PostgreSQL, S3 (MinIO), Linux, Docker.
Проект 2 — Платформа медицинского онлайн-обучения:
Обучающая платформа для врачей и студентов-медиков. Команда: 3 backend, 1 frontend.
Разработал REST API на Django Rest Framework (DRF) для клиентской части.
Реализовал ролевую модель платформы (ученик, врач, администратор) с разграничением прав доступа.
Подключил авторизацию через OAuth 2.0 / OIDC (Google, Yandex) в дополнение к парольной.
Реализовал управление активными сессиями пользователя: просмотр списка устройств и отзыв сессии из личного кабинета.
Реализовал хранение учебных материалов и записей в S3 (MinIO) с выдачей через presigned URL.
Реализовал систему тестирования и проверки знаний по урокам.
Стек: Python, Django Rest Framework (DRF), PostgreSQL, Redis, S3 (MinIO), OAuth 2.0 / OIDC, Docker.
