2015-11-05 1 views
2

Я пытаюсь развернуть набор API с помощью Api Gateway и реализовать код на Java, используя lambda. Хорошо ли иметь много (связанных, конечно) лямбда в одной банке (что я предполагаю сделать), или лучше создать единую банку для каждой лямбда, которую я хочу развернуть? (это станет беспорядком очень легко)Api Gateway, несколько лямбда в том же JAR

ответ

4

Это действительно вопрос вкуса, но есть несколько вещей, которые вы должны учитывать.

Прежде всего, существуют ограничения на то, насколько большой может быть одна Лямбда-загрузка (50 МБ на момент написания).
Во-вторых, существует также ограничение на общий размер всего всего загружаемого вами кода (в настоящее время 1,5 ГБ). Эти ограничения не могут быть проблемой для вашего случая использования, но они хорошо знают.

Следующее, что вам нужно учитывать, - это то, где вы хотите свои накладные расходы. Предположим, вы развертываете CRUD-интерфейс для одной Lambda, и вы передаете параметр «действие» из шлюза API, чтобы вы знали, какую операцию вы хотите выполнять при выполнении функции Lambda. Это добавляет небольшие накладные расходы на выполнение, так как вам необходимо направить действие на соответствующую операцию. Это, скорее всего, очень быстрая маршрутизация, но, тем не менее, она добавляет циклы процессора к выполнению вашей функции.

С другой стороны, развертывание одной и той же банки над несколькими функциями лямбда быстро приблизит вас к ограничениям, о которых я упоминал ранее, а также добавляет административные издержки при управлении вашими лямбда-функциями по мере роста этого числа. Разумеется, им можно управлять с помощью CloudFormation или cli-скриптов, но он все равно будет добавлять административные издержки.

Я бы не сказал, что есть право и неправильный способ сделать это. Посмотрите, что вы пытаетесь сделать, подумайте о том, что вам нужно для управления развертыванием и оттуда оттуда. Если вы ошибетесь, вы всегда можете начать с другого подхода.

Лично мне нравится очень маленькая служба Lambdas, которая делает внутреннюю маршрутизацию и обрабатывает больше, чем просто одну операцию, но они все еще очень малы и сосредоточены на задаче определенного типа, будь то CRUD для таблицы базы данных или управления выбранным несколько очень близких операций.

1

Там какой-то хороший совет по serverless.com

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

  1. Microservices Pattern
  2. Услуги Pattern
  3. Монолитный шаблон
  4. Graph шаблон

https://serverless.com/blog/serverless-architecture-code-patterns/

+0

Хорошая ссылка. Я, как я уже упоминал в своем ответе, приземляюсь в спектрах «Шаблоны услуг». – polythene

Смежные вопросы