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.
  • Онлайн курс UI/UX Design Pro від Ithillel.
    Навчіться проєктувати інтерфейси з урахуванням поведінки користувачів, розв'язувати їх проблеми через Customer Journey Mapping, створювати дизайн-системи і проводити дослідження юзабіліті, включаючи проєктування мобільних додатків для Android та iOS і розробку UX/UI на основі даних!
    Дізнатися більше
  • Складний моніторинг. Відстежувати роботу системи важче, ніж на звичайному сервері. Загалом діагностувати більшість типових проблем реально. Провайдери надають потрібні інструменти для цього. Але в деяких випадках налагодження продуктивності може бути досить складним.
  • Питання безпеки. Як і в роботі з будь-якими хмарами, з безсерверними обчисленнями варто усвідомлювати ризик витоку даних. Сучасні технології дозволяють забезпечити високий рівень захисту чутливої інформації, але це ніколи не буде 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 відсутні плагіни та перевикористання компонентів, плюс налаштування конфігів може викликати певні питання у новачків.

  • Онлайн-курс "Бренд-менеджмент" від Laba.
    Розберіться в комплексному управлінні брендом: від його структури до комунікації з аудиторією.Дізнайтесь принципи побудови бренд-стратегії, проведення досліджень і пошуку свого споживача.
    Детальніше про курс
  • Claudia.js. Це компактний і дуже легкий фреймворк, який підтримує виключно JavaScript і створений для обмежених задач. Завдяки цій платформі можна автоматизувати створення JS-середовища, конфігурування та розгортання застосунків на AWS Lambda та API Gateway.Claudia.js без проблем підтримує одразу кілька версій, а для запуску і оновлення проєкту вистачить лише однієї простої команди. Також цей інструмент запускає автоматичне масштабування застосунків. Плюс у цьому фреймворці можна створити паралельно зі старим проєктом новий — та перенести до нього наявну архітектуру. А ще з Claudia.js можна створювати мультиплатформених чат-ботів та реалізовувати REST API на API Gateway.
  • 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 тощо. Кожен інструмент може суттєво простити розробку тих чи інших типів застосунків на основі безсерверних обчислень.

Головне — не боятися нового і тестувати. Адже тільки так можна прийти до більш продуктивної роботи та цікавих, новаторських рішень.

Курс Job Interview Crash Course від Enlgish4IT.
Отримайте 6 шаблонів відповідей на співбесіді, які ви зможете використовувати для структурування своїх відповідей. Отримайте знижку 10% за промокодом ITCENG.
Приєднатися

Якщо ви знайшли помилку, будь ласка, виділіть фрагмент тексту та натисніть Ctrl+Enter.

Курс UI/UX дизайну від Mate academy.
На курсі ви навчитесь створювати інтуїтивно зрозумілі та привабливі інтерфейси вебсайтів і застосунків. Ви також освоїте ключові принципи дизайну та дізнаєтесь як виділятися на ринку. А ми вас не лише навчимо, а й працевлаштуємо. Сертифікат теж буде!
Дізнатися більше про курс

Цей матеріал – не редакційний, це – особиста думка його автора. Редакція може не поділяти цю думку.

Найбільш обговорювані статті

Топ текстів

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

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

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