Работы

Три примера инженерной работы

Три системы, которые я спроектировал и написал сам.

Это собственные продукты и внутренняя автоматизация. Клиентские проекты я здесь не показываю.

Собственный продукт 2026

Аренда инструмента через постаматы

Человек выбирает инструмент в приложении, на сайте или в Telegram, платит — и замок в постамате открывается по команде из облака.

Шлюзы стоят на объектах и держат постоянное соединение. Оборвалось — человек стоит перед закрытым ящиком с оплаченной арендой. Замки говорят по своему двоичному протоколу, готовой библиотеки под него нет, кодек пришлось писать самому.

Сетевую часть я вынес на Go: там тысячи живых соединений, это его работа. Аренда, тарифы и платежи остались на Python. Между ними очередь событий; формат описан один раз, код для обеих сторон генерируется из этого описания. Иначе половины разъезжаются за год, вопрос только когда.

Ещё написал двойник шлюза, который ведёт себя плохо намеренно: рвёт связь, отвечает мусором, молчит. Без него каждую правку сетевого кода пришлось бы возить на объект.

Собрано на: Go, Python, FastAPI, Redis Streams, PostgreSQL, Kubernetes, Terraform.

Собственный продукт 2026

Платформа проката под чужим брендом

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

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

Владелец одного сервера получает рабочую систему в первый день. Когда простой начнёт стоить денег, он включит следующую ступень, а не сядет переписывать.

Собрано на: Go, PostgreSQL, PgBouncer, Caddy, Loki, Vector, Docker Compose.

Своя автоматизация 2020

Стенды для команд разработки

Виртуалки для команд заводили руками. Новая команда или пересборка стендов — и по кругу: создать машины, выписать адреса, разложить ключи, собрать список хостов для Ansible.

Я описал весь парк одной переменной: команда и её машины. Вложенная структура разворачивается в плоский список, по нему ресурсы и создаются. Завести новую команду — правка одной строки.

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

Собрано на: Terraform с провайдером oVirt, Ansible. 2020 год.