Мышление лямбдами
В проекте, который плотно сидит на Амазоне, я познакомился с новой для себя вещью: мышлению лямбдами. Это когда на каждый чих создается лямбда, и кто-то ее вызывает: бекенд, фронтенд, очередь или хук, повешенный на бакет.
Раньше я об этом не думал, но оказалось, что лямбда — самый сложный продукт Амазона. В экосистеме AWS лямбды повсюду. Их можно приделать к любому сервису. Загрузил файл в S3 — дернулась лямбда. Поднялся инстанс EC2 — дернулась лямбда. Лямбда может быть обработчиком очередей SNS и SQS. Это универсальный клей, которым можно соединить что угодно.
Лямбда может создана на любой технологии: на Джаве, на Го, на баше. Она может быть голым бинарником или скриптом на Питоне или Ноде. В последних случаях ее код можно поместить прямо в yaml-конфиг Cloud Formation.
Ситуация, когда лямбда вызывает лямбду, та вызывает лямбду, та вызывает лямбду, которая пишет файл в S3, и на это событие вызывается лямбда, уже не кажется абсурдом. Поначалу шокирует, но привыкаешь.
Другой случай: как поднять инстанс EC2 на заданное количество времени? А вот как: дернуть лямбду и передать ей число секунд, скажем, 7200 (два часа). Лямбда запустит инстанс из образа, после чего запишет в S3 файл с числом оставшихся секунд. В облаке работает шедулер, который каждые 5 минут запускает другую лямбду. Эта лямбда читает число секунд из бакета, вычитает из него 300 секунд и записывает обратно. Если время истекло, она дергает третью лямбду, которая убивает инстанс. Вот такие многоходовочки.
Сперва у меня было чувство, словно я рассматриваю картины Сальвадора Дали. Первая реакция — что, так можно было? Оказалось да, можно. С этим живут, это поддерживают, на этом зарабатывают деньги. Такие схемы даже работают. Тех, кто их проектирует, называют AWS-архитекторами.
Все это я понимаю и принимаю. И все же малодушно хочу, чтобы такого было меньше.
Нашли ошибку? Выделите мышкой и нажмите Ctrl/⌘+Enter
John, 7th Oct 2024, link
Если сделать язык программирования с AWS лямбдами, тогда получится что-то типо хреновой версии Erlang. Любая достаточно продвинутая и достаточно сложная система…
Джон, 9th Oct 2024, link
Представляю, как здорово это отлаживать, когда что-то работает не так… Допустим, старая команда увольняется, или проект продаётся в новую (достаточно частая ситуация, с которой каждый несколько раз сталкивался в жизни), и тебе надо разобраться с тем, что происходит при загрузке файла. Или добавить какую-то новую простую функциональность, которую оценил на 3 сторипоинта, но в итоге работаешь уже неделю, а конца не видно…
Гениально!