MVP без n8n: когда оркестрацию проще написать руками
Я сам выбрал n8n для своего MVP, а через несколько недель убрал его из стека. Разбираю проверку на двадцать минут, которая показывает, окупается визуальный оркестратор или только добавляет контейнер на VPS.
Я сам выбрал n8n в отчёте по проекту. Логика была простая: работаю один, скорость сборки важнее элегантности, визуальный редактор избавляет от рутины. Через несколько недель я этот выбор отменил и переписал оркестрацию на Python. Причина оказалась скучной и очень конкретной.
Проверка, которая занимает двадцать минут
Прежде чем ставить оркестратор, выпишите столбиком все внешние системы, с которыми будет говорить ваш MVP. У меня получился такой список: TGStat, Telemetr.io, Telega.in, TeleTarget, маркет-платформа VK, ОРД.
Дальше по каждой строке один вопрос: есть ли для неё готовая нода в n8n?
У меня ответ был «нет» шесть раз из шести. Российский рекламный стек в каталог интеграций n8n не входит и вряд ли войдёт — аудитория слишком узкая, чтобы кто-то поддерживал такую ноду годами.
Что остаётся от визуального редактора, когда нод нет
Тут наступает момент честности. Без готовой ноды работа с API выглядит одинаково в любом инструменте: HTTP-запрос, заголовки, авторизация, разбор JSON, обработка ошибок, повторные попытки. В n8n это пишется руками внутри HTTP Request-ноды и Code-ноды.
То есть код я всё равно пишу. Просто теперь он живёт кусками внутри JSON-файла воркфлоу, где:
- его тяжело диффать в git: правишь одну строку — в диффе двести;
- его нельзя запустить локально без всего сервиса;
- на него нельзя написать обычный тест;
- отладка идёт через клики в браузере.
Плюс ещё один контейнер на VPS, его база, его обновления, его память. Ради UI-обёртки над кодом, который я и так написал.
Чем я заменил
Тонкий Python-оркестратор: state machine, состояния лежат в Postgres, всё поднимается одним docker compose up.
Логика прозаичная. Есть таблица задач со статусом. Есть цикл, который берёт задачи в статусе «готова», выполняет шаг, пишет новый статус и результат. Упало — статус «ошибка», счётчик попыток, следующий заход через интервал. Postgres тут одновременно очередь, журнал и место, куда смотришь, когда что-то пошло не так.
Это не архитектурный подвиг. Это пара сотен строк, которые делают ровно нужное и ничего сверх.
Что я получил взамен визуального редактора:
- обычный git-диff по обычным
.py-файлам; - запуск любого шага локально одной командой;
- тесты на логику переходов между состояниями;
- один сервис на VPS вместо двух;
- SQL-запрос вместо кликов, когда надо понять, где застряли задачи.
Где n8n правда выигрывает
Инструмент хороший. Компания подняла $180 млн в раунде Series C и объявила о партнёрстве с SAP по визуальной оркестрации ИИ-воркфлоу для энтерпрайза — за этим стоит настоящий спрос.
n8n окупается, когда:
- большинство ваших интеграций уже есть в каталоге нод: Google-сервисы, Slack, Notion, почта, типовые CRM;
- воркфлоу нужно показывать и передавать людям, которые не пишут код;
- сценарий часто правят руками — маркетолог сам поменяет условие в ветке;
- нужен готовый интерфейс логов и повторов, и собрать его самому дольше, чем поднять сервис.
Считается это одним числом: доля шагов, которые закрываются готовыми нодами. Доля высокая — берите n8n, вы платите за реальную экономию. Доля нулевая — вы платите за иконки поверх своего же кода.
Что я бы сказал себе на старте
Визуальный оркестратор экономит время на конкретных интеграциях, которые кто-то уже написал за вас. Это его настоящий продукт. Всё остальное — редактор поверх обычной логики, которую вы напишете сами в любом случае.
Когда стек нишевый — российская реклама, ОРД, узкие Telegram-сервисы — этой экономии просто нет. Остаётся стоимость: лишний сервис, чужой формат хранения логики, отладка мышкой.
Поэтому перед выбором оркестратора я теперь делаю одно движение: открываю каталог интеграций и ищу там свои системы по названиям. Ответ на вопрос «писать руками или брать платформу» обычно виден прямо на этой странице, до первой строчки кода.