Обо мне

Бэкенд-разработчик с 15+ летним опытом. Пять лет Python в геймдеве, четыре года — RTB-платформа на Go, затем e-commerce и доставка еды на больших масштабах. Сейчас пишу на Rust — системное программирование, высоконагруженная обработка медиа, потоковые пайплайны данных.

Сильный DevOps-бэкграунд — одинаково уверенно проектирую архитектуру сервисов и разбираюсь с инфраструктурой.

Стек

  • Языки: Rust, Go, Python
  • Данные: PostgreSQL (сотни миллионов строк), Elasticsearch (миллиарды записей), Redis, ClickHouse, Kafka, MongoDB
  • Инфра: Kubernetes, Docker, Terraform, Ansible, Prometheus, FluxCD, Nginx
  • Rust-экосистема: Tokio, Axum, tonic (gRPC), tracing, metrics-rs, egui
  • Практики: TDD, CI/CD, observability-first, infrastructure as code

Опыт

Wildberries — Rust-бэкенд-разработчик

2024 — настоящее время

Один из крупнейших маркетплейсов в России. Начинал в команде медиа-рендеринга — транскодирование и обработка фото и видео товаров для доставки через CDN по всей платформе. Затем перешёл в новую команду, строящую пайплайн отзывов пользователей: приём, обработка и отдача миллиардов записей отзывов с фокусом на надёжность и низкую задержку под высокой нагрузкой.

Rust Tokio Axum FFmpeg PostgreSQL Kafka Elasticsearch Kubernetes Ansible

Histoscan — DevOps / Go-бэкенд-разработчик

2023 — 2024

Платформа цифровой патологии — хранение и просмотр снимков высокого разрешения с патологических сканеров через веб-приложение. Построил гибридную инфраструктуру: облако для приложения, bare metal серверы развёрнутые прямо в больницах (российское законодательство требует хранить медицинские данные на месте). Конвертировал вывод сканеров в формат DeepZoom для веб-просмотра, экспериментировал с Rust + OpenSlide (C-библиотека) для более эффективной обработки изображений. Маленькая команда, много ролей — инфраструктура, бэкенд, тулинг.

Go Rust PostgreSQL Kubernetes Helm FluxCD Terraform GraphQL

Яндекс — Бэкенд-разработчик

2022 — 2023

Яндекс Еда. Пришёл ненадолго после приобретения Delivery Club. Короткий период.


Delivery Club — Go Senior-бэкенд-разработчик

2020 — 2022

Направление доставки продуктов. Начинал в команде каталога — хранение и отдача всего каталога продуктов по всем партнёрам. Затем перешёл в инфраструктурную команду, которая занималась всем, что не вписывалось в другие команды. Написал библиотеку, решившую проблему с Kafka, которая не справлялась с большими синхронизациями каталогов партнёров — абстрагировал S3 + Protobuf + Kafka за единым фасадом, так что продюсеры/консьюмеры не заботились о том, где на самом деле лежат данные. Построил систему автогенерации админ-панелей — кодогенерация из Swagger-спецификаций создавала Vue.js-дашборды для любого микросервиса, давая менеджерам доступ к данным сервисов без инженеров. Также работал над слотами доставки и начинал интеграционное тестирование с Allure-отчётами, когда компанию купил Яндекс.

Go PostgreSQL Kafka gRPC Swagger

Cheapshot — Go Senior-бэкенд-разработчик

2019 — 2020

Мобильная мультиплеерная стратегия с геолокацией — игроки видят Google Maps с реальным местоположением, строят эмодзи-структуры, фармящие монеты, и отправляют юнитов грабить постройки других игроков. Игра имела тысячи одновременных пользователей, но работала на одном Go-сервере. Моя основная задача — горизонтальное масштабирование: я разбил игровой мир на зоны S2 Geometry, каждая обслуживалась отдельным сервером, с бесшовной передачей игроков между зонами при перемещении по реальному миру через WebSocket-соединения.

Go S2 Geometry WebSocket Protobuf PostgreSQL

BridgeLLC — Senior-бэкенд-разработчик / DevOps

2015 — 2019

Ad-tech стартап. Пришёл как Python-разработчик, переходящий на Go — команда состояла из меня, PM и джуниора, чей код требовал полного переписывания. Первый проект — оживление сломанного биддера для Google AdX (DoubleClick, Protobuf-протокол). После этого построил новый OpenRTB-биддер с нуля — это стало основным продуктом.

Биддер участвовал в аукционах рекламы в реальном времени с окном в 100мс, обрабатывая 2–10K RPS на всех серверах. Инфраструктура была геораспределена по датацентрам DigitalOcean в Европе и США для минимизации задержки, с периодическим использованием AWS для экзотических регионов вроде Японии. Построил бюджетный микросервис, чтобы биддеры в разных регионах тратили из общего бюджета клиента, а не из изолированных пулов. Построил рекламный сервер, отдающий креативы в нескольких форматах — дисплей, видео, in-app.

Аналитика эволюционировала: начинали с Apache Pig и Spark, обрабатывающих логи аукционов в агрегаты MongoDB, затем мигрировали на ClickHouse, позволивший запрашивать всё в реальном времени — огромное улучшение по сравнению с подходом MapReduce. RabbitMQ распределял конфигурации кампаний и таргетинговые данные по биддерам.

DevOps был половиной работы. Инструменты эволюционировали от Chef → Ansible → Terraform + Packer. Построил полностью автоматизированный пайплайн деплоя: Packer запекал VM-образы с предустановленными Consul, Docker и Registrator, так что новый инстанс автоматически присоединялся к кластеру при загрузке — по сути самодельный предшественник Kubernetes, когда оркестрация контейнеров ещё только развивалась. Позже нанимал и менторил джуниоров по мере роста платформы.

Go Terraform Packer Ansible Consul Docker RabbitMQ ClickHouse Spark Redis DigitalOcean AWS

My Dragon — Python-бэкенд-разработчик

2012 — 2015

PvP match-3 социальная игра на ВКонтакте и Одноклассниках — игроки выращивали драконов и сражались с другими игроками в пошаговых матчах на поле match-3, где комбинации кристаллов наносили урон. Команда из двух человек: я занимался всем бэкендом и инфраструктурой, напарник — геймдизайном, PM и Flash-клиентом. Построил кастомный TCP-сокет-сервер, переиспользуя библиотеки из предыдущего проекта. Реализовал микро-ORM для Redis с diff-слоем поверх — сервер отслеживал какие данные изменились в рамках игровой команды и отправлял клиенту только дельту, давая универсальный формат ответа вместо кастомных пейлоадов на каждую команду. Настроил CI/CD с Buildbot, администрировал Linux-серверы. Игра вышла и приносила доход нам обоим в течение нескольких лет.

Python Tornado Redis Buildbot Linux

ezscratch — Python-бэкенд-разработчик

2012

Онлайн-казино проект с распределённой командой. Короткий период — построил сервер для лотерейной казино-игры. Сам проект не подошёл, но это был мой первый опыт с современными инженерными практиками: CI/CD пайплайны, код-ревью, дейлики, ретро — рабочие процессы, которые я унёс в каждую следующую роль.


Addicted Company — Python-бэкенд-разработчик

2011 — 2012

Социальная игра «Магнаты» на ВКонтакте/Одноклассниках — градостроительная игра в пиковую эпоху игр в соцсетях. Построил TCP-сокет-сервер с постоянными клиентскими соединениями (live-соединения вместо HTTP, необычно для того времени). Написал микро-ORM, маппящий игровые сущности — данные игрока, здания, инвентарь — в иерархию ключей Redis. Эти библиотеки стали основой, которую я переиспользовал в последующих игровых проектах. Команда из шести: PM, геймдизайнер, два Flash-разработчика, фронтенд и джуниор-бэкендер.

Python Redis Flash

Ravelin — Python-бэкенд-разработчик

2010 — 2011

Первый продакшн-опыт. Браузерная стратегия в фэнтези-сеттинге — игра в стиле Travian по мотивам серии книг «Ричард Длинные Руки» Гая Юлия Орловского. Начал с внутренних инструментов — калькулятор юнитов на Flask для баланса боя. Затем перешёл на сам игровой сервер на Tornado. Команда из двух (лид + я). Ушёл до релиза; игра в итоге запустилась, но не взлетела.

Python Flask Tornado Redis

Контакты