Лямбда-монолитный подход:

  1. Иметь только одну лямбда-функцию
  2. Используйте внутренний маршрутизатор, на который влияет конфигурация лямбда-прокси+.
  3. Направьте запрос в правильную функцию (вы можете разделить код внутри на основе функциональности, это поможет позже, если вы захотите перейти на другую архитектуру)

Плюсы: вы можете взять старомодный NodeJS API (скажем, основанный на экспресс или хапи) и быстро развернуть его на AWS Lambda и забыть об обслуживании и масштабировании серверов. Не нужно бояться 1000 функций и конфигураций, скрывающихся в консоли AWS. Быстрое развертывание.

Минусы: ваше приложение монолитно и старомодно, проповедники микросервисов будут смеяться над вами.

Подход Lambda к микросервисам

  1. Иметь одну лямбда-функцию для каждого «микросервиса» (у вас все еще есть только один проект, но вы разделяете код на модули в зависимости от функциональности: аутентификация, учетная запись, транзакции и т. д.)
  2. Для каждой микрослужбы вы используете конфигурацию proxy+ и внутренний маршрутизатор для вызова правильной внутренней функции.

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

Минусы: евангелисты микросервисов все равно будут смеяться над вами, потому что вы подделываете микросервисы.

Подход Lambda «мини-сервисы»

  1. Иметь одну лямбду на маршрут

Плюсы: очень маленькие пакеты развертывания.

Минусы: в итоге у вас будет 100 функций в консоли AWS Lambda. Развертывание занимает много времени (вам нужно помнить об обрезке старых версий функций, потому что вы быстро получите максимальное хранилище Lambda). Евангелисты микросервисов по-прежнему будут смеяться над вами, потому что у вас не может быть отдельного стека технологий для каждой функции.