Sabis ɗin Sabis: abin da kowane Injiniyan Software ke buƙatar sani game da mafi yawan fasahar da ake ɗauka

Lura. fassara: Sabis raga wani sabon abu ne wanda har yanzu bai sami ingantaccen fassarar zuwa Rashanci ba (fiye da shekaru 2 da suka gabata mun ba da shawarar zaɓin " raga don ayyuka ", kuma daga baya wasu abokan aiki sun fara haɓaka haɓakar haɗin gwiwar "sabis ɗin sabis"). Magana akai-akai game da wannan fasaha ya haifar da halin da ake ciki wanda tallace-tallacen tallace-tallace da fasaha sun haɗu da juna sosai. Wannan abu mai ban mamaki daga ɗaya daga cikin mawallafa na ainihin kalmar an yi niyya don samar da tsabta ga injiniyoyi da sauransu.

Sabis ɗin Sabis: abin da kowane Injiniyan Software ke buƙatar sani game da mafi yawan fasahar da ake ɗauka
Ban dariya daga Sebastian Caceres ne adam wata

Gabatarwar

Idan kai injiniyan software ne da ke aiki a wani wuri a sararin tsarin tsarin baya, kalmar "sabis ɗin sabis" mai yiwuwa ta rigaya ta yi ƙarfi a zuciyarka cikin shekaru biyu da suka gabata. Godiya ga wani bakon daidaituwa, wannan magana tana ɗaukar masana'antar da ƙari, kuma tallan talla da tallan da ke tattare da ita suna girma kamar ƙwallon dusar ƙanƙara da ke tashi ƙasa kuma ba tare da nuna alamun raguwa ba.

An haifi ragamar sabis a cikin duhu, ruwan raɗaɗi na yanayin yanayin ƙasa na girgije. Abin takaici, wannan yana nufin cewa yawancin rigimar da ke tattare da ita ta samo asali ne daga "magana mai ƙarancin kalori" zuwa - don amfani da kalmar fasaha - kai tsaye maganar banza. Amma idan kun yanke duk amo, za ku ga cewa layin sabis yana da ainihin gaske, ƙayyadaddun aiki da mahimmanci.

A cikin wannan sakon, zan yi ƙoƙari in yi haka: samar da jagorar mai gaskiya, mai zurfi, jagorar mai da hankali kan injiniya zuwa ragar sabis. Ba zan amsa tambayar ba kawai: "Mene ne?", - amma kuma "Me yasa?"Kuma "Me yasa yanzu?". A karshe, zan yi kokarin fayyace dalilin da ya sa (a ra'ayina) wannan fasaha ta musamman ta haifar da rudani irin wannan, wanda labari ne mai ban sha'awa a kansa.

Wanene ni?

Sannu duka! Sunana William Morgan. Ni daya ne daga masu yin halitta Linkerd - aikin ragamar sabis na farko da aikin da ke da alhakin bayyanar kalmar ragamar sabis kamar haka (yi hakuri mutane!). (Fassarar bayanin kula.: Af, a farkon bayyanar wannan kalma, fiye da shekaru 2,5 da suka wuce, mun riga mun fassara farkon rubutun marubucin mai suna "Menene ragamar sabis kuma me yasa nake buƙatar shi [don aikace-aikacen girgije tare da microservices]?".) Ni kuma na shugaban Mai daɗi farawa ne wanda ke haifar da kyawawan abubuwan raga na sabis kamar Linkerd da nutse.

Wataƙila kuna iya tsammanin cewa ina da ra'ayi na son zuciya da ra'ayi game da wannan batu. Duk da haka, zan yi ƙoƙarin kiyaye son zuciya zuwa ƙarami (ban da sashe ɗaya: "Me yasa ake yawan magana game da layin sabis?", - wanda har yanzu zan raba ra'ayoyin da aka riga aka yi). Zan kuma yi iya ƙoƙarina don sanya wannan jagorar a matsayin haƙiƙa kamar yadda zai yiwu. Don takamaiman misalai, da farko zan dogara da ƙwarewar Linkerd, yayin da ke nuna bambance-bambance (idan akwai) waɗanda na sani game da aiwatar da wasu nau'ikan ragar sabis.

Da kyau, lokacin da za a ci gaba zuwa abubuwan ban mamaki.

Menene layin sabis?

Duk da duk abin da ake yi, tsarin layin sabis yana da sauƙi. Wannan gungun proxies ne kawai na sararin mai amfani da ke "kusa da" ayyuka (za mu yi magana kaɗan game da abin da "na gaba" zai kasance daga baya), tare da tsarin sarrafawa. Ana kiran wakilai gaba ɗaya data jirgin, kuma ana kiran hanyoyin sarrafawa jirgin sama mai sarrafawa. Jirgin bayanan yana katse kira tsakanin ayyuka kuma yana yin "dukkan abubuwa daban-daban" tare da su; Jirgin sarrafawa, daidai da haka, yana daidaita halayen wakili kuma yana ba da dama ga ku, watau. mai aiki, zuwa API, yana ba da damar sarrafa hanyar sadarwar da auna gaba ɗaya.

Sabis ɗin Sabis: abin da kowane Injiniyan Software ke buƙatar sani game da mafi yawan fasahar da ake ɗauka

Wannan wane irin wakili ne? Wannan wakili ne na TCP mai sane da Layer 7 (watau "la'akari" Layer 7 na OSI model) kamar HAProxy da NGINX. Kuna iya zaɓar wakili don abin da kuke so; Linkerd yana amfani da wakili na Rust, mai suna kawai linkerd-proxy. Mun sanya shi tare musamman don ragar sabis. Sauran meshes sun fi son wasu wakilai (Manzo zaɓi ne na kowa). Koyaya, zabar wakili shine kawai aiwatarwa.

Menene waɗannan sabar wakili suke yi? Babu shakka, suna kiran wakili zuwa ko daga ayyuka (a zahiri, suna aiki azaman wakili da juyewa, suna sarrafa kira mai shigowa da mai fita duka). Kuma suna aiwatar da tsarin fasalin da ke mai da hankali kan kira tsakanin ayyuka. Wannan mayar da hankali kan zirga-zirgar ababen hawa tsakanin sabis shine abin da ke banbance wakili na saɓin sabis daga, a ce, ƙofofin API ko masu shiga ciki (ƙarshen mayar da hankali kan kiran da ke shigowa cikin tari daga duniyar waje). (Lura. fassara: Don kwatanta masu kula da Ingress na yanzu don Kubernetes, da yawa daga cikinsu suna amfani da Manzo da aka riga aka ambata, duba. wannan labarin.)

Don haka, mun tsara jirgin data. Jirgin sarrafawa ya fi sauƙi: saitin abubuwa ne waɗanda ke ba da duk injiniyoyin da jirgin saman ke buƙata don aiki tare da haɗin kai, gami da gano sabis, bayar da takaddun shaida na TLS, metric aggregation, da dai sauransu. Jirgin bayanan yana sanar da jirgin sarrafawa halayensa; bi da bi, mai sarrafa jirgin sama yana ba da API wanda ke ba ku damar canzawa da kuma lura da halayen jirgin bayanan gaba ɗaya.

A ƙasa akwai zane na jirgin sarrafawa da jirgin sama a Linkerd. Kamar yadda kake gani, jirgin sarrafawa ya ƙunshi sassa daban-daban, ciki har da misalin Prometheus wanda ke tattara ma'auni daga sabar wakili, da kuma sauran abubuwa kamar su. destination (ganowar sabis), identity (Hukumar takaddun shaida, CA) da public-api (maƙasudin ƙarshen yanar gizo da CLI). Sabanin haka, jirgin bayanan mai sauƙi ne mai haɗin gwiwa-proxy kusa da misalin aikace-aikacen. Wannan zane ne kawai; A cikin turawa ta hakika, kuna iya samun kwafi uku na kowane ɓangaren jirgin sama da ɗaruruwa ko dubbai na wakilai a cikin jirgin bayanai.

(The blue rectangles a cikin wannan zane alama ce ta iyakoki na Kubernetes pods. Kuna iya ganin cewa kwantena tare da linkerd-proxy suna cikin kwasfa ɗaya da kwantenan aikace-aikacen. Wannan makircin ana kiransa da sunan. akwati na gefe.)

Sabis ɗin Sabis: abin da kowane Injiniyan Software ke buƙatar sani game da mafi yawan fasahar da ake ɗauka

Gine-ginen layin sabis yana da mahimmancin tasiri da yawa. Da fari dai, tun da aikin wakili shine shiga tsakani kira tsakanin sabis, layin sabis yana da ma'ana kawai idan an ƙirƙiri aikace-aikacen ku don takamaiman sabis ɗin. raga iya yi amfani da monoliths, amma wannan a fili ba shi da ƙari don kare wakili guda ɗaya, kuma da wuya aikin sa ya kasance cikin buƙata.

Wani muhimmin sakamako shine cewa layin sabis yana buƙata babba adadin wakilai. A gaskiya ma, Linkerd yana haɗa wakili mai haɗin gwiwa zuwa kowane misali na kowane sabis (sauran aiwatarwa suna ƙara wakili zuwa kowane kumburi / mai watsa shiri / na'ura mai mahimmanci. Wannan yana da yawa). Irin wannan amfani da proxies a kansa yana ɗaukar ƙarin ƙarin rikitarwa:

  1. Dole ne wakilai a cikin jirgin bayanai su kasance sauri, Tun da kowane kira akwai kira guda biyu zuwa wakili: ɗaya a gefen abokin ciniki, ɗaya a gefen uwar garken.
  2. Hakanan ya kamata wakilai su kasance karami и mara nauyi. Kowannensu zai cinye ƙwaƙwalwar ajiya da albarkatun CPU, kuma wannan amfani zai yi girma a layi tare da aikace-aikacen.
  3. Kuna buƙatar tsari don turawa da sabunta ɗimbin wakilai. Yin shi da hannu ba zaɓi ba ne.

Gabaɗaya, layin sabis yayi kama da wannan (aƙalla daga kallon idon tsuntsu): kuna tura gungun proxies masu amfani waɗanda "yi wani abu" tare da zirga-zirgar ciki, tsakanin sabis, kuma amfani da jirgin sama mai sarrafawa don saka idanu da sarrafa su.

Yanzu ya yi da za a yi tambaya "Me ya sa?"

Menene layin sabis don?

Wadanda suka fara cin karo da ra'ayin layin sabis za a iya gafartawa don jin ɗan tsoro. Ƙirar saɓin sabis yana nufin cewa ba kawai zai ƙara jinkiri ba a cikin aikace-aikacen, amma kuma cinyewa albarkatun da zai kara gungun sabbin hanyoyin sadarwa a cikin ababen more rayuwa. Da farko ka saita layin sabis, sannan ba zato ba tsammani ka sami kanka kana buƙatar sabis na ɗaruruwan (idan ba dubbai) na wakilai ba. Tambayar ita ce, wa zai yi da radin kansa?

Amsar wannan tambayar tana da sassa biyu. Na farko, farashin ma'amala da ke da alaƙa da tura waɗannan wakilai za a iya ragewa sosai godiya saboda wasu canje-canje da ke faruwa a cikin yanayin halittu (ƙari akan wannan daga baya).

Na biyu, na'urar irin wannan a zahiri hanya ce mai kyau don gabatar da ƙarin dabaru a cikin tsarin. Ba wai kawai saboda layin sabis na iya ƙara sabbin ayyuka da yawa ba, har ma saboda ana iya yin shi ba tare da tsangwama ga yanayin muhalli ba. A zahiri, gabaɗayan ƙirar layin sabis yana dogara ne akan wannan fage: a cikin tsarin sabis da yawa, komai mene ana yi mutum ayyuka, zirga-zirga tsakanin su shine madaidaicin batu don ƙara ayyuka.

Misali, a cikin Linkerd (kamar yadda yake a yawancin meshes) aikin yana mai da hankali ne akan kiran HTTP, gami da HTTP/2 da gRPC*. Ayyukan yana da wadata sosai - ana iya raba shi zuwa aji uku:

  1. Siffofin da suka danganci dogara. Maimaita buƙatun, ƙarewar lokaci, tsarin canary (Rarraba zirga-zirga/juyawa), da sauransu.
  2. Siffofin da suka danganci saka idanu. Haɗa ƙimar nasara, jinkiri da buƙatun buƙatun ga kowane sabis ko kwatance ɗaya; gina taswirar ayyuka na topological, da dai sauransu.
  3. Siffofin da suka danganci tsaro. Mutual TLS, ikon samun dama, da sauransu.

* Daga ra'ayi na Linkerd, gRPC a zahiri ba shi da bambanci da HTTP/2: kawai yana amfani da protobuf a cikin kayan biya. Ta fuskar mai haɓakawa, abubuwa biyu, ba shakka, sun bambanta.

Yawancin waɗannan hanyoyin suna aiki a matakin buƙata (saboda haka "wakili L7"). Misali, idan sabis na Foo yayi kiran HTTP zuwa sabis na Bar, mai haɗin gwiwa-proxy a gefen Foo na iya yin daidaita ma'auni na hankali da kuma kira ta hanya daga yanayin Foo zuwa Bar dangane da jinkirin da aka lura; yana iya maimaita buƙatun idan ya cancanta (kuma idan mai ƙarfi ne); yana iya rikodin lambar amsawa da ƙarewar lokaci, da sauransu. Hakazalika, linkerd-proxy a gefen Bar na iya ƙin yarda idan ba a yarda da ita ba ko kuma an wuce iyakar buƙatar; na iya yin rikodin jinkiri a ɓangaren sa, da sauransu.

Wakilai na iya "yin wani abu" a matakin haɗin kuma. Misali, linkerd-proxy a gefen Foo na iya fara haɗin TLS, kuma linkerd-proxy a gefen Bar na iya ƙare shi, kuma ɓangarorin biyu na iya tabbatar da takaddun shaida na TLS *. Wannan yana ba da ɓoye ɓoye kawai tsakanin sabis, har ma da amintacciyar hanya don gano sabis: Foo da Bar na iya “tabbatar” cewa su ne waɗanda suka ce su ne.

* "Mutual na Aboki" yana nufin cewa takardar shaidar abokin ciniki ita ma an tabbatar da ita (TLS na juna). A cikin "classic" TLS, misali tsakanin mai bincike da uwar garken, takaddun shaida na gefe ɗaya (sabar) yawanci ana tabbatarwa.

Ko da ko suna aiki a matakin buƙata ko haɗin kai, yana da mahimmanci a jaddada cewa duk ayyukan ragar sabis ne aiki hali. Linkerd ba zai iya canza ma'anar abin da ake biya ba - misali, ƙara filayen zuwa guntun JSON ko yin canje-canje ga protobuf. Za mu yi magana game da wannan muhimmin fasalin daga baya lokacin da muke magana game da ESB da middleware.

Wannan shine saitin fasalulluka waɗanda layin sabis ke bayarwa. Tambayar ta taso: me yasa ba a aiwatar da su kai tsaye a cikin aikace-aikacen ba? Kuma me yasa kuke damuwa da wakili kwata-kwata?

Me yasa layin sabis yana da kyakkyawan ra'ayi

Duk da yake ƙarfin ragar sabis yana da ban sha'awa, ainihin ƙimar sa ba ta kwanta a cikin fasalulluka ba. A karshe mu Can aiwatar da su kai tsaye a cikin aikace-aikacen (za mu ga daga baya cewa wannan shine asalin layin sabis ɗin). Don gwadawa da taƙaita shi a cikin jumla ɗaya, ƙimar layin sabis shine: yana ba da fasaloli masu mahimmanci don gudanar da software na uwar garken zamani a daidaitaccen tsari a cikin duka tari kuma mai zaman kansa na lambar aikace-aikace.

Bari mu bincika wannan shawara.

«Fasaloli masu mahimmanci don gudanar da software na uwar garken zamani" Idan kuna ƙirƙirar aikace-aikacen uwar garken ma'amala wanda ke haɗa da Intanet na jama'a, karɓar buƙatun daga duniyar waje da amsa su cikin ɗan gajeren lokaci - misali, aikace-aikacen yanar gizo, sabar API, da mafi yawan sauran aikace-aikacen zamani. - kuma idan kun aiwatar da shi azaman saitin sabis ɗin da ke hulɗa da juna tare da juna, kuma idan kuna haɓaka wannan software koyaushe, kuna ƙara sabbin abubuwa, kuma idan an tilasta muku kula da wannan tsarin a cikin tsarin aiki yayin aiwatar da gyara - a cikin wannan. yanayin, taya murna, kuna ƙirƙirar software na uwar garken zamani. Kuma duk waɗannan manyan abubuwan da aka lissafa a sama sun zama masu mahimmanci a gare ku. Dole ne aikace-aikacen ya zama abin dogaro, amintacce, kuma dole ne ku iya lura da abin da yake yi. Waɗannan su ne ainihin tambayoyin da layin sabis ke taimakawa warwarewa.

(Ok, sakin layi na baya har yanzu ya haɗa da imani na cewa wannan hanyar ita ce hanyar zamani don ƙirƙirar software na uwar garke. Wasu sun fi son haɓaka monoliths, “mai amsawa microservices” da sauran abubuwan da ba su faɗi ƙarƙashin ma’anar da aka bayar a sama ba. Wataƙila waɗannan mutanen suna da nasu. ra'ayi ya bambanta da nawa, bi da bi, ina tsammanin cewa sun kasance "ba daidai ba" - ko da yake a kowane hali layin sabis ɗin ba shi da amfani sosai a gare su).

«Uniform don dukan tari" Ayyukan da layin sabis ke bayarwa ba kawai manufa ba ce mai mahimmanci. Suna amfani da duk sabis ɗin da ke cikin aikace-aikacen, ba tare da la'akari da wane yare aka rubuta su ba, wane tsarin da suke amfani da shi, wanene ya rubuta su, yadda aka tura su, da duk wasu dabaru na haɓakawa da amfani da su.

«Mai zaman kansa na lambar aikace-aikace" A ƙarshe, saɓin sabis ba kawai yana samar da daidaitattun ayyuka a duk faɗin tari ba, yana yin haka ta hanyar da baya buƙatar gyara aikace-aikacen. Tushen tushen aikin ragar sabis, gami da ayyuka don daidaitawa, sabuntawa, aiki, kiyayewa, da sauransu, yana zaune gaba ɗaya a matakin dandamali kuma yana zaman kansa daga aikace-aikacen. Aikace-aikacen na iya canzawa ba tare da shafar layin sabis ba. Bi da bi, layin sabis na iya canzawa ba tare da wani sa hannu daga aikace-aikacen ba.

A takaice, ragar sabis ba wai kawai yana samar da ayyuka masu mahimmanci ba, har ma yana yin hakan a cikin duniya, iri ɗaya, da kuma aikace-aikace mai zaman kansa. Sabili da haka, kodayake ana iya aiwatar da aikin ragar sabis a cikin lambar sabis (misali, azaman ɗakin karatu da aka haɗa a cikin kowane sabis), wannan hanyar ba zata samar da daidaito da 'yancin kai wanda ke da mahimmanci a yanayin layin sabis ba.

Kuma duk abin da kuke buƙatar yi shine ƙara gungun wakilai! Na yi alkawari za mu duba farashin aiki da ke tattare da ƙara waɗannan wakilai nan ba da jimawa ba. Amma da farko bari mu tsaya mu kalli wannan ra’ayin na ‘yancin kai ta fuskoki daban-daban. mutane.

Wanene ke taimakon ragamar sabis?

Duk da rashin jin daɗi, don fasaha ta zama wani muhimmin sashi na yanayin halittu, dole ne mutane su yarda da ita. To wanene ke sha'awar layin sabis? Wanene yake amfana da amfaninsa?

Idan kuna haɓaka software na uwar garken zamani, zaku iya kusan tunanin ƙungiyar ku a matsayin ƙungiya masu sabiswaɗanda tare suke haɓakawa da aiwatar da dabarun kasuwanci, da masu dandalin, haɓaka dandamali na ciki wanda waɗannan ayyuka ke aiki akan su. A cikin ƙananan ƙungiyoyi, waɗannan na iya zama mutane iri ɗaya, amma yayin da kamfani ke girma, waɗannan ayyuka suna karuwa sosai har ma sun kasu kashi-kashi ... Tasirin ƙungiyoyin ƙananan ayyuka, da sauransu) n. Amma yanzu bari mu ɗauki waɗannan kwatancin kamar yadda aka bayar).

Daga wannan ra'ayi, bayyanannen masu cin gajiyar layin sabis sune masu dandamali. Bayan haka, a ƙarshe makasudin ƙungiyar dandamali shine ƙirƙirar dandamali na ciki wanda masu mallakar sabis zasu iya aiwatar da dabaru na kasuwanci kuma suyi hakan ta hanyar da ta tabbatar da cewa suna da 'yanci kamar yadda zai yiwu daga cikakkun bayanai na aiki. Ba wai kawai layin sabis yana ba da damar iyakoki masu mahimmanci don cimma wannan burin ba, yana yin hakan ta hanyar da ba za ta sanya dogaro ga masu sabis ba.

Masu sabis kuma suna amfana, kodayake ta hanyar kai tsaye. Manufar mai sabis shine ya kasance mai ƙwaƙƙwara kamar yadda zai yiwu wajen aiwatar da dabaru na tsarin kasuwanci, kuma ƙarancin damuwa game da batutuwan aiki, mafi kyau. Maimakon yin aiki tare da aiwatarwa, ka ce, sake gwada manufofi ko TLS, za su iya mayar da hankali kan manufofin kasuwanci kawai kuma suna fatan dandalin ya kula da sauran. Wannan babbar fa'ida ce a gare su.

Ƙimar ƙungiyar irin wannan rarrabuwa tsakanin masu dandamali da ayyuka ba za a iya ƙima ba. Ina tsammanin tana ba da gudummawa babba gudunmawa ga ƙimar layin sabis.

Mun koyi wannan darasi lokacin da wani mai son Linkerd na farko ya gaya mana dalilin da ya sa suka zaɓi ragamar sabis: saboda ya ba su damar “aƙalla kantin magana.” Ga wasu cikakkun bayanai: mutanen daga babban kamfani ɗaya sun yi ƙaura zuwa Kubernetes. Tun da aikace-aikacen yana sarrafa bayanai masu mahimmanci, suna son ɓoye duk hanyoyin sadarwa a cikin gungu. Koyaya, lamarin ya kasance mai rikitarwa ta kasancewar ɗaruruwan ayyuka da ɗaruruwan ƙungiyoyin ci gaba. Kasancewar tuntuɓar kowa da shawo kan su don haɗa tallafin TLS a cikin shirye-shiryensu bai sa su farin ciki ko kaɗan. Bayan shigar Linkerd, sun canjawa wuri alhakin daga masu haɓakawa (daga ra'ayi wanda wannan shine matsala mara amfani) zuwa dandamali, wanda wannan shine babban fifikon matakin. A takaice dai, Linkerd ya warware musu ba kawai matsalar fasaha ba a matsayin ƙungiya.

A takaice, ragar sabis ya fi mafita, ba na fasaha ba, amma zamantakewa-fasahar Matsaloli. (Na gode Cindy Sridharan don gabatar da wannan kalmar.)

Shin layin sabis zai magance duk matsalolina?

Ee. Ina nufin, a'a!

Idan ka kalli nau'ikan fasalulluka guda uku da aka zayyana a sama - dogaro, tsaro, da lura - zai bayyana a sarari cewa layin sabis ba shine cikakkiyar mafita ga ɗayan waɗannan matsalolin ba. Yayin da Linkerd zai iya sake fitar da buƙatun (idan ya san suna da ƙarfi), ba zai iya yanke shawara game da abin da za a koma ga mai amfani ba idan sabis ɗin ya gaza har abada-dole ne aikace-aikacen ya yanke shawarar. Linkerd na iya kiyaye kididdigar buƙatun nasara, amma ba zai iya duba sabis ɗin ba kuma ya samar da ma'auni na ciki - aikace-aikacen dole ne ya sami irin waɗannan kayan aikin. Kuma ko da yake Linkerd yana da ikon tsara mTLS, cikakkun hanyoyin samar da tsaro suna buƙatar ƙari mai yawa.

Ƙarshen fasalulluka a waɗannan wuraren da layin sabis ke bayarwa yana da alaƙa da fasalin dandamali. Da wannan ina nufin ayyuka cewa:

  1. Mai zaman kansa na dabarun kasuwanci. Hanyar da aka gina lissafin lissafin kira tsakanin Foo da Bar ba shi da cikakken zaman kansa me yasa Foo ya kira Bar.
  2. Wahalar aiwatarwa daidai. A cikin Linkerd, sake gwadawa ana daidaita su tare da kowane irin kyawawan abubuwa kamar sake gwada kasafin kuɗi (sake gwada kasafin kuɗi), tun da rashin natsuwa, kai-tsaye don aiwatar da irin waɗannan abubuwa tabbas zai haifar da bullar abin da ake kira "ciwon buƙatun" (sake gwada hadari) da sauran matsalolin halayen tsarin rarraba.
  3. Mafi tasiri idan aka yi amfani da su iri ɗaya. Tsarin TLS yana da ma'ana kawai idan an yi amfani da shi a ko'ina.

Tun da ana aiwatar da waɗannan ayyuka a matakin wakili (kuma ba a matakin aikace-aikacen ba), layin sabis yana ba su a cikin dandamali, ba aikace-aikace. Don haka, ba komai ko wane harshe aka rubuta ayyukan a cikin, wane tsarin da suke amfani da shi, wanene ya rubuta su kuma me yasa. Wakilai suna aiki a wajen duk waɗannan cikakkun bayanai, kuma ainihin tushen wannan aikin, gami da ayyuka don daidaitawa, sabuntawa, aiki, kiyayewa, da sauransu, ya ta'allaka ne kawai a matakin dandamali.

Misalai na iyawar ragar sabis

Sabis ɗin Sabis: abin da kowane Injiniyan Software ke buƙatar sani game da mafi yawan fasahar da ake ɗauka

Don taƙaitawa, layin sabis ba cikakken bayani bane don dogaro, lura, ko tsaro. Iyalin waɗannan yankuna na buƙatar haɗin gwiwar masu sabis, ƙungiyoyin Ops/SRE da sauran ƙungiyoyin kamfani. Rukunin sabis ɗin yana ba da “yanki” matakin dandamali kawai ga kowane ɗayan waɗannan wuraren.

Me yasa layin sabis ya zama sananne a yanzu?

Ya zuwa yanzu kuna iya yin mamaki: to, idan layin sabis ɗin yana da kyau sosai, me yasa ba mu fara tura miliyoyin wakilai a cikin tarin shekaru goma da suka wuce ba?

Akwai amsar banal ga wannan tambaya: shekaru goma da suka wuce kowa ya gina monoliths, kuma babu wanda ya buƙaci ragamar sabis. Wannan gaskiya ne, amma a ganina wannan amsar ta rasa ma'anar. Ko da shekaru goma da suka wuce, manufar microservices a matsayin hanya mai ban sha'awa don gina manyan tsare-tsare an tattauna sosai kuma an yi amfani da su a kamfanoni irin su Twitter, Facebook, Google da Netflix. Babban ra'ayi-aƙalla a cikin sassan masana'antar da na haɗu da su - shine cewa microservices sune "hanyar da ta dace" don gina manyan tsarin, koda kuwa yana da wahala.

Tabbas, ko da yake shekaru goma da suka gabata akwai kamfanoni da ke aiki da microservices, ba su manne wa wakilai a duk inda za su iya samar da ragamar sabis ba. Duk da haka, idan ka duba da kyau, sun yi wani abu makamancin haka: yawancin waɗannan kamfanoni suna buƙatar amfani da ɗakin karatu na musamman na ciki don sadarwar hanyar sadarwa (wani lokaci ana kiran ɗakin karatu mai kauri, abokin ciniki). kitse abokin ciniki library).

Netflix yana da Hysterix, Google yana da Stubby, Twitter yana da ɗakin karatu na Finagle. Finagle, alal misali, ya zama tilas ga kowane sabon sabis akan Twitter. Yana sarrafa duka abokin ciniki da gefen uwar garke na haɗin, an ba da izinin buƙatun maimaitawa, goyan bayan buƙatun buƙatun, daidaita nauyi da aunawa. Ya samar da daidaiton dogaro da abin lura a cikin dukkan tarin Twitter, ba tare da la'akari da abin da sabis ɗin ke yi ba. Tabbas, ya yi aiki ne kawai don harsunan JVM kuma ya dogara ne akan ƙirar shirye-shirye wanda dole ne a yi amfani da shi don duk aikace-aikacen. Koyaya, aikinsa kusan iri ɗaya ne da na layin sabis. (A zahiri, sigar farko ta Linkerd ta kasance kawai Finagle nannade cikin sigar wakili.)

Don haka, shekaru goma da suka gabata ba kawai microservices ba, har ma da dakunan karatu na musamman-sabis-mesh waɗanda suka magance matsalolin iri ɗaya waɗanda layin sabis ɗin ke warwarewa a yau. Koyaya, layin sabis ɗin ba ya wanzu a lokacin. Sai da ta sake zama kafin ta bayyana.

Kuma a nan ne amsar mafi zurfi ta ta'allaka, boye a cikin wani canji da ya faru a cikin shekaru 10 da suka gabata: farashin tura microservices ya ragu sosai. Kamfanonin da aka ambata a sama waɗanda suka yi amfani da microservices shekaru goma da suka wuce-Twitter, Netflix, Facebook, Google-kamfanoni ne na ma'auni mai girma da albarkatu masu yawa. Ba wai kawai suna da buƙata ba, har ma da ikon ginawa, turawa, da sarrafa manyan aikace-aikacen tushen microservices. Ƙarfafawa da ƙoƙarin da injiniyoyin Twitter suka yi don motsawa daga tsarin monolithic zuwa tsarin microservices yana da ban mamaki. (Don yin adalci, haka shine gaskiyar cewa ta yi nasara.) Irin waɗannan hanyoyin samar da ababen more rayuwa a lokacin sun yi wuya ga ƙananan kamfanoni.

Saurin ci gaba zuwa yanzu. Akwai farawa a yau inda rabon microservices ga masu haɓakawa shine 5:1 (ko ma 10:1), kuma menene ƙari, suna jimre da su cikin nasara! Idan farawa na mutum 5 zai iya yin amfani da microservices 50 cikin sauƙi, to, wani abu ya rage farashin aiwatar da su a fili.

Sabis ɗin Sabis: abin da kowane Injiniyan Software ke buƙatar sani game da mafi yawan fasahar da ake ɗauka
1500 microservices a Monzo; kowane layi ƙa'ida ce ta hanyar sadarwa wacce ke ba da damar zirga-zirga

Ragi mai ban mamaki a cikin farashin ayyukan microservices shine sakamakon tsari ɗaya: girma shahararsa na kwantena и mawaƙa. Wannan shine ainihin amsar mai zurfi ga tambayar abin da ya ba da gudummawa ga fitowar layin sabis. Fasaha iri ɗaya ta sa duka layin sabis da microservices masu kyau: Kubernetes da Docker.

Me yasa? To, Docker yana magance babbar matsala ɗaya - matsalar marufi. Ta hanyar tattara aikace-aikace da abubuwan da suka dogara da lokacin aiki (wanda ba na hanyar sadarwa ba) a cikin akwati, Docker yana juya aikace-aikacen zuwa naúrar musanya wanda za'a iya ɗauka da gudana a ko'ina. A lokaci guda, yana sauƙaƙa aiki sosai harsuna da yawa Tari: Saboda kwantena rukunin atomic ne na aiwatarwa, don turawa da dalilai na aiki, ba komai abin da ke ciki ba, ya kasance aikace-aikacen JVM, Node, Go, Python, ko Ruby. Ka kawai kaddamar da shi kuma shi ke nan.

Kubernetes yana ɗaukar komai zuwa mataki na gaba. Yanzu da akwai tarin "abubuwan da za a gudanar" da kuma na'urori masu yawa don sarrafa su, akwai buƙatar kayan aiki da zai iya daidaita su da juna. A cikin ma'ana mai mahimmanci, kuna ba Kubernetes kwantena da yawa da injuna da yawa, kuma yana tsara taswirar su da juna (ba shakka, wannan tsari ne mai ƙarfi da canzawa koyaushe: sabbin kwantena suna motsawa a cikin tsarin, injin farawa da tsayawa. , da dai sauransu Duk da haka, Kubernetes yayi la'akari da duk wannan).

Da zarar an daidaita Kubernetes, farashin lokacin da za a tura da gudanar da sabis ɗaya ya ɗan bambanta da farashin turawa da gudanar da ayyuka goma (a zahiri, kusan iri ɗaya ne ga sabis 100). Ƙara zuwa wannan kwantena a matsayin tsarin marufi wanda ke ƙarfafa aiwatar da harsuna da yawa, kuma kuna da ɗimbin sabbin aikace-aikacen da aka aiwatar a cikin nau'ikan sabis na microservices waɗanda aka rubuta cikin yaruka daban-daban - daidai irin yanayin da layin sabis ya dace sosai.

Don haka, mun zo ga amsar tambayar dalilin da yasa ra'ayin layin sabis ya zama sananne a yanzu: daidaituwar da Kubernetes ke bayarwa don ayyuka ya shafi ƙalubalen aiki da ke fuskantar ragamar sabis. Kuna tattara proxies a cikin kwantena, ba Kubernetes aikin manna su duk inda zai iya, kuma voila! Sakamakon haka, kuna samun layin sabis, yayin da duk injiniyoyin tura shi Kubernetes ke sarrafa su. (Aƙalla daga kallon idon tsuntsu. Tabbas, wannan tsari yana da yawa.)

Don taƙaita shi: dalilin da yasa meshes sabis ya zama sananne a yanzu, kuma ba shekaru goma da suka gabata ba, shine Kubernetes da Docker ba kawai sun karu sosai ba. bukata a ciki, bayan sauƙaƙa aiwatar da aikace-aikace a matsayin saiti na ƙananan sabis na harsuna da yawa, amma kuma an rage mahimmanci. halin kaka don aikinta, samar da hanyoyin turawa da tallafawa jiragen wakili na gefe.

Me yasa ake yawan magana game da layin sabis?

A rigakafi: A cikin wannan sashe na yi amfani da kowane irin zato, zato, ƙirƙira da bayanai na ciki.

Yi bincike don "ragon sabis" kuma za ku gamu da tarin abun ciki mai ƙarancin kalori da aka sake yin fa'ida, ayyuka masu ban mamaki, da kaleidoscope na murdiya waɗanda suka cancanci ɗakin amsawa. Duk wani sabon fasaha mai ban sha'awa yana yin wannan, amma a cikin yanayin layin sabis, matsalar tana da girma musamman. Me yasa?

To, wani bangare na laifina ne. Na yi aiki tuƙuru don inganta Linkerd da sabis ɗin sabis a kowane damar da na samu ta cikin bulogi masu yawa da labarai kamar wannan. Amma ba ni da iko haka. Don amsa wannan tambayar da gaske, muna buƙatar yin magana kaɗan game da yanayin gaba ɗaya. Kuma ba shi yiwuwa a yi magana game da shi ba tare da ambaton aiki ɗaya ba: Istio Rukunin sabis ne na buɗaɗɗen tushe wanda Google, IBM da Lyft suka haɓaka tare.

(Kamfanoni guda uku suna da matsayi daban-daban: Shigar Lyft ya bayyana a cikin suna kawai; su ne marubutan Manzo, amma ba sa amfani ko shiga cikin ci gaban IBM. ci gaba, amma ba a zahiri amfani da shi ba kamar yadda zan iya fada.)

Aikin Istio sananne ne ga abubuwa biyu. Na farko, akwai gagarumin ƙoƙarin tallan da Google, musamman, ke yi don haɓaka shi. Zan yi kiyasin cewa yawancin mutane suna sane da manufar layin sabis a yau sun fara koya game da shi ta hanyar Istio. Abu na biyu shi ne yadda Istio ya yi rashin kyau. A cikin wannan al'amari, a fili ni mai sha'awa ne, amma ƙoƙarin ci gaba da kasancewa da haƙiƙa kamar yadda zai yiwu, har yanzu ba zan iya taimakawa ba Alama sosai korau hali, ba musamman (ko da yake ba na musamman ba: systemd ya zo a hankali, kwatanta aka gudanar riga akai-akai...) don aikin Buɗewa.

(A aikace, Istio da alama yana da matsaloli ba kawai tare da rikitarwa da UX ba, har ma tare da aiki. Misali, lokacin Ƙimar aikin LinkerdA cikin wani bincike na ɓangare na uku, masu bincike sun gano yanayin da latency na Istio ya kasance sau 100 fiye da na Linkerd, da kuma yanayin yunwar albarkatun inda Linkerd ya ci gaba da aiki cikin nasara yayin da Istio ya daina aiki gaba daya.)

Barin ra'ayi na game da dalilin da ya sa hakan ya faru, na yi imanin cewa babban abin farin ciki a cikin layin sabis yana bayyana ta hanyar shigar da Google. Wato haduwar wadannan abubuwa guda uku:

  1. Tallan kutsawa na Google na Istio;
  2. daidaitaccen rashin yarda, hali mai mahimmanci ga aikin;
  3. Yunƙurin meteoric na baya-bayan nan a cikin shaharar Kubernetes, waɗanda tunaninsu har yanzu sabo ne.

Tare waɗannan abubuwan suna haɗuwa don ƙirƙirar yanayi mai banƙyama, yanayin da ba shi da iskar oxygen wanda ƙarfin ikon yanke hukunci ya raunana, kuma kawai iri-iri iri-iri ya rage. tulip mania.

Daga mahanga ta Linkerd, wannan shine...abin da zan kwatanta shi azaman albarka mai gauraya. Ina nufin, yana da kyau cewa layin sabis ya shiga cikin al'ada ta hanyar da ba ta kasance a cikin 2016 ba lokacin da Linkerd ya fara farawa kuma yana da wuyar gaske don sa mutane su kula da aikin. Yanzu babu irin wannan matsala! Amma mummunan labari shi ne cewa shimfidar layin sabis ɗin yana da ruɗani a yau cewa yana da kusan ba zai yuwu a fahimci ayyukan da ainihin ke cikin rukunin saƙon sabis ba (bari a fahimci wanene ya fi dacewa da takamaiman yanayin amfani). Wannan tabbas mai warwarewa ne ga kowa da kowa (kuma tabbas akwai wasu lokuta inda Istio ko wani aikin ya fi dacewa da Linkerd, tunda ƙarshen har yanzu ba shine mafita ta duniya ba).

A gefen Linkerd, dabarunmu shine yin watsi da hayaniyar, ci gaba da mai da hankali kan warware matsalolin al'umma na gaske, kuma da gaske jira hargitsi ya mutu. Daga ƙarshe, zazzagewar za ta ragu kuma za mu iya ci gaba da yin aiki cikin nutsuwa.

A halin yanzu, duk za mu yi haƙuri kaɗan.

Shin layin sabis zai zama da amfani a gare ni, injiniyan software mai tawali'u?

Tambayoyi masu zuwa za su taimake ka ka amsa wannan tambayar:

Shin kuna da hannu kawai wajen aiwatar da dabaru na kasuwanci? A wannan yanayin, layin sabis ɗin ba zai yi amfani da ku ba. Wato, ba shakka, kuna iya sha'awar sa, amma a zahiri bai kamata layin sabis ɗin ya shafi wani abu kai tsaye a cikin muhallinku ba. Ci gaba da aiki akan abin da aka biya ku don yin.

Shin kuna tallafawa dandamali a kamfani da ke amfani da Kubernetes? Ee, a wannan yanayin kuna buƙatar ragamar sabis (sai dai idan, ba shakka, kuna amfani da K8s kawai don gudanar da sarrafa monolith ko tsari - amma sai in tambayi dalilin da yasa kuke buƙatar K8s). Wataƙila za ku iya ƙare da yawancin ƙananan sabis waɗanda mutane daban-daban suka rubuta. Dukkansu suna hulɗa da juna kuma an ɗaure su cikin ɓangarorin dogaro na lokacin aiki, kuma kuna buƙatar nemo hanyar da za ku magance shi duka. Amfani da Kubernetes yana ba ku damar zaɓar ragar sabis "don kanku." Don yin wannan, sanin kanku da iyawarsu da fasalulluka kuma ku amsa tambayar ko ɗayan ayyukan da ake samu sun dace da ku (Ina ba da shawarar fara binciken ku tare da Linkerd).

Shin ku kamfani ne na dandamali a kamfani wanda baya amfani da Kubernetes amma yana amfani da microservices? A wannan yanayin, layin sabis zai zama da amfani a gare ku, amma amfani da shi ba zai zama mai sauƙi ba. Tabbas zaka iya koyi ragamar sabis na aiki ta hanyar sanya ɗimbin wakilai, amma muhimmin fa'idar Kubernetes shine ƙirar turawa: kiyaye waɗannan wakilai da hannu zai buƙaci ƙarin lokaci, ƙoƙari da kuɗi.

Kuna da alhakin dandamali a cikin kamfanin da ke aiki tare da monoliths? A wannan yanayin, mai yiwuwa ba kwa buƙatar ragamar sabis. Idan kuna aiki tare da monoliths (ko ma tarin monoliths) waɗanda ke da ma'anar ma'ana kuma da wuya canza yanayin hulɗa, to, ragar sabis ɗin zai sami ɗan ba da ku. Don haka kawai kuna iya watsi da shi da fatan cewa zai ɓace kamar mafarki mara kyau ...

ƙarshe

Wataƙila, har yanzu bai kamata a kira ragar sabis ɗin "fasaha mafi girma a duniya ba" - wannan girmamawar mai yiwuwa na Bitcoin ne ko AI. Wataƙila tana cikin manyan biyar. Amma idan kun yanke ta cikin yadudduka na amo, ya bayyana a fili cewa layin sabis yana kawo fa'idodi na gaske ga waɗanda ke gina aikace-aikacen akan Kubernetes.

Ina so ku gwada Linkerd - shigar da shi akan gungu na Kubernetes (ko ma Minikube akan kwamfutar tafi-da-gidanka) yana ɗaukar kusan daƙiƙa 60, kuma za ku iya ganin kanku abin da nake magana akai.

FAQ

- Idan na yi watsi da layin sabis, zai ɓace?
- Dole ne in bata muku rai: layin sabis yana tare da mu na dogon lokaci.

- Amma BAN SON amfani da ragamar sabis ba!
- To, ba lallai ba ne! Kawai karanta tambayoyina da ke sama don gane ko ya kamata ku fahimci kanku aƙalla da tushen sa.

- Shin wannan ba tsohuwar ESB/tsakiya ba ce tare da sabon miya?
- Sabis ɗin layin yana ma'amala da dabaru na aiki, ba na ma'ana ba. Wannan shi ne babban koma baya bas sabis na kasuwanci (Yana B). Tsayar da wannan rabuwa yana taimakawa ragamar sabis don guje wa kaddara iri ɗaya.

- Ta yaya layin sabis ya bambanta da ƙofofin API?
- Akwai labarai miliyan akan wannan batu. Google kawai.

- Manzo mesh ne na sabis?
- A'a, Manzo ba layin sabis bane, sabar wakili ce. Ana iya amfani dashi don tsara ragar sabis (da ƙari - wakili ne na gaba ɗaya). Amma a cikin kanta ba layin sabis ba ne.

- Sabis na hanyar sadarwa Mesh ne na sabis?
- A'a. Duk da sunan, wannan ba ragamar sabis bane (yaya kuke son mu'ujizar talla?).

- Shin layin sabis zai taimaka da tsarin asynchronous na tushen saƙona?
- A'a, layin sabis ba zai taimake ku ba.

- Wanne ragar sabis zan yi amfani da shi?
- Linkerd, babu mai hankali.

- Labarin yana da ban tsoro! / Marubucin yana maraba!
- Da fatan za a raba hanyar haɗi zuwa gare ta tare da duk abokanka don su gani!

Godiya

Kamar yadda zaku iya tsammani daga taken, wannan labarin ya samo asali ne daga kyakkyawan rubutun Jay Kreps "Log: Abin da ya kamata kowane injiniyan software ya sani game da haɗe-haɗen bayanan ainihin lokaci" Na haɗu da Jay shekaru goma da suka wuce lokacin da na yi masa tambayoyi a kan Linked In kuma ya kasance abin ƙarfafawa a gare ni tun daga lokacin.

Duk da yake ina so in kira kaina "Mai haɓaka Linkard", gaskiyar ita ce, na fi zama mai kula da fayil ɗin README.md akan wani aiki. Ana aiki akan Linkerd a yau sosai, sosai, sosai много mutane, kuma wannan aikin ba zai faru ba in ba tare da halartar al'umma mai ban mamaki na masu ba da gudummawa da masu amfani ba.

Kuma a ƙarshe, godiya ta musamman ga mahaliccin Linkerd, Oliver Gould (primus inter pares), wanda, tare da ni shekaru da yawa da suka wuce, sun nutse cikin wannan hargitsi tare da ragamar sabis.

PS daga mai fassara

Karanta kuma a kan shafinmu:

source: www.habr.com