Ի՞նչ է serverless-ը։ Serverless computing-ի պարզ բացատրություն
Serverless-ը կոդ գործարկելու եղանակ է, երբ դուք ինքներդ որևէ սերվեր չեք կարգավորում և չեք կառավարում։ Ձեր կոդը տրամադրում եք cloud մատակարարին, և այն աշխատում է միայն այն ժամանակ, երբ ինչ-որ բան այն գործարկում է՝ վեբ հարցում, վերբեռնված ֆայլ, վճարման ծանուցում, և հետո կանգնում։ Սովորաբար վճարում եք այն ժամանակի համար, երբ ձեր կոդը իրականում աշխատում է, և ոչ թե պարապող մեքենայի համար։
Ինչու է serverless-ը կարևոր AI-ով կառուցելիս
Երբ AI-ով հավելված եք կառուցում և նայում եք հոսթինգի տարբերակներին կամ կոդին, կհանդիպեք «serverless ֆունկցիաներ», «edge ֆունկցիաներ» կամ «cloud ֆունկցիաներ» տերմիններին։ Շատ հոսթինգ հարթակներ դրանք առաջարկում են, և որոշ AI կառուցողներ backend-ներ այս կերպ են տեղակայում։ Մոդելը հասկանալը օգնում է երեք գործնական հարցում․
- Ծախս։ Արդյո՞ք ձեր հավելվածը գումար կարժենա, երբ ոչ ոք չի օգտագործում այն։
- Արագություն։ Ինչու է առաջին հարցումը հանգիստ ժամանակաշրջանից հետո ավելի դանդաղ։
- Սահմաններ։ Ինչու երկար առաջադրանքը՝ մեծ հաշվետվության ստեղծումը կամ տեսանյութի մշակումը, ժամանակն ավարտվեց։
Օգտակար է նաև իմանալ, թե serverless-ը ինչ չէ․ այն backend-ի բացակայություն չէ։ Դուք դեռ ունեք սերվերային կոդ, պարզապես ուրիշն է աշխատեցնում մեքենաները։ Հիմունքների համար տե՛ս ինչ է սերվերը։
Ամենօրյա անալոգիա
Սովորական սերվերը նման է մեքենա ունենալուն։ Այն միշտ այնտեղ է, պատրաստ՝ անմիջապես գործելու, բայց դուք վճարում եք դրա համար՝ ապահովագրություն, կայանում, սպասարկում, անկախ նրանից՝ օգտագործում եք այն, թե ոչ։
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: `Hello, ${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-ը նշանակում է backend չկա»։ Նշանակում է սերվերներ կառավարելու պահանջ չկա։ Դեռ գրում և ապահովում եք backend կոդը։
- «Serverless-ը միշտ ավելի էժան է»։ Էժան է ցածր ծավալի դեպքում, բայց մեկ հարցման գնագոյացումը կարող է գումարվել բարձր, հաստատուն ծավալի դեպքում։
- «Serverless-ը անսահմանափակ է մասշտաբվում»։ Հարթակները ունեն համահունչ աշխատանքի սահմաններ, և ձեր տվյալների բազան կարող է խոչընդոտ դառնալ շատ ավելի շուտ, քան ֆունկցիաները։
- «Ֆունկցիայում պահված ֆայլերը հաջորդ անգամ կլինեն»։ Տեղական պահոցը ժամանակավոր է։ Օգտագործեք տվյալների բազա կամ ֆայլերի պահոց։
- «Scale-to-zero-ը նույնն է, ինչ serverless-ը»։ Կապված է, բայց նույնը չէ։ Որոշ հարթակներ ձեր հավելվածը աշխատեցնում են որպես սովորական սերվեր, որ քնում է պարապելիս և արթնանում հաջորդ հարցման ժամանակ՝ նման խնայողությամբ և նման առաջին հարցման հապաղումով, բայց առանց ֆունկցիայի տիպի հարցումային ժամանակի սահմաններ։
Ինչ հարցնել ձեր AI կառուցողից
- «Այս backend-ը կաշխատի՞ որպես serverless ֆունկցիաներ, թե որպես միշտ միացված կամ քնող սերվեր։ Ի՞նչ է դա նշանակում ծախսերի համար։»
- «Արդյո՞ք որևէ առաջադրանք հավանաբար կգերազանցի հարթակի ժամանակի սահմանը։ Եթե այո, ինչպե՞ս պետք է վարվենք դրանց հետ։»
- «Պահիր ամեն ինչ, որ պետք է մնա, տվյալների բազայում կամ ֆայլերի պահոցում, ոչ թե հիշողության կամ տեղական ֆայլերի մեջ։»
- «Ինչպե՞ս պետք է կառավարել տվյալների բազայի կապերը, եթե շատ պատճեններ միաժամանակ աշխատեն։»
- «Ո՞րն է հապաղումը առաջին հարցման ժամանակ, երբ հավելվածը պարապել է։»
Ինչպես է Mythex-ը հոսթինգ անում հավելվածները
Mythex-ը իր հոսթինգը չի նկարագրում որպես serverless ֆունկցիաներ։ Երբ հրապարակում եք, ձեր հավելվածը աշխատում է որպես սովորական վեբ հավելված կամ կոնտեյներ, որ Mythex-ը կառավարում է ձեզ համար՝ առանց հոսթինգ կարգավորելու անհրաժեշտության։ Այն scale-to-zero է․ հրապարակված հավելվածները և դրանց տվյալների բազաները քնում են պարապելիս և արթնանում հաջորդ այցի ժամանակ, քնած հավելվածը հաշվողականության վրա ոչինչ չի ծախսում, իսկ լրացուցիչ մեքենաները սկսում են միայն թրաֆիկի մեծ ծավալի դեպքում (Pro-ում՝ մինչև 3 մեկ ծառայության համար)։ Կցված Postgres տվյալների բազան նույնպես քնում է 5 րոպե պարապելուց հետո և վճարվում է արթուն եղած ժամանակի համար։ Այսպիսով ստանում եք «վճարիր այն, ինչ օգտագործում ես» օգուտի մեծ մասը՝ նույն տեսակի առաջին հարցման հապաղմամբ հանգիստ ժամանակաշրջանից հետո։ Տե՛ս հոսթինգի սահմանները փաստաթղթերում, և մեր ուղեցույցները վեբ հոսթինգի և հոսթինգի ծախսերը նվազեցնելու մասին։
Հարցեր
Ինչ է նշանակում serverless-ը պարզ ասած
Serverless-ը նշանակում է, որ ձեր կոդը տրամադրում եք cloud մատակարարին, և այն գործարկվում է միայն անհրաժեշտության դեպքում՝ օրինակ, երբ գալիս է հարցում, առանց դուք որևէ սերվեր կարգավորելու կամ հսկելու։ Սովորաբար վճարում եք այն ժամանակի համար, երբ ձեր կոդը իրականում աշխատում է, այլ ոչ թե միշտ միացված մեքենայի համար։
Իսկապես սերվեր չկա՞ serverless-ում
Սերվերներ կան, պարզապես դուք դրանք չեք կառավարում։ Մատակարարը ձեր կոդն աշխատեցնում է իր մեքենաների վրա, սկսում է այն, երբ գալիս են հարցումներ, մեծացնում է բեռի տակ և անջատում, երբ պարապ է։
Ի՞նչ է cold start-ը
Cold start-ը լրացուցիչ հապաղումն է, երբ serverless ֆունկցիան աշխատում է պարապելուց հետո, քանի որ մատակարարը նախ պետք է նոր պատճեն սկսի։ Այն կարող է լինել գրեթե աննկատ կամ մեկ վայրկյան և ավելի՝ կախված հարթակից, լեզվից և կոդի չափից։
Serverless-ը ավելի էժա՞ն է, քան սովորական սերվերը
Քիչ կամ անհավասարաչափ թրաֆիկ ունեցող հավելվածների համար հաճախ այո, քանի որ պարապի ժամանակ գրեթե ոչինչ չեք վճարում։ Մշտական և ծանր թրաֆիկ ունեցող հավելվածների համար միշտ միացված սերվերը կարող է ավելի էժան ստացվել։ Ամեն ինչ կախված է օգտագործման ձևից և մատակարարի գներից։
Ո՞րն են serverless հարթակների օրինակները
Հայտնի օրինակներն են AWS Lambda-ն, Google Cloud Run functions-ը, Azure Functions-ը, Cloudflare Workers-ը և հոսթինգ հարթակների ֆունկցիաների հնարավորությունները, ինչպիսիք են Vercel-ը և Netlify-ը։