Šta je serverless? Serverless računarstvo objašnjeno jednostavno
Serverless je način pokretanja koda u kome sami ne podešavate i ne upravljate nijednim serverom. Predajete svoj kod cloud provajderu, a on ga pokreće samo kada nešto to okine, na primer veb zahtev, otpremljeni fajl ili obaveštenje o plaćanju, a zatim ga zaustavi. Obično plaćate vreme u kojem vaš kod stvarno radi, a ne mašinu koja stoji neiskorišćena.
Zašto je serverless važan kada pravite uz AI
Kada pravite aplikaciju uz AI i gledate opcije za hosting ili kod, naići ćete na „serverless funkcije“, „edge funkcije“ ili „cloud funkcije“. Mnoge hosting platforme ih nude, a neki AI alati za pravljenje aplikacija backend postavljaju upravo tako. Razumevanje modela pomaže vam oko tri praktična pitanja:
- Troškovi. Da li će aplikacija koštati novac dok je niko ne koristi?
- Brzina. Zašto je prvi zahtev posle tihog perioda sporiji?
- Ograničenja. Zašto je dugačak zadatak, na primer generisanje velikog izveštaja ili obrada videa, istekao zbog vremenskog limita?
Korisno je znati i šta serverless nije: to nije odsustvo backenda. I dalje imate kod na serveru; samo neko drugi vodi mašine. Za osnove pogledajte šta je server.
Svakodnevna analogija
Klasičan server je kao vlasništvo nad automobilom. Uvek je tu i spreman odmah da krene, ali plaćate ga, osiguranje, parking i održavanje, bez obzira da li ga vozite.
Serverless je kao poziv taksija. Plaćate samo vožnje koje napravite, a ako stotinu ljudi odjednom traži vožnju, dolazi stotinu taksija. Ali može da se čeka kratko dok auto stigne (hladni start), svaka vožnja ima maksimalnu dužinu, a vozač vas ne pamti sa prošle vožnje (funkcije su bez stanja, stateless).
Kako rade serverless funkcije
U najčešćem obliku, koji se zove functions as a service:
- Napišete funkciju, mali deo koda koji obrađuje jednu vrstu događaja, na primer „obradi POST na
/api/bookings.“ - Objavite je. Provajder je čuva i povezuje sa okidačem: URL adresom, rasporedom, novim fajlom u skladištu ili porukom u redu.
- Stigne događaj. Provajder pokreće kopiju vaše funkcije (ili koristi već toplu), izvršava je i vraća rezultat.
- Širi se sam. Ako stigne hiljadu zahteva odjednom, provajder pokreće mnogo kopija paralelno, do limita vašeg naloga.
- Ide u mirovanje. Kada saobraćaj prestane, kopije se gase. Kad ništa ne radi, ne plaćate računarske resurse.
Mala serverless funkcija u JavaScriptu može izgledati ovako:
export default async function handler(request) {
const { name } = await request.json();
return Response.json({ message: `Hello, ${name}` });
}
Nema koda za pokretanje servera, otvaranje porta ili održavanje procesa. Platforma sve to radi.
„Serverless“ se takođe šire koristi za druge upravljane servise koji se automatski šire i naplaćuju po korišćenju, na primer serverless baze podataka, koje se pauziraju kada miruju.
Ključni pojmovi
| Pojam | Značenje |
|---|---|
| Funkcija (FaaS) | Mala jedinica koda koju provajder pokreće po potrebi. |
| Okidač / događaj | Ono što pokreće funkciju: HTTP zahtev, otpremanje fajla, tajmer, poruka u redu. |
| Hladni start (cold start) | Kašnjenje dok se nova kopija funkcije ne pokrene pre obrade zahteva. |
| Topla funkcija (warm) | Kopija koja već radi i može odmah da odgovori. |
| Bez stanja (stateless) | Funkcija ne pamti ništa između pokretanja. Sve što mora da opstane ide u bazu ili skladište. |
| Vremenski limit (timeout) | Najduže vreme dozvoljeno jednom pokretanju. Na primer, najveći limit za AWS Lambda je 15 minuta; mnoge platforme podrazumevano imaju znatno manje. |
| Edge funkcija | Funkcija koja radi na mnogim lokacijama blizu korisnika, često sa strožim ograničenjima. |
| Skaliranje na nulu (scale to zero) | Ne pokreće ništa i ne plaća računarske resurse kada nema saobraćaja. |
Radni primer: mali sajt za rezervacije
Sajt jednog studija za jogu dobija nalet poseta svake nedelje uveče kada se objavi novi raspored, a ostatak nedelje gotovo ništa.
- Na serveru koji stalno radi, studio plaća mašinu 24/7, dimenzioniranu za vrhunac nedeljom uveče, a ostatak vremena uglavnom je neiskorišćena.
- Sa serverless funkcijama,
GET /api/classesiPOST /api/bookingssu funkcije. Nedeljni nalet automatski pokreće mnogo kopija; u tihom utorak ujutru gotovo ništa ne radi i račun je blizu nule.
Kompromisi se takođe vide. Prva osoba koja otvori sajt u utorak ujutru može da sačeka malo duže zbog hladnog starta. Baza mora da podnese mnogo kratkotrajnih konekcija od mnogo kopija funkcija, što može zahtevati pooler konekcija. A ako studio kasnije poželi zadatak „generiši godišnji PDF prisustva za sve“, on može da pređe vremenski limit funkcije i treba da se izvršava negde drugde.
Kada serverless odgovara, a kada ne
| Dobro rešenje | Manje dobro rešenje |
|---|---|
| Saobraćaj koji je mali, isprekidan ili nepredvidiv | Stalan veliki saobraćaj, gde server koji stalno radi može biti jeftiniji |
| Kratki zadaci zahtev/odgovor: API-ji, obrada formulara, webhook-ovi | Dugotrajni poslovi: obrada velikog videa, veliki uvozi podataka |
| Mali timovi koji ne žele da upravljaju serverima | Aplikacije koje drže otvorene konekcije uživo (neke funkcije za čet ili multiplayer), osim ako platforma to podržava |
| Obrada događaja: „kada se fajl otpremi, napravi sličicu“ | Aplikacije kojima treba mnogo memorije između zahteva |
Česte zablude
- „Serverless znači bez backenda.“ Znači bez servera koje treba upravljati. I dalje pišete i obezbeđujete backend kod.
- „Serverless je uvek jeftiniji.“ Jeftin je pri malom obimu, ali cena po zahtevu može da naraste pri velikom, stalnom obimu.
- „Serverless se beskonačno širi.“ Platforme imaju limite istovremenih izvršavanja, a vaša baza može postati usko grlo mnogo pre funkcija.
- „Fajlovi sačuvani u funkciji biće tu i sledeći put.“ Lokalno skladište je privremeno. Koristite bazu ili skladište za fajlove.
- „Skaliranje na nulu je isto što i serverless.“ Srodni su, ali nisu isti. Neke platforme pokreću vašu aplikaciju kao običan server koji spava kada miruje i budi se na sledeći zahtev. Uštede su slične i kašnjenje prvog zahteva je slično, ali nema vremenskog limita po zahtevu kao kod funkcija.
Šta da tražite od AI alata za pravljenje aplikacija
- „Da li će ovaj backend raditi kao serverless funkcije, kao server koji stalno radi ili kao server koji spava? Šta to znači za troškove?“
- „Da li će neki zadaci verovatno trajati duže od vremenskog limita platforme? Ako da, kako da ih obradimo?“
- „Sve što mora da opstane čuvaj u bazi ili u skladištu fajlova, a ne u memoriji ili lokalnim fajlovima.“
- „Kako da upravljamo konekcijama ka bazi ako radi mnogo kopija istovremeno?“
- „Koliko kasni prvi zahtev posle perioda mirovanja aplikacije?“
Kako Mythex hostuje aplikacije
Mythex svoj hosting ne opisuje kao serverless funkcije. Kada objavite, vaša aplikacija radi kao običan veb app ili kontejner koji Mythex upravlja umesto vas; ne morate ništa da podešavate za hosting. Reč je o skaliranju na nulu: objavljene aplikacije i njihove baze spavaju kada miruju i bude se pri sledećoj poseti, uspavana aplikacija ne troši ništa za računarske resurse, a dodatne mašine startuju samo kada je saobraćaj velik (Pro dozvoljava do 3 po servisu). Priložena Postgres baza takođe spava posle 5 minuta neaktivnosti i naplaćuje se za vreme dok je bila budna. Dakle, dobijate velik deo koristi „plaćate samo ono što koristite“, uz isto kašnjenje pri prvom zahtevu posle tihog perioda. Pogledajte ograničenja hostinga u dokumentaciji, kao i naše vodiče o veb hostingu i smanjenju troškova hostinga.
Pitanja
Šta serverless znači jednostavnim rečima?
Serverless znači da cloud provajderu predate svoj kod, a on ga pokreće samo kada je potrebno, na primer kada stigne zahtev, bez da vi podešavate ili održavate servere. Obično plaćate vreme u kojem vaš kod stvarno radi, a ne mašinu koja stalno radi.
Da li u serverless-u zaista nema servera?
Serveri postoje; vi ih samo ne upravljate. Provajder pokreće vaš kod na svojim mašinama, pokreće ga kada stignu zahtevi, širi kapacitet pod opterećenjem i gasi ga kada miruje.
Šta je hladni start (cold start)?
Hladni start je dodatno kašnjenje kada se serverless funkcija pokrene posle perioda mirovanja, jer provajder prvo mora da pokrene novu kopiju. Može biti jedva primetno ili trajati sekundu ili više, u zavisnosti od platforme, jezika i veličine koda.
Da li je serverless jeftiniji od običnog servera?
Za aplikacije sa malim ili neravnomernim saobraćajem, često da, jer gotovo ništa ne plaćate dok miruje. Za aplikacije sa velikim, stalnim saobraćajem, server koji stalno radi može ispasti jeftiniji. Zavisi od vašeg obrasca korišćenja i cena provajdera.
Koji su primeri serverless platformi?
Poznati primeri su AWS Lambda, Google Cloud Run functions, Azure Functions, Cloudflare Workers i funkcije u hosting platformama kao što su Vercel i Netlify.