Giunsa ang pagkatulog nga maayo kung adunay ka serbisyo sa panganod: sukaranan nga mga tip sa arkitektura

Giunsa ang pagkatulog nga maayo kung adunay ka serbisyo sa panganod: sukaranan nga mga tip sa arkitekturaNAWALA sa sophiagworld

Kini nga artikulo adunay pipila ka sagad nga mga sumbanan aron matabangan ang mga inhenyero nga magtrabaho sa mga dagkong serbisyo nga gi-access sa milyon-milyon nga mga tiggamit. 

Sa kasinatian sa tagsulat, dili kini usa ka kompleto nga lista, apan sa tinuud epektibo tambag. Busa, magsugod kita.

Gihubad uban ang suporta Mail.ru Cloud Solutions.

Una nga lebel

Ang mga lakang nga gilista sa ubos medyo yano nga ipatuman apan adunay taas nga epekto. Kung wala pa nimo kini nasulayan kaniadto, matingala ka sa hinungdanon nga mga pag-uswag.

Imprastraktura isip code

Ang unang bahin sa tambag mao ang pagpatuman sa imprastraktura isip code. Kini nagpasabut nga kinahanglan ka adunay usa ka programmatic nga paagi aron ma-deploy ang tibuuk nga imprastraktura. Kini daw komplikado, apan kita sa tinuod naghisgot mahitungod sa mosunod nga code:

Pag-deploy sa 100 ka virtual nga makina

  • uban sa Ubuntu
  • 2 GB RAM matag usa
  • sila adunay mosunod nga code
  • uban niini nga mga parameter

Mahimo nimong masubay ang mga pagbag-o sa imong imprastraktura ug dali nga ibalik kini gamit ang pagkontrol sa bersyon.

Ang modernista kanako nag-ingon nga mahimo nimong gamiton ang Kubernetes/Docker aron mahimo ang tanan sa ibabaw, ug husto siya.

Dugang pa, makahatag ka og automation gamit ang Chef, Puppet o Terraform.

Padayon nga Paghiusa ug Paghatud

Aron makamugna og scalable nga serbisyo, importante nga adunay build ug test pipeline alang sa matag pull request. Bisan kung ang pagsulay yano ra kaayo, kini labing menos makasiguro nga ang code nga imong gi-deploy nag-compile.

Matag higayon niini nga yugto imong tubagon ang pangutana: ang akong asembliya mag-compile ug makapasar sa mga pagsulay, balido ba kini? Kini ingon og usa ka ubos nga bar, apan kini makasulbad sa daghang mga problema.

Giunsa ang pagkatulog nga maayo kung adunay ka serbisyo sa panganod: sukaranan nga mga tip sa arkitektura
Wala nay mas nindot pa kay sa pagtan-aw niini nga mga ticks

Alang sa kini nga teknolohiya mahimo nimong susihon ang Github, CircleCI o Jenkins.

Mga Balanse sa Load

Busa, gusto namong magpadagan ug load balancer aron ma-redirect ang trapiko ug maseguro ang patas nga load sa tanang node o magpadayon ang serbisyo kung mapakyas:

Giunsa ang pagkatulog nga maayo kung adunay ka serbisyo sa panganod: sukaranan nga mga tip sa arkitektura
Ang usa ka load balancer kasagaran usa ka maayong trabaho sa pag-apod-apod sa trapiko. Ang labing maayo nga praktis mao ang pag-overbalance aron wala ka'y ​​usa ka punto sa kapakyasan.

Kasagaran, ang mga balanse sa pagkarga gi-configure sa panganod nga imong gigamit.

RayID, correlation ID o UUID para sa mga hangyo

Nakasinati ka na ba usa ka sayup sa aplikasyon nga adunay mensahe nga sama niini: “Naay nahitabo. I-save kini nga id ug ipadala kini sa among team sa suporta"?

Giunsa ang pagkatulog nga maayo kung adunay ka serbisyo sa panganod: sukaranan nga mga tip sa arkitektura
Usa ka talagsaon nga identifier, correlation ID, RayID, o bisan unsa nga mga kalainan, usa ka talagsaon nga identifier nga nagtugot kanimo sa pagsubay sa usa ka hangyo sa tibuok kinabuhi niini. Gitugotan ka niini nga masubay ang tibuuk nga agianan sa hangyo sa mga log.

Giunsa ang pagkatulog nga maayo kung adunay ka serbisyo sa panganod: sukaranan nga mga tip sa arkitektura
Naghangyo ang tiggamit sa sistema A, dayon ang A kontak B, nga nagkontak sa C, gitipigan kini sa X, ug dayon ang hangyo gibalik sa A

Kung magkonektar ka sa layo sa mga virtual nga makina ug sulayan ang pagsubay sa agianan sa hangyo (ug mano-mano nga i-correlate kung unsang mga tawag ang gihimo), mabuang ka. Ang pagbaton og usa ka talagsaon nga identifier makapasayon ​​sa kinabuhi. Kini ang usa sa pinakasimple nga mga butang nga imong mahimo aron makadaginot sa oras samtang nagkadako ang imong serbisyo.

Taas nga lebel

Ang tambag dinhi mas komplikado kay sa mga nauna, apan ang husto nga mga himan naghimo sa buluhaton nga mas sayon, nga naghatag og pagbalik sa pamuhunan bisan alang sa gagmay ug medium-kadako nga mga kompanya.

Sentralisadong logging

Mga pahalipay! Nag-deploy ka og 100 ka virtual machine. Pagkasunod adlaw, ang CEO moabut ug nagreklamo bahin sa usa ka sayup nga iyang nadawat samtang gisulayan ang serbisyo. Gi-report niini ang katugbang nga ID nga among gihisgutan sa ibabaw, apan kinahanglan nimo nga tan-awon ang mga log sa 100 nga mga makina aron makit-an ang hinungdan sa pagkahagsa. Ug kini kinahanglan nga makit-an sa dili pa ang presentasyon ugma.

Samtang kini daw usa ka makalingaw nga adventure, labing maayo nga sigurohon nga ikaw adunay abilidad sa pagpangita sa tanang mga magasin sa usa ka dapit. Nasulbad nako ang problema sa pagsentro sa mga troso gamit ang built-in nga pagpaandar sa ELK stack: kini nagsuporta sa pagpangita nga koleksyon sa log. Makatabang gyud kini nga masulbad ang problema sa pagpangita sa usa ka piho nga journal. Isip usa ka bonus, makahimo ka og mga tsart ug uban pang makalingaw nga mga butang nga sama niana.

Giunsa ang pagkatulog nga maayo kung adunay ka serbisyo sa panganod: sukaranan nga mga tip sa arkitektura
ELK stack functionality

Mga ahente sa pagmonitor

Karon nga ang imong serbisyo nahuman na ug nagdagan, kinahanglan nimo nga sigurohon nga kini hapsay. Ang labing maayo nga paagi sa pagbuhat niini mao ang pagdagan sa pipila mga ahente, nga nagtrabaho nga managsama ug susihon nga kini molihok ug ang mga sukaranan nga operasyon gihimo.

Niini nga punto imong susihon kana ang nagdagan nga pagtukod gibati nga maayo ug maayo ang pagtrabaho.

Alang sa gagmay ngadto sa medium-sized nga mga proyekto, akong girekomendar ang Postman alang sa pagmonitor ug pagdokumento sa mga API. Apan sa kinatibuk-an, gusto lang nimo nga masiguro nga adunay usa ka paagi aron mahibal-an kung adunay nahitabo nga outage ug mapahibalo sa tukma sa panahon nga paagi.

Autoscaling depende sa load

Yano ra kaayo. Kung ikaw adunay mga hangyo sa pagserbisyo sa VM ug hapit na kini 80% nga paggamit sa panumduman, mahimo nimong madugangan ang mga kahinguhaan niini o makadugang daghang mga VM sa cluster. Ang awtomatik nga pagpatuman niini nga mga operasyon maayo kaayo alang sa pagkamaunat-unat nga pagbag-o sa gahum ubos sa karga. Apan kinahanglan nga mag-amping ka kanunay kung pila ang imong gigasto ug magtakda og makatarunganon nga mga limitasyon.

Giunsa ang pagkatulog nga maayo kung adunay ka serbisyo sa panganod: sukaranan nga mga tip sa arkitektura
Uban sa kadaghanan sa mga serbisyo sa panganod, mahimo nimong i-configure kini aron mag-autoscale gamit ang daghang mga server o labi ka kusgan nga mga server.

Sistema sa eksperimento

Ang usa ka maayong paagi aron luwas nga ilunsad ang mga update mao ang makahimo sa pagsulay sa usa ka butang alang sa 1% sa mga tiggamit sulod sa usa ka oras. Siyempre, nakita nimo ang ingon nga mga mekanismo nga naglihok. Pananglitan, gipakita sa Facebook ang mga bahin sa mamiminaw nga lahi nga kolor o gibag-o ang gidak-on sa font aron makita kung giunsa ang pagtan-aw sa mga tiggamit sa mga pagbag-o. Gitawag kini nga pagsulay sa A/B.

Bisan ang pagpagawas sa usa ka bag-ong bahin mahimong masugdan ingon usa ka eksperimento ug dayon mahibal-an kung giunsa kini buhian. Nakuha usab nimo ang abilidad sa "paghinumdom" o pagbag-o sa pagsumpo sa langaw base sa function nga hinungdan sa pagkadaot sa imong serbisyo.

Advanced nga lebel

Ania ang mga tip nga medyo lisud ipatuman. Tingali kinahanglan nimo ang gamay nga dugang nga mga kapanguhaan, mao nga ang usa ka gamay o medium nga kadako nga kompanya maglisud sa pagdumala niini.

Asul-berde nga pag-deploy

Kini ang akong gitawag nga "Erlang" nga paagi sa pagbuklad. Ang Erlang nahimong kaylap nga gigamit sa dihang mitungha ang mga kompanya sa telepono. Ang mga softswitch nagsugod nga gigamit sa pagruta sa mga tawag sa telepono. Ang panguna nga katuyoan sa software sa kini nga mga switch mao ang dili paghulog sa mga tawag sa panahon sa pag-upgrade sa sistema. Ang Erlang adunay usa ka nindot nga paagi sa pagkarga sa usa ka bag-ong module nga wala mag-crash sa nauna.

Kini nga lakang nagdepende sa presensya sa usa ka load balancer. Hunahunaa nga ikaw adunay bersyon N sa imong software, ug dayon gusto nimo nga i-deploy ang bersyon nga N+1. 

Вы mahimo namo ihunong lang ang serbisyo ug i-roll out ang sunod nga bersyon sa usa ka oras nga magamit alang sa imong mga tiggamit ug pag-downtime. Apan hunahunaa nga ikaw adunay gyud estrikto nga mga kondisyon sa SLA. Busa, ang SLA 99,99% nagpasabot nga maka-offline ka lamang sa 52 minutos kada tuig.

Kung gusto nimo nga makab-ot ang ingon nga mga timailhan, kinahanglan nimo ang duha nga pag-deploy sa parehas nga oras: 

  • ang usa nga karon (N);
  • sunod nga bersyon (N+1). 

Gisultihan nimo ang load balancer nga i-redirect ang porsyento sa trapiko sa bag-ong bersyon (N+1) samtang aktibo ka nga nagmonitor sa mga regression.

Giunsa ang pagkatulog nga maayo kung adunay ka serbisyo sa panganod: sukaranan nga mga tip sa arkitektura
Dinhi kami adunay usa ka berde nga N deployment nga maayo ang pagtrabaho. Kami naningkamot sa pagbalhin ngadto sa sunod nga bersyon niini nga deployment

Una nagpadala kami usa ka gamay nga pagsulay aron mahibal-an kung ang among N+1 nga pag-deploy nagtrabaho sa gamay nga trapiko:

Giunsa ang pagkatulog nga maayo kung adunay ka serbisyo sa panganod: sukaranan nga mga tip sa arkitektura
Sa katapusan, kami adunay usa ka hugpong sa mga awtomatiko nga pagsusi nga sa katapusan among gidagan hangtod makompleto ang among pag-deploy. Kung ikaw kaayo kaayo pag-amping, mahimo usab nimo i-save ang imong N deployment hangtod sa hangtod alang sa usa ka dali nga pag-rollback kung adunay dili maayo nga pagbag-o:

Giunsa ang pagkatulog nga maayo kung adunay ka serbisyo sa panganod: sukaranan nga mga tip sa arkitektura
Kung gusto nimo nga moadto sa usa ka labi ka abante nga lebel, tugoti ang tanan sa asul-berde nga pag-deploy nga awtomatiko.

Anomaly detection ug automatic mitigation

Gihatag nga ikaw adunay sentralisado nga pag-log ug maayo nga pagkolekta sa troso, mahimo ka nang magtakda og mas taas nga mga katuyoan. Pananglitan, proactive nga pagtagna sa mga kapakyasan. Ang mga gimbuhaton gisubay sa mga monitor ug sa mga troso ug lainlaing mga diagram ang gitukod - ug mahimo nimong matagna daan kung unsa ang sayup:

Giunsa ang pagkatulog nga maayo kung adunay ka serbisyo sa panganod: sukaranan nga mga tip sa arkitektura
Kung makit-an ang mga anomaliya, magsugod ka sa pagsusi sa pipila nga mga timailhan nga gihatag sa serbisyo. Pananglitan, ang usa ka spike sa CPU load mahimong magpakita nga ang usa ka hard drive napakyas, samtang ang usa ka spike sa mga hangyo mahimong magpakita nga kinahanglan nimo nga pataason. Kini nga matang sa istatistikal nga datos nagtugot kanimo sa paghimo sa serbisyo nga aktibo.

Uban niini nga mga panabut, mahimo nimong sukdon ang bisan unsang dimensyon ug aktibo ug aktibo nga usbon ang mga kinaiya sa mga makina, database, koneksyon ug uban pang mga kapanguhaan.

Mao ra na!

Kini nga lista sa mga prayoridad makaluwas kanimo daghang mga problema kung nagpataas ka usa ka serbisyo sa panganod.

Ang tagsulat sa orihinal nga artikulo nagdapit sa mga magbabasa sa pagbilin sa ilang mga komento ug paghimog mga kausaban. Ang artikulo gipang-apod-apod isip open source, pull requests sa author gidawat sa Github.

Unsa pa ang basahon sa hilisgutan:

  1. Lakaw ug mga cache sa CPU
  2. Kubernetes sa diwa sa piracy nga adunay template alang sa pagpatuman
  3. Ang among channel Around Kubernetes sa Telegram

Source: www.habr.com

Idugang sa usa ka comment