# Рабочие области и инстансы

Редактор потоков в lapot: создание, редактор, доступ, логи

# Рабочие области и инстансы: в чём разница

«Рабочая область» — это папка, в которую можно раскладывать инстансы, чтобы не держать длинный список без разбора: например, отдельная область под каждый проект. Ни тариф, ни лимиты, ни оплата к самой папке не привязаны — только к инстансам внутри.

«Инстанс» — это и есть ваш персональный редактор потоков: свой экземпляр редактора, свой адрес, свой тариф и свои ресурсы (память, процессор). Инстансов в одной области может быть сколько угодно, а областей — сколько нужно для порядка. Если области ещё нет, при первом инстансе она создастся сама.

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

# Создание инстанса

В разделе «Рабочие области» — кнопка «Создать инстанс». Понадобится придумать название (чтобы отличать инстансы друг от друга в списке) и выбрать тариф — от него зависит, сколько памяти и процессора получит редактор и какие возможности будут доступны.

Если тарифов несколько, их сравнение и цены смотрите на странице «Подписка». Там же может быть доступен «Индивидуальный» тариф — конструктор, где ресурсы выбираются вручную, а цена считается сразу по мере выбора.

Оплата тарифа списывается сразу при создании инстанса с баланса вашей учётной записи. Пополнить баланс можно на странице «Счёт».

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

# Редактор потоков: основы

Кнопка «Редактор» на карточке инстанса открывает редактор потоков в новой вкладке браузера. Если инстанс ещё не полностью запущен, на этой же странице появится сообщение об этом — она сама обновится, как только редактор будет готов, обновлять вкладку руками не нужно.

Основные части экрана:

- Палитра (слева) — список доступных узлов, сгруппированных по категориям: «common» (базовые), «function» (обработка данных), «network» (сеть, вебхуки, запросы) и другие. Наверху палитры есть строка поиска — удобно, если знаете примерное название узла, но не помните, в какой он категории.
- Рабочее полотно (в центре) — здесь собирается поток. Может быть несколько вкладок (называются «flow», то есть «поток») — переключаются вверху полотна, новая заводится кнопкой «+» рядом с вкладками.
- Боковая панель (справа) — несколько вложенных панелей: список узлов текущего потока, панель отладки (вывод узлов debug), панель хранилища контекста и другие в зависимости от установленных дополнений.
- Кнопка «Deploy» (справа вверху) — применяет изменения. Пока вы не нажали её, поток существует только в редакторе и не работает по-настоящему; рядом со стрелкой на кнопке можно выбрать, что именно развернуть — «Full» (весь поток целиком, самый надёжный вариант) или более узкие режимы для тех, кто уже освоился.

Работа с узлом: перетащите его из палитры на полотно мышью, соедините с другими узлами, протянув линию между разъёмами (кружок справа у одного узла — кружок слева у другого). Двойной клик по узлу открывает его настройки в панели справа.

Ваши потоки и все введённые в узлы данные (в том числе пароли и ключи доступа к сторонним сервисам, если вы их туда вписали) сохраняются на сервере, а не на диске контейнера — поэтому перезапуск или пересоздание инстанса их не стирает.

# Полезные узлы для начала

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

- inject — запускает поток вручную (клик по узлу на полотне) или по расписанию (настраивается в самом узле). Обычно с него начинается поток.
- debug — выводит сообщение в панель отладки справа. Незаменим, чтобы посмотреть, что именно передаётся между узлами, пока собираете поток.
- function — место для собственного кода на JavaScript, если готовых узлов не хватает для нужной логики.
- switch — направляет сообщение по одному из нескольких путей в зависимости от условия (например, «если значение больше 10» — в одну сторону, иначе — в другую).
- change — меняет, задаёт или удаляет значения в сообщении без написания кода.
- http in и http out — принимают входящий веб-запрос и отправляют на него ответ. Пара из этих двух узлов и есть вебхук — подробнее в статье «Вебхуки: доступ к потоку снаружи».
- http request — отправляет запрос к внешнему сервису (например, к чужому API) и получает ответ.
- template — собирает текст или разметку (например, HTML-страницу или сообщение) по шаблону, подставляя в него значения.

У каждого узла в палитре есть краткое описание — наведите на него курсор, чтобы увидеть подсказку. У многих узлов справа при выделении на полотне также появляется более подробная справка.

# Вебхуки: доступ к потоку снаружи

Если поток должен принимать запросы от внешних сервисов (например, от сайта или от мессенджера) — используется узел «http in». Пока такой доступ не включён явно, входящие запросы извне до потока не доходят.

На странице инстанса, в блоке «Параметры», есть переключатель «Эндпоинты http in»: «закрыты» или «доступны снаружи». Открытие спрашивает подтверждение — потому что после этого любой человек из интернета сможет обращаться к вашим узлам «http in».

Открытие этого переключателя не заменяет проверку доступа внутри самого потока: если вебхук делает что-то важное (запись в базу, отправку денег, изменение данных), в потоке стоит дополнительно проверять секретный параметр запроса, подпись или другой признак, что запрос действительно ожидаемый, а не случайный.

Настройка самого пути и метода (GET, POST и так далее) — в свойствах узла «http in» после двойного клика по нему на полотне: там задаётся, например, путь вида /mywebhook, и после Deploy этот путь становится доступен.

# Запуск, остановка, перезапуск, пересоздание

«Остановить» — выключает инстанс. Работающие потоки прерываются, вебхуки перестают отвечать, но сами потоки, настройки и данные никуда не деваются. За остановленный инстанс деньги не списываются.

«Запустить» — включает его обратно, без вопросов на подтверждение: тут ничего не теряется.

«Перезапустить» — выключает и сразу включает заново. Полезно, если поток «завис» или после установки нового пакета в редакторе. Данные не теряются, но работающие потоки на несколько секунд прервутся.

«Пересоздать» — самое сильное действие: контейнер и его временное окружение собираются заново с нуля. Полезно, если инстанс ведёт себя странно и обычный перезапуск не помогает. Дополнительно установленные из палитры пакеты npm при этом придётся поставить заново — а вот сами потоки, введённые в узлы данные и адрес редактора сохраняются.

# Удаление и восстановление инстанса

Удаление инстанса — не мгновенное. Сначала он останавливается и получает срок, в течение которого его можно вернуть кнопкой «Вернуть» прямо на его странице — со всеми потоками и дополнительно установленными пакетами. Пока этот срок идёт, деньги за инстанс не списываются.

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

# Совместный доступ к инстансу

На странице инстанса, под его параметрами, есть блок «Доступ» — список тех, у кого уже есть доступ к этому инстансу, кроме вас самих. Владелец может пригласить ещё кого-то по адресу электронной почты — но приглашаемый человек уже должен быть зарегистрирован в lapot; заводить за него учётную запись нельзя.

Сколько человек можно пригласить одновременно — зависит от тарифа этого конкретного инстанса. Приглашение расходует такое место, и решать, кого приглашать, может только владелец: приглашённые видят список, но сами никого не приглашают и не исключают.

Приглашённый получает такой же доступ к редактору потоков, как и владелец. Убрать доступ можно в любой момент — крестиком рядом с почтой в том же списке.

# Логи и история изменений

На странице инстанса — блок «Логи»: живой поток того, что выводит редактор потоков прямо сейчас (кнопка «Живой поток» включает и выключает подписку), и вкладка «Только ошибки» для быстрого поиска проблем.

Чуть выше — «Поиск по логам»: там можно искать по тексту, ограничивать диапазон времени и уровень важности сообщений (от отладочных до критических), а не только смотреть последние строки. Это удобно, когда нужно найти что-то, что произошло какое-то время назад, а не прямо сейчас. Как долго логи хранятся, зависит от вашего тарифа.

«История» — это список сохранений состояния потоков (создаются автоматически при каждом деплое из редактора). Из любой точки истории можно откатиться назад одной кнопкой, если после очередного изменения что-то пошло не так.

Совет: если поток работает не так, как ожидалось, добавьте в подозрительное место пару узлов debug и посмотрите живой поток или панель отладки в самом редакторе — так обычно быстрее всего найти, на каком шаге что-то идёт не так.

# Частые проблемы и их решение

Поток не отвечает на вебхук. Проверьте по порядку: включён ли переключатель «Эндпоинты http in доступны снаружи» на странице инстанса; нажат ли «Deploy» в редакторе после последних изменений; совпадает ли путь в узле «http in» с тем, что вы вызываете снаружи; запущен ли сам инстанс (статус «работает»).

После изменений в редакторе ничего не поменялось. Скорее всего забыт «Deploy» — до нажатия синей кнопки в правом верхнем углу редактора изменения существуют только на экране.

Редактор долго не открывается или показывает ошибку соединения. Подождите немного — инстанс мог ещё не полностью подняться после запуска или пересоздания, страница обновится сама. Если проблема не проходит несколько минут — попробуйте «Перезапустить» на карточке инстанса.

Установленный из палитры узел пропал после пересоздания. Это ожидаемо: пересоздание собирает контейнер заново, и дополнительно установленные npm-пакеты приходится ставить снова (сами потоки при этом не теряются). При обычном «Перезапустить» такого не происходит.

Не хватает памяти или процессора, поток «тормозит». Посмотрите блок «Лимиты» на странице инстанса — если упираетесь в них регулярно, стоит перейти на тариф с бо́льшими ресурсами на странице «Подписка».

Если ни один из этих шагов не помог — напишите в «Поддержку», подробно опишите, что делали и что происходит вместо ожидаемого.