Chagua Lugha

Microservices: Ukubwa wa Huduma dhidi ya Utendaji - Uchambuzi wa Usawazishaji wa Usanifu

Uchambuzi wa athari ya ukubwa wa huduma ndogo (microservice) kwenye ucheleweshaji wa programu, ukilinganisha uwekaji wa kontena moja dhidi ya nyingi katika mazingira ya wingu na IoT.
apismarket.org | PDF Size: 0.4 MB
Ukadiriaji: 4.5/5
Ukadiriaji Wako
Umekadiria waraka huu tayari
Kifuniko cha Waraka PDF - Microservices: Ukubwa wa Huduma dhidi ya Utendaji - Uchambuzi wa Usawazishaji wa Usanifu

1. Utangulizi

Usanifu wa Microservices (MSA) unaahidi uwezo wa haraka katika ukuzaji wa programu, hasa muhimu katika enzi inayohitaji kubadilika kwa kasi kukabiliana na mahitaji mapya, kama vile yale yanayosukumwa na Internet of Things (IoT). Karatasi hii inachunguza usawazishaji muhimu wa usanifu: uhusiano kati ya ukubwa wa huduma ndogo (eneo la kazi la huduma moja) na athari yake kwenye utendaji wa programu, hasa ucheleweshaji. Waandishi wanaiga mikakati miwili ya uwekaji—kuunganisha microservices ndani ya kontena moja dhidi ya kuzigawa kwenye kontena nyingi—ili kupima kiasi cha athari hii.

2. Ukubwa wa Huduma katika Usanifu wa Microservices

Ukubwa (Granularity) unarejelea utata wa kazi uliofungwa ndani ya huduma ndogo moja. Huduma zenye ukubwa mdogo sana zinatekeleza matumizi machache, zikikukuza uwezo wa kutumika tena na kusawazisha na uwezo maalum wa biashara.

2.1. Kufafanua Ukubwa wa Huduma

Ni kipimo cha eneo la kazi la huduma, mara nyingi huendana na idadi ya majukumu au matumizi anayoshughulikia. Uamuzi muhimu wa kubuni unaosawazisha umoduli dhidi ya mzigo wa uratibu.

2.2. Mzigo wa Mawasiliano

Huduma zinapokuwa na ukubwa mdogo zaidi, idadi ya mawasiliano kati ya huduma (wito wa taratibu za mbali, ujumbe) inayohitajika kukamilisha mtiririko wa kazi wa biashara huongezeka. Mawasiliano haya ya mtandao ndiyo chanzo kikuu cha ucheleweshaji.

3. Mbinu ya Majaribio & Uigaji

Utafiti huu unatumia uigaji kuchambua utendaji, ukitumia mfumo wa uandikishaji wa chuo kikuu kama mfano wa kuwakilisha programu ya biashara.

3.1. Miundo ya Uwekaji

  • Muundo A (Kontena Moja): Microservices zote zimepakwa na kuwekwa ndani ya kontena moja ya utekelezaji (k.m., Docker). Mawasiliano hasa yanafanyika ndani ya mchakato mmoja.
  • Muundo B (Kontena Nyingi): Kila huduma ndogo inawekwa katika kontena yake iliyotengwa. Mawasiliano hufanyika kupitia mtandao (k.m., kupitia API za REST au gRPC).

3.2. Vipimo vya Utendaji

Kipimo kikuu ni kuchelewa kwa huduma kutoka mwanzo hadi mwisho, kinachopimwa kama muda kutoka ombi la mteja hadi kupokea majibu ya mwisho kwa shughuli kamili ya biashara.

4. Matokeo & Uchambuzi

Uigaji ulitoa ugunduzi muhimu, labda usioeleweka kwa urahisi, kuhusu gharama ya utendaji ya kugawanya huduma.

4.1. Ulinganisho wa Ucheleweshaji

Matokeo Muhimu

Ongezeko la ucheleweshaji wa huduma kwenye uwekaji wa kontena nyingi (Muundo B) ikilinganishwa na uwekaji wa kontena moja (Muundo A) lilikuwa duni sana.

Maelezo ya Chati (Iliyoigwa): Chati ya baa inayolinganisha wastani wa ucheleweshaji (kwenye millisekunde) kwa wito wa huduma mchanganyiko kwenye miundo hii miwili ya uwekaji. Baa za "Kontena Moja" na "Kontena Nyingi" zingekuwa karibu sawa kwa urefu, na tofauti ndogo sana inayosisitizwa kwa kuwekwa ndani au kisanduku cha maelezo kinachosema "~ongezeko la 1-2%."

4.2. Matokeo Muhimu

  • Adhabu ya utendaji kwa kuweka huduma ndogo zenye ukubwa mdogo katika kontena tofauti ni ndogo sana kwa usimamizi wa kisasa, ulioboreshwa wa kontena na mfumo wa mtandao (k.m., Kubernetes na mitandao ya huduma kama Istio).
  • Faida za uwekaji huru, kuongeza uwezo, na utofauti wa teknolojia zinazotolewa na MSA za kontena nyingi zinaweza kuzidi gharama duni ya ucheleweshaji katika hali nyingi.
  • Hii inapinga dhana ya jadi kwamba mzigo wa mtandao hufanya microservices zilizosambazwa kuwa polepole zaidi kwa asili.

5. Maana kwa Usanifu wa IoT

Matokeo haya yanahusika hasa kwa IoT, ambapo mifumo ya kompyuta ya ukingoni (edge computing) mara nyingi inahusisha microservices zilizosambazwa zinazoendeshwa kwenye vifaa vilivyodhibitiwa na nodi za ukingoni. Mzigo mdogo wa ucheleweshaji unasaidia uwezekano wa kuweka huduma zenye ukubwa mdogo, zenye uwezo wa kubadilika haraka kwenye ukingo ili kuchakata data ndani, kupunguza utegemezi wa wingu na kuboresha nyakati za majibu kwa programu zinazohitaji usahihi wa wakati.

6. Uelewa wa Msingi & Mtazamo wa Mchambuzi

Uelewa wa Msingi: Karatasi hii inatoa changamoto yenye nguvu, inayoungwa mkono na data, kwa hadithi za uwongo zinazosambaa katika mazungumzo ya microservices: kwamba usambazaji kwa asili hulemaza utendaji. Ugunduzi wake wa msingi—kwamba mzigo wa kuweka kontena sasa ni "duni sana"—ni mabadiliko makubwa. Inabadilisha mjadala wa ukubwa kutoka kwa hofu iliyolenga utendaji kuwa uchaguzi wa kimkakati wa kubuni unaolenga uwezo wa haraka wa shirika na usawazishaji wa kikoa. Hii inalingana na falsafa ya msingi ya MSA kama ilivyoelezwa na wavumbuzi kama Martin Fowler na viongozi wa mawazo kwenye Netflix, ambapo kichocheo ni uwezo wa kuwekwa kwa kujitegemea na uhuru wa timu, sio kasi ghafi.

Mtiririko wa Mantiki: Hoja inaendelea kwa uwazi: 1) Kubali wasiwasi wa kinadharia wa ucheleweshaji kutokana na kuongezeka kwa kuruka kwa mtandao. 2) Jaribu kwa majaribio kwa kutumia uigaji uliodhibitiwa wa mfumo wa ulimwengu halisi (uandikishaji chuo kikuu). 3) Wasilisha matokeo ya kushangaza—mzigo mdogo sana. 4) Toa maana kwa kikoa kinachokua kwa kasi (IoT). Mantiki ni sahihi, ingawa urahisi wa uigaji (kutoa maelezo ya hali ya mtandao, muundo wa serialization, au safu ya uratibu) ndio udhaifu wake mkuu.

Nguvu & Kasoro: Nguvu yake ni jaribio lake la wazi, lililolenga majaribio ambalo hukata kupitia imani potofu. Hutoa mahali pa kuanzia halisi kwa wasanifu wanaowasiwasi juu ya kugawanya kupita kiasi. Kasoro, iliyokubaliwa na waandishi, ni ufupisho wa uigaji. Ucheleweshaji wa ulimwengu halisi huathiriwa na mambo kama msongamano wa mtandao, wakala wa mitandao ya huduma (kama ilivyojadiliwa kwenye nyaraka za Istio), ukubwa wa mzigo, na gharama za serialization/deserialization (k.m., Protocol Buffers dhidi ya JSON). Matokeo ya "duni" ya utafiti yanawezekana kushikilia katika mitandao iliyoboreshwa, yenye ucheleweshaji mdogo wa kituo cha data lakini hayawezi kubadilishwa moja kwa moja kwa mitandao ya eneo pana au isiyoaminika ya ukingoni inayojulikana katika IoT.

Uelewa Unaoweza Kutekelezwa: Kwa CTO na wasanifu, karatasi hii ni leseni ya kukipa kipaumbele kubuni inayokokotolewa na kikoa kuliko uboreshaji wa mapema wa utendaji. Acha kuogopa huduma zenye ukubwa mdogo. Badala yake, wekeza kwenye jukwaa la msingi: kiongozi thabiti cha kontena (Kubernetes), mtandao wa huduma kwa ajili ya uangalizi na mawasiliano yenye nguvu, na serialization yenye ufanisi. Gharama halisi ya microservices sio ucheleweshaji; ni utata wa uendeshaji. Maana ya karatasi ni kwamba ukitatua tatizo la utata kwa uhandisi mzuri wa jukwaa, ushuru wa utendaji kwa kweli ni sifuri, na hivyo kukuruhusu kufaidika na faida za muda mrefu za umoduli. Kwa IoT, hii inamaanisha kubuni microservices za ukingoni kwa umoja wa kazi kwanza, ukiamini kwamba mifumo ya kisasa ya ukingoni inaweza kushughulikia usambazaji.

7. Maelezo ya Kiufundi & Mfano wa Hisabati

Jumla ya ucheleweshaji $L_{total}$ kwa mtiririko wa kazi unaojumuisha $n$ microservices inaweza kuigwa kama:

$L_{total} = \sum_{i=1}^{n} (P_i + S_i) + \sum_{j=1}^{m} N_j$

Ambapo:

  • $P_i$ = Muda wa usindikaji kwa huduma $i$.
  • $S_i$ = Muda wa Serialization/Deserialization kwa kiolesura cha huduma $i$.
  • $N_j$ = Ucheleweshaji wa mtandao kwa wito $j$ kati ya huduma (ambapo $m \ge n-1$).

Katika muundo wa kontena moja, $N_j \approx 0$ (wito ndani ya mchakato). Katika muundo wa kontena nyingi, $N_j$ ni chanya. Ugunduzi wa karatasi unapendekeza kwamba katika mazingira ya kisasa ya kontena, $\sum N_j$ imekuwa ndogo ikilinganishwa na $\sum (P_i + S_i)$ kwa kazi nyingi, na hivyo kufanya tofauti ya jumla kuwa duni. Kipengele muhimu ni ufanisi wa safu ya mtandao ya wakati wa utekelezaji wa kontena na matumizi ya mbinu nyepesi za RPC.

8. Mfumo wa Uchambuzi & Mfano wa Kesi

Mfumo: Matriki ya Uamuzi wa Ukubwa
Wakati wa kugawanya monolith au kubuni MSA mpya, tathmini kila huduma inayotaka kutumika kwenye mihimili miwili baada ya uelewa wa karatasi:

  1. Umoja wa Kazi & Mzunguko wa Mabadiliko: Je, seti ya shughuli hubadilika pamoja? (Umoja wa juu = mpaka mzuri wa huduma).
  2. Kiwango cha Mawasiliano Kinachotarajiwa: Huduma hii itahitaji kuwaita au kuitwa na wengine mara ngapi kwa usawa katika mtiririko wa kazi wa msingi?

Mfano wa Kesi: Malipo ya Biashara ya Mtandaoni (Hakuna Msimbo)
Fikiria monolith ya biashara ya mtandaoni. Hofu ya jadi inaweza kukusanya "Hifadhi," "Bei," na "Malipo" katika huduma moja yenye ukubwa mkubwa "Huduma ya Oda" ili kuepuka wito wa mtandao. Kwa kutumia uelewa wa karatasi na mfumo:

  • Huduma ya Hifadhi: Umoja wa juu (kiwango cha hisa, uhifadhi). Hubadilika mara chache na mantiki ya bei. Kiwango cha mawasiliano na malipo ni cha kati. → Huduma Ndogo Tofauti. Gharama duni ya mtandao inastahili kuongeza uwezo kwa kujitegemea wakati wa mauzo.
  • Injini ya Bei: Umoja wa juu (punguzo, promosheni). Hubadilika mara nyingi na kwa kujitegemea. Kiwango cha juu cha mawasiliano. → Inaweza kuanza kama sehemu ya huduma ya "Oda" lakini kugawanywa baadaye ikiwa mantiki itakuwa ngumu. Karatasi inapendekeza gharama ya kugawanya baadaye ni ndogo.
  • Huduma ya Malipo: Umoja wa juu sana, imedhibitiwa, hutumia lango la nje. Kiwango cha chini cha mawasiliano (wito mmoja kwa malipo). → Huduma Ndogo Tofauti Kabisa. Usalama na utengwa wa kufuata sheria huzidi hofu yoyote ndogo ya ucheleweshaji.

Uamuzi unasukumwa na mambo ya kikoa na shirika, sio hofu kubwa ya ucheleweshaji.

9. Matumizi ya Baadaye & Mwelekeo wa Utafiti

  • Marekebisho ya Ukubwa ya Kujitegemea: Mifumo ya baadaye inaweza kuunganisha au kugawanya microservices kwa wakati wa utekelezaji kulingana na vipimo vya ucheleweshaji vya wakati halisi na muundo wa kazi, dhana iliyochunguzwa katika utafiti wa "microservices zinazobadilika."
  • Mitandao ya Huduma Isiyoathiriwa na Quantum: Kadiri kompyuta za quantum zinavyokua, kulinda mawasiliano kati ya huduma kutakuwa muhimu sana. Utafiti wa kuunganisha usimbuaji wa baada ya quantum kwenye ndege za data za mtandao wa huduma ni mwelekeo muhimu wa baadaye.
  • Uratibu wa Uwekaji Unaokokotolewa na ML: Miundo ya kujifunza ya mashine inaweza kutabiri mahali bora (ukingoni dhidi ya wingu) na ukubwa kwa mabomba ya huduma ndogo za IoT kulingana na sifa za data, hali ya mtandao, na vikwazo vya nishati, na kuboresha kwa malengo magumu zaidi kuliko ucheleweshaji tu.
  • Microservices Bila Seva: Muunganiko wa MSA na kazi bila seva (FaaS). Ugunduzi wa "mzigo duni" unasaidia muundo wa FaaS wenye ukubwa mdogo, na kusukuma kuelekea usanifu unaokokotolewa na tukio ambapo kila kazi ni huduma ndogo yenye ukubwa mdogo sana.

10. Marejeo

  1. Fowler, M., & Lewis, J. (2014). Microservices. MartinFowler.com.
  2. Newman, S. (2015). Building Microservices. O'Reilly Media.
  3. Zhu, L., Bass, L., & Champlin-Scharff, G. (2016). DevOps and Its Practices. IEEE Software.
  4. Istio Documentation. (2023). Architecture. https://istio.io/latest/docs/ops/deployment/architecture/
  5. Richardson, C. (2018). Microservices Patterns. Manning Publications.
  6. Bala, K., et al. (2020). "Adaptive Microservice Scaling for Elastic Applications." IEEE Transactions on Cloud Computing.
  7. W3C Web Services Architecture. (2004). https://www.w3.org/TR/ws-arch/
  8. Shadija, D., Rezai, M., & Hill, R. (2017). Microservices: Granularity vs. Performance. In Proceedings of September (Preprint). ACM.