IoC (инверсия управления) Java-фреймворк для использования в AWS Lambda - PullRequest
0 голосов
/ 28 августа 2018

В моем текущем проекте я работаю над лямбда-функцией AWS, написанной на Java. В какой-то момент структура функции стала довольно сложной, появилось много связанных компонентов, и я решил, что было бы более понятно и удобно использовать некоторую инфраструктуру / библиотеку IoC для уменьшения тесной связи и сложности.

Раньше я работал только с Spring Framework, но я знаю, что это довольно тяжелый материал, и я боюсь, что с Spring я довольно быстро достигну ограничений Lambda (размер пакета, продолжительность выполнения и т. Д.). В связи с этим я ищу некоторые альтернативы, которые бы соответствовали ограничениям и идеологии AWS Lambda. Что будет лучшим вариантом для моего случая?

Ответы [ 4 ]

0 голосов
/ 29 августа 2018

В качестве другого варианта я нашел Google Guice - облегченная структура внедрения зависимостей, которая также поддерживает спецификацию JSR-330 .

0 голосов
/ 29 августа 2018

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

Однако, в зависимости от того, что именно делают ваши лямбды, Spring все еще может быть подходящим выбором.

  • Например, дополнительные 15 секунд для инициализации контекста по сравнению с общим временем выполнения 5 минут пренебрежимо малы. Если ваша лямбда вызывается более одного раза, очень вероятно, что существующий экземпляр лямбды будет использован повторно, что означает, что вы можете повторно использовать существующий контекст Spring и полностью избежать накладных расходов.
  • С другой стороны, использование Spring для лямбды, которая обрабатывает запросы API-шлюза, - не самая лучшая идея (хотя AWS предоставляет красивую библиотеку , которая позволяет приложениям Spring MVC работать в лямбда-среде), потому что типичное ожидание является то, что ответ должен прийти через <1 секунды (что, конечно, невозможно, если вам нужно 15 секунд только для инициализации контекста) </li>
0 голосов
/ 29 августа 2018

Вы можете попробовать hk2 (https://javaee.github.io/hk2/).. Он специально предназначен для облегченного IoC и имеет много полезных функций безопасности и функций AOP, которые могут быть полезны для вас. Это также может помочь в сокращении запуска / расходы на загрузку классов, потому что службы создаются только по запросу (обычно). Надеюсь, вы найдете то, что ищете!

0 голосов
/ 28 августа 2018

Попробуйте использовать micronaut (http://micronaut.io/). Новая инфраструктура в городе, все еще многообещающая для распределенной среды. Особенно дает много преимуществ, выполняя DI во время сборки, таким образом, сокращая время запуска и уменьшая накладные расходы памяти, поскольку это позволяет избежать отражения во время выполнения Стоит попробовать!

...