Walay server sa mga rack

Walay server sa mga rack
Ang walay server dili mahitungod sa pisikal nga pagkawala sa mga server. Dili kini usa ka container killer o usa ka lumalabay nga uso. Kini usa ka bag-ong pamaagi sa pagtukod sa mga sistema sa panganod. Sa artikulo karong adlawa atong hikapon ang arkitektura sa Serverless nga mga aplikasyon, atong tan-awon kung unsa ang papel sa Serverless service provider ug open-source nga mga proyekto. Sa katapusan, atong hisgutan ang mga isyu sa paggamit sa Serverless.

Gusto kong magsulat sa usa ka server nga bahin sa usa ka aplikasyon (o bisan usa ka online nga tindahan). Kini mahimo nga usa ka chat, usa ka serbisyo sa pagpatik sa sulud, o usa ka balanse sa pagkarga. Sa bisan unsang kaso, adunay daghang mga labad sa ulo: kinahanglan nimo nga andamon ang imprastraktura, mahibal-an ang mga dependency sa aplikasyon, ug hunahunaa ang operating system sa host. Unya kinahanglan nimo nga i-update ang gagmay nga mga sangkap nga dili makaapekto sa operasyon sa nahabilin nga monolith. Aw, dili nato kalimtan ang bahin sa pag-scale ubos sa load.

Unsa kaha kung magkuha kita og mga ephemeral nga mga sudlanan, diin ang gikinahanglan nga mga dependency na-pre-install na, ug ang mga sudlanan mismo nahimulag gikan sa usag usa ug gikan sa host OS? Atong bahinon ang monolith ngadto sa mga microservice, ang matag usa mahimong ma-update ug ma-scale nga independente sa uban. Pinaagi sa pagbutang sa code sa ingon nga sudlanan, mahimo nako kini ipadagan sa bisan unsang imprastraktura. Mas maayo na.

Unsa kaha kung dili nimo gusto nga i-configure ang mga sulud? Dili ko gusto nga maghunahuna bahin sa pag-scale sa aplikasyon. Dili ko gusto nga magbayad alang sa mga walay pulos nga nagdagan nga mga sudlanan kung gamay ra ang karga sa serbisyo. Gusto kong magsulat og code. Pag-focus sa lohika sa negosyo ug pagdala sa mga produkto sa merkado sa katulin sa kahayag.

Ang ingon nga mga hunahuna nagdala kanako sa serverless computing. Serverless sa niini nga kaso nagpasabot dili ang pisikal nga pagkawala sa mga server, apan ang pagkawala sa mga sakit sa ulo sa pagdumala sa imprastraktura.

Ang ideya mao nga ang lohika sa aplikasyon gibahin sa mga independente nga gimbuhaton. Adunay sila usa ka istruktura sa panghitabo. Ang matag function naghimo sa usa ka "microtask". Ang tanan nga gikinahanglan gikan sa developer mao ang pag-load sa mga gimbuhaton ngadto sa console nga gihatag sa cloud provider ug i-correlate kini sa mga tinubdan sa panghitabo. Ang code ipatuman sa panginahanglan sa usa ka awtomatik nga giandam nga sudlanan, ug ako ra ang mobayad sa oras sa pagpatay.

Atong tan-awon kung unsa ang hitsura sa proseso sa pagpalambo sa aplikasyon karon.

Gikan sa bahin sa developer

Sa sayo pa nagsugod kami sa paghisgot bahin sa usa ka aplikasyon alang sa usa ka online nga tindahan. Sa tradisyonal nga pamaagi, ang panguna nga lohika sa sistema gihimo sa usa ka monolithic nga aplikasyon. Ug ang server nga adunay aplikasyon kanunay nga nagdagan, bisan kung wala’y load.

Aron mobalhin ngadto sa serverless, among gibuak ang aplikasyon ngadto sa microtasks. Gisulat namon ang among kaugalingon nga gimbuhaton alang sa matag usa kanila. Ang mga gimbuhaton independente sa usag usa ug wala magtipig sa kasayuran sa estado (walay estado). Mahimo pa gani sila nga isulat sa lain-laing mga pinulongan. Kung ang usa kanila "mahulog", ang tibuok nga aplikasyon dili mohunong. Ang arkitektura sa aplikasyon mahimong ingon niini:

Walay server sa mga rack
Ang pagkabahin sa mga gimbuhaton sa Serverless parehas sa pagtrabaho sa mga microservice. Apan ang usa ka microservice makahimo sa daghang mga buluhaton, ug ang usa ka function kinahanglan nga maghimo usa. Hunahunaa nga ang buluhaton mao ang pagkolekta sa mga estadistika ug ipakita kini sa hangyo sa tiggamit. Sa microservice approach, usa ka buluhaton ang gihimo sa usa ka serbisyo nga adunay duha ka entry point: pagsulat ug pagbasa. Sa serverless computing, kini mahimong duha ka lain-laing mga gimbuhaton nga walay kalabutan sa usag usa. Ang developer nagtipig sa mga kapanguhaan sa pag-compute kung, pananglitan, ang mga estadistika kanunay nga gi-update kaysa kini gi-download.

Ang mga function nga walay server kinahanglan nga ipatuman sa mubo nga panahon (timeout), nga gitino sa service provider. Pananglitan, alang sa AWS ang timeout kay 15 minutos. Kini nagpasabot nga ang dugay na nga mga gimbuhaton kinahanglan nga usbon aron mahiangay sa mga kinahanglanon - kini ang nagpalahi sa Serverless gikan sa ubang mga sikat nga teknolohiya karon (mga sudlanan ug Platform isip Serbisyo).

Nag-assign kami og usa ka panghitabo sa matag function. Ang usa ka panghitabo usa ka hinungdan sa usa ka aksyon:

Panghitabo
Ang aksyon nga gihimo sa function

Usa ka hulagway sa produkto ang gi-upload sa repositoryo.
I-compress ang imahe ug i-upload sa usa ka direktoryo

Ang adres sa pisikal nga tindahan gi-update sa database
Pagkarga ug bag-ong lokasyon sa mga mapa

Ang kliyente nagbayad alang sa mga butang
Pagsugod sa pagproseso sa pagbayad

Ang mga panghitabo mahimong HTTP requests, streaming data, message queue, ug uban pa. Ang mga tinubdan sa panghitabo kay mga kausaban o panghitabo sa datos. Dugang pa, ang mga function mahimong ma-trigger sa usa ka timer.

Ang arkitektura nahimo, ug ang aplikasyon hapit nahimong walay server. Sunod moadto kami sa service provider.

Gikan sa bahin sa provider

Kasagaran, ang serverless computing gitanyag sa mga cloud service providers. Gitawag sila nga lahi: Azure Functions, AWS Lambda, Google Cloud Functions, IBM Cloud Functions.

Gamiton namo ang serbisyo pinaagi sa console o personal nga account sa provider. Ang function code mahimong ma-download sa usa sa mosunod nga mga paagi:

  • pagsulat code sa built-in nga mga editor pinaagi sa web console,
  • i-download ang archive gamit ang code,
  • pagtrabaho uban sa publiko o pribado nga git repository.

Dinhi among gipahimutang ang mga panghitabo nga nagtawag sa function. Ang mga set sa mga panghitabo mahimong magkalainlain alang sa lainlaing mga provider.

Walay server sa mga rack

Ang provider nagtukod ug nag-automate sa Function as a Service (FaaS) nga sistema sa imprastraktura niini:

  1. Ang function code natapos sa pagtipig sa bahin sa provider.
  2. Kung mahitabo ang usa ka panghitabo, ang mga sudlanan nga adunay giandam nga palibot awtomatiko nga i-deploy sa server. Ang matag function instance adunay kaugalingon nga nahilit nga sudlanan.
  3. Gikan sa pagtipig, ang function ipadala sa sudlanan, kalkulado, ug ibalik ang resulta.
  4. Ang gidaghanon sa managsama nga mga panghitabo nagkadako - ang gidaghanon sa mga sudlanan nagkadako. Awtomatikong motimbang ang sistema. Kung ang mga tiggamit dili maka-access sa function, kini mahimong dili aktibo.
  5. Gitakda sa provider ang oras nga wala’y mahimo alang sa mga sudlanan - kung sa niining panahona ang mga function dili makita sa sulud, kini malaglag.

Niining paagiha makuha nato ang Serverless gikan sa kahon. Magbayad kami alang sa serbisyo gamit ang modelo nga pay-as-you-go ug alang lamang sa mga gimbuhaton nga gigamit, ug alang lamang sa oras kung kanus-a kini gigamit.

Aron ipaila ang mga developer sa serbisyo, ang mga provider nagtanyag hangtod sa 12 ka bulan nga libre nga pagsulay, apan limitahan ang kinatibuk-ang oras sa pagkalkula, gidaghanon sa mga hangyo matag bulan, pondo o konsumo sa kuryente.

Ang nag-unang bentaha sa pagtrabaho kauban ang usa ka provider mao ang abilidad nga dili mabalaka bahin sa imprastraktura (mga server, virtual machine, mga sudlanan). Sa bahin niini, ang tighatag mahimong magpatuman sa FaaS gamit ang kaugalingon nga mga pag-uswag ug gamit ang mga himan nga bukas nga gigikanan. Atong hisgotan ang dugang bahin kanila.

Gikan sa open source nga bahin

Ang open-source nga komunidad aktibo nga nagtrabaho sa Serverless nga mga himan sa miaging duha ka tuig. Ang pinakadako nga mga magdudula sa merkado nakatampo usab sa pag-uswag sa mga platform nga wala’y server:

  • Google nagtanyag sa mga developer sa iyang open-source nga himan - kabatid. Ang IBM, RedHat, Pivotal ug SAP miapil sa pagpalambo niini;
  • IBM nagtrabaho sa usa ka Serverless nga plataporma OpenWhisk, nga nahimong proyekto sa Apache Foundation;
  • Microsoft partially giablihan ang plataporma code Mga Kalihokan sa Azure.

Nagpadayon usab ang mga pag-uswag sa direksyon sa mga balangkas nga wala’y server. Kubeless ΠΈ Pagkaputli gibutang sa sulod sa pre-prepared Kubernetes clusters, OpenFaaS nagtrabaho kauban ang Kubernetes ug Docker Swarm. Ang balangkas naglihok isip usa ka matang sa controller - sa hangyo, kini nag-andam sa usa ka runtime nga palibot sa sulod sa cluster, unya maglunsad og usa ka function didto.

Ang mga balangkas nagbilin ug lugar alang sa pag-configure sa himan aron mohaum sa imong mga panginahanglan. Busa, sa Kubeless, ang usa ka developer makahimo sa pag-configure sa function execution timeout (ang default value mao ang 180 segundos). Ang Fission, sa pagsulay sa pagsulbad sa bugnaw nga problema sa pagsugod, nagsugyot sa pagpadayon sa pipila ka mga sudlanan nga nagdagan sa tanan nga oras (bisan kung kini nag-apil sa mga gasto sa downtime sa kapanguhaan). Ug ang OpenFaaS nagtanyag usa ka hugpong sa mga hinungdan alang sa matag lami ug kolor: HTTP, Kafka, Redis, MQTT, Cron, AWS SQS, NAT ug uban pa.

Ang mga panudlo sa pagsugod makita sa opisyal nga dokumentasyon sa mga balangkas. Ang pagtrabaho kauban nila nanginahanglan nga adunay gamay nga kahanas kaysa sa pagtrabaho kauban ang usa ka tighatag - labing menos kini ang abilidad sa paglansad sa usa ka kumpol sa Kubernetes pinaagi sa CLI. Sa kadaghanan, iapil ang ubang mga himan nga bukas nga gigikanan (pananglitan, ang manager sa pila sa Kafka).

Bisan unsa pa ang among pagtrabaho sa Serverless - pinaagi sa usa ka provider o paggamit sa open-source, makadawat kami daghang mga bentaha ug disbentaha sa pamaagi nga Wala’y Server.

Gikan sa punto sa panglantaw sa mga bentaha ug disbentaha

Ang Serverless nagpalambo sa mga ideya sa usa ka imprastraktura sa sudlanan ug usa ka pamaagi sa microservice, diin ang mga koponan mahimo’g magtrabaho sa usa ka multilingguwal nga mode nga wala gihigot sa usa ka plataporma. Ang pagtukod sa usa ka sistema gipasayon ​​ug ang mga sayop mas sayon ​​sa pagtul-id. Gitugotan ka sa arkitektura sa Microservice nga makadugang bag-ong pagpaandar sa sistema nga labi ka paspas kaysa sa kaso sa usa ka monolithic nga aplikasyon.

Ang walay server makapakunhod pa sa panahon sa pag-uswag, nagtugot sa developer nga mag-focus lamang sa lohika ug coding sa negosyo sa aplikasyon. Ingon usa ka sangputanan, ang oras sa pagpamaligya alang sa mga kalamboan gipamubu.

Ingon usa ka bonus, nakakuha kami awtomatikong pag-scale alang sa pagkarga, ug kita mobayad lamang alang sa mga kapanguhaan nga gigamit ug lamang sa panahon nga kini gigamit.

Sama sa bisan unsang teknolohiya, ang Serverless adunay mga disbentaha.

Pananglitan, ang ingon nga disbentaha mahimong ang bugnaw nga oras sa pagsugod (sa aberids hangtod sa 1 segundo alang sa mga pinulongan sama sa JavaScript, Python, Go, Java, Ruby).

Sa usa ka bahin, sa tinuud, ang bugnaw nga oras sa pagsugod nagdepende sa daghang mga variable: ang sinultian diin gisulat ang function, ang gidaghanon sa mga librarya, ang kantidad sa code, komunikasyon sa dugang nga mga kapanguhaan (sama nga mga database o mga server sa pag-authenticate). Tungod kay gikontrol sa developer kini nga mga variable, mahimo niyang makunhuran ang oras sa pagsugod. Apan sa laing bahin, dili makontrol sa developer ang oras sa pagsugod sa sudlanan - kini tanan nagdepende sa taghatag.

Ang usa ka bugnaw nga pagsugod mahimong usa ka mainit nga pagsugod kung ang usa ka function naggamit pag-usab sa usa ka sudlanan nga gilunsad sa miaging panghitabo. Kini nga sitwasyon mahitabo sa tulo ka mga kaso:

  • kung ang mga kliyente kanunay nga mogamit sa serbisyo ug ang gidaghanon sa mga tawag sa function nagdugang;
  • kung ang provider, plataporma o gambalay nagtugot kanimo sa pagpadayon sa pipila ka mga sudlanan nga nagdagan sa tanang panahon;
  • kung ang developer nagpadagan sa mga function sa usa ka timer (isulti matag 3 minuto).

Alang sa daghang mga aplikasyon, ang usa ka bugnaw nga pagsugod dili usa ka problema. Dinhi kinahanglan nimo nga magtukod sa tipo ug mga buluhaton sa serbisyo. Ang paglangan sa pagsugod sa usa ka segundo dili kanunay kritikal alang sa usa ka aplikasyon sa negosyo, apan mahimo kini nga kritikal alang sa mga serbisyong medikal. Sa kini nga kaso, ang wala’y server nga pamaagi mahimo’g dili na angay.

Ang sunod nga disbentaha sa Serverless mao ang mubo nga kinabuhi sa usa ka function (timeout diin ang function kinahanglan ipatuman).

Apan, kung kinahanglan nimo nga magtrabaho uban ang dugay na nga mga buluhaton, mahimo nimong gamiton ang hybrid nga arkitektura - isagol ang Serverless sa lain nga teknolohiya.

Dili tanang sistema ang makatrabaho gamit ang Serverless scheme.

Ang ubang mga aplikasyon magtipig gihapon sa datos ug estado sa panahon sa pagpatuman. Ang ubang mga arkitektura magpabilin nga monolitik ug ang pipila ka mga bahin magdugay. Apan (sama sa mga teknolohiya sa panganod ug dayon mga sudlanan), ang Serverless usa ka teknolohiya nga adunay maayong kaugmaon.

Niini nga ugat, gusto nako nga hapsay nga magpadayon sa isyu sa paggamit sa pamaagi nga Wala’y Server.

Gikan sa bahin sa aplikasyon

Alang sa 2018, ang porsyento sa paggamit nga walay Server mitubo usa ug tunga ka beses. Lakip sa mga kompanya nga nagpatuman na sa teknolohiya sa ilang mga serbisyo mao ang mga higante sa merkado sama sa Twitter, PayPal, Netflix, T-Mobile, Coca-Cola. Sa samang higayon, kinahanglan nimong masabtan nga ang Serverless dili usa ka panacea, apan usa ka himan alang sa pagsulbad sa pipila ka mga problema:

  • Bawasan ang downtime sa kapanguhaan. Dili kinahanglan nga kanunay nga magtipig usa ka virtual nga makina alang sa mga serbisyo nga adunay gamay nga tawag.
  • Pagproseso sa datos sa langaw. Pag-compress sa mga litrato, pagputol sa mga background, pagbag-o sa pag-encode sa video, pagtrabaho kauban ang mga sensor sa IoT, paghimo mga operasyon sa matematika.
  • "Papilit" ang ubang mga serbisyo nga magkauban. Git repository uban sa internal nga mga programa, chat bot sa Slack uban sa Jira ug kalendaryo.
  • Balanse ang load. Atong tan-awon pag-ayo dinhi.

Ingnon ta nga adunay serbisyo nga makadani ug 50 ka tawo. Ubos niini adunay usa ka virtual nga makina nga adunay huyang nga hardware. Matag karon ug unya, ang load sa serbisyo nagkadako pag-ayo. Unya ang huyang nga hardware dili makasagubang.

Mahimo nimong ilakip ang usa ka balancer sa sistema nga mag-apod-apod sa load, ingnon ta, sa tulo ka mga virtual machine. Niini nga yugto, dili nato tukma nga matagna ang karga, mao nga gitipigan nato ang usa ka piho nga gidaghanon sa mga kahinguhaan nga nagdagan "sa reserba." Ug nag-overpay kami alang sa downtime.

Sa ingon nga kahimtang, mahimo naton ma-optimize ang sistema pinaagi sa usa ka hybrid nga pamaagi: gibiyaan namon ang usa ka virtual nga makina sa luyo sa balanse sa pagkarga ug nagbutang usa ka link sa Serverless Endpoint nga adunay mga function. Kung ang load molapas sa threshold, ang balancer maglunsad sa mga function nga mga higayon nga mopuli sa bahin sa pagproseso sa hangyo.

Walay server sa mga rack
Sa ingon, ang Serverless mahimong magamit kung diin kinahanglan nga iproseso ang daghang gidaghanon sa mga hangyo dili kanunay, apan intensive. Sa kini nga kaso, ang pagpadagan sa daghang mga gimbuhaton sa 15 minuto labi ka mapuslanon kaysa pagmintinar sa usa ka virtual machine o server sa tanan nga oras.

Uban sa tanan nga mga bentaha sa serverless computing, sa wala pa ipatuman, kinahanglan nimo nga susihon una ang lohika sa aplikasyon ug masabtan kung unsang mga problema ang masulbad sa Serverless sa usa ka partikular nga kaso.

Walay Server ug Selectel

Sa Selectel na mi gipasimple nga trabaho sa Kubernetes pinaagi sa among control panel. Karon nagtukod kami sa among kaugalingon nga plataporma sa FaaS. Gusto namon nga masulbad sa mga developer ang ilang mga problema gamit ang Serverless pinaagi sa usa ka kombenyente, flexible nga interface.

Kung adunay ka mga ideya kung unsa ang angay nga plataporma sa FaaS ug kung giunsa nimo gusto nga gamiton ang Serverless sa imong mga proyekto, ipaambit kini sa mga komento. Among tagdon ang imong mga gusto sa dihang mag-develop sa plataporma.
 
Mga materyales nga gigamit sa artikulo:

Source: www.habr.com

Idugang sa usa ka comment