Mis on serverless? Serverless-arvutus lihtsalt selgitatuna
Serverless on viis koodi käitamiseks, kus sa ei seadista ega halda ühtegi serverit ise. Annad oma koodi pilveteenuse pakkujale ja see käivitub ainult siis, kui midagi seda käivitab – veebipäring, üleslaaditud fail, makseteade – ning seejärel peatub. Tavaliselt maksad selle aja eest, mil su kood tegelikult töötab, mitte masina eest, mis seisab tühikäigul.
Miks serverless on oluline, kui ehitad AI-ga
Kui ehitad AI-ga rakendust ja vaatad hostingvalikuid või koodi, satud kokku mõistetega „serverless-funktsioonid”, „edge-funktsioonid” või „pilvefunktsioonid”. Paljud hostingplatvormid pakuvad neid ja mõned AI-ehitajad juurutavad tagarakendusi just nii. Mudeli mõistmine aitab sul kolme praktilise küsimusega:
- Kulu. Kas su rakendus maksab raha ajal, kui keegi seda ei kasuta?
- Kiirus. Miks on esimene päring pärast vaikset perioodi aeglasem?
- Piirangud. Miks pikk ülesanne – suure raporti genereerimine, video töötlemine – aegus?
Abiks on teada ka, mida serverless ei ole: see ei ole backendi puudumine. Sul on endiselt serveripoolne kood; keegi teine lihtsalt käitab masinaid. Põhitõdede jaoks vaata mis on server.
Igapäevane analoogia
Traditsiooniline server on nagu auto omamine. See on alati olemas ja valmis kohe liikuma, aga sa maksad selle eest – kindlustus, parkimine, hooldus – sõltumata sellest, kas sõidad või mitte.
Serverless on nagu takso tellimine. Maksad ainult sõitude eest, mida teed, ja kui sada inimest vajab korraga sõitu, tuleb sada taksot. Kuid autot tuleb oodata lühike aeg (külmkäivitus), igal sõidul on maksimaalne pikkus ning sõidukijuht ei mäleta sind eelmisest sõidust (funktsioonid on olekuta, stateless).
Kuidas serverless-funktsioonid töötavad
Kõige levinumal kujul, mida nimetatakse functions as a service:
- Kirjutad funktsiooni – väikese koodi tüki, mis käsitleb ühte sündmuse tüüpi, näiteks „töötle POST päringut
/api/bookings-ile.” - Juurutad selle. Pakkuja salvestab selle ja seob käivitajaga: URL, ajakava, uus fail salvestuses, sõnum järjekorras.
- Saabub sündmus. Pakkuja käivitab su funktsiooni koopia (või kasutab sooja, juba töötavat) ja tagastab tulemuse.
- See skaleerub iseseisvalt. Kui tuhat päringut saabub korraga, käivitab pakkuja palju koopiaid paralleelselt kuni sinu konto piirideni.
- See läheb tühikäigule. Kui liiklus peatub, lülitatakse koopiad välja. Kui midagi ei tööta, ei maksa sa arvutuse eest midagi.
Väike serverless-funktsioon JavaScriptis võib välja näha selline:
export default async function handler(request) {
const { name } = await request.json();
return Response.json({ message: `Hello, ${name}` });
}
Seal pole koodi serveri käivitamiseks, pordi avamiseks ega protsessi hoidmiseks töös. Platvorm teeb kõik selle.
„Serverless” on laiemalt kasutusel ka teiste hallatud teenuste kohta, mis skaleeruvad automaatselt ja arvestavad kasutuse järgi – näiteks serverless-andmebaasid, mis tühikäigul peatuvad.
Põhimõisted
| Mõiste | Tähendus |
|---|---|
| Funktsioon (FaaS) | Väike koodiühik, mida pakkuja käivitab nõudmisel. |
| Käivitaja / sündmus | See, mis funktsiooni käivitab – HTTP-päring, faili üleslaadimine, taimer, järjekorra sõnum. |
| Külmkäivitus | Viivitus, kui funktsiooni uus koopia peab enne päringu käsitlemist käivituma. |
| Soe | Koopia, mis juba töötab ja saab kohe vastata. |
| Olekuta (stateless) | Funktsioon ei hoia mälu käivituste vahel. Kõik, mis peab püsima, läheb andmebaasi või salvestusse. |
| Ajalõpp (timeout) | Maksimaalne aeg ühe käivituse jaoks. Näiteks AWS Lambda maksimum on 15 minutit; paljudel platvormidel on vaikimisi palju vähem. |
| Edge-funktsioon | Funktsioon, mis töötab paljudes kohtades kasutajate lähedal, sageli rangemate piirangutega. |
| Skaleerimine nullini (scale to zero) | Ei käita midagi ja ei maksa arvutuse eest midagi, kui liiklust pole. |
Näide: väike broneerimisleht
Joogastuudio broneerimisleht saab iga pühapäeva õhtul uue ajakava ilmumisel hulga külastusi ja ülejäänud nädalal väga vähe.
- Pidevalt töötaval serveril maksab stuudio masina eest 24/7, mis on mõõdetud pühapäeva õhtu tipuks ja ülejäänud aja enamasti tühikäigul.
- Serverless-funktsioonidega on
GET /api/classesjaPOST /api/bookingsfunktsioonid. Pühapäeva tormi korral käivitub automaatselt palju koopiaid; vaiksel teisipäeva hommikul käib peaaegu midagi ja arve on peaaegu null.
Kompromissid ilmnevad samuti. Esimene inimene, kes teisipäeva hommikul lehe avab, võib oodata natuke külmkäivitust. Andmebaas peab käsitlema paljusid lühiajalisi ühendusi paljudest funktsioonikoopiatest, mis võib nõuda ühenduste koondajat. Ja kui stuudio hiljem tahab ülesannet „genereeri kõigi aastane osavõtu-PDF”, võib see ületada funktsiooni ajalimiidi ja vajada käivitamist mujal.
Millal serverless sobib – ja millal mitte
| Hea sobivus | Vähem sobiv |
|---|---|
| Liiklus, mis on väike, piikideline või ettearvamatu | Pidev suur liiklus, kus pidevalt töötav server võib olla odavam |
| Lühikesed päring-vastus ülesanded: API-d, vormide töötlejad, webhook’id | Pikaajalised tööd: suure video töötlemine, suured andmete importid |
| Väikesed meeskonnad, kes ei taha servereid hallata | Rakendused, mis hoiavad avatud ühendusi (mõned vestlus- või mitme mängijaga funktsioonid), kui platvorm seda ei toeta |
| Sündmuste käsitlemine: „kui fail üles laetakse, tee pisipilt” | Rakendused, mis vajavad päringute vahel palju mälu |
Levinud vead ja arusaamatused
- „Serverless tähendab backendi puudumist.” See tähendab servereid, mida hallata ei pea. Sa kirjutad ja turvad endiselt tagarakenduse koodi.
- „Serverless on alati odavam.” Madala mahu korral odav, aga suurel ja pideval mahul võivad päringupõhised hinnad kokku kasvada.
- „Serverless skaleerub lõputult.” Platvormidel on samaaegsuse piirid ja su andmebaas võib saada kitsaskohaks palju varem kui funktsioonid.
- „Funktsioonis salvestatud failid on järgmisel korral olemas.” Kohalik salvestus on ajutine. Kasuta andmebaasi või failisalvestust.
- „Skaleerimine nullini on sama mis serverless.” Seotud, aga mitte identsed. Mõned platvormid käivitavad su rakenduse tavalise serverina, mis magab tühikäigul ja ärkab järgmise päringu peale – sarnane kokkuhoid ja sarnane esimese päringu viivitus, aga ilma funktsioonipõhiste päringupiiranguteta.
Mida küsida oma AI ehitajalt
- „Kas see tagarakendus töötab serverless-funktsioonidena või pidevalt töötava või magava serverina? Mida see tähendab kulude jaoks?”
- „Kas mõned ülesanded võivad kesta kauem kui platvormi ajalimiit? Kui jah, kuidas neid käsitleme?”
- „Salvesta kõik, mis peab püsima, andmebaasi või failisalvestusse, mitte mällu ega kohalikesse failidesse.”
- „Kuidas tuleks andmebaasiühendusi hallata, kui paljud koopiad töötavad korraga?”
- „Kui kaua võtab esimene päring pärast seda, kui rakendus on olnud tühikäigul?”
Kuidas Mythex rakendusi hostib
Mythex ei kirjelda oma hostingut serverless-funktsioonidena. Kui avaldad, töötab su rakendus tavalise veebirakendusena või konteinerina, mida Mythex sinu eest haldab – hostingut ei pea seadistama. See on skaleerimine nullini: avaldatud rakendused ja nende andmebaasid magavad tühikäigul ning ärkavad järgmise külastuse peale; magav rakendus ei kuluta arvutuse peale midagi ning lisamasinad käivituvad ainult siis, kui liiklus on suur (Pro lubab kuni 3 masinat teenuse kohta). Külgeühendatud Postgres-andmebaas läheb samuti magama pärast 5 minutit tühikäiku ja seda arvestatakse aja järgi, mil see oli ärkvel. Nii saad suure osa „maksa selle eest, mida kasutad” kasust, sama tüüpi esimese päringu viivitusega pärast vaikset perioodi. Vaata dokumentatsioonist hostingu piirangud ning meie juhendeid veebihostingu kohta ja hostingukulude vähendamisest.
Küsimused
Mida serverless lihtsas keeles tähendab?
Serverless tähendab, et annad oma koodi pilveteenuse pakkujale ja see käivitub ainult vajadusel – näiteks siis, kui saabub päring – ilma et sina peaksid servereid seadistama või hooldama. Tavaliselt maksad selle eest, kui kaua su kood tegelikult töötab, mitte masina eest, mis on pidevalt sisse lülitatud.
Kas serverless’is tõesti servereid ei ole?
Servereid on, sa lihtsalt ei halda neid. Pakkuja käitab su koodi oma masinatel, käivitab selle, kui saabuvad päringud, skaleerib koormuse all ja lülitab välja, kui see on tühikäigul.
Mis on külmkäivitus?
Külmkäivitus on lisaviivitus, kui serverless-funktsioon käivitub pärast tühikäiku, sest pakkuja peab kõigepealt käivitama selle värske koopia. See võib olla alates peaaegu märkamatust kuni ühe või rohkem sekundini, sõltuvalt platvormist, keelest ja koodi suurusest.
Kas serverless on tavalisest serverist odavam?
Rakenduste puhul, mille liiklus on väike või ebaühtlane, sageli jah, sest tühikäigul maksad peaaegu mitte midagi. Rakenduste puhul, mille liiklus on suur ja pidev, võib pidevalt töötav server osutuda odavamaks. See sõltub sinu kasutusmustrist ja pakkuja hinnastusest.
Millised on serverless-platvormide näited?
Tuntud näited on AWS Lambda, Google Cloud Run functions, Azure Functions, Cloudflare Workers ning hostingplatvormide, nagu Vercel ja Netlify, funktsioonid.