Co je serverless? Výpočty bez serverů jednoduše vysvětlené
Serverless je způsob spouštění kódu, při kterém sami nenastavujete ani nespravujete žádné servery. Svůj kód předáte poskytovateli cloudu a ten ho spustí jen tehdy, když ho něco spustí, například webový požadavek, nahraný soubor nebo oznámení o platbě. Pak se zastaví. Obvykle platíte za čas, kdy váš kód skutečně běží, a ne za stroj, který nečinně stojí.
Proč na serverless záleží, když stavíte s AI
Když stavíte aplikaci s AI a díváte se na možnosti hostingu nebo na kód, narazíte na „serverless funkce“, „edge funkce“ nebo „cloud funkce“. Mnoho hostingových platforem je nabízí a některé nástroje na tvorbu aplikací s AI nasazují backendy právě tímto způsobem. Pochopení tohoto modelu vám pomůže se třemi praktickými otázkami:
- Náklady. Bude vaše aplikace stát peníze, i když ji nikdo nepoužívá?
- Rychlost. Proč je první požadavek po klidném období pomalejší?
- Limity. Proč dlouhý úkol, třeba generování velké zprávy nebo zpracování videa, vypršel na časovém limitu?
Pomůže také vědět, čím serverless není: není to absence backendu. Serverový kód pořád máte; jen stroje provozuje někdo jiný. Základy vysvětluje co je server.
Každodenní přirovnání
Klasický server je jako vlastnit auto. Je pořád připravený a okamžitě pojede, ale platíte za něj, ať s ním jezdíte, nebo ne: pojištění, parkování, údržbu.
Serverless je jako zavolat taxi. Platíte jen za jízdy, které absolvujete, a když sto lidí potřebuje odvoz najednou, přijede sto taxíků. Ale auto může chvíli trvat, než přijede (to je studený start), každá jízda má maximální délku a řidič si vás z minulé jízdy nepamatuje (funkce jsou bezstavové).
Jak fungují serverless funkce
V nejběžnější podobě, které se říká functions as a service:
- Napíšete funkci, malý kus kódu, který zpracovává jeden typ události, například „zpracuj POST na
/api/bookings“. - Nasadíte ji. Poskytovatel ji uloží a napojí na spouštěč: URL, plán, nový soubor v úložišti nebo zprávu ve frontě.
- Přijde událost. Poskytovatel spustí kopii vaší funkce (nebo použije už běžící), vykoná ji a vrátí výsledek.
- Škáluje se sama. Když přijde tisíc požadavků najednou, poskytovatel spustí mnoho kopií paralelně, až do limitů vašeho účtu.
- Přejde do nečinnosti. Když provoz ustane, kopie se vypnou. Když nic neběží, za výpočty neplatíte.
Malá serverless funkce v JavaScriptu může vypadat takto:
export default async function handler(request) {
const { name } = await request.json();
return Response.json({ message: `Ahoj, ${name}` });
}
Není třeba žádný kód na spuštění serveru, otevření portu nebo udržení procesu běžícího. Platforma se o to postará.
Slovo „serverless“ se volněji používá i pro jiné spravované služby, které se automaticky škálují a účtují podle použití, například serverless databáze, které se při nečinnosti pozastaví.
Klíčové pojmy
| Pojem | Význam |
|---|---|
| Funkce (FaaS) | Malá jednotka kódu, kterou poskytovatel spouští na vyžádání. |
| Spouštěč / událost | Co funkci spustí: HTTP požadavek, nahrání souboru, časovač, zpráva ve frontě. |
| Studený start | Zpoždění, když se před zpracováním požadavku musí spustit nová kopie funkce. |
| Teplá kopie | Kopie, která už běží a může odpovědět okamžitě. |
| Bezstavové | Funkce si mezi běhy nepamatuje nic. Cokoli, co musí přetrvat, patří do databáze nebo úložiště. |
| Časový limit | Maximální doba jednoho běhu. Například maximum AWS Lambda je 15 minut; mnoho platforem má výchozí hodnotu mnohem nižší. |
| Edge funkce | Funkce běžící na mnoha místech blízko uživatelů, často s přísnějšími limity. |
| Škálování na nulu | Když není provoz, nic neběží a za výpočty se neplatí. |
Praktický příklad: malý rezervační web
Rezervační web jednoho jógového studia dostane každou nedělní večer nával návštěv, kdy se zveřejní nový rozvrh, a zbytek týdne téměř nic.
- Na serveru, který běží pořád, studio platí stroj 24 hodin denně, dimenzovaný na nedělní špičku, a jinak je většinou nečinný.
- Se serverless funkcemi jsou
GET /api/classesaPOST /api/bookingsfunkce. Nedělní nával spustí mnoho kopií automaticky; v klidné úterý ráno skoro nic neběží a účet je téměř nulový.
Kompromisy se také projeví. První člověk, který v úterý ráno web otevře, může čekat chvilku navíc na studený start. Databáze musí zvládat mnoho krátkodobých připojení od mnoha kopií funkcí, což může vyžadovat sdílení připojení. A když studio později chce úlohu „vygeneruj roční PDF docházky pro všechny“, může překročit časový limit funkce a bude se muset spouštět jinde.
Kdy se serverless hodí a kdy ne
| Dobře se hodí | Méně vhodné |
|---|---|
| Provoz, který je malý, skokový nebo nepředvídatelný | Stálý velký provoz, kde může být server běžící pořád levnější |
| Krátké úlohy typu požadavek a odpověď: API, obsluha formulářů, webhooky | Dlouhé úlohy: zpracování velkých videí, velké importy dat |
| Malé týmy, které nechtějí spravovat servery | Aplikace, které drží otevřená živá připojení (některé chaty nebo multiplayer funkce), pokud to platforma nepodporuje |
| Zpracování událostí: „když se nahraje soubor, vytvoř náhled“ | Aplikace, které mezi požadavky potřebují držet hodně paměti |
Časté mylné představy
- „Serverless znamená žádný backend.“ Znamená to žádné servery ke správě. Backendový kód stále píšete a zabezpečujete.
- „Serverless je vždy levnější.“ Při malém objemu levný, ale cena za požadavek se může při velkém a stálém objemu sečíst.
- „Serverless se škáluje donekonečna.“ Platformy mají limity souběžnosti a vaše databáze se může stát úzkým hrdlem mnohem dřív, než funkce.
- „Soubory uložené ve funkci tam budou příště.“ Lokální úložiště je dočasné. Použijte databázi nebo úložiště souborů.
- „Škálování na nulu je totéž co serverless.“ Souvisí, ale není to totéž. Některé platformy spouštějí vaši aplikaci jako běžný server, který při nečinnosti usne a probudí se při dalším požadavku. Úspory jsou podobné a první požadavek se podobně zpozdí, ale bez časových limitů na jednotlivé požadavky typu funkce.
Co se zeptat svého AI nástroje
- „Poběží tento backend jako serverless funkce, nebo jako server, který běží pořád nebo spí? Co to znamená pro náklady?“
- „Které úlohy pravděpodobně přesáhnou časový limit platformy? Pokud ano, jak je máme zpracovat?“
- „Ukládej všechno, co musí přetrvat, do databáze nebo úložiště souborů, ne do paměti nebo lokálních souborů.“
- „Jak se mají řídit připojení k databázi, když běží mnoho kopií najednou?“
- „Jaké je zpoždění prvního požadavku poté, co aplikace byla nečinná?“
Jak Mythex hostuje aplikace
Mythex svůj hosting nepopisuje jako serverless funkce. Když publikujete, vaše aplikace běží jako běžná webová aplikace nebo kontejner, který za vás spravuje Mythex. Není třeba nic nastavovat. Jde o škálování na nulu: publikované aplikace a jejich databáze při nečinnosti spí a probudí se při další návštěvě, spící aplikace nic nestojí za výpočty a další stroje se spouští jen při velkém provozu (Pro povoluje až 3 na službu). Připojená Postgres databáze také usne po 5 minutách nečinnosti a účtuje se za dobu, kdy byla vzhůru. Získáte tedy velkou část výhody „platíte za to, co používáte“, se stejným typem zpoždění prvního požadavku po klidném období. Viz limity hostingu v dokumentaci a naše průvodce webovým hostingem a snižováním nákladů na hosting.
Otázky
Co znamená serverless jednoduše řečeno?
Serverless znamená, že poskytovateli cloudu předáte svůj kód a on ho spustí jen tehdy, když je potřeba, například když přijde požadavek, aniž byste nastavovali nebo spravovali jakýkoli server. Obvykle platíte za čas, kdy váš kód skutečně běží, a ne za stroj, který je pořád zapnutý.
Opravdu v serverless nejsou žádné servery?
Servery jsou, jen je nespravujete. Poskytovatel spouští váš kód na svých vlastních strojích, spustí ho, když přijdou požadavky, při velkém zatížení ho škáluje a když je nečinný, vypne.
Co je studený start?
Studený start je dodatečné zpoždění, když serverová funkce běží po nečinnosti, protože poskytovatel nejdřív musí spustit novou kopii. Podle platformy, jazyka a velikosti kódu se může pohybovat od sotva znatelného po sekundu nebo více.
Je serverless levnější než běžný server?
U aplikací s malým nebo nerovnoměrným provozem často ano, protože v nečinnosti platíte téměř nic. U aplikací s velkým a stálým provozem může vyjít levněji server, který běží pořád. Záleží na vzorci využití a ceníku poskytovatele.
Jaké jsou příklady serverless platforem?
Známými příklady jsou AWS Lambda, Google Cloud Run functions, Azure Functions, Cloudflare Workers a funkce hostingových platforem, jako jsou Vercel a Netlify.