Kanuni 5 za Akili za Kawaida za Kuunda Programu za Asili za Wingu

Programu za "wingu asili" au "wingu" tu zimeundwa mahsusi kufanya kazi katika miundombinu ya wingu. Kwa kawaida hujengwa kama seti ya huduma ndogo zilizounganishwa kwa urahisi zilizofungwa kwenye vyombo, ambazo kwa upande wake hudhibitiwa na jukwaa la wingu. Maombi kama haya yanatayarishwa kwa kushindwa kwa chaguo-msingi, ambayo ina maana kwamba hufanya kazi kwa uaminifu na kwa kiwango kikubwa hata katika tukio la kushindwa kwa kiwango cha miundombinu. Upande mwingine wa sarafu ni seti za vizuizi (mikataba) ambavyo jukwaa la wingu huweka kwenye programu za kontena ili kuweza kuzisimamia kiotomatiki.

Kanuni 5 za Akili za Kawaida za Kuunda Programu za Asili za Wingu

Ingawa kufahamu kikamilifu hitaji na umuhimu wa kuhamia programu zinazotegemea wingu, mashirika mengi bado hayajui pa kuanzia. Katika chapisho hili, tutaangalia kanuni kadhaa ambazo, ikiwa zikifuatwa wakati wa kutengeneza programu zilizo na kontena, zitakuruhusu kutambua uwezo wa majukwaa ya wingu na kufikia utendakazi wa kuaminika na kuongeza matumizi hata katika tukio la kushindwa vibaya kwa miundombinu ya IT. kiwango. Lengo kuu la kanuni zilizoainishwa hapa ni kujifunza jinsi ya kuunda programu ambazo zinaweza kudhibitiwa kiotomatiki na mifumo ya wingu kama vile Kubernetes.

Kanuni za Kubuni Programu

Katika ulimwengu wa programu, kanuni hurejelea sheria za jumla ambazo lazima zifuatwe wakati wa kuunda programu. Wanaweza kutumika wakati wa kufanya kazi na lugha yoyote ya programu. Kila kanuni ina malengo yake, zana za kufikia ambazo kwa kawaida ni violezo na mazoea. Pia kuna idadi ya kanuni za msingi za kuunda programu ya ubora wa juu, ambayo wengine wote hutoka. Hapa kuna mifano ya kanuni za msingi:

  • KISS (Weka rahisi, wajinga) - usifanye magumu;
  • DRY (Usijirudie) - usijirudie;
  • YAGNI (Hutahitaji) - usiunde kitu ambacho hakihitajiki mara moja;
  • SoC Mgawanyiko wa wasiwasi - kushiriki majukumu.

Kama unaweza kuona, kanuni hizi haziweka sheria maalum, lakini ni za kitengo cha kinachojulikana kama mazingatio ya akili ya kawaida kulingana na uzoefu wa vitendo, ambao unashirikiwa na watengenezaji wengi na ambao hurejelea mara kwa mara.
Kwa kuongeza, kuna MANGO - Seti ya kanuni tano za kwanza za upangaji na muundo unaolenga kitu, iliyoundwa na Robert Martin. SOLID inajumuisha kanuni pana, zisizo wazi na zinazosaidiana ambazo—zinapotumiwa pamoja—husaidia kuunda mifumo bora ya programu na kuidumisha vyema kwa muda mrefu.

Kanuni za MANGO ni za uga wa OOP na zimeundwa katika lugha ya dhana na dhana kama vile madarasa, miingiliano na urithi. Kwa mfano, kanuni za maendeleo zinaweza pia kutengenezwa kwa matumizi ya wingu, kipengele cha msingi tu hapa hakitakuwa darasa, lakini chombo. Kwa kufuata kanuni hizi, unaweza kuunda programu zilizo na vyombo ambavyo vinatimiza vyema malengo na malengo ya mifumo ya wingu kama Kubernetes.

Vyombo vya asili vya wingu: mbinu ya Red Hat

Leo, karibu programu yoyote inaweza kufungwa kwa urahisi kwenye vyombo. Lakini ili programu ziweze kujiendesha kiotomatiki na kupangwa vizuri ndani ya jukwaa la wingu kama Kubernetes, juhudi za ziada zinahitajika.
Msingi wa mawazo yaliyoainishwa hapa chini ulikuwa mbinu Programu ya Factor kumi na mbili na kazi nyingine nyingi juu ya vipengele mbalimbali vya kujenga programu za wavuti, kutoka kwa usimamizi wa msimbo wa chanzo hadi mifano ya kuongeza. Kanuni zilizofafanuliwa zinatumika tu kwa uundaji wa programu zilizo na kontena ambazo zimejengwa juu ya huduma ndogo na iliyoundwa kwa majukwaa ya wingu kama vile Kubernetes. Kipengele cha msingi katika majadiliano yetu ni picha ya kontena, na muda wa utekelezaji wa kontena lengwa ni jukwaa la kuandaa chombo. Madhumuni ya kanuni zinazopendekezwa ni kuunda vyombo ambavyo kuratibu, kuongeza na ufuatiliaji vinaweza kuendeshwa kiotomatiki kwenye mifumo mingi ya ochestration. Kanuni zinawasilishwa bila mpangilio maalum.

Kanuni ya Hoja Moja (SCP)

Kanuni hii kwa njia nyingi inafanana na Kanuni ya Wajibu Mmoja. SRP), ambayo ni sehemu ya SOLID seti na inasema kwamba kila kitu lazima kiwe na jukumu moja, na jukumu hilo lazima lijumuishwe kabisa katika darasa. Hoja ya SRP ni kwamba kila jukumu ni sababu ya mabadiliko, na darasa lazima liwe na sababu moja tu ya mabadiliko.

Katika SCP, tunatumia neno "wasiwasi" badala ya neno "wajibu" ili kuonyesha kiwango cha juu cha uondoaji na madhumuni mapana ya chombo ikilinganishwa na darasa la OOP. Na ikiwa lengo la SRP ni kuwa na sababu moja tu ya mabadiliko, basi nyuma ya SCP ni hamu ya kupanua uwezo wa kutumia tena na kuchukua nafasi ya vyombo. Kwa kufuata SRP na kuunda chombo ambacho hutatua tatizo moja na kuifanya kwa njia kamili ya utendaji, unaongeza nafasi za kutumia tena picha hiyo ya kontena katika miktadha tofauti ya programu.

Kanuni ya SCP inasema kwamba kila chombo kinapaswa kutatua shida moja na kuifanya vizuri. Zaidi ya hayo, SCP katika ulimwengu wa kontena ni rahisi kufikia kuliko SRP katika ulimwengu wa OOP, kwa kuwa vyombo kawaida huendesha mchakato mmoja, na mara nyingi mchakato huu hutatua kazi moja.

Ikiwa huduma ndogo ya kontena lazima isuluhishe matatizo kadhaa mara moja, basi inaweza kugawanywa katika vyombo vya kazi moja na kuunganishwa ndani ya ganda moja (kitengo cha uwekaji wa jukwaa la chombo) kwa kutumia violezo vya kando na kontena ya init. Kwa kuongeza, SCP hurahisisha kubadilisha kontena la zamani (kama vile seva ya wavuti au wakala wa ujumbe) na mpya ambayo hutatua tatizo sawa lakini ina utendakazi uliopanuliwa au mizani bora zaidi.

Kanuni 5 za Akili za Kawaida za Kuunda Programu za Asili za Wingu

Kanuni ya Uangalifu wa Juu (HOP)

Wakati vyombo vinatumiwa kama njia ya umoja ya kufunga na kuendesha programu, programu zenyewe huchukuliwa kama kisanduku cheusi. Hata hivyo, ikiwa hizi ni vyombo vya wingu, basi lazima zitoe API maalum kwa wakati wa kukimbia ili kufuatilia afya ya vyombo na, ikiwa ni lazima, kuchukua hatua zinazofaa. Bila hii, haitawezekana kuunganisha otomatiki ya kusasisha vyombo na kudhibiti mzunguko wa maisha yao, ambayo, kwa upande wake, itazidisha utulivu na utumiaji wa mfumo wa programu.

Kanuni 5 za Akili za Kawaida za Kuunda Programu za Asili za Wingu
Kiutendaji, programu iliyo na kontena inapaswa, angalau, kuwa na API ya aina mbalimbali za ukaguzi wa afya: vipimo vya uhai na vipimo vya utayari. Ikiwa maombi yanadai kufanya zaidi, lazima itoe njia zingine za kufuatilia hali yake. Kwa mfano, kuweka matukio muhimu kupitia STDERR na STDOUT kwa ujumlishaji wa kumbukumbu kwa kutumia Fluentd, Logstash na zana zingine zinazofanana. Pamoja na kuunganishwa na ufuatiliaji na maktaba za ukusanyaji wa vipimo, kama vile OpenTracing, Prometheus, n.k.

Kwa ujumla, programu bado inaweza kuchukuliwa kama kisanduku cheusi, lakini ni lazima ipewe API zote ambazo jukwaa linahitaji ili kuifuatilia na kuidhibiti kwa njia bora zaidi.

Kanuni ya Ulinganifu wa Mzunguko wa Maisha (LCP)

LCP ni kinyume cha HOP. Ingawa HOP inasema kwamba chombo lazima kifichue API zilizosomwa kwenye jukwaa, LCP inahitaji programu iweze kukubali maelezo kutoka kwa jukwaa. Aidha, chombo lazima si tu kupokea matukio, lakini pia kukabiliana, kwa maneno mengine, kuguswa nao. Kwa hivyo jina la kanuni, ambayo inaweza kuzingatiwa kama hitaji la kutoa jukwaa na API za uandishi.

Kanuni 5 za Akili za Kawaida za Kuunda Programu za Asili za Wingu
Majukwaa yana aina tofauti za matukio ili kusaidia kudhibiti mzunguko wa maisha wa kontena. Lakini ni juu ya maombi yenyewe kuamua ni nani kati yao atambue na jinsi ya kuitikia.

Ni wazi kwamba matukio fulani ni muhimu zaidi kuliko mengine. Kwa mfano, ikiwa programu haivumilii mvurugo vyema, ni lazima ukubali mawimbi: kusitisha (SIGTERM) ujumbe na kuanzisha utaratibu wake wa kusitisha haraka iwezekanavyo ili kunasa mawimbi: kill (SIGKILL) ambayo huja baada ya SIGTERM.

Zaidi ya hayo, matukio kama vile PostStart na PreStop yanaweza kuwa muhimu kwa mzunguko wa maisha wa programu. Kwa mfano, baada ya kuzindua programu, inaweza kuhitaji muda wa kupasha moto kabla ya kujibu maombi. Au programu lazima iachie rasilimali kwa njia fulani maalum wakati wa kuzima.

Kanuni ya Kutobadilika kwa Picha (IIP)

Inakubalika kwa ujumla kuwa maombi yaliyowekwa kwenye vyombo yanapaswa kubaki bila kubadilika baada ya kujengwa, hata kama yanaendeshwa katika mazingira tofauti. Hii inalazimu hitaji la kuweka uhifadhi wa data nje wakati wa utekelezaji (kwa maneno mengine, kutumia zana za nje kwa hili) na kutegemea usanidi wa nje, maalum wa wakati wa kukimbia, badala ya kurekebisha au kuunda vyombo vya kipekee kwa kila mazingira. Baada ya mabadiliko yoyote kwenye programu, picha ya kontena lazima ijengwe upya na kutumwa kwa mazingira yote yaliyotumika. Kwa njia, wakati wa kusimamia mifumo ya IT, kanuni sawa hutumiwa, inayojulikana kama kanuni ya kutobadilika kwa seva na miundombinu.

Lengo la IIP ni kuzuia uundaji wa picha za kontena tofauti kwa mazingira tofauti ya wakati wa kukimbia na kutumia picha sawa kila mahali pamoja na usanidi unaofaa wa mazingira. Kufuatia kanuni hii hukuruhusu kutekeleza mazoea muhimu kama haya kutoka kwa mtazamo wa otomatiki wa mifumo ya wingu kama kurudisha nyuma na kusonga mbele kwa sasisho za programu.

Kanuni 5 za Akili za Kawaida za Kuunda Programu za Asili za Wingu

Kanuni ya Uondoaji wa Mchakato (PDP)

Moja ya sifa muhimu zaidi za chombo ni muda wake wa kudumu: mfano wa chombo ni rahisi kuunda na ni rahisi kuharibu, hivyo inaweza kubadilishwa kwa urahisi na tukio lingine wakati wowote. Kunaweza kuwa na sababu nyingi za uingizwaji kama huo: kutofaulu kwa jaribio la utumishi, kuongeza programu, kuhamisha kwa mwenyeji mwingine, uchovu wa rasilimali za jukwaa, au hali zingine.

Kanuni 5 za Akili za Kawaida za Kuunda Programu za Asili za Wingu
Kwa hivyo, maombi yaliyowekwa kwenye kontena lazima yadumishe hali yao kwa kutumia njia fulani za nje, au kutumia mifumo iliyosambazwa ya ndani bila kuhitajika kwa hili. Kwa kuongeza, programu lazima ianze haraka na kuzima haraka, na kuwa tayari kwa kushindwa kwa ghafla kwa mauti ya mauti.

Zoezi moja linalosaidia kutekeleza kanuni hii ni kuweka vyombo vidogo. Mazingira ya wingu yanaweza kuchagua kiotomatiki seva pangishi ili kuwasha mfano wa kontena, kwa hivyo kadiri kontena litakavyokuwa dogo, ndivyo litakavyoanza kwa haraka - litanakili kwa seva pangishi inayolengwa kwenye mtandao haraka zaidi.

Kanuni ya Kujitosheleza (S-CP)

Kwa mujibu wa kanuni hii, katika hatua ya kusanyiko, vipengele vyote muhimu vinajumuishwa kwenye chombo. Chombo kinapaswa kujengwa kwa kudhaniwa kuwa mfumo una kinu safi cha Linux pekee, kwa hivyo maktaba zote muhimu za ziada zinapaswa kuwekwa kwenye chombo chenyewe. Inapaswa pia kuwa na vitu kama vile muda wa utekelezaji wa lugha ya programu inayolingana, jukwaa la programu (ikihitajika), na vitegemezi vingine ambavyo vitahitajika wakati programu ya kontena inaendelea.

Kanuni 5 za Akili za Kawaida za Kuunda Programu za Asili za Wingu

Vighairi hufanywa kwa usanidi ambao hutofautiana kutoka kwa mazingira hadi mazingira na lazima itolewe wakati wa utekelezaji, kwa mfano kupitia Kubernetes ConfigMap.

Programu inaweza kujumuisha vipengee kadhaa vilivyo na kontena, kwa mfano, chombo tofauti cha DBMS ndani ya programu ya wavuti iliyo na kontena. Kulingana na kanuni ya S-CP, kontena hizi hazipaswi kuunganishwa kuwa moja, lakini zinapaswa kufanywa ili kontena la DBMS liwe na kila kitu muhimu kwa utendakazi wa hifadhidata, na kontena la programu ya wavuti lina kila kitu muhimu kwa uendeshaji wa wavuti. programu, seva ya wavuti sawa. Kwa hivyo, wakati wa utekelezaji kontena ya programu ya wavuti itategemea kontena ya DBMS na kuifikia inapohitajika.

Kanuni ya Ufungaji Wakati wa Kuendesha (RCP)

Kanuni ya S-CP inafafanua jinsi chombo kinapaswa kujengwa na picha ya binary inapaswa kuwa na nini. Lakini chombo sio tu "sanduku nyeusi" ambalo lina sifa moja tu - saizi ya faili. Wakati wa utekelezaji, chombo huchukua vipimo vingine: kiasi cha kumbukumbu iliyotumiwa, wakati wa CPU, na rasilimali nyingine za mfumo.

Kanuni 5 za Akili za Kawaida za Kuunda Programu za Asili za Wingu
Na hapa kanuni ya RCP inakuja kwa manufaa, kulingana na ambayo chombo lazima kipunguze mahitaji yake kwa rasilimali za mfumo na kuzihamisha kwenye jukwaa. Kwa wasifu wa rasilimali za kila kontena (kiasi cha CPU, kumbukumbu, mtandao, na rasilimali za diski inahitaji), jukwaa linaweza kutekeleza ratiba na kuongeza otomatiki, kudhibiti uwezo wa IT, na kudumisha viwango vya SLA vya makontena.

Mbali na kukidhi mahitaji ya rasilimali ya chombo, ni muhimu pia kwa maombi kutokwenda zaidi ya mipaka yake. Vinginevyo, uhaba wa rasilimali unapotokea, kuna uwezekano mkubwa wa jukwaa kuijumuisha kwenye orodha ya programu zinazohitaji kukatishwa au kuhamishwa.

Tunapozungumza juu ya kuwa wa kwanza, tunazungumza juu ya jinsi tunavyofanya kazi.
Hapo juu, tumeunda kanuni kadhaa za jumla ambazo ziliweka msingi wa mbinu wa kuunda programu za kontena za ubora wa juu kwa mazingira ya wingu.

Kumbuka kuwa pamoja na kanuni hizi za jumla, utahitaji pia mbinu za ziada za juu na mbinu za kufanya kazi na vyombo. Kwa kuongezea, tunayo mapendekezo mafupi machache ambayo ni mahususi zaidi na yanapaswa kutumika (au kutotumika) kulingana na hali:

Webinar kwenye toleo jipya la OpenShift Container Platform - 4
Juni 11 saa 11.00

Utajifunza nini:

  • Haibadiliki Red Hat Enterprise Linux CoreOS
  • Matundu ya huduma ya OpenShift
  • Mfumo wa Opereta
  • Mfumo wa Knative

Chanzo: mapenzi.com

Kuongeza maoni