San sèvè sou etajè

San sèvè sou etajè
Serverless se pa sou absans fizik serveurs. Sa a se pa yon asasen veso oswa yon tandans pase. Sa a se yon nouvo apwòch pou bati sistèm nan nwaj la. Nan atik jodi a nou pral manyen sou achitekti aplikasyon Serverless, ann wè ki wòl founisè sèvis Serverless ak pwojè sous louvri yo jwe. Finalman, ann pale sou pwoblèm yo nan sèvi ak Serverless.

Mwen vle ekri yon pati sèvè nan yon aplikasyon (oswa menm yon magazen sou entènèt). Sa a ta ka yon chat, yon sèvis piblikasyon kontni, oswa yon balans chaj. Nan nenpòt ka, pral gen yon anpil nan tèt fè mal: ou pral oblije prepare enfrastrikti a, detèmine depandans aplikasyon yo, epi reflechi sou sistèm opere lame a. Lè sa a, ou pral bezwen mete ajou ti eleman ki pa afekte operasyon an nan rès la nan monolit la. Oke, se pou nou pa bliye sou dekale anba chaj.

E si nou pran resipyan efemèr, kote depandans obligatwa yo deja pre-enstale, ak resipyan yo tèt yo izole youn ak lòt ak nan OS lame a? Nou pral divize monolit la an mikwosèvis, chak nan yo ka mete ajou ak echèl poukont lòt yo. Lè w mete kòd la nan yon veso konsa, mwen ka kouri li sou nenpòt enfrastrikti. Deja pi bon.

E si ou pa vle konfigirasyon resipyan yo? Mwen pa vle panse sou dekale aplikasyon an. Mwen pa vle peye pou kontenè ki san fè anyen konsa lè chaj la sou sèvis la minim. Mwen vle ekri kòd. Konsantre sou lojik biznis epi pote pwodwi nan mache a vitès limyè.

Panse sa yo te mennen m 'nan òdinatè san sèvè. San sèvè nan ka sa a vle di pa absans fizik nan serveurs, men absans nan tèt fè mal jesyon enfrastrikti.

Lide a se ke lojik aplikasyon an divize an fonksyon endepandan. Yo gen yon estrikti evènman. Chak fonksyon fè yon "microtask". Tout sa ki nesesè nan men pwomotè a se chaje fonksyon yo nan konsole founisè nwaj la bay ak korelasyon yo ak sous evènman yo. Kòd la pral egzekite sou demann nan yon veso otomatikman prepare, epi mwen pral sèlman peye pou tan an ekzekisyon.

Ann wè ki jan pwosesis devlopman aplikasyon an pral sanble kounye a.

Soti nan bò pwomotè a

Byen bonè nou te kòmanse pale sou yon aplikasyon pou yon magazen sou entènèt. Nan apwòch tradisyonèl la, lojik prensipal sistèm lan fèt pa yon aplikasyon monolitik. Ak sèvè a ak aplikasyon an toujou ap kouri, menm si pa gen okenn chaj.

Pou nou ale nan san sèvè, nou kase aplikasyon an an mikrotach. Nou ekri pwòp fonksyon nou pou chak nan yo. Fonksyon yo endepandan youn ak lòt epi yo pa estoke enfòmasyon leta (apatrid). Yo ka menm ekri nan diferan lang. Si youn nan yo "tonbe", tout aplikasyon an p ap sispann. Achitekti aplikasyon an pral sanble sa a:

San sèvè sou etajè
Divizyon an fonksyon nan Serverless sanble ak travay ak mikwosèvis. Men, yon mikwosèvis ka fè plizyè travay, epi yon fonksyon ta dwe depreferans fè youn. Ann imajine ke travay la se kolekte estatistik epi montre yo sou demann itilizatè a. Nan apwòch mikwosèvis la, yon travay fèt pa yon sèvis ak de pwen antre: ekri ak lekti. Nan informatique san sèvè, sa yo pral de fonksyon diferan ki pa gen rapò youn ak lòt. Pwomotè a sove resous enfòmatik si, pou egzanp, estatistik yo mete ajou pi souvan pase yo telechaje.

Fonksyon san sèvè yo dwe egzekite nan yon kout peryòd de tan (timeout), ki detèmine pa founisè sèvis la. Pa egzanp, pou AWS delè a se 15 minit. Sa vle di ke fonksyon ki dire lontan yo pral oblije chanje selon kondisyon yo - sa a se sa ki fè distenksyon Serverless de lòt teknoloji popilè jodi a (kontenè ak Platfòm kòm yon Sèvis).

Nou bay yon evènman nan chak fonksyon. Yon evènman se yon deklanche pou yon aksyon:

Evènman
Aksyon fonksyon an fè

Yo telechaje yon imaj pwodwi nan depo a.
Konprese imaj la epi telechaje nan yon anyè

Adrès magazen fizik la te mete ajou nan baz done a
Chaje yon nouvo kote nan kat yo

Kliyan an peye pou machandiz yo
Kòmanse pwosesis peman

Evènman yo ka demann HTTP, done difizyon, ke moun kap kriye mesaj, ak sou sa. Sous evènman yo se chanjman oswa ensidan done yo. Anplis de sa, fonksyon yo ka deklanche pa yon revèy.

Achitekti a te travay deyò, ak aplikasyon an prèske te vin san sèvè. Apre sa, nou ale nan founisè sèvis la.

Soti nan bò founisè a

Tipikman, founisè sèvis nwaj yo ofri enfòmatik san sèvè. Yo rele yo yon fason diferan: Fonksyon Azure, AWS Lambda, Fonksyon Cloud Google, Fonksyon Cloud IBM.

Nou pral sèvi ak sèvis la atravè konsole founisè a oswa kont pèsonèl. Kòd fonksyon ka telechaje nan youn nan fason sa yo:

  • ekri kòd nan editè entegre atravè konsole entènèt la,
  • telechaje achiv la ak kòd la,
  • travay ak depo piblik oswa prive git.

Isit la nou mete sou pye evènman yo ki rele fonksyon an. Ansanm evènman yo ka diferan pou diferan founisè yo.

San sèvè sou etajè

Founisè a te konstwi ak otomatize sistèm Fonksyon kòm Sèvis (FaaS) sou enfrastrikti li yo:

  1. Kòd fonksyon an fini nan depo sou bò founisè a.
  2. Lè yon evènman rive, veso ki gen yon anviwònman prepare yo otomatikman deplwaye sou sèvè a. Chak egzanp fonksyon gen pwòp veso izole li yo.
  3. Soti nan depo a, fonksyon an voye nan veso a, kalkile, epi retounen rezilta a.
  4. Kantite evènman paralèl ap grandi - kantite kontenè ap grandi. Sistèm nan otomatikman balanse. Si itilizatè yo pa jwenn aksè nan fonksyon an, li pral inaktif.
  5. Founisè a fikse tan san fè anyen konsa pou veso yo - si pandan tan sa a fonksyon pa parèt nan veso a, li detwi.

Nan fason sa a nou jwenn Serverless soti nan bwat la. Nou pral peye pou sèvis la lè l sèvi avèk modèl pay-as-you-go ak sèlman pou fonksyon sa yo ke yo itilize, epi sèlman pou tan an lè yo te itilize yo.

Pou prezante devlopè yo sèvis la, founisè yo ofri jiska 12 mwa tès gratis, men limite tan total kalkil la, kantite demann pa mwa, lajan oswa konsomasyon pouvwa.

Avantaj prensipal la nan travay ak yon founisè se kapasite nan pa enkyete sou enfrastrikti (sèvè, machin vityèl, resipyan). Pou pati li yo, founisè a ka aplike FaaS tou de lè l sèvi avèk devlopman pwòp li yo ak lè l sèvi avèk zouti sous louvri. Ann pale sou yo pi lwen.

Soti nan bò sous louvri

Kominote sous ouvè a ap travay aktivman sou zouti san sèvè pou de ane ki sot pase yo. Pi gwo jwè mache yo kontribye tou nan devlopman platfòm san sèvè:

  • google ofri devlopè zouti sous louvri li yo - Knatif. IBM, RedHat, Pivotal ak SAP te patisipe nan devlopman li;
  • IBM te travay sou yon platfòm Serverless OpenWhisk, ki Lè sa a, te vin tounen yon pwojè nan Fondasyon an Apache;
  • microsoft pasyèlman louvri kòd platfòm la Fonksyon Azure.

Devlopman yo tou sou pye nan direksyon kad san sèvè. Kubeless и Fisyon deplwaye andedan grap Kubernetes ki te prepare davans, OpenFaaS travay ak tou de Kubernetes ak Docker Swarm. Fondasyon an aji kòm yon kalite kontwolè - sou demann, li prepare yon anviwònman ègzekutabl andedan gwoup la, Lè sa a, lanse yon fonksyon la.

Frameworks kite plas pou konfigirasyon zouti nan adapte bezwen ou yo. Se konsa, nan Kubeless, yon pwomotè ka konfigirasyon delè ekzekisyon fonksyon (valè default la se 180 segonn). Fisyon, nan yon tantativ pou rezoud pwoblèm nan demaraj frèt, sijere kenbe kèk resipyan kouri tout tan tout tan an (byenke sa a enplike depans D ' resous yo). Epi OpenFaaS ofri yon seri deklanchman pou chak gou ak koulè: HTTP, Kafka, Redis, MQTT, Cron, AWS SQS, NATs ak lòt moun.

Ou ka jwenn enstriksyon pou kòmanse nan dokiman ofisyèl kad yo. Travay ak yo mande pou gen yon ti kras plis konpetans pase lè w ap travay ak yon founisè - sa a se omwen kapasite nan lanse yon gwoup Kubernetes atravè CLI la. Nan pifò, enkli lòt zouti sous louvri (pa egzanp, manadjè keu Kafka).

Kèlkeswa fason nou travay ak Serverless - atravè yon founisè oswa lè l sèvi avèk sous louvri, nou pral resevwa yon kantite avantaj ak dezavantaj nan apwòch la Serverless.

Soti nan pwen de vi avantaj ak dezavantaj yo

Serverless devlope lide yon enfrastrikti veso ak yon apwòch mikwosèvis, kote ekip yo ka travay nan yon mòd plizyè lang san yo pa mare nan yon platfòm. Bati yon sistèm senplifye ak erè yo pi fasil pou korije. Achitekti Microservice pèmèt ou ajoute nouvo fonksyonalite nan sistèm nan pi vit pase nan ka a nan yon aplikasyon monolitik.

San sèvè diminye tan devlopman menm pi lwen, pèmèt pwomotè a konsantre sèlman sou lojik biznis aplikasyon an ak kodaj. Kòm yon rezilta, tan nan mache pou devlopman yo redwi.

Kòm yon bonis, nou jwenn dekale otomatik pou chaj, epi nou peye sèlman pou resous yo itilize yo epi sèlman nan moman yo itilize yo.

Tankou nenpòt ki teknoloji, Serverless gen dezavantaj.

Pou egzanp, tankou yon dezavantaj ka tan an kòmanse frèt (an mwayèn jiska 1 segonn pou lang tankou JavaScript, Python, Go, Java, Ruby).

Sou yon bò, an reyalite, tan an kòmanse frèt depann de anpil varyab: lang nan ki ekri fonksyon an, kantite bibliyotèk, kantite kòd, kominikasyon ak resous adisyonèl (menm baz done yo oswa sèvè otantifikasyon). Depi pwomotè a kontwole varyab sa yo, li ka diminye tan demaraj. Men, nan lòt men an, pwomotè a pa ka kontwole tan an demaraj nan veso a - li tout depann de founisè a.

Yon demaraj frèt ka tounen yon demaraj cho lè yon fonksyon reutilize yon veso ki te lanse pa yon evènman anvan. Sitiyasyon sa a pral parèt nan twa ka:

  • si kliyan yo souvan itilize sèvis la ak kantite apèl nan fonksyon an ogmante;
  • si founisè a, platfòm oswa kad pèmèt ou kenbe kèk resipyan kouri tout tan;
  • si pwomotè a kouri fonksyon sou yon revèy (di chak 3 minit).

Pou anpil aplikasyon, yon demaraj frèt se pa yon pwoblèm. Isit la ou bezwen bati sou kalite a ak travay nan sèvis la. Yon delè kòmanse yon segonn pa toujou enpòtan pou yon aplikasyon biznis, men li ka vin enpòtan pou sèvis medikal yo. Nan ka sa a, apwòch la san sèvè pral pwobableman pa apwopriye ankò.

Dezavantaj nan pwochen nan Serverless se lavi a kout nan yon fonksyon (timeout pandan ki fonksyon an dwe egzekite).

Men, si ou gen travay ak travay ki dire lontan, ou ka itilize yon achitekti ibrid - konbine Serverless ak yon lòt teknoloji.

Se pa tout sistèm yo pral kapab travay lè l sèvi avèk konplo a Serverless.

Gen kèk aplikasyon ki pral toujou estoke done ak eta pandan ekzekisyon. Gen kèk achitekti ki pral rete monolitik ak kèk karakteristik yo pral dire lontan. Sepandan (tankou teknoloji nwaj yo ak Lè sa a, kontenè), Serverless se yon teknoloji ki gen yon gwo avni.

Nan sans sa a, mwen ta renmen byen deplase sou pwoblèm nan nan sèvi ak apwòch la Serverless.

Soti nan aplikasyon an

Pou 2018, pousantaj itilizasyon san sèvè grandi yon fwa edmi. Pami konpayi yo ki te deja aplike teknoloji a nan sèvis yo gen gwo mache tankou Twitter, PayPal, Netflix, T-Mobile, Coca-Cola. An menm tan an, ou bezwen konprann ke Serverless se pa yon Miracles, men yon zouti pou rezoud yon seri pwoblèm:

  • Diminye D' resous yo. Pa gen okenn nesesite pou toujou kenbe yon machin vityèl pou sèvis ki gen kèk apèl.
  • Pwosesis done sou vole. Konprese foto, koupe orijin, chanje kodaj videyo, travay ak detèktè IoT, fè operasyon matematik.
  • "Kole" lòt sèvis yo ansanm. Git depo ak pwogram entèn yo, chat bot nan Slack ak Jira ak kalandriye.
  • Balanse chaj la. Ann pran yon gade pi pre isit la.

Ann di gen yon sèvis ki atire 50 moun. Anba li gen yon machin vityèl ak pyès ki nan konpitè fèb. De tan zan tan, chaj la sou sèvis la ogmante anpil. Lè sa a, pyès ki nan konpitè fèb pa ka fè fas.

Ou ka mete yon balans nan sistèm nan ki pral distribye chay la, di, sou twa machin vityèl. Nan etap sa a, nou pa ka prevwa chaj la avèk presizyon, kidonk nou kenbe yon sèten kantite resous kouri "an rezèv." Epi nou peye anplis pou D '.

Nan yon sitiyasyon konsa, nou ka optimize sistèm nan atravè yon apwòch ibrid: nou kite yon machin vityèl dèyè balanse chaj la epi mete yon lyen nan pwen final la Serverless ak fonksyon. Si chaj la depase papòt la, balanse a lanse sikonstans fonksyon ki pran sou yon pati nan pwosesis demann lan.

San sèvè sou etajè
Se konsa, Serverless ka itilize kote li nesesè pou trete yon gwo kantite demann pa twò souvan, men entansif. Nan ka sa a, kouri plizyè fonksyon pou 15 minit se pi pwofitab pase kenbe yon machin vityèl oswa sèvè tout tan tout tan an.

Avèk tout avantaj ki genyen nan òdinatè san sèvè, anvan aplikasyon an, ou ta dwe premye evalye lojik aplikasyon an epi konprann ki pwoblèm Serverless ka rezoud nan yon ka patikilye.

Serverless ak Selectel

Nan Selectel nou deja travay senplifye ak Kubernetes atravè panèl kontwòl nou an. Kounye a nou ap konstwi pwòp platfòm FaaS nou. Nou vle devlopè yo kapab rezoud pwoblèm yo lè l sèvi avèk Serverless atravè yon koòdone pratik, fleksib.

Si ou gen lide sou ki sa platfòm ideyal FaaS la ta dwe ye ak ki jan ou vle itilize Serverless nan pwojè ou yo, pataje yo nan kòmantè yo. Nou pral pran volonte ou an kont lè w ap devlope platfòm la.
 
Materyèl yo itilize nan atik la:

Sous: www.habr.com

Add nouvo kòmantè