3.14

Tazama kwa Kiingereza

3.14 Wapangaji wengi na usanifu wa SaaS

Muhtasari na msukumo

Wapangaji wengi ni mazoea ya kuendesha mfano mmoja wa programu yako ili uhudumie wateja wengi tofauti kwa wakati mmoja, ukiweka data na usanidi wa kila mteja tofauti kimantiki huku wakishiriki msimbo ule ule na, mara nyingi, miundombinu ile ile. Kila mteja ni mpangaji. Wazo hili moja ndilo injini ya kiuchumi ya programu kama huduma (SaaS), mfano ambapo unauza ufikiaji wa programu inayoendesha badala ya nakala ya kusakinisha. Wapangaji elfu moja wanaposhiriki usambazaji mmoja, unapachika mara moja, unapanua mfumo mmoja, na gharama ya pembeni ya mteja anayefuata inakaribia sifuri. Ndiyo maana bidhaa ya wapangaji wengi iliyojengwa vizuri inaweza kuhudumia kampuni changa ya watu wawili na shirika kubwa la viti laki moja kutoka msimbo mmoja, na kwa nini mfano wa upangaji unaochagua huumba margin zako, msimamo wako wa usalama, na mzigo wako wa uendeshaji kwa miaka.

Kwa timu kubwa dau linakwenda zaidi ya gharama. Wapangaji wengi huweka sharti gumu katikati ya usanifu wako: mpangaji A hapaswi kamwe kuona data ya mpangaji B, kamwe, chini ya hitilafu, mbio, au usanidi mbaya wowote. Uvujaji mmoja wa kuvuka wapangaji unaweza kumaliza kampuni. Wakati huohuo, hoja nzima ya kushiriki ni ufanisi, kwa hiyo kila uamuzi wa usanifu uko kwenye wigo kati ya kutenga kwa nguvu (salama zaidi, ghali zaidi) na kushiriki kwa msongamano (nafuu zaidi, hatari zaidi). Kupata hili sawa ndio tofauti kati ya bidhaa inayopanuka kwa neema na ile inayokufilisi kwa miundombinu au kukufikisha kwenye vichwa vya habari. Sura hii inajengwa juu ya usanifu wa wingu (sura ya 3.11), inategemea sana usanifu wa data (sura ya 3.4) na usalama wa wingu (sura ya 4.3), na inaunganishwa na ukubwa na ustahimilivu (sura ya 3.5) na uhusishaji wa gharama (sura ya 9.4).

Mashirika makubwa na serikali huinua kiwango zaidi. Wanunuzi wa mashirika makubwa hujadiliana hakikisho za kimkataba za data, hudai kutengwa maalumu kwa ngazi yao, na hutarajia uwahamishe kati ya mazingira bila kukatika. Serikali huongeza sheria za makazi ya data, kutenganisha kunakoendeshwa na uainishaji, na sharti la mara kwa mara kwamba kila wakala awe mpangaji wake mwenyewe na mpaka wake wa ukaguzi. Maamuzi ya upangaji hapa si undani wa utekelezaji; ni ahadi unazotoa kwa kila mteja anayekuamini na data yake.

Kanuni kuu

  • Kutenga ni wigo, si swichi. Mifano ya silo, pool, na bridge hubadilisha ufanisi kwa utengano; chagua kwa kila ngazi na rasilimali, si mara moja kwa kila kitu.
  • Muktadha wa mpangaji ni mtakatifu. Kila ombi, hoja, mstari wa kumbukumbu, na kazi ya nyuma lazima ibebe kitambulisho cha mpangaji, na kila ufikiaji wa data lazima uwekewe wigo nacho.
  • Uvujaji wa kuvuka wapangaji ndio kushindwa kunakojalisha zaidi. Buni ili kichujio kimoja kinachokosekana kisiweze kufichua data ya mpangaji mwingine; ulinzi wa kina, si kifungu kimoja cha WHERE.
  • Majirani wenye kelele ni tatizo la usanifu. Bila mgawo na usawa, mpangaji mmoja mzito hudhoofisha kila mtu; panga kabla halijatokea.
  • Usanidi wa kila mpangaji hupanuka; msimbo wa kila mpangaji hapanuki. Kunja bidhaa kwa data na bendera, si kwa matawi.
  • Mzunguko wa maisha wa mpangaji ni kipengele cha bidhaa. Kupokea, kutayarisha, kuondoa, na kusafirisha data nje lazima viwe vya daraja la kwanza, vya kiotomatiki, na vinavyokaguliwa.
  • Huwezi kusimamia usichoweza kukihusisha. Uonekanaji na gharama lazima zigawanywe kwa mpangaji, la sivyo unaruka kipofu kwenye kutegemewa na margin.

Mapendekezo

Chagua mfano wa upangaji kwa kila ngazi, kando ya wigo wa kutenga-dhidi-ya-ufanisi

Mifano mitatu inaanzisha wigo. Katika mfano wa silo (maalumu), kila mpangaji anapata mlundikano wake uliotengwa: kokotoo tofauti, hifadhidata tofauti, wakati mwingine akaunti au mtandao tofauti. Kutenga ni imara zaidi na eneo la mlipuko la hitilafu ni mpangaji mmoja, lakini unalipia uwezo usiotumika kwa kila mteja na kuendesha nakala nyingi. Katika mfano wa pool (wa pamoja), wapangaji wote wanashiriki kokotoo na hifadhidata ileile, wakitenganishwa kwa mantiki na kitambulisho cha mpangaji tu. Ufanisi ni wa juu zaidi na gharama ya pembeni ya mpangaji iko karibu sifuri, lakini kutenga sasa kunategemea kabisa msimbo wako kuwa sahihi. Mfano wa bridge (mseto) huchanganya hivi viwili: kokotoo ya pamoja na hifadhidata kwa kila mpangaji, au pool ya pamoja kwa wapangaji wadogo na silo maalumu kwa wakubwa au wanaodhibitiwa.

Usichague mfano mmoja kwa bidhaa nzima. Jibu sahihi kwa kawaida ni bridge inayolingana na ngazi zako za bei. Weka mkia mrefu wa wapangaji wadogo kwenye pool ya pamoja yenye ufanisi ambapo uchumi wao unafanya kazi. Toa usambazaji maalumu au wa mpangaji mmoja kama ngazi ya premium kwa wateja wa mashirika makubwa watakaolipia kutenga na hakikisho za kimkataba. Andika uoanishaji kama rekodi ya uamuzi wa usanifu (sura ya 3.11), kwa sababu “wapangaji gani wanashiriki nini” ni dai ambalo timu zako za usalama, mauzo, na fedha zote zinalitegemea.

Gawanya data kwa makusudi, na ufanye wigo wa mpangaji usiwezekane kusahau

Data ndipo wapangaji wengi huishi au kufa, kwa hiyo chukulia uchaguzi wa kugawanya kama uamuzi wa msingi wa usanifu wa data (sura ya 3.4). Mikakati mitatu inalingana na mifano ya upangaji. Hifadhidata tofauti kwa kila mpangaji inatoa kutenga imara zaidi, nakala rudufu na kurejesha rahisi kwa kila mpangaji, na usafirishaji rahisi wa data nje, kwa gharama ya hifadhidata nyingi za kuendesha na uhamishaji wa muundo wa kusambaza. Muundo tofauti kwa kila mpangaji ndani ya hifadhidata ya pamoja ni njia ya kati: seva moja, utengano wa kimantiki, bado vitu vingi vya kuhamisha. Majedwali ya pamoja yenye ufunguo wa safu wima ya mpangaji, ambapo kila safu hubeba tenant_id, ndiyo yenye msongamano mkubwa zaidi na nafuu zaidi, na hatari zaidi, kwa sababu sasa hoja moja isiyo na kichujio chake cha mpangaji inavujisha data kuvuka wateja.

Ukishiriki majedwali, usitegemee wasanidi kukumbuka kichujio. Tekeleza wigo wa mpangaji katika safu isiyoweza kukwepwa: usalama wa kiwango cha safu wa hifadhidata unaoambatisha kiambishi cha lazima kwa kila hoja kulingana na mpangaji wa kikao, safu ya ORM au ufikiaji wa data inayoingiza kifungu cha mpangaji kiotomatiki, au yote mawili. Mkanda na kamba ni sahihi hapa. Wapangaji wanapokua, kugawanya kwa mpangaji kunakuwa kwa asili: weka makundi ya wapangaji kwenye vipande tofauti vya hifadhidata ili hakuna tukio moja linalobeba kila mtu, jambo ambalo pia linadhibiti eneo la mlipuko la kushindwa kwa kipande kimoja na linakuruhusu kuhamisha mpangaji mkubwa kwenye kipande chake bila kubadilisha mfano.

Sambaza muktadha wa mpangaji kila mahali, na ujilinde dhidi ya uvujaji wa kuvuka wapangaji kwa kina

Kitambulisho cha mpangaji lazima kisafiri na kila kitengo cha kazi. Kianzishe ukingoni, kwa kawaida kutoka kwa kikao kilichothibitishwa au kikoa kidogo, kithibitishe, na kikipitishe kupitia muktadha wa ombi, kila wito wa huduma ya chini ya mkondo, kila kikao cha hifadhidata, kila kazi iliyowekwa kwenye foleni, na kila mstari wa kumbukumbu na kipimo. Mapengo hatari ni yale yasiyo ya papo hapo: mfanyakazi wa nyuma anayechakata kazi bila kuanzisha upya muktadha wa mpangaji, kache iliyofunguliwa bila mpangaji, kishughulikiaji cha webhook kinachoamini kitambulisho cha mpangaji kutoka kwa mpigaji. Kila moja ni njia ya kuhudumia data ya mpangaji mmoja kwa mwingine.

Chukulia kutenga kwa kuvuka wapangaji kama sifa ya usalama yenye ulinzi wa kina, na ukabidhi undani kwa sura ya 4.3. Tumia kanuni ya upendeleo mdogo ili hata kijenzi kilichoathirika kiweze kufikia mpangaji tu inayemtendea. Kamwe usikubali kitambulisho cha mpangaji kutoka ingizo linalodhibitiwa na mteja kwa maamuzi ya uidhinishaji; kitokane na utambulisho uliothibitishwa. Weka majina ya nafasi kwa kache, viambishi vya hifadhi ya vitu, na faharasa za utafutaji kwa mpangaji ili mgongano wa funguo usiweze kuvuka mpaka. Kisha jaribu mpaka kwa makusudi: majaribio ya kiotomatiki yanayodai kwamba vitambulisho vya mpangaji A haviwezi kusoma rekodi za mpangaji B, na mazoezi ya mara kwa mara ya red-team yanayojaribu kutoka nje ya mpangaji. Uvujaji unaopatikana na safu yako ya majaribio ni hitilafu; unaopatikana na mteja ni mgogoro.

Dhibiti majirani wenye kelele kwa mgawo, vikomo vya kasi, na usawa

Wapangaji wanaposhiriki rasilimali, kilele cha mpangaji mmoja kinakuwa kukatika kwa kila mtu. Tatizo hili la jirani mwenye kelele si kesi ya pembeni; ni tabia chaguo-msingi ya pool ya pamoja chini ya mzigo. Libuni dhidi yake tangu mwanzo. Weka mgawo kwa kila mpangaji kwenye rasilimali zinazojalisha (maombi kwa sekunde, kazi za wakati mmoja, uhifadhi, gharama ya hoja) na uzitekeleze kwa kikomo cha kasi ukingoni na kwenye mipaka ya ndani ya gharama. Pendelea upangaji wa haki unaompa kila mpangaji sehemu badala ya foleni ya wa kwanza-kuja-wa-kwanza-kuhudumiwa inayomruhusu mpangaji mmoja kuwanyima wengine.

Linganisha utekelezaji na mfano wako wa upangaji. Katika pool ya pamoja, mgawo na usawa ndio ulinzi wa msingi, kwa hiyo wekeza ndani yao. Kwa mpangaji ambaye mzigo wake unazidi kweli kile ambacho kushiriki kwa haki kunaweza kufyonza, jibu mara nyingi ni kumpandisha nje ya pool kwenda bridge au silo, ambacho ni kipengele unachoweza kuuza badala ya kushindwa. Funga hili na kazi yako ya ukubwa na ustahimilivu (sura ya 3.5): kumwaga mzigo, vivunja mzunguko, na shinikizo la nyuma vyote vinahitaji kufahamu mpangaji ili kumwaga mzigo wa ziada wa mpangaji mmoja kulinde wengine badala ya kudhoofisha mfumo mzima.

Sanidi wapangaji kwa data, si matawi ya msimbo wako

Kila mteja atataka kitu tofauti kidogo: nembo yake, kanuni zake za mtiririko wa kazi, uunganishaji wake, uga usio nao. Njia inayopanuka ya kusema ndiyo ni usanidi wa kila mpangaji: bendera za vipengele, mipangilio, haki, na nukta za kuongeza ambazo ni data, zinazotathminiwa wakati wa kuendesha, na kushirikiwa na msimbo mmoja. Njia inayoharibu biashara ya SaaS ni msimbo wa kila mpangaji: tawi au nakala au kesi maalumu kwenye njia ya msimbo kwa mteja mkubwa. Kumi kati ya hizo na huna tena bidhaa, una bidhaa kumi zilizovaa koti la mvua, na kila badiliko lazima lijaribiwe mara kumi.

Chora mstari mgumu. Unda mihimili ya tofauti unayotaka kuiunga mkono kama usanidi wa daraja la kwanza, na uchukulie maombi nje ya mihimili hiyo kama ramani ya barabara ya bidhaa au hapana thabiti. Mteja anapohitaji ubinafsishaji wa kweli, mpe nukta za kuongeza (webhooks, API, programu-jalizi, nyanja maalum) zinazoendesha mantiki yake bila kutawanya yako. Hifadhi usambazaji maalumu kweli kwa ngazi ya premium ya mpangaji mmoja, ambapo kutenga ndiyo hoja na bei ya juu inagharamia gharama ya uendeshaji.

Fanya mzunguko wa maisha wa mpangaji uwe wa kiotomatiki, unaoonekana, na uliohusishwa na gharama

Kupokea mpangaji kunapaswa kuwa mtiririko wa huduma-binafsi, wa kiotomatiki: tayarisha kipande cha data cha mpangaji, jaza chaguo-msingi, weka haki, na uwe tayari kwa sekunde, si tiketi kwa timu ya uendeshaji. Kuondoa ni muhimu vilevile na ni rahisi kupuuza. Mpangaji anapoondoka, lazima uweze kusafirisha data yake kwa umbo linaloweza kutumika, kisha kuifuta kwa uthibitisho, kwa sababu mikataba na sheria ya faragha itahitaji vyote viwili. Buni usafirishaji wa data nje na kufuta siku ya kwanza; kuyarudisha kwenye muundo wa jedwali la pamoja ni chungu.

Weka vifaa vya kupima kwa kila kitu kwa kila mpangaji. Weka alama kwenye kumbukumbu, ufuatiliaji, na vipimo na kitambulisho cha mpangaji ili uweze kujibu “je, kukatika huku ni kwa wapangaji wote au mmoja?” na “mpangaji gani anaendesha gharama hii?” ndani ya sekunde. Husisha gharama ya miundombinu na wapangaji ili ujue margin yako halisi kwa kila mteja na uweze kuona mpangaji ambaye matumizi yake yanamfanya asiwe na faida kwa bei yake ya sasa (sura ya 9.4). Uonekanaji unaofahamu mpangaji na uhusishaji wa gharama hugeuza wapangaji wengi kutoka sanduku jeusi kuwa mfumo unaoweza kuuendesha na kuupangia bei kweli.

Mabadilishano: faida na hasara

Mfano wa upangajiFaidaHasara
Silo (mlundikano maalumu kwa kila mpangaji)Kutenga imara zaidi, eneo dogo zaidi la mlipuko, uzingatiaji na usafirishaji rahisi kwa kila mpangaji, hadithi rahisi ya jirani mwenye keleleGharama ya juu zaidi, uwezo usiotumika kwa kila mpangaji, nakala nyingi za kuendesha na kupachika
Pool (ya pamoja kikamilifu)Gharama ya pembeni ya chini zaidi, upakiaji wenye msongamano zaidi, mfumo mmoja wa kupanua na kusasishaKutenga kunategemea kabisa usahihi wa msimbo, hatari mbaya zaidi ya jirani mwenye kelele, usafirishaji na kufuta kwa kila mpangaji ngumu zaidi
Bridge (mseto, ya ngazi)Yenye ufanisi kwa wapangaji wadogo, kutenga maalumu kwa wakubwa, inalingana na beiMifano zaidi ya kujenga na kuendesha, njia ya kupandisha kati ya ngazi ya kudumisha
Hifadhidata ya pamoja, muundo wa pamoja (safu wima ya mpangaji)Uhifadhi wa bei nafuu zaidi, uhamishaji mmoja, uendeshaji rahisi zaidiKichujio kimoja kinachokosekana kinavujisha data; kinahitaji usalama wa kiwango cha safu kama kinga
Hifadhidata ya pamoja, muundo kwa kila mpangajiKutenga kimantiki, seva moja, usafirishaji wa wastaniVitu vingi vya muundo, uhamishaji husambaa, mipaka ya ukubwa kwa kila seva
Hifadhidata kwa kila mpangajiKutenga imara kwa data, nakala rudufu na usafirishaji kwa kila mpangajiHifadhidata nyingi, uhamishaji husambaa, gharama ya juu zaidi

Mvutano wa msingi ni kutenga dhidi ya ufanisi, na unapitia kila safu. Kushiriki kwa msongamano zaidi huzidisha margin zako na kuzidisha hatari yako kwa mwendo mmoja; kutenga kwa nguvu zaidi hununua usalama na urahisi kwa gharama halisi kwa kila mpangaji. Suluhisho si kuchagua ncha moja bali kuweka kila mpangaji kwa makusudi kando ya wigo, kwa kawaida kwa ngazi: pakia wapangaji wadogo kwa msongamano pale uchumi unadai na hatari imefungwa, tenga wakubwa na wanaodhibitiwa pale watalipia na eneo la mlipuko lazima liwe dogo. Kisha fanya ncha ya msongamano kuwa salama kwa wigo wa mpangaji unaotekelezwa, na ncha ya kutengwa kuwa nafuu kwa uotomatishaji, ili hakuna ncha inayoumiza kama toleo la kipuuzi lingefanya.

Maswali ya kujadili na timu yako

  1. Kichujio kimoja cha wigo wa mpangaji kikikosekana kesho, mteja angeona data ya mteja mwingine? Hili ndilo swali linalotenganisha bidhaa ya wapangaji wengi inayoweza kutetewa na ajali inayosubiri kutokea. Jaribio la uaminifu ni kufuatilia njia halisi ya kusoma na kuuliza nini kinatekeleza mpaka wa mpangaji: je, ni kifungu kimoja cha WHERE kilichoandikwa na msanidi, au kuna kinga kama usalama wa kiwango cha safu wa hifadhidata au safu ya ufikiaji wa data inayoingiza wigo kwa vyovyote? Leta njia zenu halisi za hoja, kazi zenu za nyuma, na kache zenu, kwa sababu uvujaji karibu daima hujificha kwenye kona isiyo ya papo hapo ambayo hakuna aliyeiwekea wigo. Pia leta matokeo ya jaribio linalotumia kikao cha mpangaji A kwa makusudi kuomba rekodi za mpangaji B na kudai kukataliwa. Mpaka ukitegemea umakini wa binadamu peke yake, una uvunjaji fiche, na suluhisho (ulinzi wa kina) linapaswa kuruka hadi juu ya backlog.

  2. Kila ngazi ya wateja inatumia mfano gani wa upangaji na ugawaji wa data kweli, na je, unalingana na kile tulichowauzia? Timu nyingi huteleza kwenye mfano mmoja kwa chaguo-msingi, kisha kugundua bei yao na usanifu wao vinatofautiana: wateja wa mashirika makubwa waliahidiwa kutenga ambako pool ya pamoja haitoi, au wateja wadogo wameketi kwenye mlundikano maalumu ghali unaoharibu margin. Oanisha kila ngazi na mfano wake halisi (silo, pool, au bridge; hifadhidata kwa kila mpangaji, muundo, au jedwali la pamoja) na uuweke kando ya hakikisho za kimkataba za data ambazo timu yako ya mauzo inatoa. Pale zinapotofautiana, una hatari ya uzingatiaji au tatizo la gharama, na yote mawili yanastahili kufichuliwa kabla mteja au mkaguzi hajayapata. Ushahidi wa kuleta ni uoanishaji wa ngazi-hadi-mfano, gharama kwa kila mpangaji, na lugha halisi katika mikataba yenu ya mashirika makubwa.

  3. Mzigo wa mpangaji mkubwa unapopanda, nani mwingine anaihisi, na mpango wetu ni upi? Katika pool ya pamoja jibu mara nyingi ni “kila mtu,” na timu mara nyingi hazijui hili hadi tukio liliweke wazi. Pitia kinachotokea mpangaji wenu mkubwa zaidi anapoendesha uingizaji wa wingi au kupata kilele cha trafiki: je, mgawo wa kila mpangaji na upangaji wa haki unauzuia, je, kumwaga mzigo kunalinda majirani, au mfumo mzima unadhoofika pamoja? Leta data ya mzigo na hadithi ya tukio lenu la mwisho la jirani mwenye kelele, kwa sababu mpangaji anayewaumiza kwa kawaida ni yule unayeweza kumtaja. Jibu linapaswa kuumba uwekezaji wenu wa kikomo cha kasi na mkakati wa ngazi, kwa kuwa suluhisho safi zaidi kwa mpangaji anayezidi kushiriki kwa haki ni kumpandisha kwenye usambazaji wa bridge au maalumu unaoweza kumtoza.

  4. Mpangaji akiondoka kesho, tunaweza kumkabidhi usafirishaji safi na kuthibitisha tulifuta kila alama, au tungehangaika? Kuondoa ni sehemu ya mzunguko wa maisha wa mpangaji ambayo timu hupuuza hadi kifungu cha kutoka kwenye mkataba au ombi la sheria ya faragha lilazimishe suala, na kufikia hapo muundo wa pamoja hufanya kutoa na kufuta kuwa chungu. Kwa timu kubwa hatari inajumlika, kwa sababu data ya mpangaji imetawanyika kuvuka hifadhidata ya msingi, kache, hifadhi ya vitu, faharasa za utafutaji, nakala rudufu, na mabomba ya uchanganuzi, na kila moja lazima isafirishwe kwa umbo linaloweza kutumika kisha kufutwa kwa uthibitisho. Mazingatio yanayoshindana ni halisi: majedwali ya pamoja yenye msongamano yanayokupa uhifadhi wa bei nafuu ndiyo hasa yanayofanya kutoa na kufuta kwa kila mpangaji kuwa vigumu zaidi, kwa hiyo ufanisi ulionunua kwenye safu ya uhifadhi unaweza kuulipia tena wakati wa kutoka. Leta mwongozo hai wa kuondoa kwa mpangaji halisi, orodha ya kila hifadhi inayoshikilia data ya mpangaji, na ushahidi ambao ungeonyesha kwamba kufuta kulitokea kweli. Kwa wapangaji wa mashirika makubwa na serikali, usafirishaji lazima uthibitishwe na kufuta kuthibitishika ili kutimiza sheria za rekodi za umma na faragha, kwa hiyo chukulia njia ya kufuta inayokosekana kama kasoro ya uzingatiaji ya kufunga sasa, si kipengele cha kuongeza mteja anapoondoka.

  5. Kesi ngapi maalumu za wateja binafsi tayari zinaishi kwenye njia yetu ya msimbo, na mstari tunaokataa kuvuka uko wapi? Matawi ya msimbo kwa kila mpangaji ni njia ya kimya ambayo biashara ya SaaS huacha kuwa bidhaa moja na kuwa bidhaa nyingi zenye jina moja, ambapo kila badiliko lazima lijaribiwe dhidi ya kila kesi maalumu na kasi inaoza unapoongeza wateja. Mvutano ni kwamba mteja mkubwa mwenye haja halisi ni mgumu kukataa, na tawi kwenye njia ya msimbo linahisi haraka kuliko kujenga uso wa usanidi, kwa hiyo kesi maalumu hujilimbikiza ubaguzi mmoja wa busara kwa wakati. Leta orodha ya uaminifu: tafuta msimbo kwa majina ya wateja na matawi mahususi ya ngazi, yahesabu, na ukadirie gharama ya ziada ya majaribio na mapitio ambayo kila moja inaweka kwenye badiliko lisilohusiana. Mjadala unapaswa kuchora mstari mgumu kati ya tofauti unazounda kama usanidi wa daraja la kwanza (bendera, haki, nukta za kuongeza) na kazi maalumu kweli unayoihifadhi kwa ngazi ya premium ya mpangaji mmoja ambapo bei ya juu inagharamia gharama ya uendeshaji. Kwa wanunuzi wa mashirika makubwa wanaodai ubinafsishaji wa kina, jibu la kudumu ni nukta za kuongeza zinazoendesha mantiki yao bila kutawanya yako, ili utawala na ukaguzi vibaki vinavyoshikika kuvuka meli.

  6. Tunaweza kusema, kwa kila mpangaji, tukio linamgharimu nani nini, na ni wateja gani hawana faida kwa bei yao ya sasa? Wapangaji wengi hugeuka sanduku jeusi mara kumbukumbu, ufuatiliaji, vipimo, na gharama ya miundombinu vinapokosa kipimo cha mpangaji, kwa sababu basi huwezi kujibu kama kukatika ni kwa mpangaji mmoja au meli nzima, na huwezi kumtaja mpangaji ambaye matumizi yake yanamfanya hasara kwa bei ya mkataba wake. Kwa timu kubwa uhusishaji huu ndio unaotenganisha kuendesha jukwaa na kulibahatisha, na unaumba moja kwa moja jibu la kutegemewa na bei. Mazingatio yanavuta dhidi ya gharama ya vifaa vya kupima na wingi wa vitambulisho: kuweka alama kwa kila kitu kwa mpangaji si bure, na vipimo vya wingi wa juu vinabana bajeti yako ya uonekanaji, kwa hiyo unachagua kwa makusudi nini cha kugawanya kwa kila mpangaji na nini cha kuchukulia sampuli. Leta ufikiaji wenu wa sasa wa kuweka alama za mpangaji, hoja halisi inayohusisha matumizi ya wingu na mpangaji mmoja, na jedwali la margin lingewaruhusu kumtaja mteja wenu asiye na faida zaidi. Katika mazingira ya mashirika makubwa na serikali, gharama kwa kila mpangaji na uonekanaji unaowekewa wigo wa ukaguzi pia vinalisha malipo ya mgawanyo, upangaji wa uwezo, na mpaka wa ukaguzi ambao kila wakala au kitengo cha biashara kinastahili, kwa hiyo kipimo cha mpangaji ni sharti la utawala kama ilivyo la uendeshaji.

Mtazamo wa sekta

Kampuni changa. Safirisha pool moja ya pamoja tangu siku ya kwanza na uweke umakini wako adimu wa kihandisi kwenye kitu kimoja kisichoweza kurudishwa: wigo wa mpangaji unaotekelezwa. Postgres inayosimamiwa yenye usalama wa kiwango cha safu, tenant_id kwenye kila jedwali, na muktadha wa mpangaji unaotatuliwa ukingoni hukununulia msongamano salama bila timu ya uendeshaji. Usijenge ngazi za silo wala miundombinu ya kila mpangaji kwa dhana; ongeza ngazi ya bridge tu pale mtarajiwa wa shirika kubwa anayelipa anapofanya kutenga kustahili gharama yake.

Biashara ndogo. Bila mtaalamu wa jukwaa na bajeti finyu, tegemea kile wingu na mfumo wako wa kazi tayari vinatoa badala ya kujenga mashine ya kutenga mwenyewe. Hifadhidata zinazosimamiwa zenye usalama wa kiwango cha safu, jukwaa-kama-huduma linaloweka wigo wa wapangaji kwa ajili yako, na mtoa uthibitishaji anayebeba utambulisho wa mpangaji kwa kawaida ni nafuu na salama kuliko mbadala zilizotengenezwa kwa mkono. Chukulia wapangaji wengi kama uamuzi wa kununua-dhidi-ya-kujenga kila safu, na uhifadhi kazi maalumu kwa majaribio ya mpaka wa mpangaji ambayo wewe tu unaweza kuandika.

Biashara kubwa. Tatizo ni utawala wa jalada kuvuka timu nyingi: usanifu wa bridge wa ngazi, rekodi ya uamuzi wa usanifu inayooanisha kila ngazi na mfano wake wa upangaji na ugawaji wa data, na uhusishaji wa gharama kwa kila mpangaji ili fedha ijue margin halisi ya kila akaunti. Sawazisha uenezaji wa muktadha wa mpangaji na kinga ya wigo ili hakuna timu inayovivumbua upya, weka bajeti ya kutenga na uotomatishaji wa mzunguko wa maisha waziwazi, na uhifadhi njia inayosaidiwa, iliyopangiwa bei ya kuhamisha mpangaji kati ya ngazi bila kukatika anapokua au mahitaji yake ya uzingatiaji yanapobadilika.

Serikali. Ununuzi, makazi ya data, na uwajibikaji wa umma huendesha mfano. Funga data ya kila wakala kwenye kanda za ndani ya nchi kwa sera-kama-msimbo, tenga mizigo nyeti au ya uainishaji wa juu kwenye akaunti tofauti zenye mpaka wao wa ukaguzi, na umpe kila wakala uunganishaji wake wa utambulisho, kanuni za uhifadhi, na njia ya ukaguzi ili wakaguzi wa wakala mmoja wasione shughuli za mwingine kamwe. Kuondoa lazima kuzalishe usafirishaji uliothibitishwa na kufuta kunakothibitishika ili kutimiza sheria za rekodi za umma na faragha, na hakikisho za upangaji unazosaini lazima ziwe zile ambazo usanifu wako unaweza kuzitimiza kweli.

Mifano

Kampuni changa. Kampuni changa ya watu kumi na watano inajenga bidhaa yake kama pool moja ya pamoja tangu siku ya kwanza na iko sahihi. Wapangaji wote wanashiriki hifadhidata moja ya Postgres inayosimamiwa yenye tenant_id kwenye kila jedwali, usalama wa kiwango cha safu unatekeleza kiambishi cha mpangaji kwenye hifadhidata ili kichujio kilichosahaulika kisiweze kuvujisha, na programu inatatua mpangaji kutoka kikoa kidogo ukingoni na kuupitisha kupitia kila ombi na kazi ya nyuma. Kupokea ni huduma-binafsi: usajili mpya unatayarisha safu ya mpangaji wake, kujaza chaguo-msingi, na kuwa hai ndani ya sekunde. Wahandisi wawili wanaendesha jukwaa zima kwa sababu kuna mfumo mmoja wa kuendesha. Mtarajiwa wao wa kwanza halisi wa shirika kubwa anapodai hifadhidata maalumu na hakikisho la kimkataba la kutenga, wanaongeza ngazi ya bridge: msimbo ule ule, lakini mpangaji huyu anapata hifadhidata yake kwenye kipande chake, inayouzwa kwa bei inayogharamia gharama.

Biashara kubwa. Muuzaji wa SaaS anayehudumia taasisi kubwa za kifedha anaendesha usanifu wa bridge wa ngazi. Maelfu ya wateja wadogo na wa kati wanaishi kwenye pool za kikanda za pamoja, zilizogawanywa kwa mpangaji, na mgawo na upangaji wa haki ukiweka majirani wenye kelele chini ya udhibiti. Wateja wa benki wa ngazi ya juu wanapata usambazaji wa mpangaji mmoja kwenye akaunti za wingu zilizotengwa, wenye hifadhidata maalumu, funguo za usimbaji fiche kwa kila mpangaji, na hakikisho za kimkataba za makazi ya data na kutenga zilizoandikwa kwenye makubaliano makuu. Uwezo wa jukwaa unahamisha mpangaji kati ya ngazi bila kukatika anapokua au mahitaji yake ya uzingatiaji yanapobadilika. Gharama ya kila mpangaji inahusishwa kupitia kuweka alama ili fedha ijue margin halisi ya kila akaunti, na uonekanaji ulioandikwa na mpangaji unamruhusu mhandisi wa zamu kusema ndani ya sekunde kama tahadhari ni mpangaji mmoja au meli nzima.

Serikali. Mtoa jukwaa la kitaifa anawahifadhi mashirika mengi ya serikali kama wapangaji tofauti na anachukulia kutenga kama sharti la kisheria, si mapendeleo. Sheria ya makazi ya data inafunga data ya kila wakala kwenye kanda za ndani ya nchi, inayotekelezwa na sera-kama-msimbo inayozuia rasilimali yoyote katika kanda isiyoruhusiwa (sura ya 3.11). Uainishaji unaendesha mfano: mashirika yanayoshughulikia nyenzo nyeti yanapata usambazaji uliotengwa kikamilifu kwenye akaunti tofauti zenye mpaka wao wa ukaguzi, wakati mizigo ya uainishaji wa chini inashiriki pool inayotawaliwa. Kila wakala ni mpangaji wake wenyewe wenye uunganishaji wake wa utambulisho, kanuni zake za uhifadhi na usafirishaji, na njia ya ukaguzi iliyowekewa wigo wa mpaka wake, kwa hiyo wakaguzi wa wakala mmoja hawaoni shughuli za mwingine kamwe. Kuondoa kunazalisha usafirishaji wa data uliothibitishwa na kufuta kunakothibitishika, kwa sababu rekodi zinakabiliwa na sheria za rekodi za umma na faragha.

Kesi ya biashara: sababu, ROI, na TCO

Kesi kuu ya biashara kwa wapangaji wengi ni margin. Mfano wa mpangaji mmoja, ambapo unasambaza nakala mpya kwa kila mteja, unamaanisha miundombinu na gharama ya uendeshaji hukua takriban kwa mstari na idadi ya wateja, na wahandisi wako hutumia siku zao kupachika nakala nyingi. Mfano wa pamoja wa wapangaji wengi huvunja kiungo hicho: unapachika mara moja, unapanua mfumo mmoja, na kupakia wateja kwa msongamano wa kutosha kwamba gharama ya pembeni ya mpangaji anayefuata inakaribia sifuri. Hiyo ndiyo inayoruhusu biashara ya SaaS kukuza mapato kwa kasi zaidi sana kuliko gharama, na kwa nini wawekezaji na bodi huchukulia usanifu safi wa wapangaji wengi kama kiashiria cha kampuni inayopanuka.

Malipo yanaonekana mahali pa tatu: kiegemeo cha uendeshaji (timu moja inaendesha meli nzima), utoaji wa haraka zaidi (marekebisho yanasafirishwa kwa kila mpangaji mara moja, kwa hiyo kasi haioi unapoongeza wateja), na uchaguzi wa bei (mpango wa pamoja kwa mkia mrefu na mpango wa premium uliotengwa kwa mashirika makubwa, vyote kutoka msimbo mmoja). Weka haya dhidi ya gharama unazopaswa kufadhili kwa uaminifu: uhandisi wa kujenga kutenga kunakotekelezwa kwa wapangaji, mgawo, uotomatishaji wa mzunguko wa maisha, na uonekanaji wa kila mpangaji, pamoja na nidhamu ya kuweka mpaka ukiwa mzima. Gharama ya kukosea haina usawa na kali, kwa sababu uvunjaji mmoja wa data wa kuvuka wapangaji unaweza kuchochea adhabu za udhibiti, kuondoka kwa wingi kwa wateja, na uharibifu wa sifa unaozidi miundombinu uliyookoa kwa kushiriki. Weka kesi kwa uongozi kama margin na uwezo wa kupanuka upande wa juu na hatari ya kuwepo upande wa chini. Funga makubaliano ya kiwango cha huduma na hakikisho za kimkataba za data kwa mfano wa upangaji unaoweza kuutoa kweli, kwa sababu ahadi ambayo usanifu wako hauwezi kuitimiza ni dhima, si mauzo.

Mifumo mibaya na mitego

  • Wigo wa mpangaji kwa desturi. Kutegemea wasanidi kukumbuka kichujio cha mpangaji kwenye kila hoja, bila kinga ya kiwango cha hifadhidata au safu ya ufikiaji wa data; kosa moja ni uvunjaji.
  • Kuamini kitambulisho cha mpangaji kinachotolewa na mteja. Kukubali mpangaji kutoka ingizo la ombi kwa uidhinishaji badala ya kuutokana na utambulisho uliothibitishwa, jambo linalomruhusu mpigaji kuomba data ya mwingine.
  • Kazi za nyuma zisizo na wigo. Kazi, kache, webhooks, na usafirishaji unaopoteza muktadha wa mpangaji kwa sababu mtu aliweka wigo kwenye njia ya ombi la usawazishaji tu.
  • Matawi ya msimbo kwa kila mpangaji. Kufanya kesi maalumu kwa mteja mkubwa kwenye njia ya msimbo hadi mnadumisha bidhaa nyingi tofauti chini ya jina moja na kila badiliko linagharimu mara kumi zaidi.
  • Hakuna ulinzi dhidi ya jirani mwenye kelele. Kuendesha pool ya pamoja bila mgawo wa kila mpangaji wala usawa, kwa hiyo mpangaji wa kwanza kupanda juu anaangusha kila mtu.
  • Kuondoa kama wazo la baadaye. Kujenga bila usafirishaji wa data nje na kufuta kunakothibitishika, kisha kushindwa kifungu cha kutoka cha mteja au ombi la sheria ya faragha kwa sababu muundo wa pamoja unafanya kutoa kuwa chungu.
  • Kuruka kipofu kwa kila mpangaji. Kumbukumbu, vipimo, na gharama bila kipimo cha mpangaji, kwa hiyo huwezi kusema tukio ni la nani wala mpangaji gani hana faida.

Kielelezo cha ukomavu

  • Ngazi ya 1, Kuanzisha: Wapangaji wengi umeboreshwa papo hapo na ni wa kuitikia. Utengano wa wapangaji unategemea vichujio vilivyoandikwa kwa mkono bila kinga, mfano ni wa ukubwa mmoja kwa wote, hakuna mgawo, kupokea ni kwa mkono, na kumbukumbu na gharama hazina kipimo cha mpangaji. Timu inajifunza kuhusu jirani mwenye kelele na uvujaji uliokaribia kutokea kutoka kwenye matukio.
  • Ngazi ya 2, Kuendeleza: Mazoea ya msingi yanaonekana lakini hayana uthabiti kuvuka timu. Mfano wa upangaji umechaguliwa na muktadha wa mpangaji unasambazwa kupitia njia kuu ya ombi, kinga ya kiwango cha hifadhidata au ya ufikiaji wa data inatekeleza wigo kwenye majedwali ya msingi, na mgawo wa msingi wa kila mpangaji upo. Kupokea kunaotomatishwa kwa sehemu na kumbukumbu zinabeba kitambulisho cha mpangaji, lakini njia za nyuma, usafirishaji, na uhusishaji wa gharama hutofautiana kutoka huduma hadi huduma na hazijaandikwa popote.
  • Ngazi ya 3, Kusawazisha: Mbinu ya upangaji imeandikwa na kutekelezwa shirika zima. Upangaji wa ngazi unaoanishwa na bei, pool ya pamoja kwa wapangaji wadogo na usambazaji uliotengwa kwa wa mashirika makubwa na wanaodhibitiwa, wigo wa mpangaji unatekelezwa kwa kina na kujaribiwa kwa makusudi, mgawo na upangaji wa haki vinadhibiti majirani wenye kelele, mzunguko wa maisha wa mpangaji ukijumuisha usafirishaji na kufuta kunakothibitishika unaotomatishwa, na uonekanaji na gharama vinagawanywa kwa kila mpangaji. Kila timu inafuata kiwango kilekile cha upangaji badala ya chake.
  • Ngazi ya 4, Kusimamia: Eneo la upangaji linapimwa na kudhibitiwa dhidi ya vipimo vya msingi. Kutenga kwa kila mpangaji, usawa, ucheleweshaji, na gharama vinafuatiliwa kama vipimo vyenye malengo yaliyokubaliwa: ufikiaji wa majaribio ya kuvuka wapangaji, viwango vya ukiukaji wa mgawo na matukio ya jirani mwenye kelele, muda wa kupokea na kuondoa, na margin ya kila mpangaji vinaripotiwa dhidi ya vipimo vya msingi, na maamuzi ya kumpandisha mpangaji kati ya ngazi au kubadilisha bei ya asiye na faida yanafanywa kwa ushahidi huo badala ya hadithi. Ulinganifu wa makazi na uainishaji unafuatiliwa mfululizo, na kuteleza kutoka kiwango kunachochea jibu lililoandikwa.
  • Ngazi ya 5, Kuratibu: Upangaji unaboreshwa kila wakati na kuunganishwa kuvuka shirika. Mipaka ya kuvuka wapangaji hutumika katika mazoezi ya kawaida ya red-team, wapangaji wanahama kati ya ngazi bila kukatika wanapokua au mahitaji yao ya uzingatiaji yanapobadilika, margin ya kila mpangaji inalisha bei na upangaji wa uwezo, na kanuni za makazi na uainishaji zinatekelezwa kwa sera badala ya mapitio. Mfano unajirekebisha mchanganyiko wa wateja na picha ya udhibiti inapohama, na mafunzo yanalisha bidhaa, usalama, na fedha kama mzunguko mmoja.

Mawazo ya kujadili

  1. Kila ngazi ya wateja wenu iko wapi kwenye wigo wa kutenga-dhidi-ya-ufanisi leo, na je, ngazi yoyote iko kwenye mfano usio sahihi kwa hakikisho mlizouza au margin mnayohitaji?
  2. Ikiwa mngelazimika kuthibitisha kwa mkaguzi kwamba mpangaji A hawezi kufikia data ya mpangaji B, ushahidi gani mngeweza kuzalisha sasa hivi, na kiasi gani cha hicho ni cha kiotomatiki dhidi ya kinachodaiwa?
  3. Ni njia zipi zenu zisizo za papo hapo (kazi, kache, webhooks, usafirishaji, faharasa za utafutaji) zinazoanzisha upya muktadha wa mpangaji, na zipi zinaurithi tu au kumwamini mpigaji?
  4. Mpangaji anapozidi kushiriki kwa haki, mna njia inayosaidiwa, iliyopangiwa bei ya kupandisha kwenda usambazaji wa bridge au maalumu, au jibu linaishia kuwa tukio?
  5. Mnaweza kuhusisha gharama ya miundombinu na wapangaji binafsi vya kutosha kumtaja mteja wenu asiye na faida zaidi, na je, hilo lingebadilisha jinsi mnavyopanga bei?
  6. Kwa mpangaji wa serikali au anayedhibitiwa, mnaweza kutekeleza makazi ya data na kutenga kunakoendeshwa na uainishaji kwa sera, na kuondoa kwa usafirishaji uliothibitishwa na kufuta kunakothibitishika?

Mambo muhimu ya kukumbuka

  • Wapangaji wengi, mfano mmoja ukihudumia wapangaji wengi, ndiyo injini ya kiuchumi ya SaaS: huendesha margin zako, na huweka kutenga kwa kuvuka wapangaji katikati ya usanifu wako.
  • Chukulia kutenga dhidi ya ufanisi kama wigo na uuweke kwa ngazi: pakia wapangaji wadogo kwenye pool ya pamoja yenye ufanisi, tenga wakubwa na wanaodhibitiwa kwenye usambazaji wa bridge au silo watakaolipia.
  • Kamwe usiweke wigo wa mpangaji kwenye kichujio kilichoandikwa kwa mkono; kitekeleze kwa kina kwa usalama wa kiwango cha safu au safu ya ufikiaji wa data, na ujaribu mpaka kwa makusudi.
  • Sambaza muktadha wa mpangaji kupitia kila ombi, kazi, kache, na kumbukumbu, na ulinde njia zisizo za papo hapo ambapo uvujaji hujificha.
  • Dhibiti majirani wenye kelele kwa mgawo wa kila mpangaji, vikomo vya kasi, na upangaji wa haki, na uwapandishe wapangaji wanaozidi pool badala ya kuwaacha waidhoofishe.
  • Kunja bidhaa kwa usanidi wa kila mpangaji, si msimbo wa kila mpangaji, na ufanye mzunguko wa maisha wa mpangaji na uonekanaji na uhusishaji wa gharama kwa kila mpangaji kuwa wa daraja la kwanza.

Marejeo na usomaji zaidi

  • Tom Kwok, Thao Nguyen, and Linh Lam, A Software as a Service with Multi-tenancy Support for an Electronic Contract Management Application (IEEE International Conference on Services Computing)
  • Frederick Chong and Gianpaolo Carraro, Architecture Strategies for Catching the Long Tail (Microsoft)
  • Amazon Web Services, SaaS Lens, AWS Well-Architected Framework and SaaS Tenant Isolation Strategies
  • Microsoft, Multitenant SaaS architecture and patterns (Azure Architecture Center)
  • Google Cloud, Architecture for Multi-tenant SaaS Applications
  • Cor-Paul Bezemer and Andy Zaidman, Multi-Tenant SaaS Applications: Maintenance Dream or Nightmare? (Proceedings of the Joint ERCIM Workshop on Software Evolution)
  • The Open Web Application Security Project, OWASP Application Security Verification Standard (access-control and multi-tenancy requirements)
  • Martin Kleppmann, Designing Data-Intensive Applications (partitioning, sharding, and data isolation)