Konsèy ak resous pou konstwi aplikasyon san sèvè

Konsèy ak resous pou konstwi aplikasyon san sèvè
Malgre ke teknoloji san sèvè te vin rapidman popilarite nan dènye ane yo, toujou gen anpil move konsepsyon ak enkyetid ki asosye ak yo. Depandans vandè, zouti, jesyon pri, demaraj frèt, siveyans ak sik lavi devlopman yo tout sijè ki gen anpil deba lè li rive teknoloji san sèvè. Nan atik sa a, nou pral eksplore kèk nan sijè ki mansyone yo, ansanm ak pataje konsèy ak lyen ki mennen nan resous itil pou ede dÊbutan yo bati aplikasyon ki pwisan, fleksib ak pri-efikas san sèvè.

Move konsepsyon sou teknoloji san sèvè

Anpil moun kwè ke pwosesis done san sèvè ak san sèvè (Fonksyon kòm yon sèvis, FaaS) yo prèske menm bagay la. Sa vle di ke diferans lan pa twò gwo epi li vo entwodwi yon nouvo pwodwi. Malgre ke AWS Lambda se te youn nan zetwal yo nan ogmantasyon nan teknoloji san sèvè ak youn nan eleman ki pi popilè nan achitekti san sèvè, gen plis nan achitekti sa a pase FaaS.

Prensip debaz la nan san sèvè se ke ou pa bezwen enkyete sou jere oswa echèl enfrastrikti ou sèlman ou peye pou sa ou itilize. Anpil sèvis adapte kritè sa yo - AWS DynamoDB, S3, SNS oswa SQS, Graphcool, Auth0, Now, Netlify, Firebase ak anpil lòt. An jeneral, san sèvè vle di sèvi ak tout kapasite nan cloud computing san yo pa bezwen jere ak optimize enfrastrikti a pou dedomajman pou dekale. Sa vle di tou ke sekirite nan nivo enfrastrikti a se pa pwoblèm ou ankò, ki se yon gwo benefis lè yo gen difikilte ak konpleksite nan satisfè estanda sekirite yo. Finalman, ou pa bezwen achte enfrastrikti yo ba ou a.

Serverless ka konsidere kòm yon "eta of mind": yon sèten mantalite lè conception solisyon. Evite apwòch ki mande antretyen nenpòt enfrastrikti. Avèk yon apwòch san sèvè, nou pase tan pou rezoud pwoblèm ki dirèkteman gen enpak sou pwojè a epi ki pote valè pou itilizatè nou yo: kreye lojik biznis solid, devlope koòdone itilizatè, ak devlope API ki reponn ak serye.

Pou egzanp, si li posib pou fè pou evite jere ak kenbe yon platfòm rechèch tèks gratis, Lè sa a, se sa nou pral fè. Apwòch sa a pou bati aplikasyon yo ka dramatikman akselere tan pou mache paske ou pa bezwen panse ankò sou jere enfrastrikti konplèks. Libere tèt ou anba responsablite ak depans jesyon enfrastrikti epi konsantre sou bati aplikasyon ak sèvis kliyan ou bezwen yo. Patrick Debois rele apwòch sa a 'sèvis plen', tèm sa a aksepte nan kominote a san sèvè. Fonksyon yo ta dwe konsidere kòm lakòl la ki mare sèvis yo ansanm kòm modil deplwaye (olye ke deplwaye yon bibliyotèk antye oswa aplikasyon entènèt). Sa a bay granularite enkwayab pou jere deplwaman ak chanjman nan aplikasyon an. Si ou pa ka deplwaye fonksyon sa a, sa ka endike ke fonksyon yo ap fè twòp bagay epi yo bezwen refactorize.

Gen kèk moun ki konfonn pa depandans vandè lè yo devlope aplikasyon pou nwaj yo. Menm bagay la tou se vre ak teknoloji san sèvè, ak sa a se fasil yo dwe rezilta nan yon move konsepsyon. Dapre eksperyans nou, bati aplikasyon san sèvè sou AWS, ansanm ak kapasite AWS Lambda pou rasanble lòt sèvis AWS, se yon pati nan sa ki fè achitekti san sèvè tèlman gwo. Sa a se yon bon egzanp nan sinèrji, lè rezilta a nan yon konbinezon pi gran pase jis sòm total pati li yo. Eseye evite machann fèmen nan ka mennen nan menm plis pwoblèm. Lè w ap travay ak resipyan, li pi fasil pou jere pwòp kouch abstraksyon w ant founisè nwaj yo. Men, lè li rive solisyon san sèvè, efò a pa pral peye, sitou si ou konsidere pri-efikasite depi nan kòmansman an. Asire w ke w chèche konnen ki jan fournisseurs bay sèvis yo. Gen kèk sèvis espesyalize depann sou pwen entegrasyon ak lòt machann epi yo ka bay koneksyon plug-and-play soti nan bwat la. Li pi fasil pou bay yon apèl Lambda soti nan yon pwen final API pòtay pase proxy demann lan nan kèk veso oswa egzanp EC2. Graphcool pèmèt konfigirasyon senp lè l sèvi avèk Auth0, ki pi fasil pase lè l sèvi avèk zouti otantifikasyon twazyèm pati.

Chwazi bon machann pou aplikasyon san sèvè w la se yon desizyon nan nivo achitekti. Lè ou kreye yon aplikasyon, ou pa espere yon jou retounen nan jere serveurs. Chwazi yon vandè nwaj pa diferan pase w ap chwazi pou itilize resipyan oswa yon baz done, oswa menm yon langaj pwogramasyon.

Konsidere:

  • Ki sèvis ou bezwen e poukisa.
  • Ki sèvis founisè nwaj yo bay ak kijan ou ka konbine yo lè l sèvi avèk solisyon FaaS ou chwazi a.
  • Ki lang pwogramasyon yo sipòte (dinamikman oswa estatik tape, konpile oswa entèprete, ki referans yo, ki sa ki pèfòmans nan demaraj frèt, ki sa ki ekosistèm sous louvri, elatriye).
  • Ki kondisyon sekirite ou yo (SLA, 2FA, OAuth, HTTPS, SSL, elatriye).
  • Ki jan yo jere CI/CD ou ak sik devlopman lojisyèl.
  • Ki solisyon enfrastrikti kòm kòd ou ka pwofite?

Si w ap elaji yon aplikasyon ki deja egziste epi ajoute fonksyon san sèvè piti piti, sa ka yon ti jan limite kapasite ki disponib yo. Sepandan, prèske tout teknoloji san sèvè bay kèk kalite API (via REST oswa mesaj file) ki pèmèt ou kreye ekstansyon endepandan de nwayo aplikasyon an epi ak entegrasyon fasil. Chèche sèvis ak API klè, bon dokiman ak yon kominote solid, epi ou pa ka ale mal. Fasilite entegrasyon ka souvan yon metrik kle, epi li posib youn nan rezon prensipal ki fè AWS te gen siksè depi Lambda te soti nan 2015.

Ki lè san sèvè itil?

Teknoloji san sèvè ka itilize prèske nenpòt kote. Sepandan, avantaj yo pa limite a metòd aplikasyon an. Baryè pou antre pou cloud computing tèlman ba jodi a jisteman akòz teknoloji san sèvè. Si devlopè yo gen yon lide, men yo pa konnen ki jan yo jere enfrastrikti nwaj ak optimize depans yo, Lè sa a, yo pa bezwen chèche kèk enjenyè fè li. Si yon demaraj vle bati yon platfòm men li konsène ke depans yo ka soti nan kontwòl, yo ka fasilman ale nan solisyon san sèvè.

Mèsi a pri ekonomi ak fasilite nan dekale, solisyon san sèvè yo egalman aplikab nan tou de sistèm entèn ak ekstèn, jiska yon aplikasyon entènèt ak yon odyans miltimilyon dola. Kont yo mezire nan santim olye ke ero. Lwe egzanp ki pi senp AWS EC2 (t1.micro) pou yon mwa ap koute € 15, menm si ou pa fè anyen ak li (ki moun ki janm bliye fèmen li?!). An konparezon, pou reyalize nivo depans sa a pandan menm peryòd tan an, ou ta bezwen kouri yon Lambda 512 MB pou 1 segonn apeprè 3 milyon fwa. Men, si ou pa sèvi ak karakteristik sa a, ou pa peye anyen.

Piske san sèvè se prensipalman kondwi sou evènman, li trè fasil pou ajoute enfrastrikti san sèvè nan sistèm eritaj yo. Pou egzanp, lè l sèvi avèk AWS S3, Lambda, ak Kinesis, ou ka kreye yon sèvis analiz pou yon sistèm eritaj vann detay ki ka resevwa done atravè yon API.

Pifò platfòm san sèvè sipòte plizyè lang. Pi souvan sa yo se Python, JavaScript, C#, Java ak Go. Tipikman, tout lang pa gen okenn restriksyon sou itilizasyon bibliyotèk, kidonk, ou ka itilize bibliyotèk sous louvri pi renmen ou yo. Sepandan, li rekòmande pou pa abuze depandans pou fonksyon ou yo fè pi byen epi yo pa anile benefis ki genyen nan ÊvolutivitÊ a menmen nan aplikasyon san sèvè ou yo. Plis pakè ki bezwen chaje nan veso a, se plis demaraj frèt la ap pran.

Yon demaraj frèt se lè ou premye bezwen inisyalize veso a, ègzekutabl, ak jeran erè anvan ou itilize yo. Poutèt sa, reta nan fè fonksyon yo ka jiska 3 segonn, epi sa a se pa opsyon ki pi bon pou itilizatè enpasyan. Sepandan, demaraj frèt rive nan premye apèl la apre kèk minit nan fonksyon san fè anyen konsa. Se konsa, anpil konsidere sa a yon deranjman minè ki ka travay alantou pa regilyèman ping fonksyon an kenbe li idling. Oswa yo inyore aspè sa a tout ansanm.

Malgre ke AWS lage Serverless SQL baz done Serverless AuroraSepandan, baz done SQL yo pa ideyal pou kalite itilizasyon sa a paske yo konte sou koneksyon pou fè tranzaksyon yo, ki ka byen vit vin tounen yon bouche lè gen anpil trafik sou AWS Lambda. Wi, devlopè yo toujou ap amelyore Serverless Aurora, epi ou ta dwe fè eksperyans ak li, men jodi a solisyon NoSQL tankou dynamodb. Sepandan, pa gen okenn dout ke sitiyasyon sa a pral chanje trè byento.

Zouti a tou enpoze anpil limit, espesyalman nan zòn nan nan tès lokal yo. Malgre ke gen solisyon tankou Docker-Lambda, DynamoDB Local ak LocalStack, yo mande pou travay rigoureux ak yon kantite siyifikatif nan konfigirasyon. Sepandan, tout pwojè sa yo ap devlope aktivman, kidonk li se sèlman yon kesyon de tan anvan zouti yo rive nan nivo nou bezwen an.

Enpak teknoloji san sèvè sou sik devlopman an

Depi enfrastrikti ou a se tou senpleman konfigirasyon, ou ka defini ak deplwaye kòd lè l sèvi avèk scripts, tankou scripts koki. Oswa ou ka ale nan solisyon klas konfigirasyon-kòm-kòd tankou AWS Cloud Formation. Malgre ke sèvis sa a pa bay konfigirasyon pou tout zòn, li pèmèt ou defini resous espesifik pou itilize kòm fonksyon Lambda. Sa vle di, kote CloudFormation echwe ou, ou ka ekri pwòp resous ou (fonksyon Lambda) ki pral fèmen espas sa a. Nan fason sa a ou ka fè anyen, menm konfigirasyon depandans deyò anviwònman AWS ou.

Paske li se jis konfigirasyon, ou ka paramèt scripts deplwaman ou yo pou anviwònman espesifik, rejyon, ak itilizatè, espesyalman si w ap itilize solisyon enfrastrikti-kòm-kòd tankou CloudFormation. Pou egzanp, ou ka deplwaye yon kopi enfrastrikti a pou chak branch nan depo a pou ou ka teste yo nèt nan izolasyon pandan devlopman. Sa a radikalman akselere tan devlopè yo resevwa fidbak lè yo vle konprann si kòd yo fè byen nan yon anviwònman ap viv. Manadjè yo pa bezwen enkyete sou pri a nan deplwaye anviwònman miltip paske yo sèlman peye pou itilizasyon aktyèl la.

DevOps gen mwens enkyete paske yo sèlman bezwen asire w ke devlopè yo gen konfigirasyon ki kòrèk la. Pa gen plis jere ka, balanse, oswa gwoup sekirite. Se poutèt sa, tèm NoOps la ap itilize de pli zan pli, byenke li toujou enpòtan pou kapab konfigirasyon enfrastrikti a, espesyalman lè li rive konfigirasyon IAM ak optimize resous nwaj yo.

Gen zouti siveyans ak vizibilite trè pwisan tankou Epsagon, Thundra, Dashbird ak IOPipe. Yo pèmèt ou kontwole eta aktyèl aplikasyon pou san sèvè, bay mòso bwa ak tras, pran mezi pèfòmans ak blokaj achitekti, fè analiz pri ak previzyon, ak plis ankò. Non sèlman yo bay enjenyè DevOps, devlopè, ak achitèk yo yon vizyon konplè sou pèfòmans aplikasyon an, men yo tou pèmèt manadjè yo jwenn vizibilite nan depans resous an tan reyèl, dezyèm pa dezyèm ak previzyon pri. Li pi difisil pou òganize sa a ak yon enfrastrikti jere.

Konsepsyon aplikasyon san sèvè se pi fasil paske ou pa oblije deplwaye sèvè entènèt, jere machin vityèl oswa resipyan, sèvè patch, sistèm operasyon, pòtay Entènèt, elatriye. Abstraksyon tout responsablite sa yo pèmèt achitekti san sèvè konsantre sou sa ki pi enpòtan: solisyon an. biznis ak bezwen kliyan yo.

Pandan ke zouti a ta ka pi bon (li ap amelyore chak jou), devlopè yo ka konsantre sou mete ann aplikasyon lojik biznis ak ki jan yo pi byen distribye konpleksite aplikasyon an atravè diferan sèvis nan achitekti a. Jesyon aplikasyon san sèvè baze sou evènman ak abstrè pa founisè nwaj la (pa egzanp, SQS, evènman S3 oswa kouran DynamoDB). Se poutèt sa, devlopè yo sèlman bezwen ekri lojik biznis pou reyaji a sèten evènman, epi yo pa bezwen enkyete sou ki jan pi bon yo aplike baz done ak ke moun kap kriye mesaj, oswa ki jan yo pi byen travay ak done nan depo pyès ki nan konpitè espesifik.

Kòd ka egzekite ak debogaj lokalman, menm jan ak nenpòt pwosesis devlopman. Tès inite yo rete menm jan an. Kapasite pou deplwaye tout yon enfrastrikti aplikasyon lè l sèvi avèk yon konfigirasyon pile koutim pèmèt devlopè yo jwenn byen vit fidbak enpòtan san yo pa enkyete sou pri tès la oswa enpak sou anviwònman jere chè.

Zouti ak teknik pou bati aplikasyon san sèvè

Pa gen okenn fason espesifik yo bati aplikasyon san sèvè. Osi byen ke yon seri sèvis pou travay sa a. Lidè nan mitan solisyon pwisan san sèvè jodi a se AWS, men peye atansyon sou Google nwaj, tan и Firebase. Si w ap itilize AWS, Lè sa a, nou ka rekòmande kòm yon apwòch nan kolekte aplikasyon yo Modèl aplikasyon san sèvè (SAM), sitou lè w ap itilize C#, paske Visual Studio gen gwo zouti. SAM CLI ka fè tout sa Visual Studio ka fè, kidonk, ou pa pral pèdi anyen si ou chanje nan yon IDE diferan oswa editè tèks. Natirèlman, SAM travay ak lòt lang tou.

Si w ekri nan lòt lang, Serverless Framework a se yon ekselan zouti sous louvri ki pèmèt ou konfigirasyon nenpòt bagay lè l sèvi avèk dosye konfigirasyon YAML trè pwisan. Serverless Framework sipòte tou divès kalite sèvis nwaj, kidonk nou rekòmande li bay moun ki ap chèche pou yon solisyon milti-nwaj. Li te gen yon kominote gwo ki te kreye yon pakèt moun sou grefon pou nenpòt ki bezwen.

Pou tès lokal yo, zouti sous louvri Docker-Lambda, Serverless Local, DynamoDB Local ak LocalStack yo byen adapte. Teknoloji san sèvè yo toujou nan yon etap byen bonè nan devlopman, menm jan yo se zouti yo pou yo, kidonk, w ap oblije travay di lè w ap òganize senaryo tès konplèks. Sepandan, tou senpleman deplwaye chemine a nan anviwònman an ak tès li la vire soti nan ekstrèmman bon mache. Epi ou pa bezwen fè yon kopi lokal egzak nan anviwònman nwaj ou yo.

Sèvi ak AWS Lambda Layers pou redwi gwosè pake ki deplwaye yo epi akselere tan chajman yo.

Sèvi ak bon langaj pwogramasyon pou travay espesifik. Diferan lang yo gen pwòp avantaj ak dezavantaj yo. Gen anpil referans, men JavaScript, Python, ak C# (.NET Core 2.1+) se lidè yo an tèm de pèfòmans AWS Lambda. AWS Lambda dènyèman te entwodui yon API Runtime ki pèmèt ou presize lang ou vle ak anviwònman ègzekutabl, kidonk fè eksperyans.

Kenbe gwosè pake deplwaman piti. Pi piti yo, se pi vit yo chaje. Evite itilize bibliyotèk gwo, sitou si w itilize yon koup de fonctionnalitÊs de yo. Si w ap pwograme nan JavaScript, sèvi ak zouti bati tankou Webpack pou optimize bati ou epi sèlman enkli sa ou reyèlman bezwen. .NET Core 3.0 gen ladann QuickJit ak Tired Compilation, ki amelyore pèfòmans ak anpil ede ak demaraj frèt.

Depandans fonksyon san sèvè sou evènman yo ka fè li difisil pou kowòdone lojik biznis an premye. File mesaj ak machin leta yo ka ekstrèmman itil nan sans sa a. Fonksyon Lambda ka rele youn ak lòt, men sèlman fè sa si ou pa atann yon repons ("dife ak bliye") - ou pa vle jwenn bòdwo pou tann pou yon lòt fonksyon fini. File mesaj yo itil pou izole moso nan lojik biznis, jere kou boutèy aplikasyon yo, ak trete tranzaksyon (itilize keu FIFO). Fonksyon AWS Lambda yo ka asiyen nan keu SQS kòm ke moun kap kriye mesaj kole ki swiv mesaj ki echwe pou analiz pita. Fonksyon Etap AWS (machin eta) yo trè itil pou jere pwosesis konplèks ki mande pou chenn fonksyon yo. Olye pou yon fonksyon Lambda rele yon lòt fonksyon, fonksyon Etap yo ka kowòdone tranzisyon eta yo, pase done ant fonksyon yo, epi jere eta global fonksyon yo. Sa a pèmèt ou defini kondisyon retry, oswa sa pou w fè lè yon erè espesifik rive - yon zouti trè pwisan nan sèten kondisyon.

Konklizyon

Nan dènye ane yo, teknoloji san sèvè yo te devlope nan yon vitès san parèy. Gen sèten move konsepsyon ki asosye ak chanjman paradigm sa a. Lè yo abstrè enfrastrikti ak jere ÊvolutivitÊ, solisyon san sèvè yo ofri benefis enpòtan, soti nan devlopman senplifye ak pwosesis DevOps rive nan gwo rediksyon nan depans operasyonèl yo.
Malgre ke apwòch san sèvè a se pa san dezavantaj li yo, gen modèl konsepsyon serye ki ka itilize pou kreye aplikasyon san sèvè solid oswa entegre eleman san sèvè nan achitekti ki deja egziste.

Sous: www.habr.com

Add nouvo kòmantè