Написание функций с малой задержкой никогда не было проще.

rtlambda — мой новый проект, цель которого — обеспечить быструю и эффективную разработку Rust на бессерверной платформе AWS Lambda.

Это проект с открытым исходным кодом, доступный на GitHub и crates.io под разрешающими лицензиями MIT или Apache 2.0.

Простой

rtlambda с самого начала разрабатывался для обеспечения беспрепятственного взаимодействия с разработчиком, которое не ставит под угрозу производительность и конкурирует с простотой использования сред выполнения Node.js и Python.

Простая лямбда эхо-сервера будет выглядеть так:

Как вы могли догадаться, среда выполнения и ваша лямбда компилируются в один и тот же исполняемый файл, когда вы создаете свою функцию. Не нужно указывать слои или обработчики — все в одном (крошечном) месте.

rtlambda позволяет отделить код инициализации от кода обработчика с помощью концепции функции инициализации.

Функция инициализации выполняет две функции:

  1. Создание повторно используемых ресурсов, таких как клиенты БД.
  2. Возврат функции-обработчика, обрабатывающей входящие события.

(Ваша функция-обработчик берет на себя ответственность за повторно используемые ресурсы через семантику Rust move).

Обо всем остальном позаботится среда выполнения.

Минимальные зависимости

rtlambda зависит от serde и serde_json — высокопроизводительных библиотек сериализации и десериализации для Rust и стандарта де-факто для обработки JSON в экосистеме Rust.

Приложения, созданные с помощью rtlambda версии 0.0.1, также будут зависеть от HTTP-библиотеки ureq для внутренней связи с AWS.

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

Качественные документы

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

Readme — хорошее место для начала, и вы всегда можете обратиться к документам.

Расширяемый

rtlambda поставляется с включенными батареями и временем работы по умолчанию, которое обеспечивает разумные и эффективные настройки по умолчанию.

Однако пользователи, которые хотят реализовать свою собственную логику, могут легко сделать это, внедрив четко определенный набор универсальных признаков.

На практике rtlambda можно использовать в качестве среды выполнения для других языков программирования или для реализации собственных пользовательских сред выполнения. В этой области также запланированы дальнейшие работы и эксперименты.

Исполнитель

Благодаря компилятору Rust rtlambda инициализируется за однозначные миллисекунды, что примерно в 22 раза быстрее по сравнению со средой выполнения Python, что эффективно снижает задержку, когда ваша лямбда-выражение нуждается в быстром масштабировании.

Написание функций на Rust также означает, что ваша основная логика работает быстрее, чем Python и Java, не страдает от остановки сборки мусора и потребляет меньше памяти. .

Вдобавок ко всему, rtlambda предназначен для минимизации вызовов динамической диспетчеризации, выжимая каждый бит оптимизации, который может предложить компилятор Rust (планируется работа, чтобы полностью исключить его в будущих версиях).

В следующей статье мы подробно расскажем, как создать, собрать и развернуть проект rtlambda, который может работать на платформах x86 и aarch64 в Amazon Linux 2.

Readme содержит исчерпывающие инструкции для тех, кто хочет начать работу уже сегодня.

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