TL;DR (EN | RU)
Backend-разработчик и Team Lead. Опыт профессиональной разработки 16 лет.
В основном пишу код на Rust, но так же знаю Go, Ruby и Elixir.
DevOps инженер. Могу поднять и настроить Kubernetes кластер с нуля.
Выступаю на митапах / конференциях9
Вхожу в состав ПК RustCon.
Open Source активист и контрибьютор290
Core-контрибьютор: dotenv-linterrust, datanymizerrust, goreleasergo, reviewdoggo
Работаю удалённо более 11 лет.
Уровень английского — B1.
Содержание:
Профессиональный опыт
Foxford
Backend разработчик (Rust)
Февраль 2022 — По настоящее время
Foxford — онлайн-школа для учеников 1−11 классов, дошкольников, учителей и родителей.
Мое участие в проекте:
- Разработка и поддержка собственной платформы для проведения вебинаров в реальном времени (Live Streaming), транскодинга и распространения записей прошедших мероприятий (VoD), мгновенного обмена сообщениями и событиями;
- Реализация сервиса присутствия - предоставление информации об онлайн-пользователях, участвующих в вебинарах посредством WebSocket соединений, а также пересылка сообщений из внутренних сервисов наружу через Nats.
Код всех проектов открыт и доступен на GitHub: github.com/foxford
Evrone
Backend разработчик (Rust, Go, Ruby, Elixir), Team Lead, DevOps-инженер
Февраль 2016 — Январь 2022
Помимо разработки, я так же принимал участие в:
- Развитие OSS направления — популизация open source в компании, помощь коллегам с их контрибьютами;
- Развитие Rust направления — популизация языка, менторство коллег;
- Написание статей для open source проектов и их продвижение;
- Проведение собеседований на позиции Rust, Go, Ruby и Elixir разработчиков.
Список проектов, в которых я принимал участие:
Jiseki Health (Elixir) — медицинский консьерж-сервис, который помогает клиентам следить за своим здоровьем и улучшать качество жизни.
Мое участие в проекте:
- Разработка проекта на Elixir с использованием фреймворка Phoenix;
- Реализация скрипта трехступенчатого парсинга данных с расписанием доступности врачей;
- Реализация конвейера процессов для загрузки новых пользователей с использованием фреймворка Broadway (Amazon SQS);
- Реализация библиотеки для работы с API Box.com (загрузка/скачивание больших файлов по кускам);
- Реализация аутентификации пользователей через API и GraphQL с использованием библиотеки Guardian;
- Реализация парсинга больших CSV файлов и их хранения на Amazon S3.
Cryptopay (Rust, Go, DevOps) — многофункциональный сервис по оплате криптовалютой.
Мое участие в проекте:
- Управление командой, планирование спринтов, постановка задач, контроль качества исполнения;
- Разработка микросервисов на Rust и Go для обработки транзакций через сервисы ClearBank и Clear Junction;
- Реализация CLI приложения на Rust для автоматизации тестирования QA-отделом;
- Настройка CI/CD и Kubernetes кластера, написание helm-чартов.
OpenUrban (Rust, Ruby, DevOps) - сервис отслеживания движения транспорта в Санкт-Петербурге (аналог Яндекс.Транспорт).
Мое участие в проекте:
- Настройка и развертывание Kubernetes кластера с нуля на bare metal;
- Настройка CI/CD, миграция на Docker-образы, написание helm-чартов;
- Развертывание большого кол-ва сервисов на Ruby и Node.js и настройка их взаимодействия;
- Реализация сервиса по работе с данными в формате GTFS и GTFS Realtime;
- Интеграция проектов с Kafka для обмена сообщениями (с использованием Schema Registry и Avro);
- Реализация сервиса по прогнозированию движения транспорта на Rust.
Внутренняя ERP система (Rust, Ruby, Go, DevOps) — внутренний проект компании для автоматизации рабочих процессов.
Мое участие в проекте:
- Управление командой, планирование спринтов, постановка задач, контроль качества исполнения;
- Менторство новых разработчиков в рамках этого проекта;
- Распиливание большого монолита на микросервисы;
- Разработка gem-библиотек на Ruby для обмена сообщениями между сервисами;
- Разработка сервиса уведомлений (slack, mail) на Go с использованием RabbitMQ и Protocol Buffers;
- Реализация сервиса произодственного календаря на Rust;
- Настройка CI/CD, Kubernetes кластера, написание helm-чартов.
Mystery Mentor (Go, Node.js, Ruby, DevOps) — маркетплейс для менторов, обеспечивающий полную автоматизацию всего процесса ревью кода.
Мое участие в проекте:
- Разработка проекта с нуля, от проектирования и написание ТЗ до полной сдачи проекта в эксплуатацию;
- Планирование спринтов, декомпозиция задач, контроль качества работы, управление командой;
- Реализация клиент-серверной архитектуры проекта;
- Реализация полноценного CLI приложения на Go;
- Автоматизация процесса дистрибуции CLI приложения на ОС: macOS, Windows, Linux;
- Реализация микросервиса подстветки синтаксиса на Node.js и фреймворке Express.
Hunamiq (Go, DevOps) — децентрализованный банк нового поколения на базе блокчейна Ethereum.
Мое участие в проекте:
- Разработка микросервисов на Go для:
- Аутентификации/авторизации пользователей;
- Работы с блокчейном Ethereum;
- Распознавания лиц;
- Сокращения ссылок;
- Работы реферальной программы;
- Обработки внутренних транзакций (без комиссии);
- Отправки уведомлений через Firebase Cloud Messaging (FCM).
- Настройка и поддержка Kubernetes кластеров на Google Cloud Platform;
- Настройка CI/CD, написание helm-чартов для развертывания сервисов в Kubernetes кластеры.
Invendor (Ruby) — агрегатор сервисных центров.
Мое участие в проекте:
- Разработка проекта с нуля, от проектирования и написание ТЗ до полной сдачи проекта в эксплуатацию;
- Управление командой, планирование спринтов, постановка задач, контроль качества исполнения;
- Реализация ЛК пользователей и сервисных центров;
- Реализация двухфакторной аутентификации (TFA);
- Реализация поиска ближайших сервисных центров с использованием PostGIS;
- Настройка CI/CD.
Cofoundit (Ruby) — онлайн-сервис поиска работы в стартапах под инициативой ФРИИ.
Мое участие в проекте:
- Разработка проекта с нуля, от проектирования и написание ТЗ до полной сдачи проекта в эксплуатацию;
- Планирование спринтов, декомпозиция задач, контроль качества работы, управление командой;
- Реализация сервиса по подбору персонала;
- Реализация тесной интеграции с другими проектами ФРИИ.
BS Limousine (Ruby) — сервис заказа автомобилей бизнес-класса в Москве (аналог Uber).
Мое участие в проекте:
- Управление командой, планирование спринтов, постановка задач, контроль качества исполнения;
- Реализация сервис по заказу автомобилей;
- Реализация оплаты заказов через банк Русский Стандарт;
- Построение маршрутов поездки через Google Maps API;
- Генерация отчетов о поездках в формате PDF.
MDK
Team Lead (Ruby, Rails)
Август 2015 — Февраль 2016
Основные обязаности:
- Построенние рабочего процесса с нуля;
- Выбор инструментов для командой разработки;
- Удаленное управление командой разработчиков;
- Планирование спринтов, постановка задач, контроль качества исполнения;
- Установка и настройка серверов.
Основной проект — сервис ставок на свои игры в Counter-Strike: Global Offensive и Dota.
Мое участие в проекте:
- Разработка проекта с нуля, от проектирования и написание ТЗ до полной сдачи проекта в эксплуатацию;
- Внутри проекта мной было реализовано:
- Интеграция со Steam (аутентификация, прием/вывод платежей);
- Разработка своей внутренней валюты;
- Внутренний API для работы с сервисом;
- Мониторинг результатов игры;
- Написание библиотек для работы с API сторонних сервисов;
- Написание Telegram-ботов для внутренних нужд проекта.
Лаборатория Электронных Учебников
Team Lead (Ruby, Rails)
Июль 2014 — Август 2015
Электронная Образовательная Среда — это единое образовательное поле, в котором размещены различные идеи:
- планшет учащегося синхронизирован с интерактивной доской и может выступать в качестве пульта для голосования, учебника, интерактивного пособия или справочника;
- планшет учителя — это инструмент создания урока, его проведения, заполнения сведений об образовательных достижениях учащихся;
- интерактивная доска — она позволяет отображать не только учебный материал, результаты экспресс-опросов или содержание планшетов учащихся, но и дает возможность активно моделировать процессы окружающего мира, характерные для предметного направления;
- электронный дневник — с его помощью учащиеся могут просматривать домашние задания и расписание занятий в режиме онлайн, а их родители всегда в курсе успеваемости детей;
- информационная система «Посещение и питание» — в школах, оснащенных данной системой, ученики проходят в здание по электронной карте — своеобразный эквивалент визитки школьника и удобный платёжный инструмент.
Проект разделен на несколько подпроектов:
1/ Система управления обучением — сердце проекта «Электронная Образовательная Среда», содержит в себе логику по созданию расписания, работе с пользователями, проведению уроков и многое другое.
Мое участие в проекте:
- Планирование разработки, декомпозиция задач, контроль качества работы;
- Разработка логики и API, покрытие кода тестами (acceptance, unit, views), написание документации;
- Оптимизация API, запросов к БД, систем авторизации и кэширования, тестов (более 9000), перенос логики из моделей в сервисы и фоновые задачи, перенос логики из представлений в декораторы;
- Настройка развертывания и непрерывная интеграция приложения через TeamCity.
2/ Система управления контентом — проект по управлению электронными учебниками и созданию пользовательского контента с помощью редактора.
Мое участие в проекте:
- Разработка проекта с нуля, проектирование, декомпозиция задач, контроль качества работы, управление командой;
- Создание нескольких микросервисов, настройка их взаимодействия между собой через API;
- Разработка библиотеки для хранения пользовательских материалов в формате XML и дальнейшей их компиляции в бинарный формат;
- Написание библиотек для работы с API сторонних сервисов. Полное тестирование проекта и взаимодействия между микросервисами;
- Реализация фоновой обработки материалов содержащих видео. Разработка менеджера очереди для компиляции материалов;
- Настройка развертывания и непрерывная интеграция приложения через TeamCity.
Вольтекс Технолоджи
Team Lead (Ruby, Rails)
Ноябрь 2013 — Июль 2014
Doka.Box — программно-аппаратный комплекс, который позволяет за считанные минуты организовать работу малого офиса, включая беспроводную локальную сеть, доступ в интернет, телефон и программное обеспечение для коллективной работы сотрудников.
Мое участие в проекте:
- Управление командой разработчиков (Backend/Frontend): постановка задач, выставления сроков выполнения, контроль качества работы, обучение команды, написание технической документации;
- Помимо управления командой, основную часть времени занимался разработкой веб-интерфейса Doka.Box: реализация API для работы с аппаратной частью, доработка сторонних библиотек под нужды проекта, полное тестирование проекта с помощью RSpec и Capybara;
- Написание внутренних библиотек для работы с железом, с использованием протокола AMQP для передачи сообщений.
BlueFox
Ведущий backend-разработчик (Ruby, Rails)
Июль 2013 — Октябрь 2013
Mercury — внутренний проект для французской компании BlueFox. Основные функции проекта — CRM, Billing, Stock Management. Проект построен на основе Active Admin.
Мое участие в проекте:
- Интеграция Rails Money, разработка дополнительных решений, для работы с разными валютами, автоматическое обновление курса валют через Eu Central Bank;
- Работа с фоновыми задачами с использованием Sidekiq, контроль их выполнения;
- Генерация и парсинг Excel файлов;
- Разработка решений для интеграции проекта с сервисом Amazon S3 и Heroku.
Ivory Interactive
Backend-разработчик (Ruby, Rails)
Январь 2013 — Июль 2013
BusStop — проект по разработке системы “Digital Signage” для информационных терминалов на остановках общественного транспорта города Москвы. Проект состоит из двух частей — клиентская часть (терминалы) и серверная (API, интерфейс управления для клиентов, интерфейс администратора).
Мое участие в проекте:
- Создание интерфейса управления терминалами;
- Разработка решений для сбора и отображения статистики, генерация тепловой карты кликов по терминалам;
- Написание парсера новостных лент и генератора PDF-отчетов.
FeedMan
Backend-разработчик (Ruby, Rails)
Октябрь 2012 — Январь 2013
FeedMan - сервис отложенных публикаций в социальные сети.
Мое участие в проекте:
- Разработка биллинг системы, подключение оплаты через Robokassa.
- Написание RSS и FeedBurner парсеров для автоматического сбора пользовательких статей и публикации их в социальные сети;
- Настройка автоматического развертывания и резервного копирования проекта.
Cafe Digital
Backend-разработчик (Ruby, Rails)
Июль 2012 — Октябрь 2012
Диета Инны Воловичевой — проект по распространению диеты, посредством смс-подписок. Одновременно с этим проектом разрабатывалась платформа, для работы с контент-провайдерами. Проект включает в себя API, систему биллинга, сервис статистики, личный кабинет. Работа с подписками осуществлялась через API сторонних сервисов — Platinot, A1 Sms Market, МосКомСвязь, 7hlp.
Мое участие в проекте:
- Написание библиотек для работы с API сторонних сервисов, тестирование кода;
- Разработка сервиса статистики (Backend/Frontend) и системы биллинга.
Lebrand Creative Russia
Веб-разработчик (PHP/1С-Битрикс, JavaScript)
Ноябрь 2011 — Июль 2012
Разработка проектов:
- Интернет-магазин мебели Столплит;
- Портал о топливных картах Топкарта;
- Несколько проектов для банка 2TBank;
- Агрегатор CPA-сетей и рекламная платформа ARBOOST.
4TE
Веб-разработчик (PHP, JavaScript)
Июль 2010 — Ноябрь 2011
Разработка и поддержка внутренних проектов компании:
- Мерчендайзинг товаров для компании LG;
- Система Тайный покупатель для компаний Роснефть и Газпром нефть.
Masterhost
Системный администратор
Ноябрь 2009 — Июль 2010
Установка, настройка, админинстрирование и мониторинг:
- Серверов на базе Linux/FreeBSD;
- Почтовых кластеров(Exim, Qmail).
Написание shell-скриптов для автоматизации рабочих процессов.
ТрансТелеКом
Системный администратор
Сентябрь 2008 — Октябрь 2009
Настройка и администрирование:
- Серверов на базе ОС Linux/Windows;
- Офисной локальной сети;
- Почтовых серверов;
- Сайтов и хостингов.
Профессиональные навыки
Backend
Хорошее знание Rust, Go, Ruby (Rails, Hanami, Sinatra), Elixir (Phoenix).
Есть опыт написания как микросервисов, так и полноценных CLI приложений.
А также опыт разработки на Node.js с использованием фреймворка Express.
Базы данных
С 2012 года, в качестве СУБД использую PostgreSQL, до этого работал с MySQL.
Из NoSQL решений предпочитаю использовать Redis, есть опыт работы с MongoDB и Memcached.
Брокеры сообщений
Больше всего работал с RabbitMQ и Nats.
У меня также есть небольшой опыт работы с Apache Kafka.
DevOps
Docker и Docker Compose использую на всех проектах.
Большой опыт настройки и развертывания с нуля Kubernetes кластеров, как на Google Cloud Platform, так и на bare metal.
В качестве CI/CD предпочитаю использовать GitHub Actions, но есть опыт работы и с другими сервисами.
Так же есть большой опыт работы с ОС семейства Unix: Gentoo, Debian, RHEL, Ubuntu, FreeBSD.
Open Source активность
Core-контрибьютор:
- Rust: dotenv-linter, datanymizer;
- Go: goreleaser, reviewdog.
Мои коммиты можно найти в таких проектах: rails, hanami, micro, intellij-rust, etc290
Мои OSS проекты
- dotenv-linter — линтер для
.env
файлов, написанный на Rust. В рамках этого проекта я так же выступаю в роли ментора и помогаю всем желающим начать контрибьютить в open source проекты на Rust; - update-informer - библиотека на Rust для проверки обновлений в CLI приложениях;
- brevity — сокращалка ссылок на Go с готовым helm-чартов для развертывания в Kubernetes кластере;
- gastly — библиотека на Ruby для создания скриншотов сайтов. Под капотом используется Phantom.js и MiniMagick;
- capistrano-hanami — библиотека на Ruby для развертывания проектов на Hanami через Capistrano;
- mina-hanami — библиотека на Ruby для развертывания проектов на Hanami через Mina;
- queue_manager — менеджер очереди уникальных задач на Ruby. Под капотом Redis Sorted Sets. Поддерживает ActiveJob и Global ID;
- pivotal_tracker_telegram_bot — телеграм бот на Ruby для получения уведомлений из Pivotal Tracker. Под капотом Sinatra и Redis PubSub.
В рамках проекта reviewdog создал несколько GitHub Actions для запуска популярных линтеров:
Образование
2008 - 2012, МГУ им. Н.П. Огарёва, АСОиУ