Vodiči

Što je serverless? Serverless računalstvo jednostavno objašnjeno

Serverless je način pokretanja koda u kojem ne postavljate niti upravljate nikakvim serverima. Predate svoj kod pružatelju u oblaku, a on ga pokreće samo kad nešto to aktivira (web zahtjev, učitana datoteka, uplata koja javlja plaćanje), a zatim se zaustavi. Obično plaćate vrijeme u kojem se vaš kod stvarno izvršava, a ne stroj koji stoji u mirovanju.

Zašto je serverless važan kad gradite uz AI

Kad gledate opcije hostinga ili kod izrađen s AI-jem, naići ćete na „serverless funkcije“, „edge funkcije“ ili „cloud funkcije“. Mnoge hosting platforme nude ih, a neki AI alati za izradu aplikacija backend postavljaju na taj način. Razumijevanje modela pomaže vam s tri praktična pitanja:

  • Trošak. Hoće li vaša aplikacija koštati novac dok je nitko ne koristi?
  • Brzina. Zašto je prvi zahtjev nakon tihog razdoblja sporiji?
  • Ograničenja. Zašto je dugi zadatak, poput generiranja velikog izvještaja ili obrade videa, istekao zbog vremenskog limita?

Korisno je znati i što serverless nije: nije odsustvo backenda. I dalje imate kod na serverskoj strani; samo netko drugi vodi strojeve. Za osnove pogledajte što je server.

Svakodnevna usporedba

Tradicionalni server je kao vlastiti automobil. Uvijek je tu, spreman odmah krenuti, ali plaćate ga, osiguranje, parking i održavanje, bez obzira vozite li ga ili ne.

Serverless je kao poziv taksija. Plaćate samo vožnje koje uzmete, a ako stotinu ljudi istovremeno treba prijevoz, dolazi stotinu taksija. Ali može postojati kratko čekanje dok auto stigne (hladni start), svaka vožnja ima maksimalnu duljinu, a vozač vas se ne sjeća iz prošle vožnje (funkcije su bez stanja, stateless).

Kako rade serverless funkcije

U najčešćem obliku, zvanom functions as a service (FaaS):

  1. Napišete funkciju, mali dio koda koji obrađuje jednu vrstu događaja, primjerice „obradi POST na /api/bookings“.
  2. Postavite je. Pružatelj je pohrani i poveže s okidačem: URL-om, rasporedom, novom datotekom u pohrani ili porukom u redu.
  3. Stigne događaj. Pružatelj pokrene kopiju vaše funkcije (ili ponovno iskoristi toplu), izvrši je i vrati rezultat.
  4. Skalira se sam. Ako stigne tisuću zahtjeva odjednom, pružatelj pokreće mnogo kopija paralelno, do granica vašeg računa.
  5. Ostaje u mirovanju. Kad promet stane, kopije se gase. Kad ništa ne radi, ne plaćate računanje.

Mala serverless funkcija u JavaScriptu mogla bi izgledati ovako:

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

Nema koda koji pokreće server, otvara port ili održava proces živim. Platforma se brine za sve to.

Pojam „serverless“ koristi se i labavije za druge upravljane usluge koje se automatski skaliraju i naplaćuju po korištenju, primjerice serverless baze podataka koje se uspavaju kad su neaktivne.

Ključni pojmovi

PojamZnačenje
Funkcija (FaaS)Mala jedinica koda koju pružatelj pokreće na zahtjev.
Okidač / događajOno što pokreće funkciju: HTTP zahtjev, učitavanje datoteke, tajmer, poruka iz reda.
Hladni start (cold start)Kašnjenje dok se nova kopija funkcije pokrene prije obrade zahtjeva.
ToplaKopija koja je već pokrenuta i može odmah odgovoriti.
Bez stanja (stateless)Funkcija ne pamti ništa između izvršavanja. Sve što mora ostati sačuvano ide u bazu podataka ili pohranu.
TimeoutNajdulje vrijeme jednog izvršavanja. Primjerice, maksimum za AWS Lambda je 15 minuta; mnoge platforme imaju zadano mnogo manje.
Edge funkcijaFunkcija koja se izvršava na mnogo lokacija blizu korisnika, često s strožim ograničenjima.
Skaliranje na nulu (scale to zero)Ne pokreće ništa i ne plaća računanje kad nema prometa.

Primjer na djelu: mala stranica za rezervacije

Stranica za rezervacije jednog studija joge dobije nalet posjeta svake nedjelje navečer, kad se objavi novi raspored, a ostatak tjedna gotovo ništa.

  • Na serveru koji stalno radi studio plaća stroj 24/7, dimenzioniran za nedjeljnu večernju špicu, a inače uglavnom u mirovanju.
  • S serverless funkcijama GET /api/classes i POST /api/bookings su funkcije. Nedjeljni nalet automatski pokreće mnogo kopija; utorak ujutro, kad gotovo ništa ne radi, račun je gotovo nula.

Kompromisi također postoje. Prva osoba koja otvori stranicu u utorak ujutro može čekati dodatni trenutak zbog hladnog starta. Baza podataka mora podnijeti mnogo kratkotrajnih veza iz mnogo kopija funkcija, što može zahtijevati pooler veza. A ako studio kasnije poželi zadatak „generiraj godišnji PDF s prisustvima za sve“, on može premašiti vremensko ograničenje funkcije i morat će se pokrenuti negdje drugdje.

Kad serverless odgovara, a kad ne

Dobro odgovaraManje dobro odgovara
Promet koji je nizak, nagao ili nepredvidivStalan veliki promet, gdje server koji stalno radi može biti jeftiniji
Kratki zahtjev i odgovor: API-ji, obrađivači obrazaca, webhookoviDugi poslovi: obrada velikog videa, uvoz velikih podataka
Mali timovi koji ne žele upravljati serverimaAplikacije koje drže otvorene žive veze (neke chat ili multiplayer značajke), osim ako platforma to podržava
Obrada događaja: „kad se učita datoteka, napravi sličicu“Aplikacije kojima treba mnogo memorije između zahtjeva

Česte zablude

  • „Serverless znači bez backenda.“ Znači bez servera kojima morate upravljati. I dalje pišete i štitite backend kod.
  • „Serverless je uvijek jeftiniji.“ Jeftin je pri malom obujmu, ali cijena po zahtjevu može narasti pri velikom i stalnom obujmu.
  • „Serverless se skalira beskonačno.“ Platforme imaju ograničenja istovremenosti, a vaša baza podataka može postati usko grlo mnogo prije funkcija.
  • „Datoteke spremljene u funkciji bit će tu i sljedeći put.“ Lokalna pohrana je privremena. Koristite bazu podataka ili pohranu datoteka.
  • „Skaliranje na nulu isto je što i serverless.“ Srodno, ali nije identično. Neke platforme pokreću vašu aplikaciju kao običan server koji se uspava kad je neaktivan i probudi na sljedeći zahtjev. To su slične uštede i slično kašnjenje prvog zahtjeva, ali bez vremenskih ograničenja po zahtjevu karakterističnih za funkcije.

Što pitati svog AI alata za izradu

  • „Hoće li ovaj backend raditi kao serverless funkcije ili kao server koji stalno radi ili se uspava? Što to znači za trošak?“
  • „Hoće li neki zadaci vjerojatno trajati dulje od vremenskog limita platforme? Ako da, kako ih riješiti?“
  • „Spremi sve što mora ostati u bazu podataka ili pohranu datoteka, a ne u memoriju ili lokalne datoteke.“
  • „Kako upravljati vezama s bazom kad se pokrene mnogo kopija?“
  • „Koliko traje kašnjenje prvog zahtjeva nakon što je aplikacija bila neaktivna?“

Kako Mythex hostira aplikacije

Mythex svoj hosting ne opisuje kao serverless funkcije. Kad objavite, vaša aplikacija radi kao obična web aplikacija ili kontejner kojim Mythex upravlja umjesto vas; ne morate ništa postavljati za hosting. Riječ je o skaliranju na nulu: objavljene aplikacije i njihove baze podataka uspavaju se kad su neaktivne i bude se na sljedeći posjet. Uspavana aplikacija ne troši ništa na računanje, a dodatni strojevi pokreću se samo kad je promet velik (Pro dopušta do 3 po usluzi). Priložena Postgres baza također se uspava nakon 5 minuta neaktivnosti, a naplaćuje se vrijeme u kojem je bila budna. Dakle dobivate velik dio prednosti „plaćate što koristite“, uz isto takvo kašnjenje prvog zahtjeva nakon tihog razdoblja. Pogledajte ograničenja hostinga u dokumentaciji i naše vodiče o web hostingu i smanjenju troškova hostinga.

Pitanja

Što serverless znači, jednostavno rečeno?

Serverless znači da pružatelju u oblaku predate svoj kod, a on ga pokreće samo kad je potrebno, primjerice kad stigne zahtjev, bez da vi postavljate ili održavate bilo koji server. Obično plaćate vrijeme u kojem se vaš kod stvarno izvršava, a ne stroj koji stalno radi.

Zaista nema servera u serverless modelu?

Serveri postoje; samo ih ne morate upravljati. Pružatelj izvršava vaš kod na svojim strojevima, pokreće ga kad stignu zahtjevi, skalira pod opterećenjem i gasi kad je neaktivan.

Što je hladni start (cold start)?

Hladni start je dodatno kašnjenje kad se serverless funkcija pokrene nakon neaktivnosti, jer pružatelj prvo mora pokrenuti novu kopiju. Može biti od gotovo neprimjetnog do sekunde ili više, ovisno o platformi, jeziku i veličini koda.

Je li serverless jeftiniji od običnog servera?

Za aplikacije s malo ili neravnomjernim prometom često da, jer uz malo ili nimalo troška dok su neaktivne. Za aplikacije s velikim i stalnim prometom server koji stalno radi može ispasti jeftiniji. Ovisi o obrascu korištenja i cijenama pružatelja.

Koji su primjeri serverless platformi?

Poznati primjeri su AWS Lambda, Google Cloud Run functions, Azure Functions, Cloudflare Workers te funkcije hosting platformi poput Vercela i Netlifyja.

Mythex · Pricing · Izradite bilo što uz AI · Predlošci za web stranice i aplikacije · Mythex u usporedbi · Rječnik izrade aplikacija uz AI · Besplatni alati za izradu aplikacija uz AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी 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 简体中文 繁體中文(香港) 繁體中文(台灣)