Mida me teame mikroteenustest

Tere! Minu nimi on Vadim Madison, juhin Avito System Platformi arendust. Oleme korduvalt rÀÀkinud, kuidas meie ettevĂ”te liigub monoliitsest arhitektuurist mikroteenuste arhitektuuri. On aeg jagada, kuidas me oma infrastruktuuri ĂŒmber olen muutnud, et mikroteenustest maksimaalset kasu saada ja end neisse Ă€ra ei kaotada. Kuidas aitab meil siin PaaS, kuidas me oleme juurutamise lihtsamaks muutnud ja vĂ€hendanud mikroteenuse loomise ĂŒhe klikiga — loe edasi. Mitte kĂ”ik, millest ma allpool kirjutan, ei ole Avitos tĂ€ies mahus teostatud; osa on see, kuidas me oma platvormi arendame.

(Ja veel, artikli lÔpus rÀÀgin ma vÔimalusest osaleda kolme pÀeva seminaril mikroteenuste arhitektuuri eksperdi Chris Richardsona poolt).

Mida me teame mikroteenustest

Kuidas me mikroteenustele jÔudsime

Avito on ĂŒks maailma suurimaid klassifitseeritud kuulutuste portaale, kus avaldatakse ĂŒle 15 miljoni uue kuulutuse pĂ€evas. Meie taga on rohkem kui 20 000 pĂ€ringut sekundis. Praegu on meil mitusada mikroteenust.

Mikroteenuste arhitektuuri oleme vĂ€lja arendanud juba mitu aastat. Kuidas tĂ€pselt — meie kolleegid rÀÀgivad detailselt rÀÀkinud meie sessioonil RIT++ 2017. CodeFest 2017-l (vt. video), selgitasid Sergei Orlov ja Mihhail Prokopchuk pĂ”hjalikult, miks me ĂŒldse vajame ĂŒleminekut mikroteenustele ja millist rolli siin mĂ€ngis Kubernetes. NĂŒĂŒd teeme kĂ”ik, et minimeerida neid skaleerimise kulusid, mis sellisele arhitektuurile on iseloomulikud.

Alguses ei loonud me ökosĂŒsteemi, mis aitaks meid laiapindsetes mikroteenuste arenduses ja juurutamises. Kogusime lihtsalt kokku head avatud lĂ€htekoodiga lahendused, kĂ€ivitasime need ja pakkusime arendajatele, et nad nendega tutvuksid. LĂ”ppkokkuvĂ”ttes kĂ€is arendaja kĂŒmnes kohas (juhtpaneelid, siseteenused) ja kindlustas end sooviga kirjutada koodi vanamoodsalt, monoliidis. Allpool olevatel skeemidel on rohelise vĂ€rviga tĂ€histatud see, mida arendaja mingil viisil oma kĂ€tega teeb, kollase vĂ€rviga — automatiseerimise.

Mida me teame mikroteenustest

Praegu PaaSi CLI-utilitys piisab ĂŒhe kĂ€su kirjutamisest, et luua uus teenus, ja kahe kĂ€suga lisatakse uus andmebaas ja juurutatakse Stage'isse.

Mida me teame mikroteenustest

Kuidas ĂŒletada "mikroteenuste killustatuse" ajastu

Monoliitsetehnikas, tootmisprotsessi muutuste ĂŒhtsuse nimel olid arendajad sunnitud aru saama, mis naabrite juures toimub. Uue arhitektuuri kasutamisel ei sĂ”ltu teenuste kontekstid enam ĂŒksteisest.

Lisaks on mikroteenuste arhitektuuri tÔhusaks toimimiseks vajalik luua palju protsesse, nimelt:

‱ logimine;
‱ pĂ€ringute jĂ€lgimine (Jaeger);
‱ vigade agregaator (Sentry);
‱ olekud, sĂ”numid, sĂŒndmused Kubernetesest (Event Stream Processing);
‱ race limit / circuit breaker (saab kasutada Hystrix);
‱ teenuste seotuse kontroll (kasutame Netramesh'i);
‱ monitooring (Grafana);
‱ kogumine (TeamCity);
‱ suhtlemine ja teavitamine (Slack, e-post);
‱ ĂŒlesannete jĂ€lgimine (Jira);
‱ dokumentatsiooni koostamine.

Kuna skaleerimise kĂ€igus ei tohi sĂŒsteem kaotada oma terviklikkust ega lakkata olemast tĂ”hus, oleme ĂŒmber mĂ”elnud mikroteenuste korralduse Avitos.

Kuidas me mikroteenustega toime tuleme

Ühtset „parteipoliitikat“ mitmete Avito mikroteenuste vahel hoiavad:

  • infrastruktuuri kihistamine;
  • Platform as a Service (PaaS) kontseptsioon;
  • kogu, mis mikroteenustega juhtub, jĂ€lgimine.

Infrastruktuuri abstraktsioonitasemed hĂ”lmavad kolme kihti. Liigume ĂŒlespoole madalamale.

A. Ülemine — service mesh. Alguses ĂŒritasime Istio't, kuid see kasutas liiga palju ressursse, mis meie mastaabiga osutus liiga kalliks. SeetĂ”ttu töötas arhitektuuri meeskonna vaneminsener Aleksandr Lukjančenko vĂ€lja oma lahenduse — Netramesh (saadaval avatud koodina), mida me praegu tootmises kasutame ja mis tarbib mitmeid kordi vĂ€hem ressursse kui Istio (aga ei tee kĂ”ike, millega Istio uhkeldada saab).
B. Keskmine — Kubernetes. Sel korraldame ja kasutame mikroteenuseid.
C. Alumine — bare metal. Me ei kasuta pilvi ega OpenStacki, vaid toimime tĂ€ielikult bare metal'il.

KĂ”iki kihte ĂŒhendab PaaS. Ja see platvorm koosneb omakorda kolmest osast.

I. Generaatorid,mida hallatakse CLI-utility kaudu. Just see aitab arendajal luua mikroteenuse Ôigesti ja minimaalse vaevaga.

II. Kogumiskollektor, mille kaudu kontrollitakse kĂ”iki tööriistu ĂŒhiselt juhtpaneelist.

III. Ladustamine.. Integratsioon on vĂ”imalik planeerijatega, mis automaatselt seadistavad kĂ€ivitajaid oluliste tegevuste jaoks. Selle sĂŒsteemi abil ei jÀÀ ĂŒkski ĂŒlesanne tĂ€helepanuta lihtsalt seetĂ”ttu, et keegi unustas endale Jira'sse ĂŒlesande seada. Selleks kasutame sisemist tööriista nimega Atlas.

Mida me teame mikroteenustest

Mikroteenuste rakendamine Avitos toimub samuti ĂŒhtse skeemi jĂ€rgi, mis lihtsustab nende ĂŒle kontrolli teostamist igas arenduse ja vĂ€ljalaske etapis.

Kuidas on struktureeritud mikroteenuse arenduse tavaline voog.

Üldiselt nĂ€eb mikroteenuse loomise ahel vĂ€lja jĂ€rgmiselt:

CLI-push → JĂ€tkuv Integratsioon → KĂŒpsetamine → Rakendamine → Kunstlikud testid → Canary-testid → Squeeze Testimine → Tootmine → Üksikasjalik hooldus.

Liigume selle lÀbi tÀpselt sellises jÀrjestuses.

CLI-push

‱ Mikroteenuse loomine.
Me oleme kaua vaeva nĂ€inud selle nimel, et Ă”petada iga arendajat mikroteenuseid looma. Sealhulgas oleme kirjutanud Confluence'is ĂŒksikasjalikke juhiseid. Kuid skeemid muutusid ja tĂ€iendusid. Tulemuseks – pudelikael tekkis teekonna alguses: mikroteenuste kĂ€ivitamiseks kulus oluliselt rohkem aega, kui oleks tohtinud, ja nende loomisel tekkis sageli probleeme.

LÔpuks ehitasime vÀlja lihtsa CLI-utility, mis automatiseerib peamised sammud mikroteenuse loomisel. Tegelikult asendab see esimest git push'i. Siin on, mida see tÀpselt teeb.

— Loob teenuse mallide alusel – samm-sammult, 'vĂ”luri' reĆŸiimis. Meil on mallid peamiste programmeerimiskeelte jaoks Avito tagaplaanis: PHP, Golang ja Python.

— Ühe kĂ€suga seadistab kohaliku arenduse keskkonna konkreetsel masinal – Minikube tĂ”useb, Helm-graafikud genereeritakse ja kĂ€ivitatakse automaatselt kohalikus k8s.

— Ühendab vajaliku andmebaasi. Arendajatel ei ole vaja teada IP-aadressi, kasutajanime ja parooli, et pÀÀseda vajalikku andmebaasi – sĂ”ltumata sellest, kas see on kohalik, lavaline vĂ”i tootmises. Lisaks seotakse andmebaas kohe talitlushĂ€irete kindel ja koormuse jaotamisega.

— TĂ€idab ise live-kogumise. Oletame, et arendaja korrigeeris midagi mikroteenuses oma IDE's. Tööriist tuvastab muudatused failisĂŒsteemis ja nende alusel koostab rakenduse uuesti (Golang jaoks) ja kĂ€ivitab selle. PHP puhul edastame lihtsalt kausta kubisse ja seal toimub live-reload ‘automaatselt’.

— Genereerib automaatse testimise. Kuigi need on vaid mallid, on need siiski kasutamiseks tĂ€iesti sobivad.

‱ Mikroteenuse juurutamine.

Mikroteenuse juurutamine oli varem veidi piinav. Selleks, et see toimiks, nÔudis see kohustuslikult:

I. Dockerfile.

II. Konfiguratsioon.
III. Helm-chart, mis on iseenesest mahukas ja sisaldab:

— chart'id;
— mallid;
— spetsiifilised vÀÀrtused erinevate keskkondade jaoks.

Oleme vabanenud Kubernetes'e manifesteerimise vaevast ja need genereeritakse nĂŒĂŒd automaatselt. Kuid kĂ”ige tĂ€htsam on, et oleme juurutamist oluliselt lihtsustanud. NĂŒĂŒd on meil Dockerfile ja kogu konfiguratsioon, mida arendaja peab kirjutama, on ĂŒhes lĂŒhikeses failis app.toml.

Mida me teame mikroteenustest

Ja isegi app.toml-is on nĂŒĂŒd tegemist minutiga. Kirjutame, kui palju teenuse koopiaid tĂ”sta (dev-serveris, stagingus, tootmises) ja mÀÀrame selle sĂ”ltuvused. Pange tĂ€hele rida size = "small" plokis [engine]. See on piirang, mis antakse teenusele Kubernetes'e kaudu.

SeejĂ€rel, lĂ€htudes konfiguratsioonist, genereeritakse automaatselt kĂ”ik vajalikud Helm-charti ja luuakse ĂŒhendused andmebaasidega.

‱ PĂ”hi valideerimine. Sellised kontrollimised on samuti automatiseeritud.
On vaja jÀlgida:
— kas Dockerfile on olemas;
— kas app.toml on olemas;
— kas dokumentatsioon on olemas;
— kas sĂ”ltuvused on korras;
— kas alert-reeglid on seatud.
Viimase punkti kohta: teenuse omanik mÀÀrab, milliseid toote mÔÔdikuid jÀlgida.

‱ Dokumentatsiooni ettevalmistamine.
See on endiselt probleemne koht. Tundub, et see on kÔige ilmsem, kuid samas ka rekordiliselt 'tihti unustatav', mis tÀhendab, et see on nÔrk link ahelas.
Oluline on, et dokumentatsioon oleks iga mikroteenuse jaoks. See sisaldab jÀrgmisi osasid.

I. Teenuse lĂŒhikirjeldus. Üksnes paar lauset selle kohta, mida see teeb ja milleks see vajalik on.

II. Link arhitektuuri diagrammile. Oluline on, et pilgu heites oleks lihtne mĂ”ista, kas kasutate Redis't vahetuks vĂ”i peamiseks andmehoidmiseks pĂŒsivas reĆŸiimis. Avitos on see endiselt link Confluence'i.

III. Runbook. LĂŒhike juhend teenuse kĂ€ivitamise ja selle kĂ€sitsemise nĂŒansside kohta.

IV. KKK, kus on hea ennetada probleeme, millega teie kolleegid teenusega töötades silmitsi vÔivad seista.

V. API lÔpp-punktide kirjeldus. Kui te ei ole sihtkohti mÀÀranud, peavad selle eest peaaegu kindlasti maksma kolleegid, kelle mikroteenused on teie omadega seotud. Praegu kasutame selleks Swaggerit ja meie lahendust nimega brief.

VI. Silte. VĂ”i mĂ€rgid, mis nĂ€itavad, millise toote, funktsionaalsuse vĂ”i ettevĂ”tte struktuuriĂŒksusega teenus on seotud. Need aitavad kiiresti aru saada, nĂ€iteks, kas te ei tööta vĂ€lja funktsionaalsust, mille teie kolleegid nĂ€dal tagasi samale Ă€riĂŒksusele toimetasid.

VII. Teenuse omanik vÔi omanikud. Enamikul juhtudel on PaaS-i abil seda vÔimalik automaatselt mÀÀrata, kuid igaks juhuks nÔuame arendajalt nende kÀsitsi mÀÀramist.

LĂ”puks on hea praktika lĂ€bi viia dokumentatsiooni ĂŒlevaatus, sarnaselt koodi ĂŒlevaatusele.

Continuous Integration

  • Repo valmistamine.
  • Pipeline'i loomine TeamCity-s.
  • Õiguste mÀÀramine.
  • Teenuse omanike leidmine. Siin on hĂŒbriidskeem - kĂ€sitsi mĂ€rgistamine ja minimaalne automatiseerimine PaaS-ilt. TĂ€iesti automaatne skeem ebaĂ”nnestub teenuste ĂŒlemisel toe andmisele teisele arendustiimile vĂ”i kui nĂ€iteks teenuse arendaja lahkub.
  • Teenuse registreerimine Atlas'is (vt eespool). KĂ”igi selle omanike ja sĂ”ltuvustega.
  • Migratsioonide kontrollimine. Kontrollime, kas nende seas on potentsiaalselt ohtlikke. NĂ€iteks, kui ĂŒhes neist ilmneb alter table vĂ”i midagi muud, mis vĂ”ib rikkuda andmeskeemide ĂŒhilduvust eri teenuse versioonide vahel. Sel juhul migratsiooni ei tehta, vaid see pannakse tellimisse - PaaS peab signaalima teenuse omanikule, kui on ohutu see rakendada.

Bake

JĂ€rgmine etapp on teenuste pakkimine enne juurutamist.

  • Rakenduse koostamine. Klassikaliselt - Docker-imagiks.
  • Helm-chartide genereerimine teenuse ja sellega seotud ressursside jaoks. Sealhulgas andmebaaside ja vahemĂ€lu jaoks. Need genereeritakse automaatselt vastavalt sellele konfigureerimisele app.toml, mis moodustati CLI-push'i etapis.
  • Pileti loomineadministraatoritele portide avamiseks (kui see on vajalik).
  • Üksustestide lĂ€biviimine ja koodi katvuse arvestamine. Kui koodi katvus jÀÀb alla mÀÀratud lĂ€vevÀÀrtuse, ei pruugi teenus tĂ”enĂ€oliselt edaspidi deploy'i lĂ€bida. Kui see on lubatud piiril, antakse teenusele «pessimistlik» koefitsiend, mis tĂ€hendab, et aja jooksul, kui nĂ€itaja ei parane, saab arendaja teate, et testimise osas pole edusamme (ja midagi tuleks sellega teha).
  • MĂ€lu ja CPU piirangute arvestamine. Peamiselt kirjutame mikroteenuseid Golangi keeles ja kĂ€ivitame neid Kuberneteses. Sealt tuleneb ĂŒks nĂŒanss, mis on seotud Golangi keele omadustega: vaikimisi kasutatakse masina kĂ”ik tuumad, kui muutujat GOMAXPROCS selgelt ei seadistata, ja kui ĂŒhel masinal kĂ€ivitatakse mitu sellist teenust, hakkavad nad omavahel ressursse konkureerima, takistades ĂŒksteist. Allolevates graafikutes on nĂ€idatud, kuidas tĂ€itmisaja muutumine sĂ”ltub rakenduse kĂ€ivitamisest ilma konkurentsita ja ressursside vĂ”istlusreĆŸiimis. (Graafikute allikakoodid asuvad siin).

Mida me teame mikroteenustest

TÀitmisaeg, vÀhem on parem. Maksimum: 643ms, miinimum: 42ms. Foto on klikitav.

Mida me teame mikroteenustest

Tegevuse aeg, vÀhem on parem. Maksimum: 14091 ns, miinimum: 151 ns. Foto on klikitav.

Kogumise ettevalmistamise etapis saab seda muutujat selgelt seada vÔi kasutada raamatukogu automaxprocs Uberi meeskonnalt.

KĂ€ivitamine

‱ Konventsioonide kontrollimine. Enne, kui alustame teenuse koguste kohaletoimetamist planeeritud keskkondadesse, tuleb kontrollida jĂ€rgmist:
— API lĂ”pp-punktid.
— API lĂ”pp-punktide vastuste vastavus skeemile.
— Logide formaat.
— Pealkirjade seadmine teenusele esitatavates pĂ€ringutes (hetkel teostab seda netramesh)
— Omaniku mĂ€rgi seadmine sĂ”numite saatmisel bussile (event bus). See on vajalik teenuste seotuse jĂ€lgimiseks bussi kaudu. Bussile saab saata nii idempotentseid andmeid, mis ei suurenda teenuste seotust (mis on hea), kui ka Ă€rilisi andmeid, mis seotust suurendavad (mis on vĂ€ga halb!). Ja hetkel, kui see seotus muutub probleemiks, aitab arusaam sellest, kes kirjutab ja loeb bussi, teenuseid Ă”igesti jagada.

Praegu ei ole Avitos konventsioone eriti palju, kuid nende hulk suureneb. Mida rohkem selliseid kokkuleppeid on tiimi arusaadavas ja mugavas vormis, seda lihtsam on sÀilitada laste teenuste vahel.

SĂŒnteetilised testid

‱ Testimine suletud kontuuris. Selle jaoks kasutame praegu avatud lĂ€htekoodiga Hoverfly.ioEsiteks salvestab ta teenuse reaalse koormuse, seejĂ€rel simulatsioonib seda suletud ringis.

‱ Koormustestimine. PĂŒĂŒame kĂ”ik teenused viia optimaalsele jĂ”udlusele. Ja kĂ”ikide teenuse versioonide peavad lĂ€bima koormustestimise — nii saame aru teenuse hetkejĂ”udlusest ja erinevusest selle eelnevate versioonidega. Kui teenuse jĂ”udlus pĂ€rast uuendust kukub poole vĂ”rra, on see selge signaal selle omanikele: tuleb sĂŒveneda koodi ja olukorraga tegeleda.
Kogutud andmete pĂ”hjal nĂ€iteks lĂ€htume, et korralikult ellu viia auto skaleerimine ja lĂ”puks ĂŒldiselt mĂ”ista, kui hĂ€sti teenus skaleerub.

Koormustestimise kÀigus kontrollime, kas ressursikasutuse tase vastab seatud piirangutele. Keskendume eelkÔige ÀÀrmuslikele olukordadele.

a) Vaatame ĂŒldist koormust.
— Kui koormus on liiga madal, ei toimi tĂ”enĂ€oliselt miski, kui koormus ĂŒhtĂ€kki langeb mitu korda.
— Kui koormus on liiga suur, on vajalik optimeerimine.

b) Vaatame RPSi piiri.
Siin vaatame nii praeguse versiooni ja eelneva vahet ning ĂŒldist arvu. NĂ€iteks, kui teenus annab 100 rps — siis on see kas halvasti kirjutatud vĂ”i on see tema eripĂ€ra, aga igal juhul on see pĂ”hjus, miks teenusele vĂ€ga tĂ€helepanelikult lĂ€heneda.
Kui RPS on aga liiga kÔrge, siis vÔib-olla on mingi viga ja mÔni lÔpp-punkt on lÔpetanud kasuliku koormuse tÀitmise ja kÀivitub lihtsalt mingil kujul. return true;

Canary-testid

PĂ€rast sĂŒnteetiliste testide lĂ€bimist katsetame mikroteenuse tööd vĂ€ikese kasutajate arvuga. Alustame ettevaatlikult, vĂ€ga vĂ€ikese osaga teenuse eeldatavast publikust — vĂ€hem kui 0,1%. Sel etapil on vĂ€ga oluline, et jĂ€lgimises oleksid Ă”iged tehnilised ja toote-mÔÔdikud, et need vĂ”imalikult kiiresti nĂ€itaksid teenuse probleemi. Minimene canary-testi aeg on 5 minutit, peamine — 2 tundi. Tasakaalustatud teenuste puhul seame aja kĂ€sitsi.
AnalĂŒĂŒtime:
— keeletehnilised mÔÔdikud, eelkĂ”ige php-fpm töötajad;
— vead Sentrys;
— vastuste olekud;
— vastuste aeg (response time), tĂ€pne ja keskmine;
— latentsus;
— töödeldud ja töötlemata erandid;
— tootemÔÔdikud.

Squeeze Testing

Squeeze-teste nimetatakse ka "vĂ€ljatĂ”uketestimiseks". Meetodi nimetus ilmus Netflixis. Selle olemus on see, et esmalt tĂ€idame reaalse liiklusega ĂŒhe instantsi kuni rikkeolukorrani ja sel viisil kindlaks mÀÀrame selle piiri. SeejĂ€rel lisame veel ĂŒhe instantsi ja koormame neid koos - uuesti maksimaalselt; nĂ€eme nende lae ja erinevust esimese "squeeze'i" vahel. Nii liidame ĂŒhe instantsi korraga ja arvutame muutuste seaduspĂ€rasuse.
Andmed "vĂ€ljatĂ”uketestimise" kohta kogunevad samuti ĂŒldisesse meetrikate baasi, kus me rikastame nendega neid kunstlikke koormusi, vĂ”i asendame nendega "sĂŒnteetika" tĂ€ielikult.

Tootmine

‱ Skaalautumine. Teenuse tootmisse viies jĂ€lgime, kuidas see skaleerub. Ainult CPU nĂ€itajaid jĂ€lgida ei ole meie kogemuste pĂ”hjal efektiivne. Auto scaling koos RPS benchmark'iga puhtal kujul töötab, kuid ainult eriteenuste jaoks, nĂ€iteks veebivoo teenuse jaoks. SeetĂ”ttu vaatame esmalt rakendusele iseloomulikke tootenĂ€itajaid.

KokkuvĂ”ttes analĂŒĂŒsime skaleerimise kĂ€igus:
— CPU ja RAM nĂ€itajaid,
— jĂ€rjekorras olevate pĂ€ringute arvu,
— reageerimisaega,
— prognoosi, mis pĂ”hineb akumuleeritud ajaloolistel andmetel.

Teenuse skaleerimise ajal on samuti oluline jĂ€lgida selle sĂ”ltuvusi, et mitte juhtuda nii, et skaleerime esimest teenust ahelas, samal ajal kui need, millele see tugineb, kukuvad koormuse all. VastuvĂ”etava koormuse mÀÀramiseks kogu teenuste grupile vaatame ajaloolisi andmeid "lĂ€hedasest" sĂ”ltuvast teenusest (kombineeritud CPU ja RAM nĂ€itajate ning rakenduse spetsiifiliste nĂ€itajate jĂ€rgi) ja seome need algse teenuse ajalooliste andmete, ja nii edasi kogu "sĂ”ltuvuste ahelas", ĂŒlevalt alla.

Hooldus

PÀrast mikroteenuse kasutusele vÔtmist saame sellele siduda kÀivitajaid.

Siin on tĂŒĂŒpilised olukorrad, kus kĂ€ivitajad aktiveeruvad.
— Tuletati potentsiaalselt ohtlikud migratsioonid.
— Turvauuendusi on vĂ€lja lastud.
— Teenust pole pikka aega uuendatud.
— Teenuse koormus on oluliselt vĂ€henenud vĂ”i mĂ”ni tema tootenĂ€itajatest ĂŒletab normi.
— Teenus ei vasta enam platvormi uutele nĂ”uetele.

MĂ”ned trigerid vastutavad sĂŒsteemi stabiilsuse eest, teised - nagu sĂŒsteemi hooldusfunktsioon - nĂ€iteks kui mĂ”ni teenus pole pikka aega vĂ€lja lastud ja selle baaspilt enam turvaskanke ei lĂ€bi.

Armatuurlaud

LĂŒhidalt öeldes on juhtpaneel meie PaaSi juhtimiskeskus.

  • Üksnes teave teenuse kohta, sealhulgas testimise katvuse, selle piltide arvu, tootmiseksemplaride arvu, versioonide jne andmed.
  • Andmete filtreerimise tööriist teenuste ja labels (Ă€rikĂŒsimuste, toote funktsionaalsuse jne) jĂ€rgi.
  • Integreerimise tööriist infrastruktuuri tööriistadega jĂ€lgimise, logimise ja monitooringu jaoks.
  • Üksnes teenuste dokumentatsiooni koht.
  • Üksnes teenuste sĂŒndmuste ĂŒlevaate koht.

Mida me teame mikroteenustest
Mida me teame mikroteenustest
Mida me teame mikroteenustest
Mida me teame mikroteenustest

KokkuvÔttes

PĂ€rast PaaSi rakendamist vĂ”is uus arendaja kulutada mitu nĂ€dalat, et mĂ”ista kĂ”iki tööriistu, mis olid vajalikud mikroteenuse tootmisse toomiseks: Kubernetes, Helm - meie sisemiste omaduste, TeamCity, andmebaaside ja vahemĂ€lude usaldusvÀÀrse ĂŒhenduse konfigureerimine jne. NĂŒĂŒd kulub selleks paar tundi - lugeda kiire alguse juhend ja luua ise teenus.

Ma tegin sellest teemast ettekande HighLoad++ 2018, seda saab vaadata. video ja esitlust.

Boonusloend neile, kes on lÔpuni lugenud.

Meie Avitos korraldame arendajatele kolme pÀeva jooksul toimuva sisekoolituse. Kris Richardsonilt, mikroteenuste arhitektuuri eksperdilt. Soovime pakkuda kellegile sellest postitusest osalemisvÔimalust. Siin Koolituse programmi on vÀlja pandud.

Koolitus toimub 5.-7. august Moskvas. Need on tööpÀevad, mis on tÀielikult hÔivatud. LÔuna ja koolitus toimuvad meie kontoris, kuid valitud osaleja maksab enda transpordi ja majutuse ise.

Osalemiseks saate taotluse esitada selles Google'i vormis.. Teilt oodatakse vastust kĂŒsimusele, miks just teile on vaja koolitusele tulla, ja teavet, kuidas teiega ĂŒhendust vĂ”tta. Vastake inglise keeles, sest valitud osalejat valib Kris ise.
Teatame koolituse osaleja nime selle postituse uuendusega ja Avito arendajatele mÔeldud sotsiaalmeedias (AvitoTech Facebookis Facebookis, Vkontakte, Twitteris) hiljemalt 19. juuliks.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster