Стоимость и эффективность между iFaaS и FaaS (AWS) при создании бессерверных приложений

Бессерверная архитектура — это мощная конструкция системы, которая позволяет разработчикам создавать и запускать код без управления серверами и без оплаты простаивающих облачных служб.
AWS — один из крупнейших поставщиков облачных услуг, где вы можете создать надежную бессерверную систему. Однако ниже мы хотели бы коснуться трех точек зрения на различия между Lolo Code (функция интеграции как услуга) и AWS (функция как услуга) при создании бессерверных приложений.
- Расходы
- Спектакль
- Эффективность
Цены на AWS
AWS предлагает вам подход к ценообразованию с оплатой по мере использования. Другими словами, вы будете платить за то, сколько вы использовали ресурсов AWS.
Пример ценообразования AWS
API используется в бессерверном веб-приложении, которое вызывает Lambda для возврата динамического содержимого веб-страницы. Сайт загружает 10 000 страниц в минуту. Каждый запрос API имеет размер 12 КБ, а ответ — 46 КБ.
Это будет в общей сложности 432 миллиона запросов в месяц.
Ежемесячные расходы = 418,8 долларов США (0,97 долларов США за миллион) * в стоимости Amazon API Gateway (не включая Lambda и DynamoDB)
Лоло Код Цены
Lolo Code также предлагает вам модель оплаты по мере использования, но она более проста: вы платите за количество событий, которые ваше приложение должно обрабатывать одновременно, а не за общее количество событий.
Вы можете подписаться на 1 приложение с 1 LCU (или репликой) с 256 МБ памяти и 0,125 ядрами (ЦП), начиная с 9 евро в месяц. Уровень бесплатного пользования включает два приложения с 1 LCU каждое, но требует, чтобы вы подключались к приложению раз в неделю, чтобы оно продолжало работать. Если вы хотите увеличить количество реплик для приложения бесплатного уровня, цена начинается с 9 евро за каждую.
Пример ценообразования Лоло-код
Взяв тот же пример, что и выше для шлюза API, мы провели некоторые расчеты.
Если сайт загружает 10 000 страниц в минуту, каждый запрос API имеет размер 12 КБ, а ответ — 46 КБ, нам нужно обработать 10 000 запросов в минуту для приложения Lolo. Для этого требуется 0,131 (ядер) и 85 Мб памяти. Следовательно, для этого требуются две реплики по 9 евро каждая, но у нас еще останется место для дополнительных запросов в этом приложении. Результат
Ежемесячные расходы = 18 евро в месяц для приложения Lolo.
Lolo можно рассматривать как комбинацию AWS Lambda и API Gateway. Вы также можете использовать запеченное хранилище состояний Lolo для хранения динамического содержимого веб-страницы. Таким образом, не было бы скрытых расходов. Общая сумма, которую вы будете платить, будет составлять 18 евро в месяц.
Производительность: различия между iFaaS и FaaS
AWS может предложить все, что вам нужно, и вы можете разработать крупномасштабное приложение с избыточностью, масштабируемостью и высокой доступностью. С другой стороны, вы должны хорошо знать сетевые системы и быть знакомы с архитектурой AWS, чтобы раскрыть ее потенциал. Бессерверные технологии также имеют свои недостатки. Один из них — пресловутый «холодный старт».
Чтобы проиллюстрировать это, ваше приложение будет ждать в течение определенного периода времени, пока контейнер не будет готов для запуска кода. Обработка этого запроса занимает больше времени, поскольку бессерверному приложению необходимо запустить функцию (т. е. загрузить код, библиотеку, модули и т. д. и инициализировать среду для запуска кода). Эта проблема возникает в любых бессерверных приложениях как в Lolo Code, так и в AWS.
АМС
Общеизвестно, что AWS стала лучше с тех пор, как парки Lambda перешли на технологию Firecracker в 2018 году. Однако, поскольку функция по-прежнему нуждается в раскрутке, холодный запуск будет преобладать.
В AWS вы можете разбудить Lambda с минимальным количеством контейнеров. Но вам придется заплатить дополнительную плату, чтобы запустить его постоянно.
Этим летом у нас был пользователь, который протестировал * отложенный запуск AWS Lambda (используя AWS EU). Результат эксперимента ниже.
+-----------+--------------------
| time | ms
+-----------+--------------------
| 1 min | 180 ms
| 15 min | 750 ms
| 3h | 1467 ms
| 10h | 2060 ms
+-----------+--------------------
Приложения на Lolo Code также имеют проблему «Холодный запуск», но ваше приложение Lolo продолжает работать, пока вы его не остановите. То есть, поскольку Лоло Код работает с контейнерами, ваше приложение технически всегда будет работать, пока вы его не остановите. По сути, вы не должны заботиться о холодном запуске.
Однако пользователь сверху, который провел тест на AWS, сделал точно такой же тест в Lolo Code. * Его результаты показаны ниже.
+-----------+--------------------
| time | ms
+-----------+--------------------
| 1 min | 172 ms
| 15 min | 210 ms
| 3h | 602 ms
| 10h | 890 ms
+-----------+--------------------
Еще кое-что, что следует учитывать, это то, что если ваш скрипт работает слишком долго, то AWS может быть не лучшим выбором. Максимальное время ожидания AWS Lambda составляет 900 секунд (15 минут), тогда как у Lolo нет максимального времени ожидания.
Эффективность: как создать бессерверное приложение и управлять им?
Создавать API как в AWS, так и в Lolo Code несложно. Однако есть разница.
АМС
В AWS вы создаете свою функцию Lambda, а затем подключаете ее к другому сервису, шлюзу API, который будет действовать как ее триггер. Здесь у вас есть анонимная функция, которая срабатывает, когда что-то происходит. Это идеал FaaS, анонимная функция, которая срабатывает только тогда, когда происходит событие.
Поскольку функция не имеет состояния, вам нужно будет получать данные из другого места, в этом случае вы можете использовать AWS DynamoDB для хранения и извлечения данных.

Это выглядит как масштабируемая и надежная конструкция, однако вам необходимо учитывать некоторые важные факторы:
- Как управлять изменениями в программном коде?
- Как быстро развернуть или настроить приложение?
- С чего начать проверку сервисов в случае каких-либо проблем с инфраструктурой?
Полное руководство по созданию HTTP API с помощью Lambda, API Gateway и DynamoDB см. здесь .
Код Лоло
С помощью Lolo Code вы можете добавить триггер HTTP, а затем использовать запеченное хранилище состояний для базы данных. Вы можете добавить новую необработанную функцию, которая будет действовать как ваша лямбда (чтобы следовать точному варианту использования, указанному выше).
Ваше приложение Lolo может выглядеть так.

Вы решите, что находится в блоках кода, просто изменив его код (NodeJS), а затем переименовав его.
Кроме того, Lolo Code предлагает функции библиотеки, которые вы можете копировать и использовать существующие функции шаблона и создавать свои собственные шаблоны. В случае с API мы можем использовать функцию Lolo/CRUD API v3 , чтобы быстро создать CRUD API. Это будет быстрее, чем создавать свою собственную с нуля.

Вам не нужно менять слишком много вещей в разных местах. С Lolo Code вся ваша работа находится в одном месте.
После того, как вы сохраните и запустите свое приложение, вам не придется беспокоиться об обслуживании или подготовке собственных серверов для поддержания его работы (т. е. оно полностью «бессерверное»). Если только вы не решите использовать частную среду выполнения в своей собственной общедоступной облачной учетной записи или частном центре обработки данных. См. документы Lolo runtime-d здесь . Runtime-d — это автономный бинарный файл, который превращает любой ноутбук или Linux-сервер в среду выполнения Lolo.
Резюме
AWS — это широко распространенная облачная платформа, предлагающая полнофункциональные услуги из центров обработки данных по всему миру.
С AWS вы можете делать многое, но также требуются приличные усилия и время, чтобы превратить вашу идею в приложение и развернуть его на AWS. Lolo Code поможет вам ускорить разработку и сохранить ее за меньшие деньги. Хотя Lolo Code использует облако AWS для развертывания приложений, он также предлагает вам возможность использовать собственные среды выполнения, что делает его независимым от облака.
❤️ Лоло