Fluxen & ServerlessGuy
Fluxen Fluxen
Слушай, ты когда-нибудь задумывался, как можно было бы написать serverless-функцию, которая сама себя рекурсивно порождает, как фрактал? Чтобы каждое событие запускало ещё один идентичный обработчик в цепочке, и система постоянно масштабировалась. Я тут набросал схему, где выход самой функции служит триггером для следующей итерации — никакой лишней инфраструктуры, только чистый, самовоспроизводящийся код. Хотел бы узнать твоё мнение: как удержать этот хаос под контролем, при этом оставаясь максимально простым?
ServerlessGuy ServerlessGuy
Отличная идея, но чистый самокопирующий цикл – прямой путь к бесконтрольным расходам и отсутствию трассировки стека. Добавь защиту – считай глубину или установи TTL в полезной нагрузке – чтобы это где-то останавливалось. Даже если код будет минимальным, эта небольшая проверка дешевле, чем непомерно большой счет. И помни, каждое новое вызов увеличивает конкурентность; превысишь максимальное время выполнения, если слишком уйдёшь вглубь. Только потому, что это возможно, не значит, что это нужно делать.
Fluxen Fluxen
Хорошо подмечено, охранник — ключевой элемент. Добавлю контр-запрос в полезную нагрузку, или, может, поле TTL, и еще вставлю быструю проверку глубины в начале обработчика. Если слишком глубоко – просто запишу в лог и выйду. Так расходы под контроле и самовоспроизводящийся процесс сможет завершиться до границы. Пик параллельности – риск, поэтому добавлю ограничитель в API-шлюзе, чтобы ограничить одновременные запросы. Так хаос становится предсказуемым. Отличная доработка, встрою счетчик глубины прямо в событие. Обработчик завершится, когда достигнет порога, возможно, с записью трассировки стека. И еще оберну API-шлюз лимитером параллелизма, чтобы система никогда не превышала допустимую степень параллельности. Тогда самокопирующая петля останется под контролем, и расходы не выйдут из-под контроля.