Больше информации по резюме будет доступно после регистрации
ЗарегистрироватьсяБыл вчера в 22:25
Мужчина, 27 лет, родился 12 мая 1998
Москва, готов к переезду, готов к редким командировкам
Node.js Backend Developer
Специализации:
- Программист, разработчик
Тип занятости: полная занятость, частичная занятость, проектная работа/разовое задание
Опыт работы 3 года 3 месяца
Ноябрь 2023 — Январь 2026
2 года 3 месяца
DPO Academy
Информационные технологии, системная интеграция, интернет... Показать еще
Backend Developer
B2B-платформа дополнительного профессионального образования. Корпоративные клиенты заказывают обучение сотрудников с выдачей дипломов установленного образца. Через три месяца после старта стал единственным бэкенд-разработчиком и вел весь серверный код платформы два года. Команда: CTO, бэкенд, два фронтенд-разработчика и менеджер. Работали по Scrum: двухнедельные спринты, ежедневные дейли, ретро раз в месяц, оценка задач по story points в Jira.
Спроектировал и реализовал с нуля ключевые модули: заказы, оплата, генерация документов, авторизация через OAuth. Писал и поддерживал 80-90% серверной кодовой базы самостоятельно, CTO подключался только в критичных ситуациях.
Генерация документов изначально работала синхронно и роняла сервис при нагрузке: таймауты, падения, дубли. Перевел всю обработку в фоновые очереди на BullMQ и Redis с ретраями, ограничением параллелизма и идемпотентным выполнением. После этого система стабильно обрабатывала 10-20 тысяч задач в день без единого инцидента.
Отдельно оптимизировал генерацию для крупных заказов. Один заказ мог содержать несколько учебных программ, в каждой несколько учеников, у каждого по 7 документов с файлами из S3. При массовой генерации сервис падал на таймаутах к хранилищу. Вынес повторяющиеся файлы и данные из БД в Redis-кеш с инвалидацией, и проблема ушла полностью.
Перепроектировал модули аутентификации и авторизации. Реализовал JWT с раздельными access и refresh токенами, систему ролей с правами доступа, NestJS guards и единый формат ошибок по всему API. В процессе нашел и исправил некорректную настройку TTL токенов, из-за которой сессии обрывались раньше времени.
Обнаружил и устранил баг с неверным учетом бонусов после оплаты. Отдельно решил проблему с перезаписью файлов в S3: документы с совпадающими именами затирали друг друга. Добавил генерацию уникальных ключей.
Решил проблему с загрузкой файлов через multipart/form-data во вложенных объектах. Перепробовал несколько подходов, включая base64 и перенос загрузки на фронтенд. В итоге вынес загрузку файлов в отдельные запросы к S3 с последующей привязкой ключей к записям в БД. Это решение стало стандартом для всех последующих модулей.
Вынес бизнес-логику из контроллеров в сервисный слой. Спроектировал модульную структуру REST API, которую потом не приходилось переписывать при росте функциональности.
Оптимизировал ORM-запросы через Prisma, внедрил кеширование и инвалидацию в Redis для частых запросов. Отслеживал p95 и p99 времени ответа.
Покрывал критичные модули unit-тестами на Jest: оплата, авторизация, генерация документов. При росте объема функциональности и сжатых сроках до MVP дополнял автотесты ручным тестированием перед релизом.
Проводил и проходил code review на постоянной основе. Вел техническую документацию в GitLab Wiki: логи изменений, регламент движения задач, доступы к сервисам.
Настроил миграционные скрипты в GitLab CI для сборки и деплоя на dev и production. Деплой на VPS. Мониторинг ошибок через Sentry, метрики через Grafana.
Технологии: Node.js, TypeScript, NestJS, PostgreSQL, Prisma, Redis, BullMQ, JWT, OAuth, Docker, MinIO, S3, Jest, GitLab CI, Sentry, Grafana, Jira, Nginx
Ноябрь 2022 — Октябрь 2023
1 год
Gazetchik
Информационные технологии, системная интеграция, интернет... Показать еще
Backend Developer
Сервис групповых рассылок и ретроспектив для команд и сообществ. Участники отвечают на вопросы, платформа с помощью AI собирает ответы и генерирует сводку в формате газеты. Единственный бэкенд-разработчик в команде из четырех человек: бэкенд, фронтенд, DevOps и фаундер. Самостоятельно проектировал архитектуру и принимал все технические решения на основе требований стейкхолдера.
Спроектировал backend-приложение с нуля на NestJS: модульная архитектура, REST API, модель данных в PostgreSQL. Сам выбирал стек и определял структуру проекта.
Интегрировал CloudPayments для приема платежей. Реализовал обработку вебхуков с HMAC-проверкой подписи, идемпотентную обработку платежных событий и логику автопродления подписок. Все edge-кейсы с двойными списаниями закрыл на этапе разработки, на проде инцидентов не было.
Интегрировал OpenAI и GigaChat для генерации контента: платформа объединяла ответы участников в общие блоки, формировала выборки цитат дня и сводки. Настроил SSL-сертификаты вручную, так как GigaChat блокировал запросы без них.
Реализовал Telegram-бота как альтернативный канал для участия в опросах. Пользователь мог отвечать через сайт или через Telegram, там же получал уведомления о новых выпусках и готовности результатов.
Настроил аутентификацию с JWT access и refresh токенами, а также OAuth и Magick Link.
Реализовал фоновые задачи на Bull и Redis для автоматизации рассылок и генерации контента.
Подготовил инфраструктуру для локального запуска и деплоя: Docker Compose, GitLab CI. Корректировал конфигурацию Nginx и reverse proxy совместно с DevOps.
Технологии: Node.js, TypeScript, NestJS, PostgreSQL, Prisma, Redis, Bull, JWT, OAuth, Docker, Docker Compose, GitLab CI, Nginx, CloudPayments, OpenAI API, GigaChat API, Telegram Bot API
Навыки
Уровни владения навыками
Продвинутый уровень
Средний уровень
Базовый уровень
Обо мне
Два года вел backend B2B-платформы в одиночку. С нуля реализовал сервис генерации документов. Позже, на крупных выгрузках, выяснилось, что синхронная обработка создает слишком большую нагрузку и роняет сервис. Перевел генерацию в фоновые очереди на BullMQ, добавил кеширование обращений к S3 и переработал сценарий массовой выгрузки. В результате система перестала падать и начала стабильно держать 10-20 тысяч фоновых задач в день. Стек: Node.js, TypeScript, NestJS, PostgreSQL, Redis. Отвечал за архитектуру, API, очереди, платежные интеграции и генерацию документов. Привык к code review, Scrum и документации в GitLab Wiki. Ищу команду, где важны надежность backend-логики и инженерная культура.
Telegram: @Kereberee
Телефон: +7 (916) 3691328
Высшее образование
2022
Высшее образование
Архитектура, Градостроительство
Знание языков
Гражданство, время в пути до работы
Гражданство: Россия
Разрешение на работу: Россия
Желательное время в пути до работы: Не имеет значения
