Вас захоплює ідея безсерверних технологій? Ви готові розпочати новий проєкт, але не знаєте, з чого почати?
Представляємо добірку найпопулярніших фреймворків для розробки безсерверних застосунків, які стануть вам у нагоді!
Безсерверні обчислення набирають популярності серед розробників, які цінують можливість менше займатися адмініструванням і більше приділяти часу створенню. Хоча ця технологія відносно нова, багато розробників та інженерів активно працюють над розробкою інноваційних рішень для майбутнього безсерверних операцій.
Як вам, напевно, відомо, “безсерверний” не означає відсутність серверів. Це лише означає менше серверів і більше функціональності. Якщо ви шукаєте надійну FaaS-платформу (функції як послуга) для свого наступного проєкту, перегляньте наш огляд найкращих безсерверних обчислювальних платформ.
З огляду на це, розгляньмо доступні фреймворки. Наприкінці ми поділимося кількома захопливими проєктами, що розробляються в безсерверній сфері, тож не пропустіть їх!
AWS Amplify
Створюйте масштабовані безсерверні програми для веб та мобільних пристроїв за допомогою фреймворку AWS Amplify, який надає гнучкість. Налаштовуйте безсерверні бекенди з даними, сховищем, аутентифікацією та іншими функціями, використовуючи інтелектуальні робочі процеси.
Підключайте мобільні та вебзастосунки до існуючих або нових ресурсів AWS з меншою кількістю рядків коду. Ви можете розміщувати та розгортати односторінкові вебзастосунки, програми, що рендеряться на сервері, та статичні вебсайти в кілька кліків. Це також спрощує управління контентом і користувачами застосунків.
AWS Amplify допомагає мобільним і веб-розробникам швидше створювати повноцінні програми на AWS і налаштовувати їх відповідно до своїх потреб. Amplify підтримує широкий спектр вебфреймворків, таких як React, Angular, JavaScript, Vue.js, Next.js та інші, а також мобільні платформи, такі як iOS, Ionic, Flutter, Android і React Native.
Ви можете інтегрувати безліч компонентів інтерфейсу користувача Amplify для прискорення розробки програми. Отримайте доступ до багатьох функцій та інструментів, таких як аутентифікація, взаємодії, функції, DataStore, керування користувачами, API (REST, GraphQL), Analytics, AI/ML прогнозування, сховище, PubSub, push-сповіщення тощо. Крім того, вам доступні керований хостинг, попередній перегляд PR, CI/CD, спеціальні домени та моніторинг розгортання.
Midway
Скористайтеся перевагами безсерверного фреймворку Node.js для створення традиційних серверних застосунків, невеликих програм, мікросервісів та безсерверних сервісів за допомогою Midway. Він написаний на TypeScript і використовує механізм ін’єкції IoC для розділення логіки застосунку, що робить розробку великих програм Node.js більш природною.
Midway може використовувати Express, EggJS або Koa як базові фреймворки. Він надає базові рішення, такі як GRPC, Dubbo.js, RabbitMQ і Socket.io для самостійного використання. Крім того, Midway працює як безсерверний вебфреймворк Node.js для розробників повного стеку або інтерфейсу.
Midway дозволяє створювати програми нового покоління, які працюють у контейнері, віртуальній машині, хмарі Alibaba, AWS і хмарі Tencent. Ви також можете легко інтегрувати його з Vue і React. Ви знайдете багато корисних функцій, таких як:
- Групові та масштабовані плагіни
- Розширена групова сумісність і архітектура проміжного ПЗ
- Можливість відокремлення та багатошаровість застосування
- Сучасний досвід розробки
- Підтримка проміжного ПЗ Koa та плагінів Egg.
Webiny
Отримайте все необхідне для проєктування, розгортання та створення безсерверних програм за допомогою Webiny, безсерверного фреймворку для додатків. Він розроблений для різноманітних сценаріїв використання. Ви можете змінювати архітектуру, технологічний стек і адаптувати їх до потреб вашої організації та проєкту.
Створюйте бізнес-вебсайти та програми, що використовують SEO, маршрутизацію, попередній рендеринг, безпеку, розгортання, об’єднання тощо. Створюйте внутрішні або зовнішні API, використовуючи резолвери GraphQL. Не обмежуйтеся одним застосунком; створюйте програми, які використовують різні бази даних. Ви можете використовувати драйвери баз даних NodeJS для взаємодії із зовнішніми базами даних.
Webiny забезпечує групування коду, IaC, механізми розгортання та організацію проєкту. Запропонуйте свій продукт як SaaS для користувачів по всьому світу. Захистіть частину або цілі програми за допомогою ACL із вбудованим AWS Cognito та системою безпеки.
Додайте підтримку Auth0, OKTA та інших сервісів. Ви отримаєте безголову CMS, конструктор сторінок, конструктор форм, файловий менеджер та багато іншого. Створюйте шаблонний код за допомогою плагінів CLI від лямбда-функцій до нових API GraphQL.
Інтерфейс адміністратора Webiny містить понад тридцять різних компонентів React. Ви також отримаєте захист від DDoS, CDN і надійність даних 11 9. Webiny заощадить ваш час, усунувши необхідність проб, помилок та досліджень.
AWS Chalice
Шукаєте фреймворк для написання безсерверних програм на Python?
Спробуйте AWS Chalice, який дозволяє створювати та розгортати програми за допомогою AWS Lambda.
Chalice надає інструмент командного рядка для створення, розгортання та керування програмою, а також API на основі декоратора для інтеграції з Amazon S3, Amazon API Gateway, Amazon SQS, Amazon SNS та іншими сервісами AWS.
Він дозволяє створювати REST API, виконувати періодичні завдання, підключати лямбда-функції до події S3 і черги SQS, а також використовувати інші ресурси AWS. Після написання коду Chalice дозволить вам швидко запустити та розгорнути програму. Chalice підтримує всі версії Python, які підтримує AWS Lambda, включаючи Python 2.7, 3.6, 3.7 та 3.8.
Налаштуйте всі облікові дані перед розгортанням програми. Якщо ж ви вже налаштували їх для AWS CLI або boto3, то цей крок можна пропустити. Після розгортання ви можете вносити зміни та повторно розгортати їх. Використовуйте навчальні посібники, теми та посилання на API для покращення своїх знань.
Zappa
Zappa — це безсерверний фреймворк для розробки програм на Python. Він спрощує створення та розгортання безсерверних програм, керованих подіями, на API Gateway і AWS Lambda. Використовуйте його для безперервної роботи, відсутності простою та необмеженого масштабування з мінімальними витратами.
Перед встановленням і налаштуванням переконайтеся, що у вас є Python 3.x і обліковий запис AWS, а також правильно налаштовано файл облікових даних AWS. Zappa можна легко встановити за допомогою pip.
Zappa автоматично налаштовує параметри розгортання. Після правильного налаштування параметрів розгорніть програму у виробничому середовищі за допомогою однієї команди. Використовуйте команду шаблону, якщо вам потрібен шаблон API Gateway CloudFormation. Розгорніть Zappa на спеціальних субдоменах і доменах за допомогою сертифікатів SSL, AWS Certificate Manager і Let’s Encrypt.
Увімкніть захищені кінцеві точки на шлюзі API, такі як API-ключ, політика IAM, авторизатори API Gateway Lambda, авторизатор пулу користувачів Cognito та політика ресурсів API Gateway. Крім того, ви можете встановити змінні середовища, як-от локальне середовище, віддалене середовище AWS і віддалене середовище через файл S3.
Architect
Створюйте, розгортайте та підтримуйте безсерверну інфраструктуру на основі хмарних функцій AWS нового покоління, використовуючи повні локальні офлайн-процеси тощо.
Це досить складний проєкт, і вам потрібно прочитати філософію проєкту та сторінку документації.
Up
Up – це фреймворк, що допомагає розгортати безсерверні програми з необмеженим потенціалом масштабування. Крім того, ви можете використовувати Up для розгортання статичних вебсайтів, API тощо. Це дає вам можливість зосередитися на найважливішому.
На щастя, Up розгортає традиційні екземпляри HTTP-сервера, тому вам не потрібно вивчати новий протокол. Натомість скористайтеся улюбленим фреймворком, як-от Django або Express, щоб розпочати роботу.
Claudia.js
Claudia.js дозволяє розробникам переносити проєкти на Node.js у системи Lambda та API. Claudia автоматизує процеси розгортання, налаштування та автоматично налаштує ваше JavaScript-середовище для сучасної розробки.
Що це означає для вас? Використовуючи Claudia, ви можете розпочати свою подорож у світ мікросервісів за лічені хвилини. Як наслідок, ви витрачатимете менше часу на налаштування та більше на вирішення реальних проблем.
Основні переваги використання Claudia:
- Розгортайте, оновлюйте та керуйте своїми екземплярами за допомогою однієї команди
- Бездоганно працює з пакетами NPM
- Інтегрована шаблонна структура, що надає більше місця для зосередження на поточних завданнях
- Керування версіями для одночасної роботи над кількома версіями
- Проста крива навчання
Jets
Ви любите Ruby?
Тоді вам сподобається Jets — безсерверний Ruby фреймворк для створення та розгортання мікросервісів. Фреймворк містить всі необхідні інструменти, які допоможуть вам створити структури API та розгорнути їх на Lambda.
Jets також підходить для написання окремих функцій, які можна використовувати для з’єднання різних сервісів і ресурсів, наданих AWS.
Принцип роботи Jets полягає в тому, що фреймворк перетворює наявний код у функції для Lambda та інших сервісів AWS. Як результат, ви можете не витрачати час на розгортання та підготовку, а більше приділяти написанню функціонального коду.
Pulumi
Pulumi надає простий у використанні SDK, який допоможе вам створювати та розгортати програмне забезпечення на будь-якій хмарній платформі. SDK підтримує контейнери, розміщені служби, основну інфраструктуру та контейнери.
Ви можете писати код будь-якою зручною мовою. Pulumi надасть та керуватиме ресурсами від таких постачальників, як GCP, AWS, Kubernetes і Azure.
Serverless
Напевно, ви думаєте: “Комусь пощастило отримати доменне ім’я Serverless.com і просто використовують свою удачу!”. Повірте, це не так.
Безсерверний фреймворк має 30 000 зірок на GitHub, що робить його найпопулярнішим безсерверним фреймворком.
Що можна робити з цим фреймворком? Перш за все, можна створювати програми, що використовують мікросервіси як засіб реагування на події. Наприклад, ваші програми реагують лише тоді, коли є запит, і масштабуються відповідно до вимог. Це дозволяє заощадити багато грошей, які інакше пішли б на підтримку неактивних сервісів.
Фреймворк використовує нові обчислювальні сервіси, керовані подіями, як-от AWS Lambda, Google Cloud Functions тощо. Це інструмент командного рядка, що надає каркаси, автоматизацію робочих процесів і найкращі практики для розробки та розгортання вашої безсерверної архітектури. Він також повністю розширюваний за допомогою плагінів.
Sigma
Sigma — це нове хмарне IDE, створене для безсерверної розробки. Це не просто базовий текстовий редактор з деякими функціями, а повнофункціональне IDE, що дозволяє писати код і публікувати його як працюючу програму в реальному часі.
Sigma IDE може взаємодіяти з обраною безсерверною платформою (FaaS), маючи лише файл конфігурації. Це дозволяє заощадити нескінченну кількість часу, який інакше було б витрачено на рутинні завдання.
На відміну від інших інструментів, що намагаються досягти схожого результату, Sigma є безсерверним. IDE працює повністю з браузера і не потребує внутрішньої служби для виконання всіх функцій, за винятком кількох. Зокрема, серверна частина потрібна для автентифікації користувачів і збору аналітичних даних.
На це варто звернути увагу та спробувати на собі.
Auth0
Якщо вас цікавить концепція Serverless, то, ймовірно, ви чули про Serverless Framework, який згадувався раніше.
Auth0 об’єднав зусилля для створення Auth0 Webtasks, корисного доповнення для всіх користувачів Serverless Framework. Проєкт називається Webtask, і ви можете знайти домашню сторінку тут.
По суті, Webtask можна використовувати для створення програм, не турбуючись про інфраструктуру. Напишіть логіку на стороні сервера та розгорніть всі свої функції за допомогою CLI, наданого Webtask. Потім ви зможете взаємодіяти із серверною частиною за протоколом HTTP.
Оновлення: вебсайт Webtask закрито.
Приклади безсерверних програм
Раніше ми говорили про безсерверні фреймворки. Це додатковий ресурс, що демонструє багато різних прикладів використання безсерверної інфраструктури.
Хоча ці приклади орієнтовані на конкретний фреймворк, ви все одно можете насолоджуватися процесом вивчення нових концепцій безсерверних обчислень.
Приклади доступні для таких платформ, як AWS, Azure, Kubeless, Google Cloud і OpenWhisk. Крім того, є підтримка шести різних мов програмування: nodeJS, Python, Go, Java, PHP і Swift.
Ознайомтеся з деякими з цих популярних прикладів, як-от Twitter Joke Bot і OAuth Dropbox API.
Якщо ви шукаєте практичне навчання, подивіться цей онлайн курс.