Какво е Serverless? Serverless изчисления на прост език
Serverless е начин за изпълнение на код, при който сам не настройваш и не управляваш никакви сървъри. Предаваш кода си на облачен доставчик, а той го изпълнява само когато нещо го задейства — уеб заявка, качен файл, известие за плащане — и после спира. Обикновено плащаш за времето, през което кодът реално работи, а не за машина, която стои празна.
Защо serverless има значение, когато строиш с AI
Когато разглеждаш опции за хостинг или код на приложение, построено с AI, ще се натъкнеш на „serverless функции“, „edge функции“ или „cloud функции“. Много хостинг платформи ги предлагат и някои AI builder-и разгръщат бекенди по този начин. Разбирането на модела ти помага с три практически въпроса:
- Цена. Ще струва ли пари приложението ти, докато никой не го ползва?
- Скорост. Защо първата заявка след тих период е по-бавна?
- Лимити. Защо дълга задача — генериране на голям отчет, обработка на видео — изтече по време?
Полезно е и да знаеш какво serverless не е: не е липса на бекенд. Пак имаш сървърен код; просто някой друг управлява машините. За основите вижте какво е сървър.
Ежедневна аналогия
Традиционният сървър е като собствена кола. Винаги е там, готов да тръгне веднага, но плащаш за нея — застраховка, паркиране, поддръжка — независимо дали я карам или не.
Serverless е като поръчване на такси. Плащаш само за пътуванията, които правиш, и ако стотина души искат превоз едновременно, идват стотина таксита. Но може да се наложи кратко чакане, докато колата пристигне (cold start), всяко пътуване има максимална продължителност и шофьорът не те помни от последното пътуване (функциите са без състояние, stateless).
Как работят serverless функциите
В най-честата форма, наречена functions as a service:
- Пишеш функция — малко парче код, което обработва един вид събитие, например „обработи POST към
/api/bookings“. - Разгръщаш я. Доставчикът я съхранява и я свързва с задействане: URL, график, нов файл в хранилището, съобщение в опашка.
- Пристига събитие. Доставчикът стартира копие на функцията ти (или използва топло, вече работещо) и изпълнява, връщайки резултата.
- Мащабира се сам. Ако пристигнат хиляда заявки едновременно, доставчикът изпълнява много копия паралелно, до лимитите на акаунта ти.
- Минава в простой. Когато трафикът спре, копията се спират. Без нищо работещо не плащаш за изчисления.
Малка serverless функция на JavaScript може да изглежда така:
export default async function handler(request) {
const { name } = await request.json();
return Response.json({ message: `Здравей, ${name}` });
}
Няма код за стартиране на сървър, отваряне на порт или поддържане на процес в работа. Платформата се грижи за всичко това.
„Serverless“ се използва и по-свободно за други управлявани услуги, които се мащабират автоматично и се таксуват според употребата — например serverless бази данни, които спират, когато са в простой.
Ключови термини
| Термин | Значение |
|---|---|
| Функция (FaaS) | Малка единица код, която доставчикът изпълнява при нужда. |
| Задействане / събитие | Какво стартира функцията — HTTP заявка, качване на файл, таймер, съобщение в опашка. |
| Cold start | Забавяне, докато ново копие на функцията се стартира, преди да обслужи заявка. |
| Топло (warm) | Копие, което вече работи и може да отговори веднага. |
| Без състояние (stateless) | Функцията не пази памет между изпълненията. Всичко, което трябва да се запази, отива в база данни или хранилище. |
| Timeout | Максималното време за едно изпълнение. Например максимумът на AWS Lambda е 15 минути; много платформи имат далеч по-малко по подразбиране. |
| Edge функция | Функция, изпълнявана на много места близо до потребителите, често с по-строги лимити. |
| Мащабиране до нула (scale to zero) | Изпълнение на нищо и неплащане за изчисления, когато няма трафик. |
Работен пример: малък сайт за резервации
Сайтът за резервации на едно студио за йога получава пик от посещения всяка неделна вечер, когато се публикува новият график, и много малко останалата част от седмицата.
- На сървър, който работи през цялото време, студиото плаща за машина 24/7, оразмерена за неделния пик, и която през останалото време стои почти празна.
- Със serverless функции
GET /api/classesиPOST /api/bookingsса функции. Неделното навалица стартира много копия автоматично; в тих вторник сутрин почти нищо не работи и сметката е близо до нула.
Компромисите също се появяват. Първият човек, който отвори сайта във вторник сутрин, може да почака малко повече заради cold start. Базата данни трябва да обслужва много кратки връзки от много копия на функции, което може да наложи connection pooler. А ако студиото по-късно иска задача „генерирай годишния PDF за посещаемостта на всички“, тя може да надхвърли лимита на времето на функцията и да се наложи да върви другаде.
Кога serverless подхожда — и кога не
| Добре подходящо | По-малко подходящо |
|---|---|
| Трафик, който е нисък, на пикове или непредсказуем | Постоянен голям трафик, при който сървър през цялото време може да е по-евтин |
| Кратки задачи заявка/отговор: API, обработка на формуляри, webhook-ове | Дълготрайни задачи: обработка на голямо видео, големи импорти на данни |
| Малки екипи, които не искат да управляват сървъри | Приложения, които държат отворени живи връзки (някои чатове или многопотребителни функции), освен ако платформата не ги поддържа |
| Обработка на събития: „когато се качи файл, направи миниатюра“ | Приложения, които трябва да държат много памет между заявките |
Чести заблуди
- „Serverless означава без бекенд.“ Означава без сървъри за управление. Пак пишеш и защитаваш бекенд код.
- „Serverless винаги е по-евтин.“ Евтин е при малък обем, но цената на заявка може да натрупа при голям, постоянен обем.
- „Serverless се мащабира безкрайно.“ Платформите имат лимити на едновременност, а базата данни може да стане тясно място много преди функциите.
- „Файловете, записани във функция, ще са там следващия път.“ Локалното хранилище е временно. Използвай база данни или файлово хранилище.
- „Мащабиране до нула е същото като serverless.“ Свързани са, но не са идентични. Някои платформи пускат приложението ти като обикновен сървър, който заспива при простой и се събужда при следващата заявка — подобни спестявания и подобно забавяне на първата заявка, но без лимити за време на заявка, както при функциите.
Какво да поискаш от AI builder
- „Този бекенд ще работи ли като serverless функции или като сървър, който е винаги включен или заспива? Какво означава това за цената?“
- „Някои задачи вероятно ще отнемат повече от лимита на времето на платформата? Ако да, как да ги обработим?“
- „Съхранявай всичко, което трябва да се запази, в базата данни или файловото хранилище, не в паметта или локалните файлове.“
- „Как да се управляват връзките към базата данни, ако работят много копия едновременно?“
- „Колко отнема първата заявка, след като приложението е било в простой?“
Как Mythex хоства приложенията
Mythex не описва хостинга си като serverless функции. Когато публикуваш, приложението ти работи като обикновено уеб приложение или контейнер, който Mythex управлява вместо теб — няма нужда да настройваш хостинг. Това е мащабиране до нула: публикуваните приложения и техните бази данни заспиват при простой и се събуждат при следващото посещение, заспало приложение не харчи нищо за изчисления, а допълнителни машини се стартират само при голям трафик (Pro позволява до 3 на услуга). Прикачената Postgres база данни също заспива след 5 минути без активност и се таксува за времето, през което е била будна. Така получаваш голяма част от ползата „плащаш за това, което използваш“, със същия вид забавяне на първата заявка след тих период. Виж лимитите на хостинга в документацията и нашите ръководства за уеб хостинг и как да намалиш разходите за хостинг.
Въпроси
Какво означава serverless с прости думи?
Serverless означава, че даваш кода си на облачен доставчик, а той го изпълнява само когато е нужно — например когато пристигне заявка — без да настройваш или поддържаш сървъри. Обикновено плащаш за времето, през което кодът реално работи, а не за машина, която стои включена през цялото време.
Наистина ли няма сървъри при serverless?
Има сървъри; просто ти не ги управляваш. Доставчикът изпълнява кода ти на собствените си машини, стартира го, когато пристигнат заявки, мащабира го при натоварване и го спира, когато е в простой.
Какво е cold start?
Cold start е допълнителното забавяне, когато serverless функция се изпълни след период в простой, защото доставчикът първо трябва да стартира нов екземпляр на нея. Може да е почти незабележимо или да отнеме секунда или повече, в зависимост от платформата, езика и размера на кода.
Serverless по-евтин ли е от обикновен сървър?
При приложения с малко или неравномерен трафик — често да, защото почти нищо не плащаш, докато стои в простой. При приложения с голям и постоянен трафик сървър, който работи през цялото време, може да излезе по-евтин. Зависи от модела на употреба и от цените на доставчика.
Какви са примерите за serverless платформи?
Известни примери са AWS Lambda, Google Cloud Run functions, Azure Functions, Cloudflare Workers, както и функционалностите за функции на хостинг платформи като Vercel и Netlify.