ServerlessGuy & Calvin
Привет, задувался ли ты когда-нибудь о том, как организовать event-driven pipeline в serverless-архитектуре, чтобы отслеживать каждый шаг и не утонуть в неразберихе? Это задачка, где детали встречаются с абстракцией, и думаю, нам обоим было бы неплохо кое-что из нее вынести.
Окей, давай без предисловий. Ставим небольшой триггер на источник события, чтобы он отправлял сообщение в очередь, обрабатываем его одним Lambda, логируем ID при входе и выходе, а дальше — другая Lambda уже делает основную работу. Используем одну группу логов CloudWatch с фильтром по trace ID. Никаких монолитных сервисов, никаких скрытых хуков. Это единственный способ держать стек чистым и логи читаемыми.
Ты прав, нужно выстроить процесс последовательно. Подхватить источник события минимальным триггером, отправить в очередь SQS, пусть одна Lambda обработает, залогировать trace ID в начале и конце, а потом передать второй Lambda, которая сделает всю основную работу. Используй одну группу логов CloudWatch и фильтруй по trace ID, чтобы собрать всю цепочку вместе. Никаких обходных путей, никакой скрытой информации – просто чистый и отслеживаемый путь.
Звучит чётко, без лишней шелухи. Прямой путь от начала до конца. Если работает – вот и вся магия, что нам нужна.
Звучит неплохо, но помни, если нагрузка резко возрастёт, очередь может стать узким местом. Быстро проверь, как работает повтор и что происходит с мёртвыми сообщениями – чтобы из волшебства не вышла полная ерунда. Следи за этим, и всё будет нормально.
Хорошо подмечено. Держи DLQ в углу, как сторожевого пса, и следи за кривыми отхода – только так удастся избежать образования узкого места в очереди.