Mida me teame mikroteenustest

Tere! Mina olen Vadim Madison, ma juhin Avito System Platform arendust. Meie ĂŒleminek monoliitsest arhitektuurist mikroteenuseni on olnud tihti jutuks. On aeg jagada, kuidas me oma infrastruktuuri ĂŒmber kujundasime, et mikroteenustest maksimaalset kasu saada ja samas end neis ei kaotada. Kuidas PaaS meile siin abiks on, kuidas me lihtsustasime deploy'st ja vĂ€hendasime mikroteenuse loomise ĂŒhe kliki peale — loe edasi. Mitte kĂ”ik, millest ma allpool rÀÀgin, ei ole Avitos tĂ€ielikult rakendatud, osa on see, kuidas me oma platvormi arendame.

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

Mida me teame mikroteenustest

Kuidas me mikroteenustele jÔudsime

Avito on ĂŒks suurimaid klassifitseeritud kuulutuste saite maailmas, kus iga pĂ€ev avaldatakse ĂŒle 15 miljoni uue kuulutuse. Meie tagaplaan kĂ€sitleb ĂŒle 20 000 pĂ€ringu sekundis. Praegu on meil mitusada mikroteenust.

Mikroteenuste arhitektuuri oleme loonud juba mitu aastat. Kuidas tĂ€pselt — meie kolleegid rÀÀgivad detailidest reported meie osas RIT++ 2017. CodeFest 2017-l (vt. video), Sergei Orlov ja Mihhail ProkoptĆĄuk selgitasid ĂŒksikasjalikult, miks me ĂŒldse vajame ĂŒleminekut mikroteenustele ja millist rolli siinkohal mĂ€ngis Kubernetes. NĂŒĂŒd teeme kĂ”ik endast oleneva, et minimeerida neid skalaarimise kulusid, mis on sellise arhitektuuri puhul iseloomulikud.

Alguses ei loonud me ökosĂŒsteemi, mis aitaks meid laialdaselt mikroteenuste arendamisel ja kĂ€ivitamisel. Kogusime lihtsalt kokku mĂ”istlikud avatud lahendused, kĂ€ivitasime need ja pakkusime arendajale vĂ”imalust nendega tutvuda. Tulemuseks oli see, et arendaja kĂ€is kĂŒmnes kohas (juhtpaneelid, siseteenused), mille tulemusena muutus tema soov vanamoodi, monoliidi pĂ”hjal koodi kirjutada, kindlamaks. Allolevates skeemides on rohelisega mĂ€rgitud, mida arendaja igal juhul enda kĂ€tega teeb, kollasega – automatiseerimine.

Mida me teame mikroteenustest

Praegu kĂ€ivitatakse PaaS CLI-utiliidil uue teenuse loomine ĂŒhe kĂ€suga ja kaht kĂ€suga lisatakse uus andmebaas ning paigaldatakse etappi.

Mida me teame mikroteenustest

Kuidas ĂŒletada «mikroteenuste killustatuse» ajastu

Monoliitse arhitektuuri puhul pidid arendajad tagama toodete muutuste jĂ€rjepidevuse ning tegelema sellega, mis toimub naabrite juures. Uue arhitektuuri rakendamisel on teenuste kontekstid ĂŒksteisest enam sĂ”ltumatud.

Lisaks, et mikroteenuste arhitektuur oleks tÔhus, tuleb luua mitmeid protsesse, nimelt:

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

Kuna sĂŒsteem peab skaleerimise kĂ€igus sĂ€ilitama terviklikkuse ja jÀÀma tĂ”husaks, oleme ĂŒmber mĂ”elnud mikroteenuste korralduse Avitos.

Kuidas me mikroteenustega hakkama saame

Ühtse 'parteipoliitika' rakendamine Avito mitmete mikroteenuste vahel toimub:

  • infrastruktuuri jagamine taseteks;
  • Platform as a Service (PaaS) kontseptsioon;
  • kĂ”ik, mis mikroteenustega juhtub, jĂ€lgimine.

Infrastruktuuri abstraktsiooni tasemed hĂ”lmavad kolme kihti. Alustame ĂŒlespoole liikumisest.

A. Ülemine — service mesh. Alguses proovisime Istio, kuid selgus, et see kasutab liiga palju ressursse, mis muutub meie suuruste juures liialt kulukaks. SeetĂ”ttu töötas arhitektuuri meeskonna vaneminsener Aleksandr Lukjančenko vĂ€lja oma lahenduse — Netramesh (avatud allikaga), mida me praegu tootmises kasutame ja mis tarbib mitu korda vĂ€hem ressursse kui Istio (kuigi ei tee kĂ”ike, millega Istio uhkustab).
B. Keskmine — Kubernetes. Sellel pĂ”hineb meie mikroteenuste juurutamine ja haldamine.
C. Alumine — bare metal. Me ei kasuta pilvi ega selliseid asju nagu OpenStack, vaid oleme tĂ€ielikult bare metal'i peal.

KĂ”ik kihid ĂŒhendatakse PaaS-iga. Ja see platvorm koosneb omakorda kolmest osast.

I. Generaatorid, mida juhitakse CLI-tööriista kaudu. Just see aitab arendajal luua mikroteenuse Ôigesti ja minimaalse vaevaga.

II. KokkuvĂ”tte koguja kĂ”ikide tööriistade juhtimisega lĂ€bi ĂŒhise armatuurlaua.

III. Andmehoidla. Ühendub planeerijatega, mis auto­maatiliselt kĂ€ivitavad triggereid oluliste tegevuste jaoks. Sellise sĂŒsteemi tĂ”ttu ei jÀÀ ĂŒkski ĂŒlesanne tĂ€itmata lihtsalt seetĂ”ttu, et keegi unustas endale Jira's ĂŒlesande mÀÀrata. Selleks kasutame sisemist tööriista nimega Atlas.

Mida me teame mikroteenustest

Mikroteenuste rakendamine Avitos toimub samuti ĂŒhtse skeemi alusel, mis lihtsustab nende kontrollimist igas arendus- ja vĂ€ljalaskestaadiumis.

Kuidas on ĂŒles ehitatud mikroteenuse arenduse standardne konveier

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

CLI-push → JĂ€tkuv integreerimine → KĂŒpsetamine → Paigaldamine → Kunstlikud testid → Canary-testid → Squeeze katsetamine → Tootmine → Hooldus.

KÀime selle lÀbi just sellises jÀrjestuses.

CLI-push

‱ Mikroteenuse loomine.
Oleme pikka aega vaeva nÀinud, et Ôpetada igat arendajat mikroteenuseid tegema. Sealhulgas oleme kirjutanud Confluence'i pÔhjalikke juhiseid. Kuid skeemid muutusid ja tÀienesid. Tulemuseks oli pudelikael teekonna alguses: mikroteenuste kÀivitamiseks kulus aega palju rohkem, kui oli lubatud, ja selle loomise kÀigus tekkis sageli probleeme.

LÔpuks lÔime lihtsa CLI-tööriista, mis automatiseerib mikroteenuse loomise pÔhietapid. Tegelikult asendab see esimest git push'i. Siin on, mida tÀpselt see teeb.

— Loob teenuse mallide pĂ”hjal — samm-sammult, 'wizard' reĆŸiimis. Meil on mallid peamiste tagapoolsete programmeerimiskeelte jaoks, nagu PHP, Golang ja Python.

— Ühe kĂ€suga seadistab kohaliku arenduskeskkonna konkreetsel masinal — tĂ”useb Minikube, Helm'i graafikud genereeritakse ja kĂ€ivitatakse automaatselt kohalikus kubernetes'e keskkonnas.

— Ühendab vajaliku andmebaasi. Arendajal pole vaja teada IP-aadressi, kasutajanime ega parooli, et pÀÀseda vajaliku andmebaasi juurde — olgu see siis kohalik, etapis vĂ”i tootmises. Andmebaas seadistatakse kohe ka kĂ”rge töökindlusega konfiguratsioonis ja koormuse tasakaalustamisega.

— Teeb live-kogumise iseseisvalt. Oletame, et arendaja on oma IDE kaudu mikroteenuses midagi muutnud. Tööriist tuvastab failisĂŒsteemis muudatused ja nende pĂ”hjal koondab rakenduse (Golang'i jaoks) ja kĂ€ivitab selle uuesti. PHP puhul edastame lihtsalt katalooge kubusse ja seal live-reload toimub 'automaatiliselt'.

— Generoib automatiseeritud teste. Need on kujundusmaterjalid, kuid tĂ€iesti kasutatavad.

‱ Mikroteenuse juurutamine.

Mikroteenuse juurutamine oli varem ĂŒsna vaevarikas. Kohustuslikud nĂ”uded olid:

I. Dockerfile.

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

— chart'id;
— mallid;
— spetsiifilised vÀÀrtused, arvestades erinevaid keskkondi.

Oleme vabanenud Kubernetes'i manifestide muutmise vaevast, nĂŒĂŒd genereeritakse need automaatselt. Kuid kĂ”ige olulisem on see, et oleme juurutamise ÀÀrmiselt lihtsaks teinud. NĂŒĂŒd on meil Dockerfile, ja kogu konfigureerimise pĂ”hikirjeldust kirjutab arendaja ĂŒhte ainsasse lĂŒhikesse faili app.toml.

Mida me teame mikroteenustest

Jah, ja isegi app.toml-is on nĂŒĂŒd asjad hetkega korda tehtud. MÀÀrame, kui palju teenuse koopiad tĂ”sta (dev-serveris, staging'is, tootmises) ja nĂ€itame selle sĂ”ltuvusi. Pange tĂ€hele rida size = "small" plokis [engine]. See on piirang, mis eraldatakse teenusele lĂ€bi Kubernetes'e.

Edasi genereeritakse selle konfiguratsiooni pĂ”hjal automaatselt kĂ”ik vajalikud Helm-chart'id ja luuakse ĂŒhendused andmebaasidega.

‱ PĂ”hivaatlus. Sellised kontrollid on samuti automatiseeritud.
Oluline on jÀlgida:
— kas Dockerfile on olemas;
— kas app.toml on olemas;
— kas on dokumentatsioon;
— kas sĂ”ltuvused on korras;
— kas on mÀÀratud hĂ€irereeglid.
Viimase punkti kohta: teenuse omanik mÀÀrab ise, milliseid tootmisnÀitajaid jÀlgida.

‱ Dokumentatsiooni ettevalmistamine.
Siiani on see probleemne koht. Tundub nagu kĂ”ige ilmsem, kuid samas ka rekordiliselt „unustatud”, seega on see haavatav lĂŒli ahelas.
On vajalik, et iga mikroteenuse kohta oleks dokumentatsioon. See sisaldab jÀrgmisi osi.

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

II. Lingid arhitektuuri diagrammile. Oluline, et kiirel pilgul oleks lihtne mĂ”ista, kas kasutate Redis’i vahemĂ€luna vĂ”i peamise andmete salvestamise viisina pĂŒsireĆŸiimis. Avitos on see praegu link Confluence’ile.

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

IV. KKK, kus oleks hea ette nÀha probleemid, millega teie kolleegid teenuse kasutamisel silmitsi vÔivad seista.

V. API lÔpp-punktide kirjeldus. Kui te ei ole sihtkohti mÀÀranud, siis peavad tÔenÀoliselt teie kolleegid, kelle mikroteenused on teie omadega seotud, selle eest tasuma. Praegu kasutame selle jaoks Swaggerit ja meie lahendust nimega brief.

VI. Silte. VĂ”i markerid, mis nĂ€itavad, millise toote, funktsionaalsuse vĂ”i ettevĂ”tte struktuuriĂŒksusega teenus seotud on. Aitavad kiiresti mĂ”ista, nĂ€iteks, kas te ei arenda funktsionaalsust, mille kolleegid nĂ€dal tagasi samale Ă€rigrupile vĂ€lja tĂ”id.

VII. Teenuse omanik vĂ”i omanikud. Enamasti saab selle — vĂ”i nende — PaaS abil automaatselt mÀÀrata, kuid igaks juhuks nĂ”uame arendajalt, et nad need kĂ€sitsi ka mĂ€rkida.

LĂ”puks on hea viis dokumentatsiooni ĂŒlevaatamine, sarnaselt code review’le.

JĂ€tkuv integreerimine

  • Repozitoriumide ettevalmistamine.
  • Pipeliini loomine TeamCitys.
  • Õiguste mÀÀramine.
  • Teenuse omanike otsimine. Siin on hĂŒbriidskeem — kĂ€sitsi mĂ€rgistamine ja minimaalne automatiseerimine PaaS-i poolt. TĂ€iesti automatiseeritud skeem kaob teenuste ĂŒlekandmisel teise arendusteami toetuseks vĂ”i nĂ€iteks, kui teenuse arendaja lahkub ettevĂ”ttest.
  • Teenuse registreerimine Atlas (vt. ĂŒlal). KĂ”ikide selle omanike ja sĂ”ltuvustega.
  • Migratsioonide kontrollimine. Kontrollime, kas nende seas on potentsiaalselt ohtlikke. NĂ€iteks, kui ĂŒks neist sisaldab 'alter table' vĂ”i midagi muud, mis vĂ”ib andmeskeemi erinevate teenuseversioonide vahel kokku leppida. Sel juhul migratsioon ei toimu ja see pannakse tellimisse — PaaS peab omanikule signaalima, kui see on ohutu rakendada.

Bake

JĂ€rgmine etapp - teenuste pakkimine enne juurutamist.

  • Rakenduse komplekteerimine. Klassikaliselt - Docker-pildiks.
  • Helm-chartide genereerimine teenuse ja sellele seotud ressursside jaoks. Sealhulgas andmebaasid ja vahemĂ€lu. Need genereeritakse automaatselt vastavalt app.toml konfiguratsioonile, mis moodustati CLI-pushi etapis.
  • Piletite loomine administraatoritele portide avamiseks (kui see on vajalik).
  • Ühiktestide lĂ€biviimine ja koodi katvuse arvutamine. Kui koodi katte tase jÀÀb alla nĂ”utud tĂ”kkevÀÀrtuse, siis tĂ”enĂ€oliselt ei pruugi teenus edasi minna — deploy’ile. Kui tase on piiril, siis antakse teenusele „pessimiseeriv“ koefitsiend, mis tĂ€hendab, et kui nĂ€itaja ajaga ei parane, saab arendaja teate, et testide osas pole edusamme (ja tuleks sellega midagi ette vĂ”tta).
  • MĂ€lu ja CPU piirangute arvestamine. Peamiselt kirjutame mikroteenuseid Golangis ja kĂ€itame neid Kuberneteses. SeetĂ”ttu on ĂŒks nĂŒanss, mis on seotud Golangi omadustega: vaikimisi kĂ€ivituvad masinal kĂ”ik tuumad, vĂ€lja arvatud juhul, kui muutuja GOMAXPROCS on selgelt mÀÀratud, ja kui mitmed sellised teenused on ĂŒhel masinal kĂ€imas, hakkavad nad omavahel ressursse konkureerima ja segama ĂŒksteist. Allolevatel graafikutel on nĂ€idatud, kuidas tĂ€itmise aeg muutub, kui rakendust kĂ€itada ilma konkurentsita vĂ”i ressursiheitluses. (Graafikute lĂ€htekood on olemas. siit).

Mida me teame mikroteenustest

TÀitmise aeg, mida vÀhem, seda parem. Maksimum: 643ms, minimum: 42ms. Foto on klikkitav.

Mida me teame mikroteenustest

Operatsiooni aeg, mida vÀhem, seda parem. Maksimum: 14091 ns, minimum: 151 ns. Foto on klikkitav.

Kogumise ettevalmistamise etapis saab seda muutujat mÀÀrata ĂŒheselt vĂ”i kasutada raamatukogu. automaxprocs Uberi meeskonnast.

Juhtimistöö

‱ Konventsioonide kontrollimine. Enne teenuse kogude tarnimise alustamist planeeritud keskkondadesse tuleb kontrollida jĂ€rgmist:
— API lĂ”pp-punktid.
— API lĂ”pp-punktide vastuste vastavus skeemile.
— Logifailide formaat.
— Pealkirjade mÀÀramine teenuse pĂ€ringute tegemisel (hetkel teeb seda netramesh).
— Omaniku mĂ€rgi mÀÀramine sĂ”numite saatmisel bussile (event bus). See on vajalik teenuste seose jĂ€lgimiseks lĂ€bi bussi. Bussi saab saata nii idempotentseid andmeid, mis ei suurenda teenuste seoseid (mis on hea), kui ka Ă€rilisi andmeid, mis seoseid suurendavad (mis on vĂ€ga halb!). Ja hetkel, mil see seos muutub probleemiks, aitab arusaam, kes kirjutab ja loeb bussi, teenuseid Ă”igesti lahutada.

Praegu ei ole Avitos palju konventsioone, kuid nende hulk laieneb. Mida rohkem selliseid kokkuleppeid on meeskonnale arusaadavas ja mugavas vormis, seda lihtsam on mikroteenuste vahel konsistentsi sÀilitada.

SĂŒntetaalsed testid

‱ Testimine suletud silindris. Selleks kasutame hetkel avatud lĂ€htekoodiga Hoverfly.io. Esiteks registreerib see teenuse reaalset koormust ja seejĂ€rel simuleerib seda suletud kontuuris.

‱ Koormustestimine. PĂŒĂŒame kĂ”iki teenuseid viia optimaalsele tootlikkusele. Ja kĂ”ikide teenuste versioonid peavad lĂ€bima koormustestimise — nii saame aru teenuse praegusest tootlikkusest ja erinevusest eelmiste versioonidega. Kui teenuse uuendamise jĂ€rel selle vĂ”imekus vĂ€heneb poolteist korda, on see omanikele selge signaal: on aeg koodi sĂŒveneda ja olukord parandada.
Kogutud andmetest lÀhtume nÀiteks selleks, et Ôigesti rakendada auto skaala, ja lÔpuks isegi mÔista, kui palju teenus suudab skaleeruda.

Koormustestimise kÀigus kontrollime, kas ressursikasutuse piirangud peavad vastu. Ja pöörame tÀhelepanu eelkÔige ÀÀrmustele.

a) Vaatame, mis on ĂŒldine koormus.
— Kui see on liiga madal, tĂ€hendab see tĂ”enĂ€oliselt, et midagi ei tööta, kui koormus on jĂ€rsku mitu korda vĂ€henenud.
— Kui see on liiga kĂ”rge, on vajalik optimeerimine.

b) Vaatame RPS piiri.
Siin vaatame nii praeguse versiooni ja eelneva erinevust kui ka ĂŒldist arvu. NĂ€iteks, kui teenus annab 100 rps, siis on see kas halvasti kirjutatud vĂ”i see on tema spetsiifika, kuid igal juhul on see pĂ”hjus teenusele vĂ€ga lĂ€hedalt pilku heita.
Kui RPS on aga liiga suur, siis vÔib olla mingi viga ja mÔni endpoint ei teosta enam kasulikku koormust, vaid aktiveerib lihtsalt mingi. return true;

Canary-testid

PĂ€rast sĂŒnteetiliste testide lĂ€bimist katsetame mikroteenuse toimimist vĂ€ikese kasutajate arvu peal. Alustame ettevaatlikult, vĂ€hem kui 0,1% eeldatavast teenuse sihtrĂŒhmast. Sel hetkel on ÀÀrmiselt oluline, et jĂ€lgimises oleksid seadistatud Ă”iged tehnilised ja toote metoodikad, et nad suudaksid vĂ”imalikult kiiresti nĂ€idata probleemi teenuses. Minimaalne canary-testi aeg on 5 minutit, peamine 2 tundi. Kompleksetes teenustes mÀÀrame aja kĂ€sitsi.
AnalĂŒĂŒsime:
— keelespetsiifilisi metrikaid, sealhulgas php-fpm töötajad;
— vead Sentry-s;
— vastuste staatused;
— vastamisaeg (response time), tĂ€pne ja keskmine;
— latency;
— kĂ€ideldud ja kĂ€ideldamatud erandid;
— toote mÔÔdikud.

Squeeze Testing

Squeeze Testingut tuntakse ka kui „vĂ€ljade testimist“. Meetodi nimi tuli Netflixilt. Selle pĂ”himĂ”te on see, et esmalt tĂ€idame ĂŒhe instantsi reaalse liiklusega kuni selle rikki minekuni, seelĂ€bi seame selle piiri. SeejĂ€rel lisame veel ĂŒhe instantsi ja koormame neid kahte — jĂ€lle maksimaalselt; nĂ€eme nende piirangut ja erinevust esimesest „squeeze'ist“. Ja nii ĂŒhendame sammhaaval ĂŒhe instantsi ja arvutame muutuste mustri.
Andmed „vĂ€ljade testimise“ kohta kogutakse ka ĂŒldises mÔÔdikate andmebaasis, kus me kas rikastame nendega kunstlikkoormuse tulemusi vĂ”i asendame need „sĂŒnteetika“ tĂ€ielikult.

Tootmine

‱ Skaalautuvus. Teenuse kĂ€ivitamisel tootmises jĂ€lgime, kuidas see skaleerub. Ainult CPU nĂ€itajate jĂ€lgimine ei ole meie kogemuse pĂ”hjal efektiivne. Auto skaleerimine puhta RPS testimisega töötab, kuid ainult teatud teenuste jaoks, nĂ€iteks online-voogedastuses. Seega vaatame esmalt rakendusele spetsiifilisi toote mÔÔdikuid.

LĂ”ppkokkuvĂ”ttes analĂŒĂŒsime skaleerimise kĂ€igus:
— CPU ja RAM nĂ€itajad,
— jĂ€rjekorras olevate pĂ€ringute arv,
— vastuse aeg,
— prognoos kogutud ajalooliste andmete pĂ”hjal.

Teenuse skaleerimisel on samuti oluline jĂ€lgida selle sĂ”ltuvusi, et vĂ€ltida olukorda, kus skaleerime esmase teenuse, kuid sĂ”ltuvatest teenustest, millega see suhtleb, saab koormuse all kokkuvarisemine. Et mÀÀrata kogu teenuste grupi vastuvĂ”etav koormus, vaatame ajaloolisi andmeid 'lĂ€hedasest' sĂ”ltuvusest (CPU ja RAM kombinatsiooni ning rakendustele spetsiifiliste mÔÔdikute pĂ”hjal) ja seome need algse teenuse ajalooliste andmetega, ja edasi kĂ”ikide 'sĂ”ltuvuste ahela' kaudu, ĂŒlalpoolt allapoole.

Hooldus

PÀrast seda, kui mikroteenus on tööle pandud, saame sellele lisada kÀivitajad.

Siin on tĂŒĂŒpilised olukorrad, kus kĂ€ivitajad aktiveeruvad.
— Potentsiaalselt ohtlike migratsioonide avastamine.
— Turvauuendused on vĂ€lja antud.
— Teenust ei ole pikka aega uuendatud.
— Teenuse koormus on mĂ€rkimisvÀÀrselt vĂ€henenud vĂ”i mĂ”ned toote mÔÔdikud ĂŒletavad normi.
— Teenus ei vasta enam platvormi uutele nĂ”uetele.

MĂ”ned kĂ€ivitajad vastutavad töö stabiilsuse eest, mĂ”ned tĂ€idavad sĂŒsteemi hoolduskohustusi — nĂ€iteks, mĂ”ni teenus pole ammu dĂ©ployitud ning selle baasimage ei lĂ€binud enam turvaproove.

Armatuurlaud

LĂŒhidalt öeldes on armatuurlaud meie PaaSi kogu juhtimiskeskus.

  • Üksne infoallikas teenuse kohta, sealhulgas andmed selle testkatete, image'ide arvu, tootmiskoopiate arvu, versioonide jne kohta.
  • Andmete filtreerimise tööriist teenuste ja labelite (Ă€riklasside kuuluvuse, toote funktsionaalsuse jne) pĂ”hjal.
  • Integreerimise tööriist riistvaratööriistadega jĂ€lgimise, logimise ja monitoorimise jaoks.
  • Ühtne dokumentatsiooni allikas teenuste kohta.
  • Ühtne ĂŒlevaade kĂ”igist teenuste sĂŒndmustest.

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

Kokku

Enne PaaSi juurutamist vĂ”is uue arendaja kuluda mitu nĂ€dalat, et igasuguste tööriistadega, mis on vajalikud mikroteenuse tootmisse viimiseks, nagu Kubernetes, Helm ning meie sisese TeamCity eripĂ€radega, andmebaaside ja vahemĂ€lude kĂ€ttesaamise seadistamine, tutvuda. Praegu kulub selleks paar tundi — piisab, et lugeda kiiret juhendit ja teha teenus ise.

Ma tegin sellel teemal ettekande HighLoad++ 2018 konverentsil, seda saab vaadata video ja esitluse.

Boonusraja neile, kes jÔudsid lÔpuni

Meie Avitos korraldame arendajatele kolmepÀevase siseÔppe Kris Richardsonilt Kris Richardsonilt, mikroteenuste arhitektuuri eksperdilt. Soovime anda vÔimaluse osaleda kellegile selle postituse lugejatest. Siit Treeningu programm on avaldatud.

Treening toimub 5.–7. augustil Moskvas. Need on tööpĂ€evad, mis on tĂ€ielikult hĂ”ivatud. LĂ”una ja Ă”pe toimuvad meie kontoris, kuid valitud osaleja katab ise tee ja majutuse kulud.

Osalemiseks saab registreeruda selles Google'i vormis. Teilt oodatakse vastust kĂŒsimusele, miks just teile on vaja treeningule tulla, ja teavet, kuidas teiega ĂŒhendust vĂ”tta. Vastake inglise keeles, sest osalejat, kes pÀÀseb treeningule, valib Kris isiklikult.
Teavitame treeningu osaleja nime selle postituse uuenduses ja Avito arendajate sotsiaalmeedias (AvitoTech Facebookis, VKontakte, Twitteris) hiljemalt 19. juulil.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster