ru:https://highload.today/blogs/besservernye-frejmvorki-chto-eto-i-kak-oni-oblegchayut-rabotu-developeram/ ua:https://highload.today/uk/blogs/bezserverni-frejmvorki-shho-tse-ta-yak-voni-polegshuyut-robotu-developeram/
logo
Інструменти      22/09/2023

Бессерверные фреймворки: что это и как они облегчают работу девелоперам

Максим Деренський BLOG

Full Stack JavaScript Developer у команді NIX

Бессерверные фреймворки — это программные платформы, упрощающие работу с провайдерами услуг FaaS (Function as a Service). Согласно этой модели, в облаке происходит автоматическое выделение серверных ресурсов для каждой функции. Система постоянно производит и удаляет контейнеры под отдельные запросы.

Но не следует полагать, что серверов вообще нет. Они есть, однако настройки, обновления и контроль производятся непосредственно облачным сервисом. Разработчики к этому вообще не причастны и могут сосредоточиться на реализации бизнес-логики.

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

Преимущества бессерверных фреймворков

Скорость развертывания

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

Интеграция с другими инструментами

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

Ускорение ответов

Многие бессерверные фреймворки помогают если не полностью избавиться, то хотя бы минимизировать лаг между запросом и ответом FaaS-платформы. Такой функционал автоматизирован. От разработчика не требуется никаких усилий в настройках.

Они же помогают избежать большинства проблем бессерверных вычислений, а именно:

  • Замедленная работа приложения.  Без погрузки облачный сервис останавливает мощности. Для нового запуска обработки запросов требуется время. Для пользователей это отображается в незначительных задержках в приложении. Этот эффект особенно проявляется на холодном старте. Хотя кэширование данных может исправить ситуацию.
  • Технические ограничения.  Провайдеры бессерверных вычислений не всегда поддерживают софт, фреймворки или посторонние API. Это касается в основном специфических решений. Основные технологии будут работать у всех поставщиков FaaS.
  • Онлайн-курс "2D Animation" від Skvot.
    Покроково та з фідбеком від лекторки увійдіть у 2D-анімацію через вивчення софтів, інструментів та створення кейсу у портфоліо.
    Програма курсу та реєстрація
  • Сложный мониторинг.  Отслеживать работу системы труднее, чем на обычном сервере. В общем, диагностировать большинство типовых проблем реально. Провайдеры предоставляют необходимые инструменты для этого. Но в некоторых случаях отладка производительности может быть достаточно сложной.
  • Вопросы безопасности.  Как и в работе с любыми облаками, с бессерверными вычислениями следует отдавать себе отчет в риске утечки данных. Современные технологии позволяют обеспечить высокий уровень защиты чувствительной информации, но это никогда не будет 100%. Для некоторых бизнесов это важно.

Какие бессерверные фреймворки бывают и для чего применяются

Перечислить их абсолютно все в этой статье обзора невозможно. Поэтому сосредоточусь на 10-ти наиболее известных.

  • Architect . Этот фреймворк с открытым кодом является мощной платформой для решения комплексных задач по разработке, развертыванию и тестированию инфраструктуры в AWS. 

    Работает по модели Infrastructure as a Code и построен на другом фреймворце AWS SAM (о нем ниже). Однако у Architect упрощены абстракции, что снижает порог входа для разработчиков при настройке инфраструктуры AWS. 

    В работе фреймворка используются Node.js, NPM-пакеты и Google Cloud Build, что упрощает разработку. Основой же является использование app.arc-файла, позволяющего выполнять автоматическую компиляцию кода и настройки доступов. Фреймворк позволяет легко масштабировать проекты и требует минимального внимания к мониторингу девелоперов. 

  • AWS Amplify . Этот фреймворк помогает быстро создавать и запускать на AWS как полноценные веб- или мобильные fullstack-приложения, так и прототипы. Для создания программ и деплой используются CLI и веб-консоль, которые можно интегрировать в нужные инструменты разработки, что упрощает управление процессом. Для запуска простых статических приложений или лендингов понадобится несколько строк кода. При этом AWS Amplify предоставляет действительно широкие возможности по настройкам баз данных, авторизации, анализу, API (REST и GraphQL), AI/ML-рекомендациям, PubSub, email-нотификациям и другим элементам. А еще фреймворк действительно универсален: он поддерживает Angular, React Native, Vue.js, Flutter, Next.js, Ionic и многие другие фреймворки и инструменты.
  • AWS Chalice.. Этот фреймворк с открытым кодом предназначен для создания и развертывания в среде AWS Lambda веб-приложений и REST API, написанных на Python. Его основные принципы взяты из Flask, поэтому разработчики смогут достаточно быстро стартовать. AWS Chalice поддерживает интеграцию со многими сервисами Amazon: от API Gateway до SQS. Вся работа проходит через CLI, и для создания, например, CI/CD-пайплайнов, хватает нескольких команд. Также во фреймворке есть функционал для работы с приложениями с поддержкой IAM-стратегии для идентификации пользователей и, например, подключения нативных Kubernetes-приложений. В целом, AWS Chalice позволяет планировать и поддерживать полный жизненный цикл продукта.
  • AWS Serverless Application Model (SAM). Этот официальный продукт Amazon максимально интегрирован с AWS. Он имеет развитое коммьюнити и очень активно развивается в последние годы. Интересно, что амазоновцы добавили немало фич благодаря идеям пользователей. Фреймворк позволяет разрабатывать, развертывать и обслуживать любые приложения, в том числе с асинхронными процессами.AWS SAM использует CloudFormation, но синтаксис более лаконичен. Фреймворк поддерживает Docker images, что упрощает работу с лямбда-функциями. А еще тестировать обновление можно в облаке, а не локальной эмуляции бессерверных приложений. Но у AWS SAM отсутствуют плагины и переиспользование компонентов, плюс настройка конфигов может вызвать определенные вопросы у новичков.
  • Claudia.js. Это компактный и очень легкий фреймворк, поддерживающий исключительно JavaScript и созданный для ограниченных задач. Благодаря этой платформе можно автоматизировать создание JS-среды, конфигурирование и развертывание приложений на AWS Lambda и API Gateway. Claudia.js без проблем поддерживает сразу несколько версий, а для запуска и обновления проекта хватит только одной простой команды. Также этот инструмент запускает автоматический зум приложений. Плюс в этом фреймворце можно создать параллельно со старым проектом новый и перенести в него существующую архитектуру. А еще с Claudia.js можно создавать мультиплатформенные чат-боты и реализовывать REST API на API Gateway.
  • Онлайн-курс Бізнес-аналіз. Basic Level від Ithillel.
    В ході курсу студенти навчаться техніці збору і аналізу вимог, документуванню та управлінню документацією, управлінню ризиками та змінами, а також навчаться моделювати процеси і прототипуванню.
    Приєднатися
  • Flogo. Этот фреймворк с открытым кодом написан на Golang и дает в некоторых вопросах уникальные возможности. К примеру, у него есть не только командная строка, но и веб-UI. То есть вполне возможно создать приложение для AWS Lambda в графическом интерфейсе, не написав ни строчки кода. Другим интересным функционалом Flogo является разработка проектов с использованием только Docker. Хотя фреймворк универсален и его можно кастомизировать под свои нужды, все же наиболее удачно он проявляет себя в нескольких задачах. Во-первых, организация потоков данных между микросервисами в приложениях на основе событийно-ориентированной архитектуры. В этих случаях разработка быстрая, и многие коды можно переиспользовать. Во-вторых, это объекты для ML, AI и IoT.
  • Pulumi. Этот опенсорсный фреймворк можно использовать для разработки и деплой приложений, но все же его главная цель — управление облачной инфраструктурой по модели IaaS. Эта платформа может быть использована для всех основных провайдеров: AWS, Azure и GCP. Также он поддерживает работу с Kubernetes и может оперировать кластерами, контейнерами, бессервенными функциями, базами данных, виртуальными машинами и т.п. Плюс Pulumi довольно универсален по языкам: он работает с проектами на .NET, Python, JavaScript, TypeScript и Golang.Важной особенностью является CrossGuard Guides для реализации модели Policy as Code. При этом для старта работы с фреймворком не понадобится много усилий или знаний — он легок для изучения.
  • Serverless . Многие годы именно этот фреймворк с открытым кодом был фактическим стандартом для отрасли. Это действительно комплексное и универсальное решение.

    С его помощью можно разрабатывать единые лямбда-функции, любые приложения, REST API, системы IoT, ML и т.д. Он работает со всеми провайдерами (AWS, Azure и GCP) и поддерживает больше всего языков среди конкурентов (Java, Python, PHP, Node.js, C#, Ruby, Swift, Kotlin, Scala).Для деплой приложений и инфраструктуры используется легкий абстрактный синтаксис на основе YAML (хотя сами настройки не так просты). Также для Serverless создано большое количество плагинов на любые случаи. Плюс он поддерживает Kubernetes и предоставляет возможности для очень гибкого автоматического зума.
  • Ruby on Jets. Как не сложно догадаться под названием, этот фреймворк предназначен для языка Ruby (хотя часто платформу называют просто Jets). Он помогает создавать и развертывать приложения на базе AWS Lambda с использованием SQS, SNS и, например, DynamoDB. Это могут быть самые разные программы: от приложений для API до продуктов с событийно-ориентированной архитектурой для все того же IoT. 

    Благодаря этой платформе можно гармонично совмещать сервисы и ресурсы Amazon для написания автономных функций. Также важно, что Ruby on Jets может конвертировать код сразу в лямбду-функции, что экономит много времени разработчика. Еще одним преимуществом фреймворка является детализированная документация, в которой можно найти много конкретных примеров.

  • Zappa. Эта платформа для создания и деплой приложений на AWS Lambda работает с Python. При этом она поддерживает многие связанные фреймворки, в частности Django, Flask, Pyramid или Bottle. Также Zappa позволяет разрабатывать приложения на основе WSGI и использует DynamoDB для обработки асинхронных запросов. А еще по умолчанию здесь поддержка IAM для аутентификации. Все это придает фреймворку универсальный характер: с ним можно работать как над статическими сайтами или API, так и над большими проектами, например, для обработки текстов или изображений.При этом управление проектами очень простое и быстрое. Например, для развертывания или обновления приложения требуется только одна команда.

Все это только вершина айсберга. Постоянно появляются новые бессерверные фреймворки. Среди достаточно мощных платформ можно упомянуть AWS CDK, Midway, Apex Up, Webiny, Nuclio, Deep Framework и т.д. Каждый инструмент может существенно простить разработку тех или иных типов приложений на основе бессерверных вычислений.

Главное — не бояться нового и тестировать. Ведь только так можно прийти к более продуктивной работе и интересным, новаторским решениям.

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.

Онлайн-курс "Предметний дизайн" від Skvot.
Навчіться створювати функціональні, трендові та ергономічні дизайни меблів та предметів інтер’єру.
Детальніше про програму курсу і лекторів

Этот материал – не редакционный, это – личное мнение его автора. Редакция может не разделять это мнение.

Ваша жалоба отправлена модератору

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: