Mikhail Grachev

Грачёв Михаил

Rust Developer / Team Lead / Dev Advocate

workmgrachev.com
mgrachev
grachevm

TL;DR

Мне 33 года.
Backend-разработчик и Team Lead. Опыт профессиональной разработки 13 лет.
В основном пишу код на Rust, но так же хорошо знаю Go и Ruby.
DevOps инженер. Могу поднять и настроить Kubernetes кластер с нуля.
Выступаю на митапах / конференциях4
Open Source активист и контрибьютор227
Core-контрибьютор: dotenv-linterrust, datanymizerrust, goreleasergo, reviewdoggo
Работаю удалённо более 8 лет.
Уровень английского — B2. Изучаю в Skyeng.

Содержание:

Профессиональный опыт

Февраль 2016 — По настоящее время, Evrone
Backend разработчик (Rust, Go, Ruby), Team Lead, DevOps-инженер

Список проектов, в которых я принимал участие:

BS Limousine — аналог Uber, только с лимузинами.

Мое участие в проекте:

  • Управление командой, планирование спринтов, постановка задач, контроль качества исполнения;
  • Реализация проекта на фреймворке Ruby on Rails за короткий срок.

Cofoundit — онлайн-сервис поиска работы в стартапах под инициативой ФРИИ.

Мое участие в проекте:

  • Разработка проекта с нуля, от проектирования и написание ТЗ до полной сдачи проекта в эксплуатацию;
  • Планирование спринтов, декомпозиция задач, контроль качества работы, управление командой.

Invendor — агрегатор сервисных центров.

Мое участие в проекте:

  • Разработка проекта с нуля, от проектирования и написание ТЗ до полной сдачи проекта в эксплуатацию;
  • Управление командой, планирование спринтов, постановка задач, контроль качества исполнения;
  • Реализация проекта на фреймворке Ruby on Rails c использованием DDD;
  • Написание сложных SQL-запросов и материализованных представлений с использованием PostGIS;
  • Настройка CI/CD.

Hunamiq — децентрализованный банк нового поколения на базе блокчейна Ethereum.

Мое участие в проекте:

  • Разботка микросервисов на Go для работы с блокчейном Ethereum;
  • Реализация сервиса по распознаванию лиц на Go;
  • Настройка и поддержка Kubernetes кластеров на Google Cloud Platform;
  • Настройка CI/CD, написание helm-чартов для развертывания сервисов в Kubernetes кластеры.

Mystery Mentor — проект для автоматизации процесса ментроства внутри компании.

Мое участие в проекте:

  • Разработка проекта с нуля, от проектирования и написание ТЗ до полной сдачи проекта в эксплуатацию;
  • Планирование спринтов, декомпозиция задач, контроль качества работы, управление командой;
  • Реализация CLI приложения на Go;
  • Реализация микросервиса подстветки синтаксиса на Node.js и фреймворке Express;

Внутренняя ERP система — внутренний проект компании для автоматизации рабочих процессов.

Мое участие в проекте:

  • Управление командой, планирование спринтов, постановка задач, контроль качества исполнения;
  • Менторство новых разработчиков в рамках этого проекта;
  • Разделение проекта на микросервисы;
  • Разработка gem-библиотек на Ruby;
  • Разработка сервиса уведомлений (slack, mail) на Go с использованием RabbitMQ и Protocol Buffers;
  • Реализация сервис произодственного календаря на Rust;
  • Настройка CI/CD, Kubernetes кластера, написание helm-чартов.

OpenUrban - сервис отслеживания движения транспорта в Санкт-Петербурге, аналог Яндекс.Транспорт.

Мое участие в проекте:

  • Настройка и развертывание Kubernetes кластера с нуля на bare metal;
  • Настройка CI/CD, миграция на Docker-образы, написание helm-чартов;
  • Реализация сервиса для предсказания движения транспорта на Rust.

Cryptopay — сервис по продаже/покупке криптовалюты.

Мое участие в проекте:

  • Управление командой, планирование спринтов, постановка задач, контроль качества исполнения;
  • Разботка микросервисов на Rust и Go;
  • Настройка CI/CD, Kubernetes кластера, написание helm-чартов.

Помимо разработки, я так же принимал участие в:

  • Развитие OSS направления — популизация open source в компании, помощь коллегам с их контрибьютами;
  • Развитие Rust направления — популизация языка, менторство коллег;
  • Написание статей для open source проектов и их продвижение;
  • Проведение собеседований на позиции Rust, Go и Ruby разработчиков.

Август 2015 — Февраль 2016, MDK
Team Lead (Ruby, Rails)

Основные обязаности:

  • Построенние рабочего процесса с нуля;
  • Выбор инструментов для командой разработки;
  • Удаленное управление командой разработчиков;
  • Планирование спринтов, постановка задач, контроль качества исполнения;
  • Установка и настройка серверов.

Основной проект — сервис ставок на свои игры в Counter-Strike: Global Offensive и Dota.

Мое участие в проекте:

  • Разработка проекта с нуля, от проектирования и написание ТЗ до полной сдачи проекта в эксплуатацию;
  • Внутри проекта мной было реализовано: Интеграция со Steam (аутентификация, прием/вывод платежей), разработка своей внутренней валюты, внутренний API для работы с сервисом, мониторинг результатов игры, написание библиотек для работы с API сторонних сервисов.

Июль 2014 — Август 2015, Лаборатория Электронных Учебников
Team Lead (Ruby, Rails)

«Электронная Образовательная Среда» — это единое образовательное поле, в котором размещены различные идеи:

  • планшет учащегося синхронизирован с интерактивной доской и может выступать в качестве пульта для голосования, учебника, интерактивного пособия или справочника
  • планшет учителя — это инструмент создания урока, его проведения, заполнения сведений об образовательных достижениях учащихся
  • интерактивная доска — она позволяет отображать не только учебный материал, результаты экспресс-опросов или содержание планшетов учащихся, но и дает возможность активно моделировать процессы окружающего мира, характерные для предметного направления
  • электронный дневник — с его помощью учащиеся могут просматривать домашние задания и расписание занятий в режиме онлайн, а их родители всегда в курсе успеваемости детей
  • информационная система «Посещение и питание» — в школах, оснащенных данной системой, ученики проходят в здание по электронной карте — своеобразный эквивалент визитки школьника и удобный платёжный инструмент.

Проект разделен на несколько подпроектов:

1/ Система управления обучением — сердце проекта «Электронная Образовательная Среда», содержит в себе логику по созданию расписания, работе с пользователями, проведению уроков и многое другое.

Мое участие в проекте:

  • Планирование разработки, декомпозиция задач, контроль качества работы;
  • Разработка логики и API, покрытие кода тестами (acceptance, unit, views), написание документации;
  • Оптимизация API, запросов к БД, систем авторизации и кэширования, тестов (более 9000), перенос логики из моделей в сервисы и фоновые задачи, перенос логики из представлений в декораторы;
  • Настройка развертывания и непрерывная интеграция приложения через TeamCity.

2/ Система управления контентом — проект по управлению электронными учебниками и созданию пользовательского контента с помощью редактора.

Мое участие в проекте:

  • Разработка проекта с нуля, проектирование, декомпозиция задач, контроль качества работы, управление командой;
  • Создание нескольких микросервисов, настройка их взаимодействия между собой через API;
  • Разработка библиотеки для хранения пользовательских материалов в формате XML и дальнейшей их компиляции в бинарный формат;
  • Написание библиотек для работы с API сторонних сервисов. Полное тестирование проекта и взаимодействия между микросервисами;
  • Реализация фоновой обработки материалов содержащих видео. Разработка менеджера очереди для компиляции материалов;
  • Настройка развертывания и непрерывная интеграция приложения через TeamCity.

Ноябрь 2013 — Июль 2014, Вольтекс Технолоджи
Team Lead (Ruby, Rails)

«Doka.Box» — программно-аппаратный комплекс, который позволяет за считанные минуты организовать работу малого офиса, включая беспроводную локальную сеть, доступ в интернет, телефон и программное обеспечение для коллективной работы сотрудников.

Мое участие в проекте:

  • Управление командой разработчиков (Backend/Frontend): постановка задач, выставления сроков выполнения, контроль качества работы, обучение команды, написание технической документации;
  • Помимо управления командой, основную часть времени занимался разработкой веб-интерфейса «Doka.Box»: реализация API для работы с аппаратной частью, доработка сторонних библиотек под нужды проекта, полное тестирование проекта с помощью RSpec и Capybara;
  • Написание внутренних библиотек для работы с железом, с использованием протокола AMQP для передачи сообщений.

Июль 2013 — Октябрь 2013, BlueFox
Ведущий backend-разработчик (Ruby, Rails)

«Mercury» — внутренний проект для французской компании BlueFox. Основные функции проекта — CRM, Billing, Stock Management. Проект построен на основе Active Admin.

Мое участие в проекте:

  • Интеграция Rails Money, разработка дополнительных решений, для работы с разными валютами, автоматическое обновление курса валют через Eu Central Bank;
  • Работа с фоновыми задачами с использованием Sidekiq, контроль их выполнения;
  • Генерация и парсинг Excel файлов;
  • Разработка решений для интеграции проекта с сервисом Amazon S3 и Heroku.

Январь 2013 — Июль 2013, Ivory Interactive
Backend-разработчик (Ruby, Rails)

«BusStop» — проект по разработке системы “Digital Signage” для информационных терминалов на остановках общественного транспорта города Москвы. Проект состоит из двух частей — клиентская часть (терминалы) и серверная (API, интерфейс управления для клиентов, интерфейс администратора).

Мое участие в проекте:

  • Создание интерфейса управления терминалами;
  • Разработка решений для сбора и отображения статистики, генерация тепловой карты кликов по терминалам;
  • Написание парсера новостных лент и генератора PDF-отчетов.

Октябрь 2012 — Январь 2013, FeedMan
Backend-разработчик (Ruby, Rails)

«FeedMan» - сервис отложенных публикаций в социальные сети.

Мое участие в проекте:

  • Разработка биллинг системы, подключение оплаты через Robokassa.
  • Написание RSS и FeedBurner парсеров для автоматического сбора пользовательких статей и публикации их в социальные сети;
  • Настройка автоматического развертывания и резервного копирования проекта.

Июль 2012 — Октябрь 2012, Cafe Digital
Backend-разработчик (Ruby, Rails)

«Диета Инны Воловичевой» — проект по распространению диеты, посредством смс-подписок. Одновременно с этим проектом разрабатывалась платформа, для работы с контент-провайдерами. Проект включает в себя API, систему биллинга, сервис статистики, личный кабинет. Работа с подписками осуществлялась через API сторонних сервисов — Platinot, A1 Sms Market, МосКомСвязь, 7hlp.

Мое участие в проекте:

  • Написание библиотек для работы с API сторонних сервисов, тестирование кода;
  • Разработка сервиса статистики (Backend/Frontend) и системы биллинга.

Ноябрь 2011 — Июль 2012, Lebrand Creative Russia
Веб-разработчик (PHP/1С-Битрикс, JavaScript)

Разработка проектов:

  • интернет-магазин мебели «Столплит»;
  • портал о топливных картах «Топкарта»;
  • несколько проектов для банка «2TBank»;
  • агрегатор CPA-сетей и рекламная платформа «ARBOOST».

Июль 2010 — Ноябрь 2011, 4TE
Веб-разработчик (PHP, JavaScript)

Разработка и поддержка внутренних проектов компании:

  • мерчендайзинг товаров для компании LG;
  • система «Тайный покупатель» для компаний Роснефть и Газпром нефть.

Ноябрь 2009 — Июль 2010, Masterhost
Системный администратор

Установка, настройка, админинстрирование и мониторинг:

  • серверов на базе Linux/FreeBSD;
  • почтовых кластеров(Exim, Qmail).

Написание shell-скриптов для автоматизации рабочих процессов.


Сентябрь 2008 — Октябрь 2009, ТТК
Системный администратор

Настройка и администрирование:

  • серверов на базе ОС Linux/Windows;
  • офисной локальной сети;
  • почтовых серверов;
  • сайтов и хостингов.

Профессиональные навыки

Backend

Хорошее знание Rust, Go, Ruby (Rails, Hanami, Sinatra).

Есть опыт написания как микросервисов, так и полноценных CLI приложений.

Опыт разработки на Node.js с использованием фреймворка Express.

Базы данных

С 2012 года, в качестве СУБД использую PostgreSQL, до этого работал с MySQL. Из NoSQL решений предпочитаю использовать Redis, есть опыта работы с MongoDB и Memcached.

DevOps

Docker и Docker Compose использую на всех проектах.

Большой опыт настройки и развертывания с нуля Kubernetes кластеров, как на Google Cloud Platform, так и на bare metal.

В качестве CI/CD предпочитаю использовать GitHub Actions, но есть опыт работы и с другими сервисами.

Работал с Ansible, Chef, Capistrano, Mina.

Так же есть большой опыт работы с ОС семейства Unix: Gentoo, Debian, RHEL, Ubuntu, когда-то в прошлом и FreeBSD.

Open Source активность

Core-контрибьютор:

Мои коммиты можно найти в таких проектах: rails, hanami, micro, intellij-rust, etc227

Мои OSS проекты:

  • dotenv-linter — линтер для .env файлов, написанный на Rust. В рамках этого проекта я так же выступаю в роли ментора и помогаю всем желающим начать контрибьютить в open source проекты на Rust;
  • gastly — библиотека на Ruby для создания скриншотов сайтов. Под капотом используется Phantom.js и MiniMagick;
  • capistrano-hanami — библиотека на Ruby для развертывания проекта на Hanami через Capistrano;
  • mina-hanami — библиотека на Ruby для развертывания проекта на Hanami через Mina;
  • brevity — сокращалка ссылок на Go с готовым helm-чартов для развертывания в Kubernetes кластере;
  • queue_manager — менеджер очереди уникальных задач на Ruby. Под капотом Redis Sorted Sets. Поддерживает ActiveJob и Global ID;
  • pivotal_tracker_telegram_bot — телеграм бот на Ruby для получения уведомлений из Pivotal Tracker. Под капотом Sinatra и Redis PubSub.

В рамках проекта reviewdog создал несколько GitHub Actions для запуска популярных линтеров:

Образование

2008 - 2012, МГУ им. Н.П. Огарёва, АСОиУ