Старший/Ведущий инженер-программист, 10+ лет в высоконагруженных/высокодоступных корпоративных системах.
Технические навыки
- Фронтенд: Vue.js v3 и v2 (с 2016), Vuex, Vue Router, TypeScript, SCSS, Less, TipTap, ProseMirror, D3.js, Chart.js, Vuetify, Quasar
- Бэкенд: Node.js (с 2017), PostgreSQL/Oracle, Elasticsearch, Kafka, Redis, Express.js/Nest.js
- Десктоп: Electron (с 2017)
- Инфраструктура и доставка: Vite, Rollup, Webpack, Docker, GitLab CI/CD, GitHub Actions
- Тестирование: Jest, Cypress (модульное, компонентное, E2E);
- Прочее: Системы на основе метаданных, Микрофронтенды, Публикация NPM-пакетов, Модернизация унаследованного кода, Инструменты ИИ и интеграция LLM, Миграции на TypeScript;
Профессиональный опыт
Прошел путь от младшего до старшего/ведущего специалиста в ОАО «РЖД» (RZD.ru), ноябрь 2011 – апрель 2026
Фронтенд
Создано 30+ фронтенд-приложений исключительно на современном стеке:
- Vue.js v2 и v3, Vuex, Vue Router;
- Typescript;
- D3.js, Chart.js;
- Vuetify, Quasar;
- Scss, Less;
Миграция высоконагруженной билетной платформы
Масштаб: 20+ миллионов посещений в месяц, ~150 тыс. оплаченных билетов в день.
Критически важная миграция фронтенда с собственного фреймворка на основе jQuery на Vue.js
- Влияние: одно SPA вместо множества страниц. ~3-кратное снижение трафика и нагрузки на сервер, улучшение производительности, стабильности, UX, удобства сопровождения, скорости поставки и современный технологический стек на будущее
-
Решенные сложности:
- Бизнес-логика реализована на фронтенде с помощью JS и серверных шаблонов на основе метаданных;
- Тысячи станций в 11 часовых поясах; междугородние, международные и пригородные поезда и автобусы;
- Десятки дополнительных услуг; поддержка 3 языков;
- Сотни сценариев;
UARM-FE: Фронтенд-приложение панели администратора РЖД
Современная замена устаревшей панели администратора
- До: Приложение с состоянием на JSP и IBM WebSphere (создано Java-разработчиками);
- После: Современное асинхронное приложение на Vue.js;
- Архитектура: Динамический рендеринг компонентов на основе декларативных метаданных;
- Результат: Значительно улучшена производительность и опыт разработки
- Внедрение: 1000+ пользователей;
- Сложный конвейер сборки;
Скриншоты
Страница панели администратора новостей (список с фильтром)
Страница панели администратора новостей (карточка записи)
Страница панели администратора навигации (список с фильтром)
Страница панели администратора навигации (карточка записи)
wFlow: Приложение для управления проектами в стиле Kanban
Фронтенд для управления проектами корпоративного уровня
Внедрение и масштаб:
- Внедрено в масштабах компании: 70+ пользователей перешли с Jira;
- Развернуто в Российском университете транспорта: 200+ пользователей;
Возможности:
- Доски Kanban с перетаскиванием;
- Настраиваемые конфигурации рабочих процессов;
- Настраиваемые поля задач;
- Связывание задач и вложения файлов;
- Пользовательский WYSIWYG JSON-редактор (на базе TipTap/ProseMirror);
Скриншоты
MCC: Менеджер развертывания/доставки
MCC расшифровывается как Центр управления полетами (Mission Control Center)
Внутреннее приложение, отвечающее за CI/CD: развертывание образов контейнеров, запуск и проверку результатов автоматизированных тестов, выпуск дистрибутивов ПО, проверку и утверждение запросов на слияние (MR), а также генерацию документации по выпуску совместно с двумя сервисами Node.js, упомянутыми ниже. Это критически важная часть процесса доставки ПО компании, используемая несколькими командами в организации.
Скриншоты
Бэкенд
Имею большой опыт в бэкенд-разработке и управлении инфраструктурой.
Разработано 7+ сервисов на Node.js с использованием:
- Elasticsearch (индексация, поиск, логирование);
- Apache Kafka;
- PostgreSQL;
- Redis;
- Express.js / Axios;
- Стратегии «повтора/отката» (retry/backoff);
- Аутентификация JWT и LTPA;
- Логирование;
- Генерация DOCx и XLSx;
- Интеграции с различными сторонними API: JSON и XML;
- Все компоненты упакованы в Docker
Адаптер API ЦСМ
Критически важный бэкенд-сервис на Node.js для ЦСМ РЖД (Центр содействия мобильности пассажиров с ограниченными возможностями). Хаб для обработки четырех различных типов заявок от маломобильных пассажиров со сложными моделями данных; интегрирует следующие системы:
- Сайт РЖД https://www.rzd.ru/ru/9290 — Kafka
- Административные интерфейсы РЖД — Kafka
- АСУ ЕКМП (Единое клиентское мобильное приложение) — JSON REST API
- АСУ ТТК (ТрансТелеКом) — JSON REST API
- АСУ СИОП ФПК (Система идентификации и обслуживания пассажиров, Федеральная пассажирская компания) — JSON REST API
Двунаправленная синхронизация на протяжении всего жизненного цикла приложения, уведомления пользователей и администраторов и многое другое.
Информаторы версий (IVI + RVI)
Два бэкенд-сервиса: IVI (на стороне компании) и RVI (развернут на сервере заказчика — РЖД). Сервисы полностью автоматизируют жизненный цикл выпуска ПО — от принятия запроса на слияние до публикации релиза и установки в цепочке серверных сред (от тестовых до продуктивных).
Ключевые функции и обязанности:
- Разработаны и поддерживаются интеграции с: Wflow (трекер задач), MCC (менеджер установки), RVI, PostgreSQL, FTP, SVN, GitLab, Mattermost и Kibana.
- Реализовано структурированное логирование в Elasticsearch с мониторингом в реальном времени.
- Настроены интеллектуальные уведомления в Mattermost по нескольким каналам, включая ссылки на формы повторного запуска, логи Kibana и сведения об ошибках.
- Достигнуто высокое покрытие тестами с помощью комплексных end-to-end и модульных тестов (Jest).
- Обработчик принятия MR: Проверяет поля задачи в трекере задач, проверяет на дубликаты, собирает данные контракта/эпика, определяет измененные репозитории, записывает данные в базу данных IVI и передает их в RVI через REST API.
- Обработчик публикации релиза: Обнаруживает «потерянные» задачи, загружает и распаковывает дистрибутив, генерирует артефакты для заказчика (6 типов документов) и JSON состава релиза для надежной передачи данных в RVI (запасной вариант при недоступности REST API).
- Обработчик событий установки: Регистрирует успешные установки/откаты на сервере, выполняет массовое обновление статусов релизов и связанных задач через Bulker API, добавляет комментарии об откате.
Архитектура
Разработаны различные решения на многодоменной основе: бэкенд (уровень приложений + уровень БД) и фронтенд.
Капитальный редизайн национального портала RZD.RU (РЖД)
Руководил полным технологическим редизайном и миграцией национального портала RZD.RU в рамках масштабного перехода с устаревшего стека Oracle + IBM WebSphere на современную архитектуру на базе Postgres, Kubernetes и Docker.
Масштаб проекта: ~1000 пользовательских страниц на ~50 поддоменах и ~500 редакторских CRUD-интерфейсов / рабочих мест администратора.
Ключевой вклад:
- Архитектура: Разработал архитектуру фронтенда и тесно сотрудничал с Java-архитекторами над новыми форматами метаданных, что позволило реализовать современный headless metadata-driven CMS [RU] подход.
- Миграция метаданных: Организовал миграцию 1500+ устаревших XML-файлов (сильно обремененных техническим долгом и обходными решениями) в чистые, удобные для сопровождения структуры JSON. Разработал скрипты преобразования и создал MetaWizard — мощный редактор метаданных, ставший центральным инструментом для всей миграции и текущего обслуживания.
- Пользовательский портал: Реализовал базовые фронтенд-решения, включая новую тему сайта и полный редизайн наиболее критичных и сложных страниц. Эта основа позволила остальной команде фронтенда эффективно разрабатывать оставшийся функционал.
- Редакторские интерфейсы: Разработал и создал новое административное приложение (UARM-FE), предоставив большинство элементов управления UI, а также несколько наиболее сложных редакторских интерфейсов.
Пояснение форматов метаданных
Что такое метаданные для форм администратора
Эти файлы метаданных представляют собой декларативные JSON-дескрипторы, определяющие полный жизненный цикл формы администратора — от базовой таблицы (таблиц) базы данных до поведения UI в браузере.
Это устраняет повторяющийся шаблонный CRUD-код, сохраняя согласованность в более чем 1000 формах.
Каждый дескриптор сопоставляет столбцы базы данных (или межтабличные связи) с определениями полей, задающими поведение в трех контекстах:
-
Представление списка
- Фильтрация
- Сам список (отображение, сортировка, редактирование записей на лету)
- Представление формы (создание, редактирование одной записи)
Каждое поле формы может иметь разные типы элементов управления во всех трех контекстах, каждый со своими параметрами, такими как валидация, значения по умолчанию или пользовательский шаблон. Примеры типов элементов управления:
- Ввод (текст, целое число, число с плавающей точкой, email и т.д.) или текстовая область
- Выпадающий список (включая асинхронный поиск), Всплывающий выбор, оба могут использоваться для выбора нескольких записей
- Дата со временем или без, в контексте фильтра может использоваться как диапазон
- Выбор карты или адреса (геокодер)
- Редактор диаграмм
- ...и некоторые другие
Что такое метаданные для пользовательских страниц
Эти файлы метаданных страниц определяют полную HTML-страницу или слой получения данных (на основе JSON), устраняя необходимость в пользовательском бэкенд-коде для каждой страницы (всего: 500+ страниц).
Компоненты — это гранулярные строительные блоки, которые:- Перечисляют точные поля для выборки
- Обозначают первичные ключи
- Определяют отношения (один-к-одному, один-ко-многим)
- Обрабатывают пагинацию и фильтрацию
Десктоп
Приложение MetaWizard на Electron
Сложное внутреннее десктопное приложение (Windows/Mac/Linux).
- Разработано и создано в 2017 году;
- Поддерживалось в течение 9 лет, при этом обновлялось до последних версий Electron и Node, начиная с версий 1.x и v.0.x соответственно
Ключевые функции:
- Редакторы и списки метаданных;
- Подключение к базам данных (Oracle, PostgreSQL);
- Операции SSH/SFTP;
- Сложные файловые операции;
- Многорепозиторная структура с интегрированным приложением панели администратора;
Скриншоты
Инфраструктура
Разработаны и поддерживаются сложные полные циклы конвейеров фронтенда и бэкенда:
- Сборка: Vite и Webpack (включая Code-Splitting/Module Federation/DLL), Babel, tsc/tsx, SCSS/Less, Eslint, Prettier, Husky, Lint-Staged и т.д.
- Доставка: Docker, GitLab CI/CD, GitHub Actions
Тестирование
Внедрено тестирование для нескольких проектов (фронтенд, бэкенд, десктоп):
- Модульное, компонентное и E2E
- Jest и Cypress
NPM-пакеты
- Опубликовано 10+ пользовательских пакетов в частный реестр компании
-
Фронтенд и бэкенд, используются в нескольких проектах компании:
- Библиотеки для фронтенда/бэкенда для аутентификации в разных системах (JWT, Blitz, LTPA)
-
Унифицированные (стандарт компании) библиотеки для:
- Обработки ошибок
- Логирования (ELK)
- Интеграции с Kafka
- Уведомлений Mattermost
- Утилиты для фронтенда и бэкенда для общих задач
- Общие конфигурации для ESLint, Prettier и т.д.
- Библиотеки для фронтенда/бэкенда для интеграции с различными системами
- Обеспечены различные конвейеры сборки и CI/CD
Покрытие TypeScript
Руководил миграциями на TypeScript для нескольких проектов, улучшая качество кода и удобство сопровождения, сокращая ошибки времени выполнения и улучшая DX. Обычно поэтапно, с постепенной миграцией и строгим соблюдением типизации.
Использование ИИ
Использую различные LLM с разными целями и подходами.
Поддерживаю баланс между контролем кода и производительностью разработки.
Когда это применимо - практикую агентные рабочие процессы и Spec-Driven Development (Openspec).
Для других целей - конечно: предложения, конфигурация, документация, отладка, тестирование, быстрое прототипирование, и т.д.
Образование
Степень бакалавра в области геологической инженерии
Российский университет дружбы народов (РУДН), Москва, Россия, 2005 – 2009
Языковые навыки
Свободный английский, родной русский, начальный немецкий, французский и украинский.
Местоположение
На удаленной работе с 2013 года, сейчас из Таиланда. Очень гибкий в отношении часовых поясов (до GMT+1).
Открыт к гибридной работе при необходимости, а также к переезду/работе в офисе.
Мои приоритеты
- Командная работа - Сотрудничество, постоянное обучение и обмен знаниями с другими через наставничество и руководство
- Четкий дизайн - Архитектура, задачи, код и т.д.
- Создание решений - Либо удобные в сопровождении приложения на годы вперед, либо быстрые PoC/MVP
- Баланс - Бизнес-цели (первый приоритет), опыт разработчика и управление техническим долгом