
Għalkemm it-teknoloġiji bla server kisbu popolarità malajr f'dawn l-aħħar snin, għad hemm ħafna kunċetti żbaljati u biżgħat assoċjati magħhom. Id-dipendenza tal-bejjiegħ, l-għodda, il-ġestjoni tal-ispejjeż, il-bidu kiesaħ, il-monitoraġġ u ċ-ċiklu tal-ħajja tal-iżvilupp huma kollha suġġetti jaħarqu meta niġu għal teknoloġiji mingħajr server. F'dan l-artikolu, ser nesploraw xi wħud mis-suġġetti msemmija, kif ukoll naqsmu pariri u links għal sorsi ta 'informazzjoni ta' għajnuna biex ngħinu lill-jibdew joħolqu applikazzjonijiet mingħajr server b'saħħithom, flessibbli u kost-effettivi.
Kunċetti żbaljati Dwar Teknoloġiji Serverless
Ħafna nies jaħsbu li l-ipproċessar mingħajr server u bla server (, FaaS) huma kważi l-istess ħaġa. Dan ifisser li d-differenza mhix kbira wisq u ta’ min idaħħal novità. Għalkemm AWS Lambda kienet waħda mill-istilel ta 'l-aqwa żmien tas-server u wieħed mill-elementi l-aktar popolari ta' l-arkitettura mingħajr server, madankollu, din l-arkitettura hija ħafna aktar minn FaaS.
Il-prinċipju bażiku wara t-teknoloġiji mingħajr server huwa li m'għandekx għalfejn tinkwieta dwar il-ġestjoni u l-iskala tal-infrastruttura tiegħek, inti tħallas biss għal dak li tuża. Ħafna servizzi jaqblu ma 'dawn il-kriterji - AWS DynamoDB, S3, SNS jew SQS, Graphcool, Auth0, Now, Netlify, Firebase u ħafna oħrajn. B'mod ġenerali, serverless ifisser li tuża s-saħħa sħiħa tal-cloud computing mingħajr il-ħtieġa li timmaniġġja l-infrastruttura u tottimizzaha għall-iskala. Ifisser ukoll li s-sigurtà fil-livell tal-infrastruttura m'għadhiex it-tħassib tiegħek, li huwa benefiċċju kbir minħabba d-diffikultà u l-kumplessità li jintlaħqu l-istandards tas-sigurtà. Fl-aħħarnett, m'għandekx għalfejn tixtri l-infrastruttura pprovduta lilek.
Serverless jista 'jitqies bħala "stat tal-moħħ": ċerta mentalità meta tfassal is-soluzzjonijiet. Evita approċċi li jeħtieġu manutenzjoni ta 'kwalunkwe infrastruttura. B'approċċ mingħajr server, nqattgħu ħin insolvu kompiti li jaffettwaw direttament il-proġett u jġibu benefiċċji lill-utenti tagħna: noħolqu loġika tan-negozju sostenibbli, niżviluppaw interfaces tal-utent, u niżviluppaw APIs adattivi u affidabbli.
Pereżempju, jekk ikun possibbli li tevita li timmaniġġja u żżomm pjattaforma ta' tfittxija b'test liberu, allura dan huwa dak li se nagħmlu. Dan l-approċċ għall-bini ta 'applikazzjonijiet jista' jħaffef ħafna l-ħin biex jitqiegħed fis-suq, għaliex m'għadx għandek bżonn taħseb dwar il-ġestjoni ta 'infrastruttura kumplessa. Elimina r-responsabbiltajiet u l-ispejjeż tal-ġestjoni tal-infrastruttura u tiffoka fuq il-bini tal-applikazzjonijiet u s-servizzi li l-klijenti tiegħek jeħtieġu. Patrick Debois sejjaħ dan l-approċċ , it-terminu huwa adottat fil-komunità serverless. Il-funzjonijiet għandhom jitqiesu bħala link għas-servizzi bħala moduli li jistgħu jiġu skjerati (minflok ma jiġu skjerati librerija sħiħa jew applikazzjoni tal-web). Dan jipprovdi granularità inkredibbli għall-ġestjoni tal-iskjerament u l-bidliet fl-applikazzjoni. Jekk ma tistax tuża funzjonijiet b'dan il-mod, allura jista' jindika li l-funzjonijiet iwettqu wisq kompiti u jeħtieġ li jiġu refactored.
Xi wħud huma konfużi bid-dipendenza fuq il-bejjiegħ meta jiżviluppaw applikazzjonijiet tas-sħab. L-istess jgħodd għat-teknoloġiji mingħajr server, u dan bilkemm huwa kunċett żbaljat. Fl-esperjenza tagħna, il-bini ta' applikazzjonijiet mingħajr server fuq AWS, flimkien mal-kapaċità ta' AWS Lambda li jgħaqqad servizzi oħra AWS flimkien, huwa parti mis-saħħa ta' arkitetturi mingħajr server. Dan huwa eżempju tajjeb ta 'sinerġija, meta r-riżultat tal-kombinazzjoni huwa aktar minn sempliċiment is-somma tat-termini. Li tipprova tevita d-dipendenza tal-bejjiegħ tista 'tiffaċċja saħansitra aktar problemi. Meta taħdem ma 'kontenituri, huwa aktar faċli li timmaniġġja s-saff ta' astrazzjoni tiegħek stess bejn il-fornituri tas-sħab. Iżda meta niġu għal soluzzjonijiet serverless, l-isforz mhux se jħallas, speċjalment jekk il-kosteffettività titqies mill-bidu. Kun żgur li ssir taf kif il-bejjiegħa jipprovdu servizzi. Xi servizzi speċjalizzati jiddependu fuq punti ta 'integrazzjoni ma' bejjiegħa oħra u jistgħu jipprovdu konnettività plug-and-play barra mill-kaxxa. Huwa aktar faċli li tipprovdi sejħa Lambda minn endpoint API ta' gateway milli li t-talba tiġi proxy għal xi kontenitur jew istanza EC2. Graphcool jipprovdi konfigurazzjoni faċli ma 'Auth0, li hija aktar faċli milli tuża għodod ta' awtentikazzjoni ta 'parti terza.
L-għażla tal-bejjiegħ it-tajjeb għall-applikazzjoni mingħajr server tiegħek hija deċiżjoni arkitettonika. Meta toħloq applikazzjoni, ma tistennax li xi darba terġa' lura għall-ġestjoni tas-servers. L-għażla ta 'bejjiegħ tal-cloud mhijiex differenti mill-għażla li tuża kontenituri jew database, jew saħansitra lingwa ta' programmar.
Ikkunsidra:
- X'servizzi għandek bżonn u għaliex.
- X'servizzi jipprovdu l-fornituri tas-sħab u kif tista' tgħaqqadhom mas-soluzzjoni FaaS magħżula tiegħek.
- Liema lingwi ta 'programmar huma appoġġjati (b'ittajpjar dinamiku jew statiku, ikkumpilat jew interpretat, x'inhuma l-punti ta' referenza, x'inhi l-prestazzjoni fuq startjar kiesaħ, x'inhi l-ekosistema open source, eċċ.).
- X'inhuma r-rekwiżiti tas-sigurtà tiegħek (SLA, 2FA, OAuth, HTTPS, SSL, eċċ.).
- Kif timmaniġġja ċ-ċikli tal-iżvilupp tas-CI/CD u tas-softwer tiegħek.
- Liema soluzzjonijiet ta 'infrastruttura bħala kodiċi tista' tieħu vantaġġ minnhom.
Jekk testendi applikazzjoni eżistenti u żżid b'mod inkrementali funzjonalità bla server, dan jista' jillimita xi ftit il-kapaċitajiet disponibbli. Madankollu, kważi t-teknoloġiji mingħajr servers kollha jipprovdu xi tip ta 'API (permezz ta' REST jew kjuwijiet ta 'messaġġi) li jippermettilek toħloq estensjonijiet indipendenti mill-qalba tal-applikazzjoni u b'integrazzjoni faċli. Fittex servizzi b'APIs ċari, dokumentazzjoni tajba, u komunità b'saħħitha, u ma tistax tmur ħażin. Il-faċilità ta 'integrazzjoni ta' spiss tista 'tkun metrika ewlenija, u hija probabbilment waħda mir-raġunijiet ewlenin għaliex AWS kellha tant suċċess minn meta Lambda ġiet rilaxxata fl-2015.
Meta Serverless Huwa Tajjeb
Teknoloġiji serverless jistgħu jiġu applikati kważi kullimkien. Madankollu, il-vantaġġi tagħhom mhumiex limitati għal mod wieħed biss ta 'applikazzjoni. L-ostaklu għad-dħul għall-cloud computing illum huwa tant baxx grazzi għal teknoloġiji mingħajr server. Jekk l-iżviluppaturi għandhom idea, iżda ma jafux kif jimmaniġġjaw l-infrastruttura tal-cloud u jottimizzaw l-ispejjeż, allura m'għandhomx għalfejn ifittxu xi tip ta 'inġinier biex jagħmlu dan. Jekk startup trid tibni pjattaforma iżda tibża' li l-ispejjeż jistgħu joħorġu mill-kontroll, jistgħu faċilment jirrikorru għal soluzzjonijiet mingħajr server.
Minħabba l-iffrankar tal-ispejjeż u l-faċilità tal-iskala, is-soluzzjonijiet mingħajr server huma applikabbli bl-istess mod kemm għal sistemi interni kif ukoll esterni, sa applikazzjoni tal-web b'udjenza ta 'bosta miljuni. Il-kontijiet jitkejlu aktar milli f'euro, iżda f'ċenteżmi. Il-kiri ta' l-aktar eżempju sempliċi ta' AWS EC2 (t1.micro) għal xahar se jiswa €15, anke jekk ma tagħmel xejn biha (min qatt ma nesa jitfiha?!). B'paragun, biex tilħaq dan il-livell ta' nfiq fuq l-istess perjodu ta' żmien, ikollok bżonn tħaddem Lambda ta' 512 MB għal sekonda 1 madwar 3 miljun darba. U jekk ma tużax din il-karatteristika, allura ma tħallas xejn.
Minħabba li serverless hija primarjament immexxija mill-avvenimenti, huwa pjuttost faċli li żżid infrastruttura serverless għal sistemi eqdem. Pereżempju, billi tuża AWS S3, Lambda u Kinesis, tista' toħloq servizz analitiku għal sistema antika tal-bejgħ bl-imnut li tista' tirċievi dejta permezz ta' API.
Il-biċċa l-kbira tal-pjattaformi serverless jappoġġjaw lingwi multipli. Ħafna drabi huwa Python, JavaScript, C#, Java u Go. Normalment ma jkun hemm l-ebda restrizzjonijiet fuq l-użu tal-libreriji fil-lingwi kollha, sabiex tkun tista' tuża l-libreriji favoriti tiegħek open source. Madankollu, huwa rakkomandabbli li ma tabbużax mid-dipendenzi sabiex il-funzjonijiet tiegħek jaħdmu bl-aħjar mod u ma jiċħdux il-benefiċċji tal-iskalabbiltà enormi tal-applikazzjonijiet mingħajr server tiegħek. Iktar ma jkun hemm bżonn li jitgħabbew pakketti fil-kontenitur, iktar se jieħu l-bidu kiesaħ.
Bidu kiesaħ huwa meta l-ewwel trid tinizjalizza l-kontenitur, ir-runtime, u l-immaniġġjar tal-iżbalji qabel tużahom. Minħabba dan, id-dewmien fl-eżekuzzjoni tal-funzjonijiet jista 'jkun sa 3 sekondi, u din mhix l-aħjar għażla għal utenti bla paċenzja. Madankollu, il-bidu kiesaħ iseħħ fl-ewwel sejħa wara ftit minuti ta 'funzjoni idle. Allura ħafna jqisu dan bħala dwejjaq minuri li jista 'jinħadem billi regolarment tagħmel ping tal-funzjoni biex iżżommha idling. Jew jinjoraw dan l-aspett għal kollox.
Għalkemm AWS rilaxxatiMadankollu, id-databases SQL mhumiex ideali għal din l-applikazzjoni, peress li jiddependu fuq konnessjonijiet biex iwettqu tranżazzjonijiet, li jistgħu jsiru malajr ostakolu bi traffiku qawwi fuq AWS Lambda. Iva, l-iżviluppaturi qed itejbu kontinwament Serverless Aurora, u għandek tesperimenta magħha, iżda llum soluzzjonijiet NoSQL bħal. Madankollu, m'hemmx dubju li din is-sitwazzjoni se tinbidel dalwaqt.
L-għodda timponi wkoll ħafna restrizzjonijiet, speċjalment fil-qasam tal-ittestjar lokali. Għalkemm hemm soluzzjonijiet bħal Docker-Lambda, DynamoDB Local u LocalStack, jeħtieġu xogħol iebes u ammont sinifikanti ta 'konfigurazzjoni. Madankollu, dawn il-proġetti kollha huma żviluppati b'mod attiv, għalhekk hija biss kwistjoni ta 'żmien qabel ma l-għodda tilħaq il-livell li għandna bżonn.
L-impatt tat-teknoloġiji bla server fuq iċ-ċiklu tal-iżvilupp
Minħabba li l-infrastruttura tiegħek hija biss konfigurazzjoni, tista 'tiddefinixxi u tuża kodiċi billi tuża skripts, bħal skripts tal-qoxra. Jew tista 'tirrikorri għal soluzzjonijiet ta' klassi konfigurazzjoni-as-code simili . Għalkemm dan is-servizz ma jipprovdix konfigurazzjoni għall-oqsma kollha, jippermettilek tiddefinixxi riżorsi speċifiċi biex tużahom bħala funzjonijiet Lambda. Jiġifieri, fejn CloudFormation jonqoslek, tista 'tikteb ir-riżors tiegħek stess (funzjoni Lambda) li se tagħlaq dan il-vojt. B'dan il-mod tista 'tagħmel xi ħaġa, anke tikkonfigura dipendenzi barra mill-ambjent AWS tiegħek.
Minħabba li kollox huwa konfigurazzjoni biss, tista' tippersonalizza l-iskripts tal-iskjerament tiegħek għal ambjenti, reġjuni u utenti speċifiċi, speċjalment jekk qed tuża soluzzjonijiet ta' infrastruttura bħala kodiċi bħal CloudFormation. Pereżempju, tista' tuża kopja tal-infrastruttura għal kull fergħa fir-repożitorju sabiex tkun tista' tittestjahom kompletament b'mod iżolat waqt l-iżvilupp. Dan iħaffef drastikament ir-rispons għall-iżviluppaturi meta jkunu jridu jifhmu jekk il-kodiċi tagħhom jaħdemx b'mod adegwat f'ambjent ħaj. Il-maniġers m'għandhomx għalfejn joqogħdu jinkwetaw dwar l-ispiża tal-iskjerament ta' ambjenti multipli, peress li jħallsu biss għall-użu attwali.
DevOps għandhom inqas inkwiet peress li għandhom bżonn biss li jiżguraw li l-iżviluppaturi jkollhom il-konfigurazzjoni korretta. M'għadx għandek bżonn timmaniġġja istanzi, balancers, jew gruppi ta' sigurtà. Għalhekk, it-terminu NoOps qed jintuża dejjem aktar, għalkemm għadu importanti li tkun tista 'tikkonfigura l-infrastruttura, speċjalment meta niġu għall-konfigurazzjoni tal-IAM u l-ottimizzazzjoni tar-riżorsi tal-cloud.
Hemm għodod ta 'monitoraġġ u viżwalizzazzjoni b'saħħithom ħafna bħal Epsagon, Thundra, Dashbird u IOPipe. Jippermettulek tissorvelja l-istat attwali tal-applikazzjonijiet mingħajr server tiegħek, tipprovdi illoggjar u traċċar, taqbad il-metriċi tal-prestazzjoni u l-ostakli tal-arkitettura, twettaq analiżi tal-ispejjeż u tbassir, u aktar. Huma mhux biss jagħtu lill-inġiniera, lill-iżviluppaturi u lill-periti DevOps ħarsa komprensiva tal-prestazzjoni tal-applikazzjoni, iżda wkoll jippermettu lill-maniġers jimmonitorjaw is-sitwazzjoni f'ħin reali, bi spejjeż ta 'riżorsi għal kull sekonda u tbassir tal-ispejjeż. Huwa ħafna aktar diffiċli li torganizza dan b'infrastruttura ġestita.
Id-disinn ta' applikazzjonijiet mingħajr server huwa ħafna aktar faċli għax m'għandekx għalfejn tuża servers tal-web, timmaniġġja magni jew kontenituri virtwali, servers ta' garża, sistemi operattivi, gateways tal-internet, eċċ. Billi tneħħi dawn ir-responsabbiltajiet kollha, arkitettura bla server tista' tiffoka fuq il-qalba - is-soluzzjoni, il-ħtiġijiet tan-negozju u tal-klijenti.
Filwaqt li l-għodda tista 'tkun aħjar (jiġi aħjar kuljum), l-iżviluppaturi jistgħu jiffokaw fuq l-implimentazzjoni tal-loġika tan-negozju u jqassmu bl-aħjar mod il-kumplessità tal-applikazzjoni f'servizzi differenti fi ħdan l-arkitettura. Il-ġestjoni tal-applikazzjoni mingħajr server hija bbażata fuq l-avvenimenti u estratta mill-fornitur tal-cloud (eż. SQS, avvenimenti S3 jew flussi DynamoDB). Għalhekk, l-iżviluppaturi jeħtieġ biss jiktbu loġika tan-negozju biex jirrispondu għal ċerti avvenimenti, u m'għandhomx għalfejn joqogħdu jinkwetaw dwar kif l-aħjar jimplimentaw databases u kjuwijiet ta 'messaġġi, jew kif jorganizzaw l-aħjar xogħol bid-dejta f'ħażniet ta' hardware speċifiċi.
Il-kodiċi jista 'jitħaddem u jiġi debugged lokalment, bħal kull proċess ta' żvilupp. L-ittestjar tal-unità jibqa' l-istess. Il-kapaċità li tiskjera infrastruttura ta 'applikazzjoni sħiħa b'konfigurazzjoni ta' munzell personalizzat tippermetti lill-iżviluppaturi jiksbu malajr feedback importanti mingħajr ma jaħsbu dwar l-ispiża tal-ittestjar jew l-impatt fuq ambjenti ġestiti għaljin.
Għodod u tekniki għall-bini ta 'applikazzjonijiet serverless
M'hemm l-ebda mod speċifiku biex jinbnew applikazzjonijiet mingħajr server. Kif ukoll sett ta 'servizzi għal dan il-kompitu. AWS huwa l-mexxej fost is-soluzzjonijiet b'saħħithom mingħajr servers illum, iżda ħares ukoll lejn , и . Jekk qed tuża AWS, l-approċċ rakkomandat għall-ġbir tal-applikazzjonijiet huwa (SAM), speċjalment meta tuża C#, minħabba li Visual Studio għandu għodda kbira. Is-SAM CLI tista 'tagħmel dak kollu li Visual Studio jista' jagħmel, sabiex ma titlef xejn jekk taqleb għal IDE jew editur tat-test ieħor. Naturalment, SAM jaħdem ma 'lingwi oħra wkoll.
Jekk qed tikteb b'lingwi oħra, il-Qafas Serverless huwa għodda eċċellenti ta 'sors miftuħ li jippermettilek tikkonfigura xi ħaġa b'fajls ta' konfigurazzjoni YAML qawwija ħafna. Il-Qafas Serverless jappoġġja wkoll diversi servizzi cloud, għalhekk nirrakkomandawha lil dawk li qed ifittxu soluzzjoni multi-cloud. Għandha komunità enormi li ħolqot mazz ta 'plugins għal kwalunkwe ħtieġa.
Għall-ittestjar lokali, l-għodod open source Docker-Lambda, Serverless Local, DynamoDB Local, u LocalStack huma adattati tajjeb. Teknoloġiji serverless għadhom fl-istadji bikrija ta 'żvilupp tagħhom, kif huma l-għodod għalihom, għalhekk meta twaqqaf għal xenarji ta' test kumplessi, ser ikollok taħdem ħafna. Madankollu, sempliċement l-iskjerament tal-munzell f'ambjent u l-ittestjar hemm huwa oerhört irħis. U m'għandekx bżonn tagħmel kopja lokali eżatta tal-ambjenti tas-sħab.
Uża AWS Lambda Layers biex tnaqqas id-daqs tal-pakketti skjerati u tħaffef it-tniżżil.
Uża l-lingwi ta' programmar it-tajba għal ħidmiet speċifiċi. Lingwi differenti għandhom il-vantaġġi u l-iżvantaġġi tagħhom stess. Hemm ħafna punti ta' referenza, iżda JavaScript, Python, u C# (.NET Core 2.1+) huma l-mexxejja f'termini ta 'prestazzjoni AWS Lambda. AWS Lambda reċentement introduċa l-API Runtime, li tippermettilek tispeċifika l-lingwa u l-ambjent tar-runtime mixtieqa tiegħek, għalhekk esperiment.
Żomm id-daqsijiet tal-pakketti żgħar għall-iskjerament. Iktar ma jkunu iżgħar, iktar jitgħabbew malajr. Evita li tuża libreriji kbar, speċjalment jekk tuża ftit karatteristiċi minnhom. Jekk qed tipprogramma bil-JavaScript, uża għodda tal-bini bħal Webpack biex tottimizza l-bini tiegħek u tinkludi biss dak li verament għandek bżonn. .NET Core 3.0 għandu QuickJit u Tired Compilation li jtejjeb il-prestazzjoni u jgħin ħafna fil-bidu kiesaħ.
Id-dipendenza ta' funzjonijiet bla server fuq avvenimenti tista' tagħmilha diffiċli biex tikkoordina l-loġika tan-negozju għall-ewwel. F'dan ir-rigward, il-kjuwijiet tal-messaġġi u l-magni tal-istat jistgħu jkunu utli oerhört. Il-funzjonijiet lambda jistgħu jsejħu lil xulxin, iżda jagħmlu dan biss jekk ma tkunx qed tistenna rispons ("nar u tinsa") - ma tridx li tiġi ffatturat talli tistenna li titlesta funzjoni oħra. Il-kjuwijiet tal-messaġġi huma utli għall-iżolament ta' partijiet tal-loġika tan-negozju, il-ġestjoni tal-konġestjonijiet tal-applikazzjoni, u l-ipproċessar tat-tranżazzjonijiet (bl-użu tal-kjuwijiet FIFO). Il-funzjonijiet AWS Lambda jistgħu jiġu assenjati lill-kjuwijiet SQS bħala kjuwijiet tal-messaġġi mwaħħla li jżommu rekord tal-messaġġi falluti għal analiżi aktar tard. Il-Funzjonijiet Pass tal-AWS (magni tal-istat) huma utli ħafna għall-ġestjoni ta' proċessi kumplessi li jeħtieġu kkatinar ta' funzjonijiet. Minflok funzjoni Lambda ssejjaħ funzjoni oħra, il-funzjonijiet tal-pass jistgħu jikkoordinaw it-tranżizzjonijiet tal-istat, jgħaddu data bejn il-funzjonijiet, u jimmaniġġjaw l-istat globali tal-funzjonijiet. Dan jippermettilek tiddefinixxi kundizzjonijiet mill-ġdid, jew x'għandek tagħmel meta jseħħ żball partikolari - għodda qawwija ħafna f'ċerti kundizzjonijiet.
Konklużjoni
F'dawn l-aħħar snin, it-teknoloġiji bla servers qed jiżviluppaw b'pass bla preċedent. Hemm ċerti kunċetti żbaljati assoċjati ma 'din il-bidla fil-paradigma. Bl-astrazzjoni tal-infrastruttura u l-immaniġġjar tal-iskala, is-soluzzjonijiet serverless joffru benefiċċji sinifikanti, minn żvilupp simplifikat u proċessi DevOps għal tnaqqis massiv fl-ispejjeż operattivi.
Filwaqt li l-approċċ mingħajr server mhuwiex mingħajr l-iżvantaġġi tiegħu, hemm mudelli ta 'disinn robusti li jistgħu jintużaw biex jinbnew applikazzjonijiet robusti mingħajr server jew jintegraw elementi mingħajr server f'arkitetturi eżistenti.
Sors: www.habr.com
