Microservices: E taua tele, tusa lava pe iai sau Kubernetes

Setema 19 i Moscow na tupu le uluai fonotaga autu o le HUG (Highload ++ User Group), lea na tuʻuina atu i microservices. Sa i ai se fa'aaliga "Operating Microservices: Size Matters, Even if You Have Kubernetes," lea na matou fa'asoa ai le tele o le poto masani a Flant i le fa'atinoina o galuega fa'atasi ma le fa'ata'ita'iga microservice. Muamua lava, o le a aoga i tagata atinaʻe uma o loʻo mafaufau i le faʻaogaina o lenei auala i la latou galuega i le taimi nei poʻo le lumanaʻi.

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

Fa'ailoa vitio o le lipoti (50 minute, e sili atu le faʻamatalaga nai lo le tusiga), faʻapea foʻi ma le faʻamatalaga autu o loʻo i ai i tusitusiga.

NB: Vitio ma faʻaaliga o loʻo avanoa foi i le pito o lenei pou.

Faatomuaga

E masani lava o se tala lelei e iai se amataga, o se fuafuaga autu ma se iugafono. O lenei lipoti e sili atu ona pei o se tomua, ma o se tala matautia i lena mea. E taua foi le maitauina o loʻo tuʻuina atu ai se vaaiga a se tagata i fafo i microservices. fa'atautala.

O le a ou amata i lenei kalafi, o le tusitala lea (i le 2015) avea Matini Fowler:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

O loʻo faʻaalia ai pe faʻapefea, i le tulaga o se talosaga monolithic e oʻo atu i se tau faʻapitoa, e amata ona faʻaitiitia le gaosiga. Microservices e ese mai i le amataga o le gaosiga ma i latou e maualalo, ae a oʻo ina faʻateleina le lavelave, o le faʻaleagaina o le lelei e le o maitauina mo i latou.

O le a ou faʻaopopo i lenei kalafi mo le tulaga o le faʻaaogaina o Kubernetes:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

Aisea e sili atu ai se talosaga ma microservices? Ona o sea fausaga e tuʻuina atu i luma manaʻoga ogaoga mo le fausaga, lea e faʻapipiʻiina atoatoa e le gafatia o Kubernetes. I le isi itu, o nisi o nei gaioiga o le a aoga mo se monolith, aemaise lava ona o le monolith masani i aso nei e le o se monolith (o auiliiliga o le a mulimuli ane i le lipoti).

E pei ona mafai ona e vaʻaia, o le kalafi mulimuli (pe a iai uma monolithic ma microservice applications i totonu o atinaʻe ma Kubernetes) e leʻo ese tele mai le mea muamua. Sosoo ai o le a tatou talanoa e uiga i talosaga faʻaogaina e faʻaaoga ai Kubernetes.

Microservices aoga ma leaga

Ma o le manatu autu lenei:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

O le a masani fausaga microservice? E tatau ona aumaia ia te oe faamanuiaga moni, faateleina lou lelei galuega. Afai tatou te toe foi i le kalafi, o le mea lea:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

Afai e te valaau ia te ia aoga, ona i ai lea i le isi itu o le kalafi leaga microservices (faalavelave i galuega):

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

Toe foʻi i le "manatu autu": e tatau ona ou faʻatuatuaina loʻu poto masani? Talu mai le amataga o lenei tausaga sa ou suʻeina 85 galuega faatino. E le oi latou uma o microservices (e tusa ma le tasi vaetolu i le afa o latou na i ai se fausaga faʻapitoa), ae o se numera tele lava. O matou (kamupani Flant) o loʻo faʻatautaia e le aufaipisinisi le vaʻaia o le tele o ituaiga o talosaga na atiaʻe uma i kamupani laiti (faʻatasi ma 5 developers) ma i totonu tetele (~ 500 developers). O se fa'amanuiaga fa'aopoopo o lo tatou va'ai i nei fa'aoga o lo'o ola ma fa'aleleia i le tele o tausaga.

Aisea microservices?

I le fesili e uiga i aoga o microservices o loʻo i ai tali fa'apitoa mai le ua uma ona taʻua o Martin Fowler:

  1. manino tuaoi o modularity;
  2. fa'apipi'i tuto'atasi;
  3. saolotoga e filifili ai tekinolosi.

Na ou talanoa tele i tusiata ma tagata atiaʻe ma fesili pe aisea latou te manaʻomia ai microservices. Ma sa ou faia la'u lisi o latou faamoemoega. O le mea lenei na tupu:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

Afai tatou te faamatalaina nisi o manatu "i lagona," ona:

  • tuaoi manino o modules: o iinei o loʻo i ai se monolith mataʻutia, ma o le taimi nei o mea uma o le a faʻapipiʻiina lelei i Git repositories, lea o mea uma "i luga o fata", e le faʻafefiloi le mafanafana ma le vaivai;
  • tuto'atasi tu'ufa'atasiga: o le a mafai ona tatou fa'asolo 'au'aunaga tuto'atasi ina ia fa'avavevave le atina'e (fa'asalalau foliga fou fa'atusa);
  • tuto'atasi atina'e: e mafai ona matou tu'uina atu lenei tautua laiti i le tasi 'au/tagata atia'e, ma le tasi i le isi, fa'afetai e mafai ai ona vave fa'atupuina;
  • боsili atu le faʻatuatuaina: afai e tupu se vaega faʻaleagaina (tasi microservice mai le 20 pa'ū), ona naʻo le tasi le ki o le a taofia le galue, ma o le polokalama atoa o le a faʻaauau pea ona galue.

Fa'ata'ita'iga masani (leaga) microservice

Ina ia faʻamatalaina pe aisea e le o le mea moni le mea tatou te faʻamoemoeina, o le a ou tuʻuina atu fa'atasi o se ata o se fausaga microservice e faʻavae i luga o le poto masani mai le tele o galuega eseese.

O se faʻataʻitaʻiga o se faleoloa i luga ole laiga o le a tauva ma Amazon poʻo le itiiti ifo ole OZON. O lona fausaga microservice e pei o lenei:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

Mo se tuufaatasiga o mafuaaga, o nei microservices ua tusia i luga o tulaga eseese:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

Talu ai e tatau i microservice taitasi ona iai le tuto'atasi, o le to'atele oi latou e mana'omia a latou lava fa'amaumauga ma fa'amaumauga. O le fausaga mulimuli e faapea:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

O a ona taunuuga?

E iai foʻi lenei mea a Fowler e iai se tala — e uiga i le “totogi” mo le faaaogāina o auaunaga laiti:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

Ma o le a tatou vaai pe na ausia o tatou faamoemoega.

Fa'amanino tuaoi o modules...

ae e fia ni microservices e mana'omia moni lava ona fa'aleleia?e fa'asolo atu le suiga? E mafai foʻi ona tatou iloa pe faʻapefea ona galue mea uma e aunoa ma se faʻasalalauga faʻasalalau (pe a uma, soʻo se talosaga e faʻatautaia e le afa o microservices)?

O loʻo i ai se mamanu "faaputuga palapala tele", ma o iinei na iu mai ai o se faaputuga palapala na tufatufa atu. Ina ia faʻamaonia lenei mea, o se faʻataʻitaʻiga faʻatatau i le auala e alu ai talosaga:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

Tuto'atasi tu'ufa'atasi...

Fa'atekinisi, ua ausia: e mafai ona ta'avale ta'avale ta'itasi ta'itasi. Ae i le faʻataʻitaʻiga e tatau ona e mafaufau e taʻavale i fafo i taimi uma tele microservices, ma e tatau ona tatou manatunatu i ai le fa'atonuga o le latou fa'alauiloa. I se auala lelei, e masani ona tatou manaʻomia le suʻeina i se isi matagaluega pe o loʻo taʻavale le faʻasalalauga i le faasologa saʻo.

Saolotoga e filifili tekinolosi...

O le teine ​​lena. Tau lava ina manatua o le saolotoga e masani ona tuaoi ma le solitulafono. E taua tele iinei le le filifilia o tekinolosi na o le "taʻalo" ma i latou.

Tuto’atasi o atina’e...

E fa'afefea ona fai se su'ega su'ega mo le talosaga atoa (ma le tele o vaega)? Ae e tatau lava ona e fa'afou pea. O nei mea uma e tau atu i le mea moni e faapea numera moni o ta'amilosaga su'ega, lea e mafai ona tatou i ai i le mataupu faavae, e aliali mai e laititi.

Ma faʻapipiʻi uma nei mea i le lotoifale?.. E foliga mai e masani lava ona faia e le tagata atiaʻe lana galuega tutoʻatasi, ae "faʻafuaseʻi", ona e faʻamalosia o ia e faʻatali seʻia saoloto le matagaluega mo suʻega.

Fua eseese...

Ioe, ae faʻatapulaʻaina i le vaega o le DBMS faʻaaogaina. I le faʻataʻitaʻiga faʻataʻitaʻiga, Cassandra o le a leai ni faʻafitauli, ae o MySQL ma PostgreSQL o le a.

Боsili atu le faatuatuaina...

E le gata o le toilalo o se tasi microservice i le mea moni e masani ona motusia le saʻo o le faiga atoa, ae o loʻo i ai foi se faʻafitauli fou: e matua faigata lava le faia o auaunaga laiti uma e fa'aletonu sese. Ona o microservices e faʻaaogaina tekinolosi eseese (memcache, Redis, ma isi), mo mea taʻitasi e te manaʻomia e mafaufau i mea uma ma faʻatinoina, lea, ioe, e mafai, ae manaʻomia ni punaoa tetele.

Fuaina o uta...

E matua lelei lava lenei.

O le "mama" o microservices...

E le gata ina tele a tatou feso'otaiga i luga (Talosaga mo DNS o loʻo faʻateleina, ma isi), ae ona o le tele o subqueries na matou amataina toe fai fa'amaumauga (fale teu oloa), lea na mafua ai le tele o le teuina.

Ma o le taunuuga lenei o le ausia o matou faamoemoega:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

Ae e le ona pau lea!

Ona:

  • E foliga mai o le a tatou manaʻomia se pasi feʻau.
  • E fa'afefea ona fai se fa'amaumauga tumau i le taimi sa'o i le taimi? Na'o le tasi moni o le filifiliga o le tapeina o feoaiga mo lea. Ae faʻapefea ona faia lenei mea i le gaosiga?
  • Afai tatou te talanoa e uiga i le lagolagoina o le tele o itulagi, o lona uiga o le faʻatulagaina o le faʻaauau i totonu o ia mea taʻitasi o se galuega e sili ona mamafa.
  • O le faʻafitauli o le faia o suiga tutotonu e tulaʻi mai. Mo se faʻataʻitaʻiga, afai matou te manaʻomia le faʻafouina o le PHP version, matou te manaʻomia le tuʻuina atu i fale teu oloa taʻitasi (ma e tele naua).
  • O le tuputupu aʻe i le faʻalavelave faʻagaioiga e, faʻapitoa, faʻateleina.

O le a le mea e fai i nei mea uma?

Amata i se talosaga monolithic. O le aafiaga o Fowler fai mai e toetoe lava o talosaga microservice manuia uma na amata o se monolith na oʻo ina lapoʻa tele ma malepe. I le taimi lava e tasi, toetoe lava o faiga uma na fausia e avea ma microservices mai le amataga vave pe mulimuli ane na oʻo i faʻafitauli matuia.

O le isi manatu taua o le mo se poloketi faʻatasi ai ma se microservice architecture ina ia manuia, e tatau ona e iloa lelei ma le mataupu, ma le auala e fai ai auaunaga laiti. Ma o le auala sili e aʻoaʻo ai se mataupu o le faia lea o se monolith.

Ae faapefea pe afai ua tatou iai i lenei tulaga?

O le laasaga muamua i le foia o soo se faafitauli o le ioe i ai ma malamalama o se faafitauli, tatou te le toe fia mafatia.

Afai, i le tulaga o se monolith tele (pe a uma le avanoa e faʻatau ai punaoa faaopoopo), matou te tipiina, ona i ai lea o le tala faʻafeagai e aliali mai: pe a le toe fesoasoani tele microservices, ae faʻalavelave - tipi ese le tele ma faʻateleina!

Mo se faʻataʻitaʻiga, mo le ata tuʻufaʻatasia o loʻo talanoaina i luga...

Fa'ate'a ese'ese'ese mea e sili ona fesiligia microservices:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

Fa'atasi uma microservice e nafa ma fa'atupuina pito i luma:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

... i totonu o le tasi microservice, tusia i le tasi (faʻaonaponei ma masani, e pei ona e manatu ai) gagana/faʻavae:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

E tasi le ORM (tasi le DBMS) ma muamua ni nai talosaga:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

... ae i se tulaga lautele e mafai ona e faʻafeiloaʻi atili iina, maua le faʻaiʻuga lea:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

E le gata i lea, i Kubernetes matou te faʻatautaia uma nei mea i ni tulaga eseese, o lona uiga e mafai lava ona matou fuaina le uta ma faʻavasega eseese.

E aoteleina

Vaai i le ata tele. O le tele o taimi, o nei faʻafitauli uma i microservices e tulaʻi mai ona o se tasi na faia a latou galuega, ae manaʻo e "taʻalo ma microservices".

I le upu "microservices" o le "micro" vaega e toe faʻaaogaina.. E na'o latou "micro" ona e la'ititi nai lo se monolith tele. Ae aua le manatu ia i latou o se mea itiiti.

Ma mo se manatu mulimuli, tatou toe foi i le siata muamua:

Microservices: E taua tele, tusa lava pe iai sau Kubernetes

O se tusi na tusia i luga (taumatau pito i luga) e fa'amauina i le mea moni e faapea o tomai o le 'au e faia lau poloketi e fa'amuamua i taimi uma - latou te faia se sao taua i lau filifiliga i le va o microservices ma se monolith. Afai e le lava le tomai o le 'au, ae amata ona faia microservices, o le tala e mautinoa lava e oti.

Vitio ma fa'asolo

Vitio mai le tautalaga (~ 50 minute; o le mea e leaga ai, e le o faʻaalia ai le tele o lagona o tagata asiasi, lea na tele lava ina faʻamoemoeina le lagona o le lipoti, ae o le mea lena):

Tuuina atu o le lipoti:

SALA

O isi lipoti i la matou blog:

Atonu e te fiafia foʻi i lomiga nei:

puna: www.habr.com

Faaopoopo i ai se faamatalaga