Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

Mahuru 19 i Moscow i tupu te hui kaupapa tuatahi a HUG (Highload++ User Group), i whakatapua ki nga microservices. He whakaaturanga "Te Mahi Microservices: He mea nui te rahi, ahakoa kei a koe nga Kubernetes," i tohatohahia e matou te wheako nui o Flant ki te whakahaere kaupapa me te hoahoanga microservice. Tuatahi, ka whai hua ki nga kaiwhakawhanake katoa e whakaaro ana ki te whakamahi i tenei huarahi i roto i a raatau kaupapa o naianei, o mua ranei.

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

Te whakataki ataata o te purongo (50 meneti, he nui ake nga korero i te tuhinga), tae atu ki te waahanga matua mai i te tuhinga.

NB: Kei te waatea ano te ataata me te whakaaturanga i te mutunga o tenei panui.

Whakataki

I te nuinga o te wa ko te korero pai he timatanga, he kaupapa matua me te whakatau. Ko tenei purongo he rite tonu ki te korero o mua, me te mea pouri. He mea nui ano kia mohio kei te whakarato i te tirohanga o waho mo nga ratonga miihini. Whakahaere.

Ka timata ahau ki tenei kauwhata, ko te kaituhi (i te tau 2015) kua riro Martin Fowler:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

E whakaatu ana me pehea, i roto i te keehi o te tono monolithic ka tae ki tetahi uara, ka timata te heke o te hua. He rereke nga Microservices na te mea he iti ake te hua tuatahi ki a raatau, engari i te piki haere o te uaua, kaore e tino kitea te paheketanga o te pai ki a raatau.

Ka taapiri atu ahau ki tenei kauwhata mo te take o te whakamahi i nga Kubernetes:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

He aha te take he pai ake te tono me nga ratonga moroiti? Na te mea ko taua hoahoanga e whakatakoto ana i nga whakaritenga tino nui mo te hoahoanga, katahi ka kapi katoa i nga kaha o Kubernetes. I tetahi atu taha, ko etahi o enei mahi ka whai hua mo te monolith, ina koa na te mea ko te monolith angamaheni i enei ra ehara i te mea he monolith (ka whai korero i muri mai i te ripoata).

Ka taea e koe te kite, ko te kauwhata whakamutunga (i te wa e rua nga tono monolithic me te microservice kei roto i te hanganga me Kubernetes) kaore i tino rereke mai i te mea taketake. I muri mai ka korero tatou mo nga tono e whakahaerehia ana ma te whakamahi i nga Kubernetes.

Nga ratonga moroiti whai hua me te kino

A koinei te whakaaro matua:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

He aha tena noa hoahoanga microservice? Me whai hua pono ki a koe, me te whakanui ake i to kaha mahi. Mena ka hoki ano tatou ki te kauwhata, koinei:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

Mena ka waea atu koe ki a ia whai hua, ka noho ki tera taha o te kauwhata kino microservices (whakararuraru i te mahi):

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

Te hoki ki te "whakaaro matua": me whakawhirinaki ahau ki taku wheako katoa? Mai i te timatanga o tenei tau kua titiro ahau 85 kaupapa. Ehara i te mea he microservices (tata ki te hautoru ki te haurua o ratou he hoahoanga penei), engari he nui tonu tenei. Ka taea e matou (kamupene Flant) te kite i nga momo momo tono i whakawhanakehia i roto i nga kamupene iti (me nga kaihanga 5) me nga mea nui (~ 500 nga kaiwhakawhanake). Ko tetahi atu painga ko te kite i enei tono e ora ana, e whanake ana i roto i nga tau.

He aha te microservices?

Ki te patai mo nga painga o nga ratonga miihini kei reira whakautu tino motuhake mai i a Martin Fowler kua whakahuahia ake nei:

  1. nga rohe marama o te whakarereketanga;
  2. tuku motuhake;
  3. te herekore ki te whiriwhiri i nga hangarau.

He maha aku korero ki nga kaitoi rorohiko me nga kaiwhakawhanake me te patai he aha i hiahia ai ratou ki nga ratonga miihini. Na ka mahia e au taku rarangi o o raatau tumanako. Anei te mea i tupu:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

Mena ka whakaahuahia etahi o nga tohu "i roto i nga ahuatanga," ka:

  • nga rohe maamaa o nga waahanga: kei konei he monolith kino, a inaianei ka pai te whakariterite i nga mea katoa ki nga whare putunga Git, kei reira nga mea katoa "kei runga i nga papa", kaore i te whakakotahi te mahana me te ngawari;
  • te noho motuhake: ka taea e tatou te whakaputa i nga ratonga takitahi kia tere ake ai te whakawhanaketanga (whakaritea nga ahuatanga hou);
  • te mana motuhake: ka taea e tatou te tuku i tenei ratonga moroiti ki tetahi kapa/kaiwhakawhanake, me tetahi ki tetahi, na reira ka tere ake te whakawhanake;
  • боnui ake te ti'aturi: ki te puta te paheketanga o te wahanga (kotahi microservice mai i te 20 ka taka), katahi ka mutu te patene kotahi, ka mahi tonu te punaha katoa.

Angamaheni (kino) hoahoanga microservice

Hei whakamaarama he aha te mea ehara i te mea e tumanakohia ana e matou, ka whakaatu ahau huihui he ahua o te hoahoanga microservice i runga i nga wheako mai i nga kaupapa maha.

Ko tetahi tauira ko te toa tuihono tuuturu kei te whakataetae ki a Amazon me OZON ranei. He penei te ahua o tana hoahoanga microservice:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

Mo te huinga o nga take, ka tuhia enei microservices ki runga i nga papaaho rereke:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

I te mea me whai mana motuhake ia ratonga moroiti, he maha o ratou e hiahia ana ki a raatau ake putunga raraunga me te keteroki. Ko te hoahoanga whakamutunga e whai ake nei:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

He aha ona hua?

Kei a Fowler ano tenei he tuhinga — mo te "utu" mo te whakamahi microservices:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

A ka kite tatou mena i tutuki o tatou tumanako.

Mārama ngā rohenga o ngā kōwae...

Otiia e hia nga ratonga moroiti hei whakatika?ki te whakaputa i te huringa? Ka taea e taatau te whakaaro me pehea te mahi o nga mea katoa me te kore e tohatohahia (i muri i nga mea katoa, ka tukuna he tono e te haurua o nga ratonga miihini)?

He tauira"puranga nui o te paru", a i konei ka puta he puranga paru kua tohatohahia. Hei whakapumau i tenei, he whakaahua tata mo te haere o nga tono:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

Te tuku motuhake...

Ma te hangarau, kua tutuki: ka taea e taatau te whakaputa takitahi i ia ratonga miihini. Engari i roto i nga mahi me whai whakaaro koe ka huri tonu maha nga ratonga moroiti, a me whai whakaaro tatou te raupapa o ta ratou whakaputanga. Ma te pai, me whakamatau maatau i roto i te ara iahiko motuhake mena kei te huri tatou i te tuku i runga i te raupapa tika.

Te herekore ki te whiriwhiri hangarau...

Ko ia. A haamana‘o noa e mea pinepine te tiamâraa i nia i te ofatiraa i te ture. He mea nui ki konei kia kaua e whiriwhiri i nga hangarau ki te "takaro" ki a raatau.

Mana motuhake o te whanaketanga...

Me pehea te hanga i tetahi kopae whakamatautau mo te tono katoa (me nga waahanga maha)? Engari me pupuri tonu koe i te waa. Ko enei katoa ka arahi ki te meka te maha o nga waahi whakamatautau, ka taea e tatou i roto i te tikanga kei roto, ka puta he iti rawa.

Ka tohatohahia enei mea katoa ki te rohe?.. Te ahua nei he maha nga wa ka mahia e te kaiwhakawhanake tana mahi takitahi, engari "i runga i te matapōkere", na te mea ka pehia ia ki te tatari kia waatea noa te waahi mo te whakamatautau.

Whakanuia wehe...

Ae, engari he iti noa i te waahi o te DBMS i whakamahia. I roto i te tauira hoahoanga kua homai, kaore he raruraru a Cassandra, engari ko MySQL me PostgreSQL.

Боnui ake te pono...

Ehara i te mea ko te kore noa o tetahi microservice i roto i te pono ka pakaru te mahi tika o te punaha katoa, engari he raru hou ano: he tino uaua te hanga i nga hapa-whakaaro moroiti katoa. Na te mea ka whakamahia e nga microservices nga hangarau rereke (memcache, Redis, me etahi atu), mo ia tangata me whakaaro koe ki nga mea katoa me te whakatinana, he pono, ka taea, engari me nui nga rauemi.

Uta inenga...

He tino pai tenei.

Ko te "mama" o nga ratonga miihini...

Ehara i te mea he nui noa taatau whatunga runga (Kei te piki haere nga tono mo DNS, me etahi atu), engari na te maha o nga patai i timatahia e matou tārua raraunga (nga keteroki toa), na te nui o te rokiroki.

A koinei te hua o te whakatutuki i o maatau tumanako:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

Engari ehara ko tera anake!

Nā te mea:

  • Ko te nuinga ka hiahia matou ki te pahi karere.
  • Me pehea te hanga i te taapiri i te waa tika? Ko te kotahi anake tūturu Ko te whiringa ko te whakaweto i nga waka mo tenei. Engari me pehea te mahi i tenei i roto i te whakaputa?
  • Mena kei te korero tatou mo te tautoko i te maha o nga rohe, na, ko te whakarite i te oranga tonutanga o ia rohe he mahi tino mahi.
  • Ka puta ake te raruraru ki te whakarereke i te pokapū. Hei tauira, ki te hiahia tatou ki te whakahou i te putanga PHP, me tuku ki ia putunga (a he maha o raatau).
  • Ko te tipu o te uauatanga o te whakahaere, he taunga.

Me aha ki enei mea katoa?

Tīmatahia ki te tono monolithic. Te wheako o Fowler ka mea tata katoa nga tono moroiti angitu i timata hei monolith ka nui rawa atu ka pakaru. I te wa ano, tata ki nga punaha katoa i hangaia hei ratonga moroiti mai i te timatanga ka pa ki nga raru nui.

Ko tetahi atu whakaaro nui kia angitu te kaupapa me te hoahoanga microservice, me tino mohio koe me te kaupapa kaupapa, me pehea te hanga ratonga moroiti. A ko te huarahi pai ki te ako i tetahi kaupapa kaupapa ko te hanga i te monolith.

Engari he aha mena kei roto ke tatou i tenei ahuatanga?

Ko te mahi tuatahi ki te whakaoti rapanga ko te whakaae ki a ia me te mohio he raruraru tera, kaore tatou e hiahia kia mamae ano.

Mena, i roto i te keehi o te monolith nui (i te wa kua pau te whai waahi ki te hoko rauemi taapiri mo taua mea), ka tapahia e matou, na i tenei keehi ka puta ke te korero: ka kore e awhina nga miihini nui, engari ka aukati - tapahia te taikaha me te whakanui!

Hei tauira, mo te ahua huinga i korerohia i runga ake nei...

Whakamutua nga ratonga miihini tino patai:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

Whakakotahitia nga ratonga moroiti katoa e kawe ana mo te whakatipuranga o mua:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

... ki roto i te ratonga moroiti kotahi, i tuhia ki te reo kotahi (mo tenei ra, me te mea noa, e whakaaro ana koe) te reo/anga:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

Ka kotahi te ORM (kotahi DBMS) me te tuatahi o nga tono e rua:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

... engari i te nuinga ka taea e koe te whakawhiti atu ki reira, ka whiwhi i nga hua e whai ake nei:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

I tua atu, i roto i nga Kubernetes ka whakahaerehia e matou enei mea katoa i roto i nga waahanga motuhake, ko te tikanga ka taea tonu e matou te ine i te kawenga me te whakatau takitahi.

Hei whakapoto

Tirohia te pikitia nui ake. I te nuinga o nga wa, ka puta mai enei raruraru katoa me nga ratonga miihini na te mea i mau tetahi ki a raatau mahi, engari i hiahia ki te "takaro me nga ratonga miihini".

I roto i te kupu "microservices" ko te waahanga "micro" he nui.. He "micro" anake na te mea he iti ake i te monolith nui. Engari kaua e whakaarohia he mea iti.

A, mo te whakaaro whakamutunga, kia hoki ki te tūtohi taketake:

Microservices: He mea nui te rahi, ahakoa he Kubernetes koe

He tuhipoka kua tuhia ki runga (runga matau) ka puta ki te meka e Ko nga pukenga o te roopu e mahi ana i to kaupapa he mea tuatahi tonu — ka whai waahi nui ratou ki to whiringa i waenga i nga ratonga miihini me te monolith. Mena karekau he pukenga o te kapa, engari ka timata te mahi miihini, ka mate te korero.

Ataata me nga kiriata

Ataata mai i te whaikorero (~ 50 meneti; heoi, kaore i te whakaatu i te maha o nga kare a te manuhiri, i tino whakatau i te ahua o te purongo, engari koira tena):

Whakaaturanga o te ripoata:

PS

Ko etahi atu purongo i runga i ta maatau blog:

Ka hiahia pea koe ki nga panui e whai ake nei:

Source: will.com

Tāpiri i te kōrero