Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Satumba 19 a Moscow ya faru taron jigo na farko HUG (Ƙungiyar Masu amfani da Highload ++), wanda aka sadaukar don ƙananan sabis. Akwai gabatarwa "Ayyukan Microservices: Girman Mahimmanci, Koda Idan Kuna da Kubernetes," a cikin abin da muka raba kwarewar Flant a cikin ayyukan aiki tare da gine-ginen microservice. Da farko, zai zama da amfani ga duk masu haɓakawa waɗanda ke tunanin yin amfani da wannan hanyar a cikin aikin su na yanzu ko na gaba.

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Gabatarwa bidiyon rahoton (minti 50, ƙarin bayani fiye da labarin), da kuma babban abin da aka cire daga gare ta a cikin sigar rubutu.

NB: Akwai kuma bidiyo da gabatarwa a karshen wannan sakon.

Gabatarwar

Yawancin labari mai kyau yana da mafari, babban shiri da ƙuduri. Wannan rahoto ya fi kamar share fage, kuma abin takaici ne a hakan. Hakanan yana da mahimmanci a lura cewa yana ba da ra'ayi na waje game da microservices. amfani.

Zan fara da wannan jadawali, wanda marubucin (a cikin 2015) ya zama Martin Fowler:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Ya nuna yadda, a cikin yanayin aikace-aikacen monolithic wanda ya kai wani ƙima, yawan aiki ya fara raguwa. Microservices sun bambanta da cewa farkon yawan aiki tare da su yana da ƙasa, amma yayin da rikitarwa ya karu, lalacewa a cikin inganci ba a gane su ba.

Zan ƙara zuwa wannan jadawali don yanayin amfani da Kubernetes:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Me yasa aikace-aikacen da microservices ya fi kyau? Saboda irin wannan gine-ginen yana gabatar da buƙatu masu mahimmanci ga gine-gine, wanda kuma yana da cikakkiyar damar Kubernetes. A gefe guda kuma, wasu daga cikin waɗannan ayyukan za su kasance masu amfani ga tauhidi, musamman saboda tauhidi na yau da kullun ba daidai ba ne (bayanan bayanai za su kasance a baya a cikin rahoton).

Kamar yadda kake gani, jadawali na ƙarshe (lokacin da duka monolithic da microservice aikace-aikacen ke cikin abubuwan more rayuwa tare da Kubernetes) bai bambanta da na asali ba. Na gaba za mu yi magana game da aikace-aikacen da ake sarrafa ta amfani da Kubernetes.

Microservices masu amfani da cutarwa

Kuma ga babban ra'ayi:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Menene al'ada microservice architecture? Ya kamata ya kawo muku fa'idodi na gaske, ƙara haɓaka aikin ku. Idan muka koma kan jadawali, ga shi:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Idan ka kira ta mai amfani, to a daya gefen jadawali za a yi cutarwa microservices (yana hana aiki):

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Komawa ga "babban ra'ayi": shin zan amince da kwarewata kwata-kwata? Tun farkon wannan shekara na duba Ayyuka 85. Ba duka ba ne microservices (kimanin kashi uku zuwa rabi daga cikinsu suna da irin wannan gine-gine), amma wannan har yanzu adadi ne mai yawa. Mu (Kamfanin Flant) a matsayin masu fitar da waje suna gudanar da ganin nau'ikan aikace-aikacen da aka haɓaka duka a cikin ƙananan kamfanoni (tare da masu haɓaka 5) kuma a cikin manyan (~ 500 masu haɓakawa). Wani ƙarin fa'ida shine muna ganin waɗannan aikace-aikacen suna rayuwa kuma suna haɓaka tsawon shekaru.

Me yasa microservices?

Don tambaya game da amfanin microservices akwai amsa ta musamman Daga Martin Fowler da aka ambata:

  1. share iyakoki na modularity;
  2. tura masu zaman kansu;
  3. 'yancin zaɓar fasaha.

Na yi magana da yawa ga masu gine-ginen software da masu haɓakawa kuma na tambayi dalilin da yasa suke buƙatar ƙananan sabis. Kuma na yi lissafin abin da suke tsammani. Ga abin da ya faru:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Idan muka kwatanta wasu daga cikin abubuwan "cikin jin dadi," to:

  • bayyana iyakoki na kayayyaki: a nan muna da mummunan monolith, kuma yanzu duk abin da za a shirya shi da kyau a cikin wuraren ajiyar Git, wanda duk abin da yake "a kan ɗakunan ajiya", dumi da taushi ba a hade ba;
  • tura 'yancin kai: za mu iya fitar da ayyuka daban-daban domin ci gaba ya yi sauri (buga sabbin abubuwa a layi daya);
  • 'yancin kai na ci gaba: za mu iya ba da wannan microservice ga ƙungiya ɗaya / mai haɓakawa, da kuma wannan ga wani, godiya ga abin da za mu iya ci gaba da sauri;
  • боmafi girman dogaro: idan lalacewar ɓarna ta faru (ɗaya microservice daga cikin 20 ya faɗi), to maɓalli ɗaya kawai zai daina aiki, kuma tsarin gaba ɗaya zai ci gaba da aiki.

Gine-ginen microservice na al'ada (mai lahani).

Don bayyana dalilin da yasa gaskiyar ba shine abin da muke tsammani ba, zan gabatar gamayya hoto na gine-ginen microservice bisa gogewa daga ayyuka daban-daban.

Misali zai zama kantin sayar da kan layi wanda zai yi gasa tare da Amazon ko aƙalla OZON. Tsarin gine-ginensa na microservice yayi kama da haka:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Don haɗuwa da dalilai, waɗannan ƙananan ayyukan ana rubuta su akan dandamali daban-daban:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Tunda kowane microservice dole ne ya sami 'yancin kai, yawancinsu suna buƙatar nasu bayanan bayanai da cache. Tsarin gine-gine na ƙarshe shine kamar haka:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Menene sakamakonsa?

Fowler yana da wannan kuma akwai labarin - game da "biyan" don amfani da microservices:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Kuma za mu ga ko tsammaninmu ya cika.

Share iyakoki na kayayyaki...

Amma duk da haka microservices nawa muke buƙatar gyara a zahiri?don fitar da canjin? Shin za mu iya gano yadda duk abin ke aiki ba tare da mai rarrabawa ba (bayan haka, duk wani buƙatun da ake sarrafa shi da rabin microservices)?

Akwai tsari"babban kullu na datti“, kuma a nan ya zama dunƙulen datti da aka rarraba. Don tabbatar da wannan, ga kwatancin kwatancen yadda buƙatun ke tafiya:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Tura 'yancin kai...

A fasaha, an cimma: za mu iya fitar da kowane microservice daban. Amma a aikace kuna buƙatar la'akari da cewa koyaushe yana birgima da yawa microservices, kuma muna bukatar mu yi la'akari tsari na fitar da su. A hanya mai kyau, gabaɗaya muna buƙatar gwadawa a cikin keɓantaccen da'ira ko muna fitar da sakin a daidai tsari.

'Yancin zabar fasaha...

Ita ce. Kawai ku tuna cewa 'yanci galibi yana iyaka da rashin bin doka. Yana da matukar muhimmanci a nan kada a zabi fasahar kawai don "wasa" tare da su.

'Yancin ci gaba...

Yadda ake yin madauki na gwaji don aikace-aikacen gaba ɗaya (tare da abubuwa da yawa)? Amma har yanzu kuna buƙatar ci gaba da sabuntawa. Duk wannan yana kaiwa ga gaskiyar cewa ainihin adadin gwajin da'irori, wanda za mu iya kunsa bisa ka'ida. ya zama kadan.

Yaya game da ƙaddamar da duk wannan a cikin gida? .. Ya bayyana cewa sau da yawa mai haɓaka yana yin aikinsa da kansa, amma "a bazuwar", saboda an tilasta masa ya jira har sai da'irar ta sami kyauta don gwaji.

Matsala daban...

Ee, amma yana iyakance a cikin yankin DBMS da aka yi amfani da shi. A cikin misalin gine-ginen da aka bayar, Cassandra ba zai sami matsala ba, amma MySQL da PostgreSQL za su.

Боmafi aminci...

Ba wai kawai gazawar microservice ɗaya a zahiri sau da yawa yakan karya daidai aikin gabaɗayan tsarin ba, amma akwai kuma sabuwar matsala: Yin kowane kuskuren-haƙuri na microservice yana da wahala sosai. Saboda microservices suna amfani da fasaha daban-daban (memcache, Redis, da dai sauransu), ga kowane kana buƙatar yin tunani ta hanyar duk abin da kuma aiwatar da shi, wanda, ba shakka, yana yiwuwa, amma yana buƙatar manyan albarkatu.

Load da aunawa...

Wannan yana da kyau kwarai.

"Haske" na microservices ...

Ba mu da girma kawai cibiyar sadarwa ta sama (buƙatun don DNS suna haɓakawa, da sauransu), amma kuma saboda yawancin tambayoyin da muka fara kwafi bayanai (kayan ajiya), wanda ya haifar da adadi mai yawa na ajiya.

Kuma ga sakamakon cimma burinmu:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Amma ba duka ba!

Domin:

  • Wataƙila za mu buƙaci bas ɗin saƙo.
  • Yadda ake yin daidaitaccen madadin a daidai lokacin cikin lokaci? Na daya haqiqa zaɓi shine kashe zirga-zirga don wannan. Amma yadda za a yi wannan a cikin samarwa?
  • Idan muna magana ne game da tallafawa yankuna da yawa, to, tsara ɗorewa a cikin kowannensu aiki ne mai matuƙar wahala.
  • Matsalar yin canje-canje a tsakiya ta taso. Misali, idan muna buƙatar sabunta sigar PHP, za mu buƙaci ƙaddamar da kowane ma'ajiyar (kuma akwai da yawa daga cikinsu).
  • Haɓaka cikin sarƙaƙƙiyar aiki shine, a hannu, mai ma'ana.

Me za a yi da wannan duka?

Fara da aikace-aikacen monolithic. Kwarewar Fowler ya ce cewa kusan dukkanin aikace-aikacen microservice masu nasara sun fara azaman monolith wanda ya zama babba kuma ya karye. A lokaci guda, kusan dukkanin tsarin da aka gina a matsayin ƙananan ayyuka tun daga farkon ko dade ko ba dade sun fuskanci matsaloli masu tsanani.

Wani tunani mai mahimmanci shi ne cewa don aikin tare da gine-ginen microservice don samun nasara, dole ne ku sani sosai da batun batun, da kuma yadda ake yin microservices. Kuma hanya mafi kyau don koyan fanin darasi shine yin monolith.

Amma idan mun riga mun shiga cikin wannan yanayin fa?

Mataki na farko don magance kowace matsala shi ne yarda da ita kuma mu fahimci cewa matsala ce, cewa ba ma son mu sha wahala kuma.

Idan, a cikin yanayin monolith mai girma (lokacin da muka gama samun damar siyan ƙarin albarkatu don shi), mun yanke shi, to, a cikin wannan yanayin, labarin kishiyar ya zama: lokacin da ƙananan microservices ba su daina taimakawa, amma hanawa - yanke wuce haddi da girma!

Misali, ga hoton gama-garin da aka tattauna a sama...

A kawar da mafi yawan abin tambaya:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Haɗa duk microservices masu alhakin tsara gaba:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

... cikin microservice guda ɗaya, an rubuta cikin ɗaya (na zamani da na al'ada, kamar yadda kuke tunani) harshe / tsarin:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Zai sami ORM guda ɗaya (DBMS ɗaya) kuma farkon aikace-aikace biyu:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

amma gabaɗaya za ku iya canja wurin da yawa a can, samun sakamako mai zuwa:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Bugu da ƙari, a cikin Kubernetes muna gudanar da wannan duka a cikin lokuta daban-daban, wanda ke nufin cewa har yanzu za mu iya auna nauyin da kuma auna su daban.

Don taƙaitawa

Dubi babban hoto. Sau da yawa, duk waɗannan matsalolin tare da microservices suna tasowa saboda wani ya ɗauki aikin su, amma yana so ya "yi wasa da microservices".

A cikin kalmar "microservices" ɓangaren "micro" ba shi da yawa.. Su "micro" ne kawai saboda sun fi ƙanƙanta fiye da babban monolith. Amma kar a dauke su a matsayin wani karamin abu.

Kuma don tunani na ƙarshe, bari mu koma ga ainihin ginshiƙi:

Microservices: Abubuwan girma, koda kuwa kuna da Kubernetes

Rubutun rubutu a kai (saman dama) tafashe da gaskiyar cewa basirar ƙungiyar da ke yin aikin ku koyaushe na farko ne - za su taka muhimmiyar rawa a cikin zaɓinku tsakanin microservices da monolith. Idan ƙungiyar ba ta da isassun ƙwarewa, amma ta fara yin microservices, tabbas labarin zai yi kisa.

Bidiyo da nunin faifai

Bidiyo daga jawabin (~ mintuna 50; Abin takaici, ba ya isar da yawancin motsin zuciyar baƙi, wanda ya ƙayyade yanayin rahoton, amma haka yake):

Gabatar da rahoton:

PS

Sauran rahotanni a kan shafinmu:

Hakanan kuna iya sha'awar littattafai masu zuwa:

source: www.habr.com

Add a comment