Посібники

Що таке serverless? Серверлес-обчислення простими словами

Serverless — це спосіб запускати код, у якому ви не налаштовуєте і не керуєте жодними серверами самостійно. Ви передаєте свій код хмарному провайдеру, а він запускає його лише тоді, коли щось його викликає — веб-запит, завантажений файл, сповіщення про платіж — а потім зупиняє. Зазвичай ви платите за час, протягом якого ваш код фактично працює, а не за машину, що стоїть без діла.

Чому serverless важливий, коли ви створюєте щось за допомогою ШІ

Коли ви створюєте застосунок за допомогою ШІ і дивитеся на варіанти хостингу або код, ви натрапите на «serverless-функції», «edge-функції» або «хмарні функції». Багато хостингових платформ їх пропонують, і деякі конструктори на основі ШІ розгортають бекенди саме так. Розуміння цієї моделі допомагає з трьома практичними питаннями:

  • Вартість. Чи коштуватиме ваш застосунок грошей, коли ним ніхто не користується?
  • Швидкість. Чому перший запит після тихого періоду повільніший?
  • Ліміти. Чому довге завдання — створення великого звіту, обробка відео — вичерпало час?

Також корисно знати, чим serverless не є: це не відсутність бекенду. У вас усе одно є серверний код; просто хтось інший керує машинами. Основи див. у що таке сервер.

Аналогія з повсякденного життя

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

Serverless — як виклик таксі. Ви платите лише за поїздки, які робите, і якщо сто людей одночасно потребують поїздки, приїде сто таксі. Але може бути коротке очікування, поки машина під'їде (холодний старт), у кожної поїздки є максимальна тривалість, а водій не пам'ятає вас з минулої поїздки (функції без стану, stateless).

Як працюють serverless-функції

У найпоширенішій формі, яка називається functions as a service (функції як послуга):

  1. Ви пишете функцію — невеликий фрагмент коду, що обробляє один тип події, наприклад «обробити POST на /api/bookings».
  2. Ви розгортаєте її. Провайдер зберігає її і пов'язує з тригером: URL, розкладом, новим файлом у сховищі, повідомленням у черзі.
  3. Надходить подія. Провайдер запускає копію вашої функції (або повторно використовує теплу) і повертає результат.
  4. Вона масштабується сама. Якщо одночасно надійде тисяча запитів, провайдер запустить багато копій паралельно, до лімітів вашого облікового запису.
  5. Вона простоює. Коли трафік припиняється, копії зупиняються. Якщо нічого не працює, за обчислення ви не платите.

Маленька serverless-функція мовою JavaScript може виглядати так:

export default async function handler(request) {
  const { name } = await request.json();
  return Response.json({ message: `Hello, ${name}` });
}

Немає коду, щоб запустити сервер, відкрити порт або тримати процес запущеним. Платформа все це бере на себе.

«Serverless» також вживають ширше для інших керованих сервісів, які масштабуються автоматично і тарифікуються за використання — наприклад, serverless-бази даних, які призупиняються в простої.

Ключові терміни

ТермінЗначення
Функція (FaaS)Невелика одиниця коду, яку провайдер запускає за запитом.
Тригер / подіяТе, що запускає функцію — HTTP-запит, завантаження файлу, таймер, повідомлення в черзі.
Холодний стартЗатримка, коли перед обробкою запиту має стартувати нова копія функції.
ТеплаКопія, яка вже працює і може відповісти миттєво.
Без стану (stateless)Функція не зберігає пам'ять між запусками. Усе, що має зберігатися, кладеться в базу даних або сховище.
ТаймаутМаксимальний час одного запуску. Наприклад, максимум AWS Lambda — 15 хвилин; багато платформ мають значно менше за замовчуванням.
Edge-функціяФункція, що працює в багатьох локаціях поблизу користувачів, часто з жорсткішими лімітами.
Масштабування до нуля (scale to zero)Нічого не працює і за обчислення не платиться, коли трафіку немає.

Приклад: невеликий сайт бронювання

Сайт бронювання студії йоги щонеділі ввечері отримує сплеск відвідувань, коли публікують новий розклад, а решту тижня — дуже мало.

  • На сервері, що працює постійно, студія платить за машину 24/7, розраховану на пік неділі ввечері, яка в інший час здебільшого простоює.
  • З serverless-функціями GET /api/classes і POST /api/bookings — це функції. Недільний наплив автоматично запускає багато копій; у тихий вівторок зранку майже нічого не працює, і рахунок близький до нуля.

Компроміси теж проявляються. Перша людина, яка відкриває сайт у вівторок зранку, може чекати трохи довше через холодний старт. База даних має обробляти багато короткочасних з'єднань від багатьох копій функцій, що може вимагати пулу з'єднань. А якщо студія згодом захоче завдання «згенерувати щорічний PDF відвідуваності для всіх», воно може перевищити ліміт часу функції і потребувати запуску деінде.

Коли serverless підходить — а коли ні

Добре підходитьМенш підходить
Трафік низький, сплесковий або непередбачуванийПостійний великий трафік, де сервер, що працює постійно, може бути дешевшим
Короткі завдання запит/відповідь: API, обробники форм, вебхукиДовгі завдання: велика обробка відео, великі імпорти даних
Невеликі команди, які не хочуть керувати серверамиЗастосунки, що тримають відкриті з'єднання (деякі чати або мультиплеєр), якщо платформа цього не підтримує
Обробка подій: «коли файл завантажено, створити мініатюру»Застосунки, яким потрібно багато пам'яті між запитами

Поширені хибні уявлення

  • «Serverless означає відсутність бекенду». Це означає відсутність серверів для керування. Ви все одно пишете і захищаєте бекенд-код.
  • «Serverless завжди дешевший». Дешевий при малому обсязі, але оплата за запит може швидко зрости при великому і постійному обсязі.
  • «Serverless масштабується безмежно». У платформ є ліміти паралельності, і ваша база даних може стати вузьким місцем значно раніше за функції.
  • «Файли, збережені у функції, будуть там наступного разу». Локальне сховище тимчасове. Використовуйте базу даних або файлове сховище.
  • «Масштабування до нуля — це те саме, що serverless». Пов'язані, але не ідентичні. Деякі платформи запускають ваш застосунок як звичайний сервер, який засинає в простої і прокидається з наступним запитом — схожа економія і схожа затримка першого запиту, але без таймаутів на запит, як у функцій.

Що питати у вашого конструктора ШІ

  • «Цей бекенд працюватиме як serverless-функції чи як сервер, що працює постійно або засинає? Що це означає для вартості?»
  • «Чи можуть деякі завдання тривати довше за ліміт часу платформи? Якщо так, як їх обробляти?»
  • «Зберігай усе, що має бути збережено, у базі даних або файловому сховищі, а не в пам'яті чи локальних файлах.»
  • «Як керувати з'єднаннями з базою, якщо одночасно працює багато копій?»
  • «Яка затримка першого запиту після того, як застосунок простоював?»

Як Mythex хостить застосунки

Mythex не описує свій хостинг як serverless-функції. Коли ви публікуєте, ваш застосунок працює як звичайний вебзастосунок або контейнер, яким керує Mythex — нічого налаштовувати не потрібно. Це масштабування до нуля: опубліковані застосунки і їхні бази даних засинають у простої і прокидаються з наступним відвідуванням; засинаючий застосунок не витрачає грошей на обчислення, а додаткові машини запускаються лише при великому трафіку (Pro дозволяє до 3 на сервіс). Прикріплена база Postgres також засинає після 5 хвилин простою і тарифікується за час, протягом якого була активна. Тож ви отримуєте значну частину переваги «плати за використане», з такою самою затримкою першого запиту після тихого періоду. Див. ліміти хостингу у документації та наші посібники про веб-хостинг і як зменшити витрати на хостинг.

Запитання

Що означає serverless простими словами?

Serverless означає, що ви передаєте свій код хмарному провайдеру, а він запускає його лише тоді, коли це потрібно — наприклад, коли надходить запит — без того, щоб ви налаштовували або обслуговували сервери. Зазвичай ви платите за час, протягом якого код фактично працює, а не за машину, що постійно увімкнена.

Чи справді в serverless немає серверів?

Сервери є; просто ви ними не керуєте. Провайдер запускає ваш код на своїх машинах, стартує його, коли надходять запити, масштабує під навантаженням і зупиняє, коли він простоює.

Що таке холодний старт?

Холодний старт — це додаткова затримка, коли serverless-функція запускається після простою, бо провайдер спершу має стартувати нову копію. Вона може бути від ледь помітної до однієї секунди і більше, залежно від платформи, мови та розміру коду.

Чи дешевший serverless за звичайний сервер?

Для застосунків з малим або нерівномірним трафіком часто так, бо в простої ви платите майже нічого. Для застосунків із великим постійним трафіком сервер, що працює постійно, може обійтися дешевше. Це залежить від вашого патерну використання і цін провайдера.

Які є приклади serverless-платформ?

Відомі приклади: AWS Lambda, Google Cloud Run functions, Azure Functions, Cloudflare Workers, а також функції, які пропонують хостингові платформи на кшталт Vercel і Netlify.

Mythex · Pricing · Створюйте що завгодно з ШІ · Шаблони сайтів і застосунків · Порівняння Mythex · Глосарій створення застосунків за допомогою ШІ · Безкоштовні інструменти для створення застосунків за допомогою ШІ · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)