Инфраструктура, автоматизация и надёжные системы

Проектирую, автоматизирую и эксплуатирую сервисы и инфраструктуру так, чтобы их можно было проверить, восстановить и понять после сбоя.

Работы

TTVideo

Сервис загрузки медиа для Telegram

Бот принимает ссылку и присылает файл прямо в чат. Тяжёлая работа вынесена в очереди и отдельные воркеры, поэтому один долгий запрос не задерживает остальные, а о поломке сообщают алерты, которые лежат в репозитории вместе с тестами.

Попробовать@videott_downloadbot
Статус
поддерживается
Роль
Автор и оператор
Период
2026
Обновлено
Стек
TypeScript · Node.js · BullMQ · Redis · PostgreSQL · Docker · Prometheus
Проверено
код · тесты · инцидент
Как устроено
  1. Telegramприсылает обновление на вебхук с секретом
  2. Ботпроверяет секрет и ставит задачу в очередь
  3. Redisдве очереди, видео и музыка, и кэш готовых файлов
  4. Воркеры ×3загрузка и ffmpeg; треки через отдельный движок, по одному
  5. Чатготовый файл уходит пользователю

Рядом

  • PostgreSQLпользователи и их настройки
  • Prometheus и Alertmanagerметрики каждого контейнера, правила с тестами
  • Сторож вебхукапо таймеру сверяет адрес вебхука

Проверяемые решения

  1. Работа разделена по стоимости. Треки идут в отдельную очередь, по одному на воркер, и не занимают слоты видео.

    код

  2. Адрес каждого исходящего запроса проверяется в момент DNS-резолва, на каждом редиректе. Строковую проверку адреса уже обходил IPv4-mapped IPv6.

    тесты

  3. Сторож по таймеру сверяет адрес вебхука и поднимает алерт при подмене. Появился после реального инцидента с подменой вебхука.

    инцидент

  4. Правила алертов хранятся в репозитории и проходят тесты promtool до выкатки.

    тесты

Подробнее о проекте

Собственная инфраструктура

Серверы, мониторинг, шифрованные копии и проверка восстановления

Серверы, на которых работают мои сервисы. Копии шифруются на источнике, переживают недоступность приёмника в локальном спуле и доставляются после восстановления связи, а восстановление проверяется каждый день, а не в день аварии.

Статус
поддерживается
Период
2026
Проверено:
код, замер

Подробнее о проекте

Как устроено
  1. Сервисыдампы баз и конфигурация на каждом сервере
  2. Шифрованиекопия шифруется age прямо на источнике
  3. Спулотправка каждые 20 минут, доставка подтверждается сверкой sha256
  4. Приёмникхранит зашифрованные копии, ключ для расшифровки есть только у него
  5. Проверка восстановлениякаждый день разворачивает свежий дамп и сверяет число строк

GameBoost

Автоматическая оптимизация Windows под игры

Статус
поддерживается
Период
2026
Проверено:
тесты, релиз
  1. Каждое изменение записывается в файл состояния, откат после выхода из игры идёт по нему. Файл состояния прошёл фаззинг, 700 итераций без исключений.

    тесты

  2. Релиз v1.1.0 вышел только после зелёного CI и прохода ревью без новых дефектов. 348 тестов, покрытие 82.5%.

    релиз

Подробнее о проекте

Все проекты5 проектовЕщё: LogiTrack, Офлайн-геолокация по скриншоту карты

Разборы

Бэкап, который удалил систему

Сервер отвечал на ping и пускал по SSH, но не мог запустить ни одного нового процесса. Два часа ушло на версию об отказе диска. Причиной оказался мой собственный скрипт отправки бэкапов, выкаченный за четыре минуты до аварии.

Неделя, когда мониторинг показывал ноль

Воркеры были живы, панели показывали ноль скачиваний, а единственный сработавший алерт указывал не туда. Почему поиск целей в Prometheus молча возвращал пустой список и почему это не считалось ошибкой.

Как я работаю

  1. Доказательство вместо уверенности

    Проверка, которая ни разу не падала, ещё ничего не проверила. Прежде чем доверять зелёному статусу, я убеждаюсь, что он умеет становиться красным.

  2. Откат раньше изменения

    Сначала понятно, как вернуть всё назад, потом что менять. Установка, которая сорвалась посередине, должна чиниться следующим запуском.

  3. Разбор после каждого сбоя

    Симптом, неверная гипотеза, причина и защита от повтора записываются рядом с кодом, включая собственные ошибки.

Контакт

Есть задача?

Беру в работу: Telegram-боты, бэкенды, развёртывание и сопровождение серверов.