Beth ydym ni'n ei wybod am ficrowasanaethau

Helo! Fy enw i yw Vadim Madison, fi sy'n arwain datblygiad y Platfform System Avito. Mae sut yr ydym ni yn y cwmni yn symud o bensaernïaeth monolithig i ficrowasanaeth wedi cael ei ddweud fwy nag unwaith. Mae’n bryd rhannu sut y gwnaethom drawsnewid ein seilwaith i gael y gorau o ficrowasanaethau a pheidio â mynd ar goll ynddynt. Sut mae PaaS yn ein helpu ni yma, sut y gwnaethom symleiddio'r defnydd a lleihau'r broses o greu microwasanaeth i un clic - darllenwch ymlaen. Nid yw popeth yr wyf yn ysgrifennu amdano isod wedi'i weithredu'n llawn yn Avito, rhan ohono yw sut yr ydym yn datblygu ein platfform.

(Ac ar ddiwedd yr erthygl hon, byddaf yn sôn am y cyfle i gyrraedd seminar tridiau gan arbenigwr mewn pensaernïaeth microwasanaeth, Chris Richardson).

Beth ydym ni'n ei wybod am ficrowasanaethau

Sut y daethom at ficrowasanaethau

Avito yw un o'r dosbarthiadau mwyaf yn y byd, mae'n cyhoeddi mwy na 15 miliwn o hysbysebion newydd y dydd. Mae ein hôl-wyneb yn derbyn mwy nag 20 mil o geisiadau yr eiliad. Nawr mae gennym gannoedd o ficrowasanaethau.

Rydym wedi bod yn adeiladu pensaernïaeth microwasanaeth ers mwy na blwyddyn. Sut yn union - ein cydweithwyr yn fanwl dweud wrth yn ein hadran yn RIT++ 2017. Yn CodeFest 2017 (gweler fideo), Esboniodd Sergey Orlov a Mikhail Prokopchuk yn fanwl pam roedd angen y newid i ficrowasanaethau o gwbl arnom a pha rôl a chwaraeodd Kubernetes yma. Wel, nawr rydym yn gwneud popeth i leihau'r costau graddio sy'n gynhenid ​​​​mewn pensaernïaeth o'r fath.

I ddechrau, ni wnaethom greu ecosystem a fyddai'n ein helpu'n gynhwysfawr i ddatblygu a lansio microwasanaethau. Maent newydd gasglu datrysiadau ffynhonnell agored smart, eu lansio gartref a chynnig i'r datblygwr ddelio â nhw. O ganlyniad, aeth i ddwsin o leoedd (dangosfyrddau, gwasanaethau mewnol), ac ar ôl hynny cryfhaodd ei awydd i dorri'r cod yn yr hen ffordd, mewn monolith. Mae'r lliw gwyrdd yn y diagramau isod yn nodi'r hyn y mae'r datblygwr yn ei wneud un ffordd neu'r llall gyda'i ddwylo ei hun, mae'r lliw melyn yn dynodi awtomeiddio.

Beth ydym ni'n ei wybod am ficrowasanaethau

Nawr, yn y cyfleustodau PaaS CLI, mae un tîm yn creu gwasanaeth newydd, ac mae dau arall yn ychwanegu cronfa ddata newydd a'i ddefnyddio i Stage.

Beth ydym ni'n ei wybod am ficrowasanaethau

Sut i oresgyn y cyfnod o "darnio microwasanaeth"

Gyda phensaernïaeth monolithig, er mwyn cysondeb newidiadau yn y cynnyrch, gorfodwyd datblygwyr i ddarganfod beth oedd yn digwydd gyda'u cymdogion. Wrth weithio ar y bensaernïaeth newydd, nid yw cyd-destunau gwasanaeth bellach yn dibynnu ar ei gilydd.

Yn ogystal, er mwyn i'r bensaernïaeth microwasanaeth fod yn effeithiol, mae angen sefydlu llawer o brosesau, sef:

• logio;
• olrhain ceisiadau (Jaeger);
• agregu gwallau (Sentry);
• statws, negeseuon, digwyddiadau o Kubernetes (Prosesu Ffrwd Digwyddiadau);
• terfyn ras / torrwr cylched (gallwch ddefnyddio Hystrix);
• rheoli cysylltedd gwasanaeth (rydym yn defnyddio Netramesh);
• monitro (Grafana);
• cynulliad (TeamCity);
• cyfathrebu a hysbysu (Slack, e-bost);
• olrhain tasgau; (Jira)
• paratoi dogfennaeth.

Er mwyn sicrhau nad yw'r system yn colli gonestrwydd ac yn parhau i fod yn effeithlon wrth iddi raddio, gwnaethom ailystyried trefniadaeth microwasanaethau yn Avito.

Sut rydym yn rheoli microwasanaethau

Mae Avito yn helpu i gyflawni un "polisi plaid" ymhlith y nifer o ficrowasanaethau:

  • rhannu seilwaith yn haenau;
  • y cysyniad o Platfform fel Gwasanaeth (PaaS);
  • monitro popeth sy'n digwydd gyda microwasanaethau.

Mae lefelau echdynnu seilwaith yn cynnwys tair haen. Gadewch i ni fynd o'r top i'r gwaelod.

A. Top - rhwyll gwasanaeth. Ar y dechrau fe wnaethon ni roi cynnig ar Istio, ond mae'n troi allan ei fod yn defnyddio gormod o adnoddau, sy'n rhy ddrud i'n cyfrolau. Felly, datblygodd yr uwch beiriannydd yn y tîm pensaernïaeth Alexander Lukyanchenko ei ateb ei hun - Netramesh (ar gael yn Open Source), yr ydym yn ei ddefnyddio ar hyn o bryd wrth gynhyrchu ac sy'n defnyddio sawl gwaith yn llai o adnoddau nag Istio (ond nid yw'n gwneud popeth y gall Istio ymffrostio ynddo).
B. Canolig - Kubernetes. Ar hynny, rydym yn defnyddio ac yn gweithredu microwasanaethau.
C. Gwaelod - metel noeth. Nid ydym yn defnyddio cymylau a phethau fel OpenStack, ond yn eistedd yn gyfan gwbl ar fetel noeth.

Mae pob haen yn cael eu cyfuno PaaS. Ac mae'r platfform hwn, yn ei dro, yn cynnwys tair rhan.

I. Generatoriaid, a reolir trwy gyfleustodau CLI. Hi sy'n helpu'r datblygwr i greu microwasanaeth yn y ffordd gywir a chyda chyn lleied o ymdrech â phosibl.

II. Casglwr cyfunol gyda rheolaeth ar bob offeryn trwy ddangosfwrdd cyffredin.

III. storfa. Yn cysylltu â rhaglenwyr sy'n gosod sbardunau yn awtomatig ar gyfer gweithredoedd ystyrlon. Diolch i system o'r fath, nid yw un dasg yn cael ei cholli dim ond oherwydd bod rhywun wedi anghofio rhoi tasg yn Jira. Rydym yn defnyddio teclyn mewnol o'r enw Atlas ar gyfer hyn.

Beth ydym ni'n ei wybod am ficrowasanaethau

Mae gweithredu microservices yn Avito hefyd yn cael ei wneud yn unol ag un cynllun, sy'n symleiddio rheolaeth drostynt ar bob cam o'u datblygiad a'u rhyddhau.

Sut mae'r biblinell datblygu microwasanaeth safonol yn gweithio

Yn gyffredinol, mae'r gadwyn creu microwasanaeth yn edrych fel hyn:

CLI-gwthio → Integreiddio Parhaus → Pobi → Defnyddio → Profion artiffisial → Profion Canari → Gwasgu Profi → Cynhyrchu → Cynnal a Chadw.

Gadewch i ni fynd drwyddo yn union yn y drefn hon.

CLI-gwthio

• Creu meicrowasanaeth.
Buom yn brwydro am amser hir i ddysgu pob datblygwr sut i wneud microwasanaethau. Gan gynnwys ysgrifennodd gyfarwyddiadau manwl yn Confluence. Ond newidiodd y cynlluniau ac ychwanegwyd atynt. Y canlyniad - ffurfiwyd tagfa ar ddechrau'r daith: cymerodd lawer mwy o amser i lansio microwasanaethau nag a ganiateir, ac yn aml roedd problemau wrth eu creu.

Yn y diwedd, fe wnaethom adeiladu cyfleustodau CLI syml sy'n awtomeiddio'r camau sylfaenol ar gyfer creu microwasanaeth. Mewn gwirionedd, mae'n disodli'r gwthio git cyntaf. Dyma'n union beth mae hi'n ei wneud.

- Creu gwasanaeth yn ôl templed - cam wrth gam, yn y modd "dewin". Mae gennym dempledi ar gyfer y prif ieithoedd rhaglennu yn y backend Avito: PHP, Golang a Python.

- Mae un gorchymyn ar y tro yn defnyddio amgylchedd ar gyfer datblygiad lleol ar beiriant penodol - Minikube yn codi, mae siartiau Helm yn cael eu cynhyrchu'n awtomatig a'u rhedeg mewn kubernetes lleol.

— Yn cysylltu'r gronfa ddata ofynnol. Nid oes angen i'r datblygwr wybod yr IP, mewngofnodi a chyfrinair i gael mynediad i'r gronfa ddata sydd ei hangen arno - o leiaf yn lleol, o leiaf yn y Llwyfan, o leiaf wrth gynhyrchu. Ar ben hynny, mae'r gronfa ddata yn cael ei defnyddio ar unwaith mewn ffurfwedd sy'n goddef namau a chyda chydbwyso.

- Mae'n perfformio byw-cynulliad ei hun. Gadewch i ni ddweud bod y datblygwr wedi cywiro rhywbeth yn y microwasanaeth trwy ei DRhA. Mae'r cyfleustodau'n gweld newidiadau yn y system ffeiliau ac, yn seiliedig arnynt, yn ailadeiladu'r cais (ar gyfer Golang) ac yn ailgychwyn. Ar gyfer PHP, rydym yn syml yn anfon y cyfeiriadur y tu mewn i'r ciwb ac yno mae'r ail-lwythiad byw yn cael ei sicrhau “yn awtomatig”.

- Yn cynhyrchu autotests. Ar ffurf bylchau, ond yn eithaf defnyddiadwy.

• Defnyddio microwasanaeth.

Roedd yn arfer bod braidd yn ddiflas i ddefnyddio microwasanaeth gyda ni. Gorfodol gofynnol:

I. Dockerfile.

II. Config.
III. Siart Helm, sy'n feichus ynddo'i hun ac yn cynnwys:

- y siartiau eu hunain;
- templedi;
- gwerthoedd penodol gan ystyried gwahanol amgylcheddau.

Rydyn ni wedi tynnu'r boen allan o ail-weithio maniffestau Kubernetes a nawr maen nhw'n cael eu cynhyrchu'n awtomatig. Ond yn bwysicaf oll, gwnaethom symleiddio'r defnydd i'r eithaf. O hyn ymlaen, mae gennym Dockerfile, ac mae'r datblygwr yn ysgrifennu'r ffurfwedd gyfan mewn un ffeil app.toml fer.

Beth ydym ni'n ei wybod am ficrowasanaethau

Oes, ac yn yr app.toml ei hun, mae mater am funud bellach. Rydym yn rhagnodi lle mae sawl copi o'r gwasanaeth i'w godi (ar y gweinydd dev, wrth lwyfannu, wrth gynhyrchu), yn nodi ei ddibyniaethau. Sylwch ar y llinell size = "bach" yn y bloc [injan]. Dyma'r terfyn a fydd yn cael ei ddyrannu i'r gwasanaeth trwy Kubernetes.

Ymhellach, ar sail y ffurfweddiad, mae'r holl siartiau Helm angenrheidiol yn cael eu cynhyrchu'n awtomatig a chysylltiadau â'r cronfeydd data yn cael eu creu.

• Dilysiad sylfaenol. Mae gwiriadau o'r fath hefyd yn awtomataidd.
Angen olrhain:
- a oes Dockerfile;
- a oes app.toml;
- A oes dogfennaeth?
— boed yn nhrefn dibyniaeth;
— a osodir rheolau rhybuddio.
I'r pwynt olaf: mae perchennog y gwasanaeth ei hun yn nodi pa fetrigau cynnyrch i'w monitro.

• Paratoi dogfennaeth.
Dal yn faes problemus. Mae'n ymddangos mai dyma'r mwyaf amlwg, ond ar yr un pryd mae'r cofnod "yn aml yn cael ei anghofio", ac felly'r cyswllt bregus yn y gadwyn.
Mae'n angenrheidiol bod y ddogfennaeth ar gyfer pob microwasanaeth. Mae'n cynnwys y blociau canlynol.

I. Disgrifiad byr o'r gwasanaeth. Dim ond ychydig o frawddegau am yr hyn y mae'n ei wneud a beth yw ei ddiben.

II. Dolen i'r diagram pensaernïaeth. Mae'n bwysig ei bod yn hawdd deall ar yr olwg gyntaf, er enghraifft, a ydych chi'n defnyddio Redis ar gyfer caching neu fel y brif storfa ddata yn y modd parhaus. Yn Avito, am y tro, mae hwn yn ddolen i Gydlifiad.

III. llyfr rhedeg. Canllaw byr i lansio'r gwasanaeth a chynildeb ei drin.

IV. FAQ, lle byddai'n dda rhagweld problemau y gallai eich cydweithwyr ddod ar eu traws wrth weithio gyda'r gwasanaeth.

V. Disgrifiad o derfynbwyntiau API. Os na wnaethoch nodi cyrchfannau yn sydyn, bydd cydweithwyr y mae eu microwasanaethau wedi'u cysylltu â'ch un chi bron yn sicr yn talu amdano. Nawr rydym yn defnyddio Swagger ar gyfer hyn a'n datrysiad a elwir yn gryno.

VI. Labelau. Neu farcwyr sy'n dangos pa gynnyrch, ymarferoldeb, adran strwythurol y cwmni y mae'r gwasanaeth yn perthyn iddo. Maent yn helpu i ddeall yn gyflym, er enghraifft, a ydych yn llifio’r swyddogaethau a gyflwynwyd gan eich cydweithwyr ar gyfer yr un uned fusnes wythnos yn ôl.

VII. Perchennog neu berchnogion gwasanaeth. Yn y rhan fwyaf o achosion, gellir ei bennu - neu nhw - yn awtomatig gan ddefnyddio PaaS, ond ar gyfer yswiriant, mae'n ofynnol i'r datblygwr eu nodi â llaw hefyd.

Yn olaf, mae'n arfer da cynnal adolygiadau dogfennaeth, tebyg i adolygiadau cod.

Integreiddio Parhaus

  • Paratoi storfeydd.
  • Creu piblinell yn TeamCity.
  • Rhoi hawliau.
  • Chwilio am berchnogion gwasanaethau. Dyma gynllun hybrid - marcio â llaw ac ychydig iawn o awtomeiddio gan PaaS. Mae’r cynllun cwbl awtomatig yn methu pan fydd gwasanaethau’n cael eu trosglwyddo i gymorth mewn tîm datblygu arall neu, er enghraifft, os bydd datblygwr y gwasanaeth yn rhoi’r gorau iddi.
  • Cofrestru gwasanaeth yn Atlas (gweler uchod). Gyda'i holl berchenogion a dibyniaethau.
  • Gwirio mudo. Rydym yn gwirio a oes unrhyw rai a allai fod yn beryglus yn eu plith. Er enghraifft, yn un ohonynt, mae tabl alter yn ymddangos neu rywbeth arall a all dorri cydnawsedd y cynllun data rhwng gwahanol fersiynau o'r gwasanaeth. Yna nid yw'r mudo yn cael ei berfformio, ond ei roi mewn tanysgrifiad - dylai PaaS roi gwybod i berchennog y gwasanaeth pan ddaw'n ddiogel i'w gymhwyso.

Pobwch

Y cam nesaf yw gwasanaethau pecynnu cyn eu defnyddio.

  • Cynulliad cais. Yn ôl y clasuron - mewn delwedd Docker.
  • Cynhyrchu siartiau Helm ar gyfer y gwasanaeth ei hun ac adnoddau cysylltiedig. Gan gynnwys ar gyfer cronfeydd data a storfa. Maent yn cael eu creu yn awtomatig yn unol â'r ffurfwedd app.toml a gynhyrchwyd yn y cam gwthio CLI.
  • Creu tocynnau i weinyddwyr agor porthladdoedd (pan fo angen).
  • Cynnal profion uned a chyfrifo cwmpas y cod. Os yw cwmpas y cod yn is na'r gwerth trothwy penodedig, yna, yn fwyaf tebygol, ni fydd y gwasanaeth yn mynd ymhellach - i'r defnydd. Os yw ar fin bod yn dderbyniol, yna bydd y gwasanaeth yn cael cyfernod “pesimeiddio”: yna, os na fydd gwelliant yn y dangosydd dros amser, bydd y datblygwr yn derbyn hysbysiad nad oes cynnydd o ran profion ( a dylid gwneyd rhywbeth yn ei gylch).
  • Cyfrifo ar gyfer cof a chyfyngiadau CPU. Yn y bôn, rydyn ni'n ysgrifennu microwasanaethau yn Golang ac yn eu rhedeg yn Kubernetes. Felly, un cynildeb sy'n gysylltiedig â nodwedd yr iaith Golang: yn ddiofyn, defnyddir yr holl greiddiau ar y peiriant wrth gychwyn, os nad ydych yn gosod y newidyn GOMAXPROCS yn benodol, a phan fydd sawl gwasanaeth o'r fath yn cael eu lansio ar yr un peiriant, maent yn dechrau i gystadlu am adnoddau, gan ymyrryd â'i gilydd. Mae'r graffiau isod yn dangos sut mae'r amser gweithredu yn newid os yw'r rhaglen yn cael ei rhedeg heb unrhyw ddadl ac yn y modd rasio adnoddau. (Ffynonellau'r siartiau yw yma).

Beth ydym ni'n ei wybod am ficrowasanaethau

Amser cyflawni, mae llai yn well. Uchafswm: 643ms, lleiafswm: 42ms. Gellir clicio ar y llun.

Beth ydym ni'n ei wybod am ficrowasanaethau

Amser ar gyfer llawdriniaeth, llai yn well. Uchafswm: 14091 ns, lleiafswm: 151 ns. Gellir clicio ar y llun.

Ar y cam paratoi ar gyfer y cynulliad, gallwch chi osod y newidyn hwn yn benodol neu gallwch ddefnyddio'r llyfrgell automaxprocs oddi wrth y dynion yn Uber.

Defnyddio

• Gwirio confensiynau. Cyn i chi ddechrau darparu adeiladau gwasanaeth i'ch amgylcheddau arfaethedig, mae angen i chi wirio'r canlynol:
- Terfynbwyntiau API.
— Mae gohebiaeth yr API yn diweddu ymatebion i'r cynllun.
- Fformat log.
- Gosod penawdau ar gyfer ceisiadau i'r gwasanaeth (nawr gwneir hyn gan netramesh)
- Gosod y marciwr perchennog wrth anfon negeseuon i'r bws (bws digwyddiad). Mae hyn yn angenrheidiol i olrhain cysylltedd gwasanaethau trwy'r bws. Gallwch anfon data analluog i'r bws nad yw'n cynyddu cysylltedd gwasanaethau (sy'n dda), a data busnes sy'n gwella cysylltedd gwasanaethau (sy'n ddrwg iawn!). Ac ar hyn o bryd pan fydd y cysylltedd hwn yn dod yn broblem, mae deall pwy sy'n ysgrifennu ac yn darllen y bws yn helpu i wahanu'r gwasanaethau'n iawn.

Hyd yn hyn, nid oes llawer iawn o gonfensiynau yn Avito, ond mae eu cronfa yn ehangu. Po fwyaf o gytundebau o'r fath ar ffurf sy'n ddealladwy ac yn gyfleus i'r tîm, yr hawsaf yw hi i gynnal cysondeb rhwng microwasanaethau.

Profion synthetig

• Profi dolen gaeedig. Ar ei gyfer, rydym bellach yn defnyddio ffynhonnell agored pryf hofran.io. Yn gyntaf, mae'n cofnodi'r llwyth go iawn ar y gwasanaeth, yna - dim ond mewn dolen gaeedig - mae'n efelychu.

• Profi Straen. Rydym yn ceisio dod â'r holl wasanaethau i'r perfformiad gorau posibl. A dylai pob fersiwn o bob gwasanaeth fod yn destun profion llwyth - fel y gallwn ddeall perfformiad presennol y gwasanaeth a'r gwahaniaeth gyda fersiynau blaenorol o'r un gwasanaeth. Os, ar ôl diweddariad gwasanaeth, mae ei berfformiad wedi gostwng unwaith a hanner, mae hwn yn arwydd clir i'w berchnogion: mae angen i chi gloddio i'r cod a chywiro'r sefyllfa.
Rydym yn dechrau o'r data a gasglwyd, er enghraifft, er mwyn gweithredu graddio ceir yn gywir ac, yn y diwedd, i ddeall yn gyffredinol pa mor raddadwy yw'r gwasanaeth.

Yn ystod profion llwyth, rydym yn gwirio a yw'r defnydd o adnoddau yn bodloni'r terfynau a osodwyd. Ac rydym yn canolbwyntio'n bennaf ar eithafion.

a) Edrychwn ar gyfanswm y llwyth.
- Rhy fach - yn fwyaf tebygol na fydd rhywbeth yn gweithio o gwbl os bydd y llwyth yn gostwng yn sydyn sawl gwaith.
- Rhy fawr - angen optimeiddio.

b) Edrychwch ar dorbwynt RPS.
Yma edrychwn ar y gwahaniaeth rhwng y fersiwn gyfredol a'r un blaenorol a'r cyfanswm. Er enghraifft, os yw'r gwasanaeth yn rhoi 100 rps, yna mae naill ai wedi'i ysgrifennu'n wael, neu dyma ei fanylion, ond beth bynnag, mae hwn yn rheswm i edrych ar y gwasanaeth yn agos iawn.
Os, i'r gwrthwyneb, mae gormod o RPS, yna, efallai, roedd rhyw fath o fyg a rhai o'r pwyntiau terfyn wedi rhoi'r gorau i gyflawni'r llwyth tâl, ond dim ond rhai return true;

Profion caneri

Ar ôl i'r profion synthetig gael eu pasio, rydym yn rhedeg y microservice ar nifer fach o ddefnyddwyr. Dechreuwn yn ofalus, gyda chyfran fechan iawn o gynulleidfa arfaethedig y gwasanaeth - llai na 0,1%. Ar yr adeg hon, mae'n bwysig iawn bod y metrigau technegol a chynnyrch cywir yn cael eu nodi yn y monitro fel eu bod yn dangos y broblem yn y gwasanaeth cyn gynted â phosibl. Yr amser prawf caneri lleiaf yw 5 munud, y prif un yw 2 awr. Ar gyfer gwasanaethau cymhleth, rydym yn gosod yr amser yn y modd llaw.
Rydym yn dadansoddi:
- metrigau iaith-benodol, yn arbennig, gweithwyr php-fpm;
— gwallau mewn Sentry;
— statws ymateb;
— amser ymateb (amser ymateb), union a chyfartaledd;
- hwyrni;
- eithriadau, wedi'u trin a heb eu trin;
- metrigau cynnyrch.

Profi Gwasgu

Gelwir Profi Gwasgu hefyd yn brofion "gwasgu". Cyflwynwyd enw'r dechneg i Netflix. Ei hanfod yw ein bod yn llenwi un achos yn gyntaf â thraffig gwirioneddol i'r cyflwr o fethiant ac felly'n gosod ei derfyn. Yna rydym yn ychwanegu enghraifft arall ac yn llwytho'r cwpl hwn - eto i'r uchafswm; gwelwn eu nenfwd a'u delta gyda'r wasgfa gyntaf. Ac felly rydyn ni'n cysylltu un enghraifft fesul cam ac yn cyfrifo'r patrwm yn y newidiadau.
Mae data ar brofion trwy “wasgu” hefyd yn llifo i gronfa ddata gyffredin o fetrigau, lle rydyn ni naill ai'n cyfoethogi canlyniadau llwyth artiffisial â nhw, neu hyd yn oed yn disodli “syntheteg” gyda nhw.

Cynhyrchu

• Graddio. Wrth gyflwyno'r gwasanaeth i gynhyrchu, rydym yn monitro sut mae'n graddio. Ar yr un pryd, mae monitro dangosyddion CPU yn unig, yn ein profiad ni, yn aneffeithlon. Mae graddio ceir gyda meincnodi RPS yn gweithio yn ei ffurf buraf, ond dim ond ar gyfer rhai gwasanaethau, megis ffrydio ar-lein. Felly rydym yn edrych yn bennaf ar fetrigau cynnyrch sy'n benodol i gymwysiadau.

O ganlyniad, wrth raddio, rydym yn dadansoddi:
- Dangosyddion CPU a RAM,
- nifer y ceisiadau yn y ciw,
- amser ymateb,
— rhagolwg yn seiliedig ar ddata hanesyddol cronedig.

Wrth raddio gwasanaeth, mae hefyd yn bwysig cadw golwg ar ei ddibyniaethau fel nad yw'n digwydd ein bod yn graddio'r gwasanaeth cyntaf yn y gadwyn, ac mae'r rhai y mae'n eu cyrchu yn dod o dan lwyth. Er mwyn sefydlu llwyth derbyniol ar gyfer y gronfa gyfan o wasanaethau, edrychwn ar ddata hanesyddol y gwasanaeth dibynnol “agosaf” (o ran CPU a RAM, ynghyd â metrigau app-benodol) a'i gymharu â data hanesyddol y gwasanaeth cychwynnol, ac yn y blaen ar hyd y “gadwyn dibyniaeth” gyfan, o'r top i'r gwaelod.

Gwasanaeth

Ar ôl i'r microservice gael ei roi ar waith, gallwn hongian sbardunau arno.

Dyma sefyllfaoedd nodweddiadol lle mae sbardunau'n gweithio.
- Ymfudiadau a allai fod yn beryglus wedi'u canfod.
- Mae diweddariadau diogelwch wedi'u rhyddhau.
- Nid yw'r gwasanaeth ei hun wedi'i ddiweddaru ers amser maith.
- Mae'r llwyth ar y gwasanaeth wedi gostwng yn amlwg neu mae rhai o'i fetrigau cynnyrch allan o'r norm.
— Nid yw'r gwasanaeth bellach yn bodloni gofynion newydd y platfform.

Mae rhai o'r sbardunau yn gyfrifol am sefydlogrwydd y gwaith, rhai - fel swyddogaeth cynnal a chadw system - er enghraifft, nid yw rhai gwasanaethau wedi'u defnyddio ers amser maith ac mae ei ddelwedd sylfaenol wedi peidio â phasio gwiriadau diogelwch.

Dangosfwrdd

Yn fyr, y dangosfwrdd yw panel rheoli ein PaaS cyfan.

  • Un pwynt gwybodaeth am y gwasanaeth, gyda data ar ei gwmpas prawf, nifer ei ddelweddau, nifer y copïau cynhyrchu, fersiynau, ac ati.
  • Offeryn ar gyfer hidlo data yn ôl gwasanaethau a labeli (tocynnau perthyn i unedau busnes, ymarferoldeb cynnyrch, ac ati)
  • Offeryn integreiddio gydag offer seilwaith ar gyfer olrhain, logio, monitro.
  • Un pwynt dogfennaeth ar gyfer gwasanaethau.
  • Safbwynt unigol o bob digwyddiad fesul gwasanaeth.

Beth ydym ni'n ei wybod am ficrowasanaethau
Beth ydym ni'n ei wybod am ficrowasanaethau
Beth ydym ni'n ei wybod am ficrowasanaethau
Beth ydym ni'n ei wybod am ficrowasanaethau

Yn gyfan gwbl

Cyn cyflwyno PaaS, gallai datblygwr newydd dreulio sawl wythnos yn deall yr holl offer sydd eu hangen i lansio microwasanaeth wrth gynhyrchu: Kubernetes, Helm, ein nodweddion TeamCity mewnol, sefydlu cysylltiad â chronfeydd data a caches mewn ffordd sy'n goddef diffygion, ac ati Nawr mae'n cymryd cwpl o oriau i ddarllen quickstart a gwneud y gwasanaeth ei hun.

Gwneuthum adroddiad ar y pwnc hwn ar gyfer HighLoad ++ 2018, gallwch weld fideo и cyflwyniad.

Trac bonws i'r rhai sy'n darllen hyd y diwedd

Rydym ni yn Avito yn trefnu hyfforddiant tri diwrnod mewnol i ddatblygwyr o Chris Richardson, arbenigwr mewn pensaernïaeth microwasanaeth. Rydym am roi'r cyfle i gymryd rhan ynddo i un o ddarllenwyr y swydd hon. Yma mae'r rhaglen hyfforddi wedi'i phostio.

Cynhelir yr hyfforddiant rhwng 5 a 7 Awst ym Moscow. Mae'r rhain yn ddiwrnodau gwaith a fydd yn cael eu defnyddio'n llawn. Bydd cinio a hyfforddiant yn ein swyddfa, a bydd y cyfranogwr a ddewisir yn talu am y teithio a'r llety ei hun.

Gallwch wneud cais i gymryd rhan yn y ffurf google hon. Oddi wrthych chi - yr ateb i'r cwestiwn pam fod angen i chi fynychu'r hyfforddiant a gwybodaeth am sut i gysylltu â chi. Atebwch yn Saesneg, oherwydd bydd y cyfranogwr sy'n cyrraedd yr hyfforddiant yn cael ei ddewis gan Chris ei hun.
Byddwn yn cyhoeddi enw'r cyfranogwr hyfforddiant gyda diweddariad i'r swydd hon ac ar rwydweithiau cymdeithasol Avito i ddatblygwyr (AvitoTech yn Facebook, Vkontakte, Twitter) ddim hwyrach na Gorffennaf 19.

Ffynhonnell: hab.com

Ychwanegu sylw