Quid scimus de microservices

Salve! Nomen mihi est Vadim Madison, progressum duco in rostris Avito System. Dictum est plus semel quomodo nos in comitatu ab architectura monolithica ad microservias unum movemur. Tempus est communicandi quomodo infrastructuram nostram mutavimus ut pleraque ex microserviis obtineamus et ne nos in illis depereamus. Quomodo Paas hic nos adiuvat, quomodo simpliciores instruere instruere et creari microservii ad unum clic - legendum redegerunt. Non omnia quae infra scribo, plene perficiuntur in Avito, aliqua ex eo est quomodo suggestum evolvemus.

(Et in fine huius articuli, de facultate prosequendi triduanum seminarium ex microservitia architecturae perito Chris Richardson loquar).

Quid scimus de microservices

Quomodo venimus ad microservices

Avito unus ex maximis locis in mundo indicatur, plus quam 15 miliones novae tabulae in eo per diem divulgantur. Nostra backend accipit plus quam XX milia petitionum secundo. Plures centum microservices aute habemus.

Architecturam microservicam nunc pluribus annis aedificavimus. Quam exacte - collegae nostri in detail! nuntiatum in sectione nostra ad RIT++ 2017. In CodeFest 2017 (videatur. видео) Sergey Orlov et Mikhail Prokopchuk singillatim exponuntur cur transitus ad operas et quas partes Kubernetes hic egerimus. Nunc agemus omnia ad magnas scalas sumptuum quae in tali architectura insunt.

Initio non fecimus oecosystematis, quod comprehendendo nos adiuvat ut microform operas explicandas et deducamus. Simpliciter collectae sunt solutiones apertae sensibilium fons, eas domi deducentes et elit ad agendum. Quam ob rem ad duodecim locos (dashboards, officia interna), postquam plus factus est, cupivit vetustatem in monolitho incidere. Color viridis in iconibus infra indicat quid elit modo vel alio manibus suis, et color flavus automationem indicat.

Quid scimus de microservices

Nunc in utilitate Paas CLI, novum servitium cum uno imperio creatur, et novum datorum cum duobus additur et ad scenam explicatur.

Quid scimus de microservices

Quomodo tempus "microservice fragmentation" vinceret.

Cum architectura monolithica, propter constantiam mutationum in facto, tincidunt ad instar quid cum proximis ageretur coacti sunt. Cum in nova architectura laborant, contextus servitii ab invicem non amplius pendent.

Praeterea ad architecturam microservicam efficacem, plures processus institui debent, scilicet:

• logging;
• petitio repetens (Jaeger);
• error aggregatio (Sentry);
• status, nuntii, eventus Kubernetes (Event Stream Processing);
• genus limitis / ruptor ambitus (hystrix uti potes);
• imperium servitii connectivity (utimur Netramesh);
• vigilantia (Grafana);
• ecclesia (TeamCity);
• communicatio et notificatio (Slack, email);
• negotium sequi; (Jira)
• Praeparatio documentorum.

Ut systema integritatem suam non amittat et manet efficax sicut libra, in Avito consideravimus ordinationem microserviorum.

Quomodo microservices administrare

Hoc auxilium ad efficiendum unum "consilium factionis" in multis Micro servitiis Avito:

  • dividens infrastructuram in stratis;
  • rostris ut servitii (PaaS) conceptus;
  • vigilantia omnia quae in microservices fiunt.

Infrastructurae stratis abstractae tres ordines includunt. Eamus a summo usque deorsum.

A. Top - reticulum muneris. Istio primo conati sumus, sed evenit ut nimis multis opibus utatur, quae nostris voluminibus nimis cara est. Itaque senior architectus Alexander Lukyanchenko in quadrigis architecturae suae solutionem evolvit - Netramesh (praesto in Open Source), quo nunc in gignendo utimur et quae pluries minuuntur opes quam Istio (non tamen omnia quae Istio gloriari possunt).
B. Medium — Kubernetes. Explicamus et operamur in ea microservices.
Bottom C. — nudum metallum. Nubibus aut similibus OpenStack non utimur, sed plane in nudo metallo fidimus.

Omnes ordines a Paas componuntur. Atque hoc suggestum tribus partibus rursus constat.

I. Generantibusmoderata via cli utilitas. Elit ea adiuvat ut minimum operae crearet microservice modo et labore.

II. Contexitur collector cum potestate omnium instrumentorum per commune ashboardday.

III. Repono. Connectit cum schedulis quae automatice triggers pro actionibus significantibus constituunt. Tali systemati obeundo, munus non unum desideratur, quia aliquis oblitus est munus constituere in Jira. Internum instrumentum ad hoc utimur quod Atlas vocatur.

Quid scimus de microservices

Exsecutio microservices in Avito etiam exercetur secundum unum schema, quod in singulis evolutionis stadiis et remissionis moderamen eorum simplificat.

Quomodo vexillum microservicium progressus pipelini operatur?

In genere catenae microservicae creationis hoc modo spectat;

CLI-dis → Continua Integratio → Coquamus → Deploy → Artificialis probat → Canariis probat → Exprimendum Testis → Productio → Sustentationem.

Per hunc ordinem prorsus transeamus.

CLI-dis

• Creando microservice.
Diu laboravimus omnem elit docere quam facere microservices. Hoc comprehendit scripturas accuratas in Confluentes. sed technae mutatae et suppletae sunt. Ita factum est ut in principio itineris utrem apparuisset: multo magis tempus ad operas deducendas, et adhuc problemata in creatione eorum saepe orta sunt.

In fine, utilitatem simplicem CLI aedificavimus, quae automates fundamentales gradus microservio creando. Nam, primis git dis. Hic est quod prorsus agit.

- Creat servitium secundum exemplum - pedetentim, in modum veneficus. Formulas habemus principales programmationis linguarum in Avito backend: PHP, Golang et Python.

- Unum mandatum ad tempus explicatur ambitus loci progressionis in machina certa - Minikube emissa, charts Helm automatice generantur et in locorum kubernetes deducuntur.

- Coniungit database requiritur. Elit non eget IP, login et password ut aditus datorum quibus indiget - sit localiter, in scaena, vel in productione. Praeterea, statim in vitio patienti schematis et conparatione datorum explicatur.

— Coetum ipsum vivere praestat. Dicamus elit aliquid in microservice per IDE emendatum. Utilitas videt mutationes in ratiocinatione tabellae et, secundum eas, applicationem (pro Golang) et sileo aedificat. Pro PHP, directorium intra cubum simpliciter progredimur et ibi vivo reload obtinetur "automatice".

- Generat autotests. Forma in codicellos, sed ad usum satis idonea.

• Microservice instruere.

Explicare usus microserviae paulum choreae nobis. Ad hec requirebantur;

I. Dockerfile.

II. Mando.
III. Helm chart, quae ipsa gravia et includit;

— ipsae chartis;
— templates;
- valores specifici variis ambitibus in ratione habita.

Dolor cepimus ex relaborando Kubernetes manifestat ut nunc automatice generantur. Maxime autem simpliciores instruere ad modum. Posthac in Dockerfile habemus, et elit scribens totam config in uno fasciculo brevi app.toml.

Quid scimus de microservices

Ita, et in ipsa app.toml momento nihil est facere. Denominamus ubi et quot exemplaria servitutis erigendae (in dev servo, in scaena, in productione), eiusque clientelas indicamus. Notice the line size = "parva" in clausura. Hic est terminus qui per Kubernetes in ministerio collocabitur.

Deinde, in config fundata, omnes chartulae Helm necessariae automatice generantur et nexus cum databases creantur.

• Basic sanatio. Huiusmodi autem compescit automated etiam.
Opus ad inuestigandum:
— Estne Dockerfile;
— est app.toml;
- Estne documenta praesto?
— est dependentia in ordine?
— an praecepta erecta posita sint.
Ad ultimum punctum: dominus ministerii ipse determinat utri productum metri monitori.

• Praeparatio documentorum.
Difficultas adhuc regio. Videtur esse maxime conspicuum, sed simul est etiam recordum "saepe obliti", et ideo ligamentum vulnerabile in vinculo.
Necesse est ut singulis microservitiis documenta sint. Sequenti impedit.

I. Brevis descriptio officii. Ad litteram paucas sententias de quid agit et quare necesse est.

II. Architecturae paginae paginae. Refert quod celeri aspectu illud facile intelligatur, exempli gratia, utrum Redis caching uteris vel ut notitia principalis in pertinaci modo. In Avito hoc nunc est nexus ad Confluentes.

III. Runbook. Dudum a duce proficiscens munus et ambages tractandi est.

IV. FAQubi expedit difficultates anticipare ut collegae tui cum operando occurrant.

V. Descriptio terminorum pro API. Si subito destinationes non definivistis, collegae quorum opera tua referuntur ad illam fere certe reddent. Nunc Swagger utimur et solutionem nostram ad hoc brevem vocavimus.

VI. Labels. Vel figunt illud spectaculum cuius operis, muneris, functionis, vel structuralis divisio societatis pertinet. Auxiliatur ut cito intelligas, exempli gratia, an officiationem tuam secas quam collegae tui in eodem negotio ante hebdomadem unit.

VII. Dominus vel possessores muneris. In pluribus, ea — vel illis — ipso facto utendo Paas determinari potest, sed esse in tuto, elit ut manually specificare requiramus.

Denique praxis est bona documenta recognoscere, quae in codice recenseri similis est.

continua Integration

  • Parat repositoria.
  • Creando pipeline in TeamCity.
  • Ponere iura.
  • Quaere servitutem dominis. Est propositum hybridum hic - notatio manualis et minima automatio ex Paas. Ratio latis plene deficit cum officia transferuntur ad sustentationem alterius quadrigis evolutionis vel, exempli gratia, si servitus elit deserit.
  • Perscriptum servitium in Atlas (vide supra). Cum omnibus suis dominis et clientibus.
  • Reperiens migrationes. Reprehendimus an aliqua eorum sint in potentia periculosa. Exempli gratia, in una earum tabula altera vel aliud operculum, quod compatibilitas notitiarum schematis frangere potest inter varias versiones servitii. Tunc migratio non fit, sed in subscriptione collocatur: Paas signum debet servitii possessoris, cum tutum est uti.

Coquamus

Proximus scaena est servitia fasciculi antequam instruere.

  • Aedificatio adhibita. Secundum classica - in Docker imaginem.
  • Generatio Helm chartis ad ipsum servitium et facultates pertinentium. Including pro databases et cache. Automatice creantur secundum app.toml config quae in scaena CLI dis generata est.
  • Creando tesseras admins aperire portus (Cum requiritur).
  • Currens unitas probat et colligentem codice coverage. Si signum coverage infra limen certum est, verisimile est officium ulterius non procedere - instruere. Si paene acceptabile, ministerium "pessimizing" coefficientis assignabitur: deinde, si nulla melioratio in indicator tempore temporis, elit notificationem accipiet nullum esse progressum in terminis tentationum ( et aliquid de eo faciendum est).
  • Ratio memoriae et CPU limitationes. Maxime microservices in Golang scribimus et eas in Kubernetes currunt. Hinc una subtilitas cum peculiaritate linguae Golang coniungitur: ex defectu, quando incipiendo, omnes nuclei in machina adhibentur, si GOMAXPROCS variabilis expresse non explicas, et cum plura eiusmodi officia in eadem machina iaciuntur, incipiunt. opibus inter se avidum. Graphiae infra ostendunt quomodo exsecutionis tempus mutatur, si applicationem sine contentione et in curriculo facultatum modo. (Fontes graphs sunt hic).

Quid scimus de microservices

Supplicium tempore minus melior. Maximum: 643ms, minimum: 42ms. Photo est clickable.

Quid scimus de microservices

Chirurgiae tempus, minus melius. Maximum: 14091 ns, minimum: 151 ns. Photo est clickable.

In praeparatione conventus scaenam hanc variabilem explicite constituere potes vel bibliotheca uti potes automaxprocs de latinas ex Uber.

Deploy

• Reperiens conventiones. Priusquam incipias dare conventus ministerium ad ambitus tuos destinatos, necesse est ut sequentia inspicias:
— API terminos.
— Obsequium API finium responsionum cum schemate.
— Log forma.
- Ponere capitis petitiones ad servitium (currente hoc fit per netramesh)
- Ponere dominus tesseram cum missis nuntiis ad even- bus. Hoc opus est indagare nexum officiorum trans bus. Utrumque idempotent notitias bus mittere potes, quae nexum officiorum (quod bonum est) non auget, et res data quae nexum officiorum confirmat (quod valde malum est!). Et in puncto, cum haec connectivity fit exitus, intellectus qui scribit et legit bus adiuvat ad officia apte separat.

Plures conventiones in Avito adhuc non sunt, sed piscinae eorum dilatantur. Quo magis huiusmodi pacta in forma praesto sunt ut dolor intelligere et intelligere possit, facilius inter microservices constantiam tueri est.

Synthetica probat

• Clausa ansa tentantis. Hoc enim nunc aperto fonte utimur Hoverfly.io. Primum, onus rei in servitio commemorat, deinde - modo in ansa clausa - aemulatur.

• Suspendisse Testis. Conamur omnia officia ad meliorem effectum deducere. Et omnes versiones uniuscuiusque servitutis subiici debent probationi oneri — hoc modo intellegere possumus hodiernam servitii observantiam et differentiam cum praecedentibus eiusdem servitii versionibus. Si, post renovationem officii, per unum et dimidium temporis delapsum est, signum clarum est dominis suis: in codicem fodere debes et situm corrigere.
Utimur notitia collecta, exempli gratia, ad recte efficiendum auto- scandendum et, in fine, fere intellegimus quam scalabilis usus sit.

In onere probationis, inspicimus an subsidii consumptio limites statutos occurrat. Et principaliter in extremis ponitur.

a) Totum onus spectamus.
- Nimis parva - verisimile aliquid omnino non operatur, si subito onus pluries cadit.
- Nimis magna - ipsum requiritur.

b) Respicimus intervalli secundum RPS.
Hic consideramus differentiam inter emendationem et priorem et quantitatem totalis. Verbi gratia, si servitus 100 rps producit, aut male scriptum est, aut haec est eius species, sed in casu, haec ratio est ad ministerium arctissimum spectare.
Si, contra, nimis multi sunt RPS, tunc fortasse aliqua cimex quaedam est et aliqua puncta finium exsequendi stipendium cessaverunt, sed alia alia simpliciter utitur. return true;

Canariae probat

Post syntheticam probationes transeamus, microserviam in paucitate utentium probamus. Diligenter incipimus, minima portione audientium intenti - minus quam 0,1%. Hac in scaena, magni momenti est ut metrica technica et producta in vigilantia comprehendantur, ut quaestionem in ministerio quam celerrime ostendant. Minimum tempus pro testi canario est 5 minuta, principale est 2 horarum. Pro complexu operas, tempus manuale constituimus.
Analysis Lets:
— metrica linguarum specialium, in specie operarum php-fpm;
— errores in Sentriam;
— responsio status;
— responsio tempus, exacta et mediocris;
— latency;
— exceptiones, processit et intractabilis;
— metrics product.

Exprimendum Testis

Exprimendum Testimonium etiam "expressio" probatio dicitur. Nomen artificii in Netflix introductum est. Essentia eius est ut primum unum exemplum reale negotiationis implemus ad punctum defectum, et sic terminum eius ponemus. Deinde addimus aliam instanciam et oneramus hoc par - iterum ad maximum; laquearia et della sua videmus cum primis "exprimi". Et sic unum instantia in tempore coniungimus et exemplar mutationum computamus.
Testis notitia per "pressive" etiam in datorum metri communes influit, ubi vel onus artificiale cum illis proventus augemus, vel etiam cum illis "synthetica" substituimus.

Fabricatio

• Scandere. Cum evolvimus operam ad productionem, admonemus quomodo librat. Apud nos, vigilantia tantum CPU indicibus inefficax est. Auto scandere cum RPS benchmarks in pura forma opera, sed solum ad quaedam officia, sicut online effusis. Primum igitur in applicatione metrica producti specialia inspicimus.

Quam ob rem cum erigimur, excutimus nos;
- CPU et RAM indicibus;
- numerus petitionum in queue;
- responsio tempus,
- praenuntientur secundum congesta notitia historica.

Cum servitutem scalis, magni momenti est clientelas suas monitori ut primam servitutem in catena non ascendamus, et accessus sub onere deficiant. Ad onus acceptabile pro tota piscina operarum instituenda, respicimus historicam notationem servitii "proximi" dependens (ex indicibus CPU et RAM coniunctis, cum metricis app-certis iuncta) et cum notitia historica comparamus. officii initialising, et sic deinceps per « catenam dependentiam » », a summo ad imum.

officium

Postquam microservice in operationem, triggers ei apponere possumus.

Hic condiciones typicae sunt in quibus triggers fiunt.
— Potentia periculosas migrationes deprehendit.
- Securitatis updates dimissi sunt.
— Ministerium ipsum diu renovatum non est.
- Onus in servitium conspicue minuitur vel aliquae eius metri fructus extra ordinem consuetum sunt.
- Ministerium novum suggestum requisitis iam non occurrit.

Aliquae triggers responsales sunt stabilitatis operationis, quaedam functio conservationis systematis - exempli gratia, quaedam servitus diu non explicata eiusque basis imago securitatis cohibere desiit.

Dashboard

In summa, ashboardday est tabula totius Paas.

  • Uno puncto informationis de ministerio, cum notitia in testi coverage, numero imaginum, numero exemplarium productionis, versionibus, etc.
  • Instrumentum ad notitias eliquandi per operas et pittacia (notas pertinendi ad unitates negotiationes, functiones productas, etc.)
  • Instrumentum integrationis cum instrumentis infrastructuris ad typum, logging ac vigilantiam.
  • Unicum documentum officii.
  • Unica sententia est omnium rerum transmarinarum partium officia.

Quid scimus de microservices
Quid scimus de microservices
Quid scimus de microservices
Quid scimus de microservices

in summa

Antequam Paas introduceret, novus elit per plures septimanas potuit percipere omnia instrumenta necessaria ad microserviam in productione deducendam: Kubernetes, Helm, nostra TeamCity internae lineamenta, constituens nexus ad databases et thesauros in culpa toleranti modo, Nunc illud etc. duas horas sumit ut vivum initium legere et ipsum servitium creare.

Renuntiationem de hoc loco dedi pro HighLoad ++ MMXVIII, spectare potes видео и praesentationis.

Bonus semita pro iis qui legunt usque ad finem

Nos apud Avito instituimus internam trium dierum institutionem pro developers e Christophorus Richardsonperitus in architecturae microservice. Volumus dare occasionem lectoribus huius stationis eam participandi. est Disciplina programma missa est.

Disciplina fiet ab 5 Augusti ad 7 Moscuae. Hi dies laborant, qui plene occupabuntur. Prandium et educatio in officio nostro erit, et particeps delectus reddet ad iter et accommodationem ipsius.

Potes applicare ad participationem in hac forma Google. A te - responsioni quaestioni cur disciplinam et informationem interesse debes quomodo tecum communicare debeas. Responde Anglice, quia Chris eliget participem qui ipse disciplinae frequentet.
Nomen disciplinae participem annunciabimus in renovatione huic stationi et in reticulis socialibus Avito pro developers (AvitoTech in Facebook, Вконтакте, Twitter) non post quam 19 Iulii.

Source: www.habr.com

Add a comment