Unsa ang among nahibal-an bahin sa mga microservice

Hello! Ang akong ngalan mao si Vadim Madison, nanguna ko sa pagpalambo sa Avito System Platform. Kung giunsa kami sa kompanya nga naglihok gikan sa usa ka monolithic nga arkitektura hangtod sa usa ka microservice giingon labaw pa sa makausa. Panahon na aron ipaambit kung giunsa namo pagbag-o ang among imprastraktura aron makuha ang labing kaayo sa mga microservice ug dili mawala sa kanila. Giunsa kami pagtabang sa PaaS dinhi, kung giunsa namon gipasimple ang pag-deploy ug gipamubu ang paghimo sa usa ka microservice sa usa ka pag-klik - basaha. Dili tanan nga akong gisulat bahin sa ubos hingpit nga gipatuman sa Avito, bahin niini kung giunsa naton mapalambo ang among plataporma.

(Ug sa katapusan sa kini nga artikulo, maghisgot ako bahin sa oportunidad nga makaadto sa tulo ka adlaw nga seminar gikan sa usa ka eksperto sa arkitektura sa microservice, si Chris Richardson).

Unsa ang among nahibal-an bahin sa mga microservice

Giunsa namo pag-abut sa microservices

Ang Avito usa sa pinakadako nga classifieds sa kalibutan, nagpatik kini labaw sa 15 milyon nga bag-ong mga ad kada adlaw. Gidawat sa among backend ang labaw sa 20 ka libo nga mga hangyo matag segundo. Karon kami adunay pipila ka gatos nga microservices.

Nagtukod kami usa ka arkitektura sa microservice sa sobra sa usa ka tuig. Unsa ka eksakto - ang among mga kauban sa detalye gisulti sa among seksyon sa RIT++ 2017. Sa CodeFest 2017 (tan-awa video), Si Sergey Orlov ug Mikhail Prokopchuk nagpatin-aw sa detalye kung ngano nga kinahanglan namon ang pagbalhin sa mga microservice ug unsa ang papel nga gidula ni Kubernetes dinhi. Aw, karon gibuhat namon ang tanan aron maminusan ang mga gasto sa pag-scale nga naa sa ingon nga arkitektura.

Sa sinugdan, wala kami nagmugna ug ekosistema nga komprehensibo nga makatabang kanamo sa pagpauswag ug paglansad sa mga microservice. Nakolekta lang nila ang mga intelihente nga open source nga solusyon, gilunsad kini sa balay ug gitanyag ang developer nga atubangon kini. Ingon usa ka sangputanan, miadto siya sa usa ka dosena nga mga lugar (mga dashboard, internal nga serbisyo), pagkahuman gipalig-on niya ang iyang tinguha sa pagputol sa code sa daan nga paagi, sa usa ka monolith. Ang berde nga kolor sa mga diagram sa ubos nagpakita kung unsa ang gibuhat sa developer sa usa ka paagi o lain sa iyang kaugalingon nga mga kamot, ang dalag nga kolor nagpaila sa automation.

Unsa ang among nahibal-an bahin sa mga microservice

Karon, sa PaaS CLI utility, usa ka team ang nagmugna ug bag-ong serbisyo, ug duha pa ang makadugang ug bag-ong database ug i-deploy kini sa Stage.

Unsa ang among nahibal-an bahin sa mga microservice

Sa unsa nga paagi sa pagbuntog sa panahon sa "microservice fragmentation"

Uban sa usa ka monolithic nga arkitektura, alang sa pagkamakanunayon sa mga pagbag-o sa produkto, ang mga developer napugos sa paghunahuna kung unsa ang nahitabo sa ilang mga silingan. Kung nagtrabaho sa bag-ong arkitektura, ang mga konteksto sa serbisyo wala na magdepende sa usag usa.

Dugang pa, aron ang arkitektura sa microservice mahimong epektibo, kinahanglan nga magtukod daghang mga proseso, nga mao:

• logging;
• hangyo sa pagsubay (Jaeger);
• sayop aggregation (Sentry);
• mga status, mensahe, panghitabo gikan sa Kubernetes (Pagproseso sa Stream sa Panghitabo);
• race limit / circuit breaker (mahimo nimong gamiton ang Hystrix);
• pagkontrol sa koneksyon sa serbisyo (gamiton namon ang Netramesh);
• pagmonitor (Grafana);
• asembliya (TeamCity);
• komunikasyon ug pahibalo (Slack, email);
• pagsubay sa buluhaton; (Jira)
• pag-andam sa dokumentasyon.

Aron masiguro nga ang sistema dili mawad-an sa integridad ug magpabilin nga episyente samtang kini nagtimbang, among gihunahuna pag-usab ang organisasyon sa mga microservice sa Avito.

Giunsa namo pagdumala ang mga microservice

Nagtabang ang Avito sa pagpatuman sa usa ka "patakaran sa partido" taliwala sa daghang mga microservice:

  • pagbahin sa imprastraktura ngadto sa mga lut-od;
  • ang konsepto sa Platform isip Serbisyo (PaaS);
  • pagmonitor sa tanan nga mahitabo sa microservices.

Ang lebel sa abstraction sa imprastraktura naglakip sa tulo ka mga layer. Gikan sa taas hangtod sa ubos.

A. Top - serbisyo nga mata sa baling. Sa sinugdan gisulayan namo ang Istio, apan nahimo nga kini naggamit sa daghan kaayong mga kapanguhaan, nga mahal kaayo alang sa among mga volume. Busa, ang senior engineer sa arkitektura team Alexander Lukyanchenko nakahimo sa iyang kaugalingon nga solusyon - Netramesh (anaa sa Open Source), nga gigamit namon karon sa produksiyon ug nga nagkonsumo sa daghang mga higayon nga mas gamay nga mga kapanguhaan kaysa sa Istio (apan dili mahimo ang tanan nga mahimo nga ipanghambog ni Istio).
B. Medium - Kubernetes. Niini, nag-deploy ug nag-operate kami og mga microservice.
C. Ubos - hubo nga metal. Wala kami mogamit sa mga panganod ug mga butang sama sa OpenStack, apan naglingkod nga hingpit sa hubo nga metal.

Ang tanan nga mga layer gihiusa PaaS. Ug kini nga plataporma, sa baylo, naglangkob sa tulo ka bahin.

I. Mga Generator, gidumala pinaagi sa CLI utility. Siya ang nagtabang sa developer sa paghimo sa usa ka microservice sa husto nga paagi ug adunay gamay nga paningkamot.

II. Konsolidadong kolektor nga adunay kontrol sa tanan nga mga instrumento pinaagi sa usa ka komon nga dashboard.

III. pagtipig. Nagdugtong sa mga scheduler nga awtomatikong nagtakda og mga trigger alang sa makahuluganon nga mga aksyon. Salamat sa ingon nga sistema, wala’y usa ka buluhaton nga wala mapakyas tungod lang kay adunay nakalimot sa pagbutang usa ka buluhaton sa Jira. Gigamit namo ang internal nga himan nga gitawag og Atlas alang niini.

Unsa ang among nahibal-an bahin sa mga microservice

Ang pagpatuman sa mga microservice sa Avito gihimo usab sumala sa usa ka laraw, nga nagpasimple sa pagkontrol sa kanila sa matag yugto sa pag-uswag ug pagpagawas.

Giunsa ang standard nga microservice development pipeline molihok

Sa kinatibuk-an, ang kadena sa paghimo sa microservice ingon niini:

CLI-push → Continuous Integration → Bake → Deploy → Artipisyal nga pagsulay → Canary tests → Squeeze Testing → Production → Maintenance.

Ato kining tukion sa eksakto niining han-ay.

CLI-pagduso

• Paghimo og microservice.
Naglisud kami sa dugay nga panahon aron tudloan ang matag developer kung giunsa paghimo ang mga microservice. Naglakip sa gisulat nga detalyado nga mga panudlo sa Confluence. Apan ang mga laraw nausab ug gidugangan. Ang resulta - usa ka bottleneck ang naporma sa sinugdanan sa panaw: nagkinahanglag mas daghang oras sa paglansad sa mga microservice kaysa gitugotan, ug kanunay adunay mga problema sa paghimo niini.

Sa katapusan, nagtukod kami usa ka yano nga CLI utility nga nag-automate sa sukaranan nga mga lakang alang sa paghimo og microservice. Sa tinuud, gipulihan niini ang una nga git push. Ania ang eksakto kung unsa ang iyang gibuhat.

- Naghimo usa ka serbisyo sumala sa usa ka template - lakang sa lakang, sa mode nga "wizard". Kami adunay mga templates alang sa mga nag-unang programming language sa Avito backend: PHP, Golang ug Python.

- Usa ka sugo sa usa ka higayon nag-deploy sa usa ka palibot alang sa lokal nga kalamboan sa usa ka piho nga makina - Minikube mosaka, Helm chart awtomatikong namugna ug modagan sa lokal nga kubernetes.

- Nagkonektar sa gikinahanglan nga database. Dili kinahanglan nga mahibal-an sa developer ang IP, login ug password aron makakuha og access sa database nga iyang gikinahanglan - labing menos sa lokal, labing menos sa Stage, labing menos sa produksiyon. Dugang pa, ang database kay gipakatap dayon sa usa ka fault-tolerant configuration ug uban ang pagbalanse.

- Naghimo kini nga live-assembly mismo. Ingnon ta nga gitul-id sa developer ang usa ka butang sa microservice pinaagi sa iyang IDE. Ang utility nakakita sa mga pagbag-o sa file system ug, base niini, gitukod pag-usab ang aplikasyon (alang sa Golang) ug gi-restart. Alang sa PHP, gipasa lang namo ang direktoryo sulod sa cube ug didto makuha ang live-reload nga "awtomatikong".

- Naghimo og mga autotest. Sa porma sa mga blangko, apan medyo magamit.

• I-deploy ang microservice.

Kaniadto medyo makahadlok ang pag-deploy sa usa ka microservice uban kanamo. Gikinahanglan ang mandatory:

I. Dockerfile.

II. Config.
III. Helm-chart, nga hago sa iyang kaugalingon ug naglakip sa:

- ang mga tsart sa ilang kaugalingon;
- mga template;
- piho nga mga kantidad nga gikonsiderar ang lainlaing mga palibot.

Gikuha na namo ang kasakit sa pag-rework sa mga Kubernetes manifests ug karon kini awtomatik na nga namugna. Apan ang labing hinungdanon, gipasimple namon ang pag-deploy hangtod sa limitasyon. Sukad karon, aduna na kitay Dockerfile, ug ang developer nagsulat sa tibuok config sa usa ka mubo nga app.toml file.

Unsa ang among nahibal-an bahin sa mga microservice

Oo, ug sa app.toml mismo, adunay usa ka butang sa usa ka minuto. Gireseta namon kung diin kung pila ka kopya sa serbisyo ang ipataas (sa dev-server, sa dula, sa produksiyon), nagpaila sa mga dependency niini. Matikdi ang gidak-on sa linya = "gamay" sa bloke sa [engine]. Kini ang limitasyon nga igahin sa serbisyo pinaagi sa Kubernetes.

Dugang pa, base sa config, ang tanan nga gikinahanglan nga Helm-charts awtomatik nga namugna ug ang mga koneksyon sa mga database gihimo.

• Basic validation. Ang ingon nga mga tseke awtomatiko usab.
Kinahanglan nga bantayan:
- aduna bay Dockerfile;
- naa bay app.toml;
- Aduna bay dokumentasyon?
— kon sa han-ay sa pagsalig;
- kung ang mga lagda sa alerto gitakda.
Sa katapusan nga punto: ang tag-iya sa serbisyo mismo ang nagtino kung unsang mga sukatan sa produkto ang bantayan.

• Pag-andam sa dokumentasyon.
Problema gihapon nga lugar. Kini daw mao ang labing klaro, apan sa samang higayon ang rekord "kanunay nakalimtan", ug busa ang huyang nga sumpay sa kadena.
Kinahanglan nga ang dokumentasyon para sa matag microservice. Kini naglakip sa mosunod nga mga bloke.

I. Mubo nga paghulagway sa serbisyo. Pipila lang ka mga tudling-pulong bahin sa kung unsa kini ug alang sa unsa kini.

II. Link sa diagram sa arkitektura. Mahinungdanon nga sa usa ka pagtan-aw dali ra masabtan, pananglitan, kung gigamit nimo ang Redis alang sa pag-cache o ingon ang panguna nga tindahan sa datos sa padayon nga mode. Sa Avito, sa pagkakaron, kini usa ka link sa Confluence.

III. runbook. Usa ka mubo nga giya sa paglansad sa serbisyo ug ang mga subtlety sa pagdumala niini.

IV. FAQ, diin maayo nga magpaabut sa mga problema nga mahimong masugatan sa imong mga kauban kung nagtrabaho kauban ang serbisyo.

V. Deskripsyon sa mga endpoint sa API. Kung kalit nga wala nimo ipiho ang mga destinasyon, ang mga kauban nga ang mga microservice konektado sa imoha hapit siguradong magbayad niini. Karon gigamit namon ang Swagger alang niini ug ang among solusyon nga gitawag nga mubo.

VI. Mga label. O mga marker nga nagpakita kung unsang produkto, functionality, structural division sa kompanya ang nahisakop sa serbisyo. Nakatabang sila nga dali nga masabtan, pananglitan, kung nakita nimo ang pag-andar nga gipadagan sa imong mga kauban alang sa parehas nga yunit sa negosyo usa ka semana ang milabay.

VII. Tag-iya o tag-iya sa serbisyo. Sa kadaghanan nga mga kaso, kini - o sila - mahimong awtomatik nga mahibal-an gamit ang PaaS, apan alang sa paniguro, kinahanglan namon ang developer nga ipiho kini sa mano-mano usab.

Sa katapusan, maayo nga praktis ang paghimo sa mga pagsusi sa dokumentasyon, susama sa mga pagsusi sa code.

Padayon nga Integration

  • Pag-andam sa mga repositoryo.
  • Paghimo og pipeline sa TeamCity.
  • Paghatag sa mga katungod.
  • Pangitaa ang mga tag-iya sa serbisyo. Ania ang usa ka hybrid nga laraw - manwal nga pagmarka ug gamay nga automation gikan sa PaaS. Ang bug-os nga awtomatik nga laraw mapakyas kung ang mga serbisyo gibalhin sa suporta sa lain nga grupo sa pagpauswag o, pananglitan, kung ang developer sa serbisyo mohunong.
  • Pagparehistro sa serbisyo sa Atlas (tan-awa sa ibabaw). Uban sa tanan nga mga tag-iya ug dependency niini.
  • Pagsusi sa mga paglalin. Among susihon kon aduna bay posibleng peligroso taliwala kanila. Pananglitan, sa usa niini, usa ka alter table ang mo-pop up o lain nga butang nga makaguba sa compatibility sa data scheme tali sa lain-laing bersyon sa serbisyo. Unya ang paglalin wala gihimo, apan gibutang sa usa ka suskrisyon - Ang PaaS kinahanglan nga magsenyas sa tag-iya sa serbisyo kung kini luwas nga magamit kini.

Pagluto

Ang sunod nga yugto mao ang mga serbisyo sa pagputos sa wala pa i-deploy.

  • Asembliya sa aplikasyon. Sumala sa mga klasiko - sa usa ka imahe sa Docker.
  • Generation of Helm nga mga tsart para sa serbisyo mismo ug may kalabutan nga mga kapanguhaan. Naglakip alang sa mga database ug cache. Awtomatiko silang gihimo sumala sa app.toml config nga namugna sa CLI-push stage.
  • Paghimo og mga tiket alang sa mga admin sa pag-abli sa mga pantalan (kon gikinahanglan).
  • Pagpadagan sa mga pagsulay sa yunit ug pagkalkula sa coverage sa code. Kung ang pagsakop sa code ubos sa gitakda nga kantidad sa threshold, nan, lagmit, ang serbisyo dili mopadayon - sa pag-deploy. Kung hapit na madawat, nan ang serbisyo hatagan usa ka "pessimizing" coefficient: unya, kung wala’y pag-uswag sa timailhan sa paglabay sa panahon, ang developer makadawat usa ka pahibalo nga wala’y pag-uswag sa mga termino sa mga pagsulay ( ug kinahanglan nga adunay buhaton bahin niini).
  • Accounting alang sa memorya ug mga limitasyon sa CPU. Sa panguna, nagsulat kami og mga microservice sa Golang ug gipadagan kini sa Kubernetes. Busa, ang usa ka subtlety nga may kalabutan sa bahin sa Golang nga pinulongan: sa default, ang tanan nga mga core sa makina gigamit sa pagsugod, kung dili nimo klaro nga itakda ang GOMAXPROCS variable, ug kung daghang mga serbisyo ang gilunsad sa parehas nga makina, magsugod sila. aron makigkompetensya alang sa mga kapanguhaan, nanghilabot sa usag usa. Ang mga graph sa ubos nagpakita kung giunsa pagbag-o ang oras sa pagpatuman kung ang aplikasyon gipadagan nga wala’y panaglalis ug sa mode sa lumba sa kapanguhaan. (Ang mga tinubdan sa mga tsart mao ang dinhi).

Unsa ang among nahibal-an bahin sa mga microservice

Ang panahon sa pagpatuman, mas gamay ang mas maayo. Maximum: 643ms, minimum: 42ms. Ang litrato ma-click.

Unsa ang among nahibal-an bahin sa mga microservice

Panahon sa operasyon, gamay ra ang mas maayo. Maximum: 14091 ns, minimum: 151 ns. Ang litrato ma-click.

Sa yugto sa pagpangandam sa asembliya, mahimo nimong itakda kini nga variable nga klaro o mahimo nimong gamiton ang librarya automaxprocs gikan sa mga lalaki sa Uber.

Ipakaylap

• Pagsusi sa mga kombensiyon. Sa dili ka pa magsugod sa paghatud sa mga pagtukod sa serbisyo sa imong gituyo nga mga palibot, kinahanglan nimo nga susihon ang mga musunud:
- Mga endpoint sa API.
— Korespondensya sa mga tubag sa mga endpoint sa API sa laraw.
- Format sa log.
- Pagbutang sa mga ulohan alang sa mga hangyo sa serbisyo (karon kini gihimo sa netramesh)
- Pagbutang sa tag-iya nga marker kung magpadala mga mensahe sa bus (bus sa panghitabo). Kinahanglan kini aron masubay ang koneksyon sa mga serbisyo pinaagi sa bus. Mahimo nimong ipadala ang duha nga idempotent data sa bus nga dili makadugang sa koneksyon sa mga serbisyo (nga maayo), ug data sa negosyo nga nagpauswag sa koneksyon sa mga serbisyo (nga daotan kaayo!). Ug sa higayon nga kini nga koneksyon mahimong usa ka problema, ang pagsabut kung kinsa ang nagsulat ug nagbasa sa bus makatabang sa husto nga pagbulag sa mga serbisyo.

Sa pagkakaron, dili kaayo daghan nga mga kombensiyon sa Avito, apan ang ilang pool nagkalapad. Ang labi nga ingon nga mga kasabutan sa usa ka porma nga masabtan ug kombenyente alang sa team, mas dali nga mapadayon ang pagkamakanunayon tali sa mga microservice.

Sintetikong mga pagsulay

• Closed loop testing. Alang niini, gigamit na namo karon ang open source hoverfly.io. Una, kini nagrekord sa tinuod nga load sa serbisyo, unya - sa usa ka closed loop - kini emulates.

• Pagsulay sa Stress. Gisulayan namon nga madala ang tanan nga serbisyo sa labing maayo nga pasundayag. Ug ang tanan nga mga bersyon sa matag serbisyo kinahanglan nga ipailalom sa pagsulay sa pagkarga - aron masabtan nato ang kasamtangan nga performance sa serbisyo ug ang kalainan sa nangaging mga bersyon sa samang serbisyo. Kung, pagkahuman sa pag-update sa serbisyo, ang pasundayag niini nahulog sa usa ug tunga ka beses, kini usa ka tin-aw nga signal alang sa mga tag-iya niini: kinahanglan nimo nga magkalot sa code ug matul-id ang sitwasyon.
Nagsugod kami gikan sa nakolekta nga datos, pananglitan, aron sa husto nga pagpatuman sa auto scaling ug, sa katapusan, aron masabtan sa kinatibuk-an kung unsa ka scalable ang serbisyo.

Atol sa pagsulay sa pagkarga, among susihon kung ang pagkonsumo sa kapanguhaan nakab-ot ba ang mga limitasyon nga gitakda. Ug nag-una kami nagpunting sa mga sobra.

a) Atong tan-awon ang kinatibuk-ang load.
- Gamay ra kaayo - lagmit adunay usa ka butang nga dili molihok kung ang load kalit nga nahulog sa daghang mga higayon.
- Dako kaayo - gikinahanglan ang pag-optimize.

b) Tan-awa ang RPS cutoff.
Dinhi atong tan-awon ang kalainan tali sa kasamtangan nga bersyon ug sa miaging usa ug sa kinatibuk-ang gidaghanon. Pananglitan, kung ang serbisyo naghatag og 100 rps, nan kini dili maayo nga gisulat, o kini ang mga detalye niini, apan sa bisan unsa nga kaso, kini usa ka rason nga tan-awon pag-ayo ang serbisyo.
Kung, sa kasukwahi, adunay daghan kaayo nga RPS, nan, tingali, usa ka matang sa bug ug pipila sa mga endpoint mihunong sa pagpatuman sa payload, apan pipila lang. return true;

Mga pagsulay sa canary

Human maipasa ang mga sintetikong pagsulay, gipadagan namo ang microservice sa gamay nga gidaghanon sa mga tiggamit. Nagsugod kami pag-ayo, nga adunay gamay nga bahin sa gitumong nga mamiminaw sa serbisyo - wala’y 0,1%. Sa kini nga yugto, hinungdanon kaayo nga ang husto nga mga sukatan sa teknikal ug produkto gisulod sa pag-monitor aron ipakita nila ang problema sa serbisyo sa labing madali. Ang minimum nga oras sa pagsulay sa canary mao ang 5 minuto, ang panguna nga 2 ka oras. Para sa komplikadong mga serbisyo, itakda ang oras sa manual mode.
Atong analisahon:
- mga sukatan nga espesipiko sa pinulongan, ilabina, mga trabahante sa php-fpm;
- mga sayup sa Sentry;
- mga kahimtang sa pagtubag;
— oras sa pagtubag (panahon sa pagtubag), eksakto ug kasagaran;
- latency;
- mga eksepsiyon, gidumala ug wala giatiman;
- mga sukatan sa produkto.

Squeeze Testing

Ang Squeeze Testing gitawag usab nga "squeeze" testing. Ang ngalan sa teknik gipaila sa Netflix. Ang esensya niini mao nga una naton pun-on ang usa ka higayon nga adunay tinuud nga trapiko sa kahimtang sa kapakyasan ug sa ingon gitakda ang limitasyon niini. Dayon magdugang kami og laing pananglitan ug i-load kini nga magtiayon - pag-usab ngadto sa maximum; atong makita ang ilang kisame ug delta sa unang pagpislit. Ug busa among gikonektar ang usa ka higayon matag lakang ug kuwentahon ang sumbanan sa mga pagbag-o.
Ang mga datos sa mga pagsulay pinaagi sa "pagpislit" modagayday usab ngadto sa usa ka komon nga database sa mga sukatan, diin mahimo natong pauswagon ang mga resulta sa artipisyal nga pagkarga niini, o ilisan pa ang "synthetics" niini.

Produksyon

• Pag-scale. Ang paglansad sa serbisyo sa produksiyon, among gibantayan kung giunsa kini pagtimbang. Sa parehas nga oras, ang pag-monitor lamang sa mga indikasyon sa CPU, sa among kasinatian, dili epektibo. Ang auto scaling gamit ang RPS benchmarking naglihok sa pinakalunsay nga porma, pero para lang sa pipila ka serbisyo, sama sa online streaming. Mao nga gitan-aw namon ang panguna nga mga sukatan sa produkto nga piho sa aplikasyon.

Ingon usa ka sangputanan, kung nag-scale, among analisahon:
- Mga indikasyon sa CPU ug RAM,
- ang gidaghanon sa mga hangyo sa pila,
- tubag sa Panahon,
- forecast base sa natipon nga makasaysayan nga datos.

Kung gi-scale ang usa ka serbisyo, hinungdanon usab nga masubay ang mga dependency niini aron dili mahitabo nga gi-scale namon ang una nga serbisyo sa kadena, ug kadtong gi-access niini nahulog sa ilawom sa karga. Aron ma-establisar ang usa ka madawat nga karga alang sa tibuuk nga pool sa mga serbisyo, among gitan-aw ang makasaysayan nga datos sa "labing duol" nga nagsalig nga serbisyo (sa termino sa CPU ug RAM, kauban ang mga sukatan nga piho sa app) ug itandi kini sa makasaysayan nga datos sa ang pagsugod nga serbisyo, ug uban pa sa tibuuk nga "dependency chain", gikan sa taas hangtod sa ubos.

Pag-alagad

Human mapalihok ang microservice, mahimo natong ibitay ang mga gatilyo niini.

Ania ang kasagaran nga mga sitwasyon diin ang mga trigger nagtrabaho.
- Posibleng delikado nga mga paglalin nakit-an.
- Gipagawas ang mga update sa seguridad.
- Ang serbisyo mismo wala ma-update sa dugay nga panahon.
— Ang load sa serbisyo namatikdan nga mikunhod o ang pipila sa mga sukatan sa produkto niini wala sa naandan.
— Ang serbisyo wala na makatagbo sa bag-ong mga kinahanglanon sa plataporma.

Ang pipila sa mga nag-aghat mao ang responsable alang sa kalig-on sa trabaho, ang uban - isip usa ka function sa pagmentinar sa sistema - pananglitan, ang pipila nga serbisyo wala pa ma-deploy sa dugay nga panahon ug ang base nga imahe niini mihunong sa pagpasa sa mga pagsusi sa seguridad.

Dashboard

Sa laktud, ang dashboard mao ang control panel sa among tibuok PaaS.

  • Usa ka punto sa kasayuran bahin sa serbisyo, nga adunay datos sa sakup sa pagsulay, ang gidaghanon sa mga imahe niini, ang gidaghanon sa mga kopya sa produksiyon, mga bersyon, ug uban pa.
  • Usa ka himan alang sa pagsala sa datos pinaagi sa mga serbisyo ug mga label (mga timaan nga nahisakop sa mga yunit sa negosyo, pagpaandar sa produkto, ug uban pa)
  • Ang himan sa panagsama sa mga himan sa imprastraktura alang sa pagsubay, pag-log, pag-monitor.
  • Usa ka punto sa dokumentasyon alang sa mga serbisyo.
  • Usa ka punto sa panglantaw sa tanang panghitabo pinaagi sa serbisyo.

Unsa ang among nahibal-an bahin sa mga microservice
Unsa ang among nahibal-an bahin sa mga microservice
Unsa ang among nahibal-an bahin sa mga microservice
Unsa ang among nahibal-an bahin sa mga microservice

Total

Sa wala pa ang pagpaila sa PaaS, ang usa ka bag-ong developer mahimong mogugol ug pipila ka semana sa pagsabot sa tanan nga mga himan nga gikinahanglan sa paglansad sa usa ka microservice sa produksyon: Kubernetes, Helm, among internal nga mga feature sa TeamCity, pag-set up og koneksyon sa mga database ug mga cache sa usa ka mapakyas nga paagi, etc .Karon nagkinahanglag pipila ka oras ang pagbasa sa dali nga pagsugod ug paghimo sa serbisyo mismo.

Naghimo ako usa ka taho bahin sa kini nga hilisgutan alang sa HighLoad ++ 2018, makita nimo video и presentasyon.

Bonus track alang sa mga nagbasa hangtod sa katapusan

Kami sa Avito nag-organisar og internal nga tulo ka adlaw nga pagbansay alang sa mga developers gikan sa Chris Richardson, usa ka eksperto sa microservice architecture. Gusto namon nga hatagan ang higayon nga makaapil niini sa usa sa mga magbabasa niini nga post. kini mao ang ang programa sa pagbansay gi-post na.

Ang pagbansay ipahigayon gikan sa 5 hangtod 7 Agosto sa Moscow. Kini ang mga adlaw sa pagtrabaho nga bug-os nga okupado. Ang paniudto ug pagbansay naa sa among opisina, ug ang napili nga partisipante ang mobayad sa pagbiyahe ug akomodasyon mismo.

Mahimo kang mag-aplay aron makaapil niining google form. Gikan kanimo - ang tubag sa pangutana ngano nga kinahanglan nimo nga motambong sa pagbansay ug kasayuran kung giunsa ang pagkontak kanimo. Tubag sa English, tungod kay ang partisipante nga makaabut sa pagbansay ang pilion mismo ni Chris.
Ipahibalo namon ang ngalan sa partisipante sa pagbansay nga adunay update sa kini nga post ug sa mga social network nga Avito alang sa mga developer (AvitoTech sa Facebook, Вконтакте, Twitter) dili molapas sa Hulyo 19.

Source: www.habr.com

Idugang sa usa ka comment