Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana

Sveiki visiem! Mums ir lieliskas ziņas, jūnijā OTUS kursu atsāk "Programmatūras arhitekts", saistībā ar kuru tradicionāli dalāmies ar jums noderīgā materiālā.

Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana

Ja esat saskāries ar visu Å”o mikropakalpojumu stāstu bez jebkāda konteksta, jums tiks piedots, ka domājat, ka tas ir nedaudz dÄ«vaini. Lietojumprogrammas sadalÄ«Å”ana fragmentos, kas savienoti ar tÄ«klu, noteikti nozÄ«mē sarežģītu kļūdu pielaides režīmu pievienoÅ”anu iegÅ«tajai sadalÄ«tajai sistēmai.

Lai gan Ŕī pieeja ietver sadalÄ«Å”anu daudzos neatkarÄ«gos pakalpojumos, gala mērÄ·is ir daudz vairāk nekā tikai Å”o pakalpojumu palaiÅ”ana dažādās iekārtās. Mēs Å”eit runājam par mijiedarbÄ«bu ar ārpasauli, kas arÄ« tiek izplatÄ«ta savā bÅ«tÄ«bā. Ne tehniskā, bet gan ekosistēmas izpratnē, kas sastāv no daudziem cilvēkiem, komandām, programmām, un katrai no Ŕīm daļām tā vai citādi ir jādara savs darbs.

Piemēram, uzņēmumi ir sadalÄ«tu sistēmu kopums, kas kopā veicina kāda mērÄ·a sasniegÅ”anu. Mēs esam ignorējuÅ”i Å”o faktu gadu desmitiem ilgi, cenÅ”oties panākt apvienoÅ”anu ar FTP pārsÅ«tÄ«Å”anu vai uzņēmumu integrācijas rÄ«kiem, vienlaikus koncentrējoties uz saviem atseviŔķiem mērÄ·iem. Taču lÄ«dz ar pakalpojumu parādÄ«Å”anos viss ir mainÄ«jies. Pakalpojumi ir palÄ«dzējuÅ”i mums paskatÄ«ties ārpus apvārŔņa un ieraudzÄ«t savstarpēji atkarÄ«gu programmu pasauli, kas darbojas kopā. Taču, lai veiksmÄ«gi strādātu, ir jāatpazÄ«st un jāprojektē divas principiāli atŔķirÄ«gas pasaules: ārējā pasaule, kurā dzÄ«vojam daudzu citu pakalpojumu ekosistēmā, un mÅ«su personÄ«gā, iekŔējā pasaule, kurā valda vieni.

Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana

Šāda izkliedēta pasaule atŔķiras no tās, kurā esam uzauguÅ”i un pieraduÅ”i. Tradicionālās monolÄ«tās arhitektÅ«ras veidoÅ”anas principi neiztur kritiku. Tāpēc Å”o sistēmu pareiza izveide ir vairāk nekā lieliskas tāfeles diagrammas vai lieliska koncepcijas pierādÄ«juma izveide. Ideja ir tāda, ka Ŕāda sistēma veiksmÄ«gi darbosies ilgu laiku. Par laimi, pakalpojumi ir bijuÅ”i jau ilgu laiku, lai gan tie izskatās savādāk. SOA nodarbÄ«bas joprojām aktuāli, pat papildināti ar Docker, Kubernetes un nedaudz noplucis hipsterbārdu.

Tāpēc Å”odien mēs apskatÄ«sim, kā noteikumi ir mainÄ«juÅ”ies, kāpēc mums ir jāpārdomā mÅ«su pieeja pakalpojumiem un datiem, ko tie nodod viens otram, un kāpēc mums bÅ«s nepiecieÅ”ams pavisam cits rÄ«ku komplekts.

IekapsulÄ“Å”ana ne vienmēr bÅ«s jÅ«su draugs

Mikropakalpojumi var darboties neatkarÄ«gi viens no otra. TieÅ”i Å”is Ä«paÅ”ums viņiem pieŔķir vislielāko vērtÄ«bu. Å is pats Ä«paÅ”ums ļauj pakalpojumiem mērogot un augt. Ne tik daudz mērogoÅ”anas ziņā lÄ«dz kvadriljoniem lietotāju vai datu petabaitiem (lai gan tie var palÄ«dzēt arÄ« Å”eit), bet gan mērogoÅ”anas ziņā, ņemot vērā cilvēku skaitu, komandām un organizācijām nepārtraukti augot.

Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana

Tomēr neatkarÄ«ba ir abpusēji griezÄ«gs zobens. Tas ir, pats pakalpojums var viegli un dabiski griezties. Bet, ja funkcija tiek ieviesta pakalpojumā, kurā ir jāiesaista cits pakalpojums, mums ir jāveic izmaiņas abos pakalpojumos gandrÄ«z vienlaikus. MonolÄ«tā tas ir viegli izdarāms, vienkārÅ”i veiciet izmaiņas un nosÅ«tiet to izlaiÅ”anai, bet neatkarÄ«gu pakalpojumu sinhronizācijas gadÄ«jumā bÅ«s vairāk problēmu. Koordinācija starp komandām un izlaiÅ”anas cikliem iznÄ«cina elastÄ«bu.

Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana

Standarta pieejas ietvaros viņi vienkārÅ”i cenÅ”as izvairÄ«ties no kaitinoŔām visaptveroŔām izmaiņām, skaidri sadalot funkcionalitāti starp pakalpojumiem. Å eit labs piemērs var bÅ«t vienas pierakstÄ«Å”anās pakalpojums. Tam ir precÄ«zi noteikta loma, kas to atŔķir no citiem pakalpojumiem. Å Ä« skaidrā noŔķirÅ”ana nozÄ«mē, ka pasaulē, kurā strauji mainās prasÄ«bas apkārtējiem pakalpojumiem, SSO, visticamāk, nemainÄ«sies. Tas pastāv stingri ierobežotā kontekstā.

Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana

Problēma ir tā, ka reālajā pasaulē biznesa pakalpojumi nevar visu laiku saglabāt tādu paÅ”u tÄ«ru lomu nodalÄ«Å”anu. Piemēram, tie paÅ”i biznesa pakalpojumi vairāk darbojas ar datiem, kas nāk no citiem lÄ«dzÄ«giem pakalpojumiem. Ja esat tieÅ”saistes mazumtirgotājs, pasÅ«tÄ«jumu plÅ«sma, produktu katalogs vai lietotāja informācija kļūs par prasÄ«bu daudziem jÅ«su pakalpojumiem. Katram pakalpojumam bÅ«s nepiecieÅ”ama piekļuve Å”iem datiem, lai tie darbotos.

Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana
Lielākā daļa biznesa pakalpojumu izmanto vienu un to paÅ”u datu plÅ«smu, tāpēc to darbs vienmēr ir saistÄ«ts.

Tādējādi mēs nonākam pie svarÄ«ga jautājuma, par kuru ir vērts runāt. Lai gan pakalpojumi labi darbojas infrastruktÅ«ras komponentiem, kas lielākoties darbojas izolēti, lielākā daļa biznesa pakalpojumu galu galā ir daudz cieŔāk savstarpēji saistÄ«ti.

Datu dihotomija

Uz pakalpojumiem orientētas pieejas jau var pastāvēt, taču joprojām ir maz informācijas par to, kā apmainīties ar lielu datu apjomu starp pakalpojumiem.

Galvenā problēma ir tā, ka dati un pakalpojumi nav atdalāmi. No vienas puses, iekapsulÄ“Å”ana mudina slēpt datus, lai pakalpojumus varētu atdalÄ«t vienu no otra un veicināt to izaugsmi un turpmākās izmaiņas. No otras puses, mums ir jāspēj brÄ«vi sadalÄ«t un iekarot koplietotos datus, tāpat kā jebkuru citu. Runa ir par iespēju nekavējoties sākt strādāt tikpat brÄ«vi kā jebkurā citā informācijas sistēmā.

Tomēr informācijas sistēmām ar iekapsulÄ“Å”anu ir maz sakara. PatiesÄ«bā tas ir pat otrādi. Datu bāzes dara visu iespējamo, lai nodroÅ”inātu piekļuvi datiem, ko tās glabā. Tiem ir jaudÄ«gs deklaratÄ«vs interfeiss, kas ļauj modificēt datus, kā vēlaties. Šāda funkcionalitāte ir svarÄ«ga sākotnējās izpētes posmā, bet ne, lai pārvaldÄ«tu arvien pieaugoŔā pakalpojuma sarežģītÄ«bu.

Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana

Un Å”eit rodas dilemma. Pretruna. Dihotomija. Galu galā informācijas sistēmas ir paredzētas datu nodroÅ”ināŔanai, bet pakalpojumi ir slēpÅ”anās.

Å ie divi spēki ir fundamentāli. Tie ir pamatā lielai daļai mÅ«su darba, pastāvÄ«gi sacenÅ”oties par pārākumu mÅ«su veidotajās sistēmās.

Pakalpojumu sistēmām augot un attÄ«stoties, mēs redzam dažādas datu dihotomijas ietekmes izpausmes. Vai nu pakalpojuma saskarne pieaugs, lai nodroÅ”inātu arvien vairāk funkcionalitātes un sāks izskatÄ«ties pēc ļoti iedomātas paÅ”māju datu bāzes, vai arÄ« mēs bÅ«sim neapmierināti un ieviesÄ«sim kādu veidu, kā izgÅ«t vai pārvietot visas datu kopas lielapjomā no pakalpojuma uz pakalpojumu.

Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana

Savukārt, izveidojot kaut ko, kas izskatās pēc izdomātas mājas brÅ«vÄ“Å”anas datu bāzes, radÄ«sies daudz problēmu. Mēs neiedziļināsimies detaļās par to, kas ir bÄ«stams koplietota datu bāze, pieņemsim tikai, ka tas ir ievērojams, dārgs inženierijas un ekspluatācijas izmaksas grÅ«tÄ«bas uzņēmumam, kas mēģina to izmantot.

Vēl ļaunāk, datu apjomi palielina problēmas ar pakalpojumu robežām. Jo biežāk dati atrodas pakalpojuma iekÅ”ienē, jo sarežģītāka kļūs saskarne un grÅ«tāk bÅ«s apvienot datu kopas, kas nāk no dažādiem pakalpojumiem.

AlternatÄ«vai pieejai visu datu kopu iegÅ«Å”anai un pārvietoÅ”anai ir arÄ« savas problēmas. IzplatÄ«ta pieeja Å”im jautājumam, Ŕķiet, ir vienkārÅ”i izgÅ«t un saglabāt visu datu kopu un pēc tam to uzglabāt lokāli katrā patērētajā pakalpojumā.

Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana

Problēma ir tā, ka dažādi pakalpojumi atŔķirÄ«gi interpretē datus, ko tie patērē. Å ie dati vienmēr ir pie rokas. Tie tiek modificēti un apstrādāti lokāli. Diezgan drÄ«z viņiem vairs nav nekāda sakara ar avota datiem.

Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana
Jo vairāk maināmas kopijas, jo vairāk laika gaitā mainīsies dati.

Vēl sliktāk, Ŕādus datus retrospektÄ«vi ir grÅ«ti labot (MDM Å”eit tas patieŔām noder.) Faktiski dažas sarežģītas tehnoloÄ£iju problēmas, ar kurām saskaras uzņēmumi, izriet no neviendabÄ«giem datiem, kas vairojas no vienas lietojumprogrammas uz otru.

Lai rastu risinājumu Å”ai izplatÄ«tajai datu problēmai, jums jādomā citādi. Tiem jākļūst par pirmās klases objektiem mÅ«su veidotajās arhitektÅ«rās. Pat Helland sauc Ŕādus datus par "ārējiem", un tā ir ļoti svarÄ«ga funkcija. Mums ir nepiecieÅ”ama iekapsulÄ“Å”ana, lai mēs neatklātu pakalpojuma iekŔējās iezÄ«mes, taču mums ir jāatvieglo pakalpojumu piekļuve koplietotajiem datiem, lai tie varētu pareizi veikt savu darbu.

Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana

Problēma ir tā, ka Å”odien nav aktuāla neviena pieeja, jo ne pakalpojumu saskarnes, ne ziņojumapmaiņa, ne Shared Database nepiedāvā labu risinājumu darbam ar ārējiem datiem. Pakalpojumu saskarnes nav piemērotas jebkura mēroga datu apmaiņai. Ziņojumapmaiņa pārvieto datus, bet nesaglabā to vēsturi, tāpēc dati laika gaitā tiek bojāti. Koplietojamās datu bāzes ir pārāk koncentrētas uz vienu punktu, kas kavē progresu. Mēs neizbēgami iestrēgsim datu atteices ciklā:

Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana
Datu atteices cikls

Plūsmas: decentralizēta pieeja datiem un pakalpojumiem

Ideālā gadījumā mums ir jāmaina veids, kā pakalpojumi darbojas ar koplietotiem datiem. Šobrīd jebkura pieeja ieskrienas jau pieminētajā divkosībā, jo nav tādu burvju putekļu, ko varētu dāsni uzkaisīt un likt pazust. Tomēr mēs varam pārdomāt problēmu un nonākt pie kompromisa.

Å is kompromiss nozÄ«mē zināmu centralizācijas pakāpi. Mēs varam izmantot izplatÄ«tās reÄ£istrÄ“Å”anas mehānisma priekÅ”rocÄ«bas, jo tas nodroÅ”ina uzticamas, mērogojamas straumes. Tagad mēs vēlamies, lai pakalpojumi varētu pievienoties un darboties Å”ajos kopÄ«gotajos pavedienos, taču mēs vēlamies izvairÄ«ties no sarežģītiem centralizētiem Dieva pakalpojumiem, kas veic Å”o apstrādi. Tāpēc labākais risinājums ir straumÄ“Å”anas apstrādi iestrādāt katrā patērētāju pakalpojumā. Tas ļauj pakalpojumiem apvienot datu kopas no dažādiem avotiem un strādāt ar tām vajadzÄ«gajā veidā.

Viens no veidiem, kā panākt Å”o pieeju, ir straumÄ“Å”anas platformas izmantoÅ”ana. Ir daudz iespēju, taču Å”odien mēs apsvērsim Kafku, jo tās Stateful Stream Processing izmantoÅ”ana ļauj efektÄ«vi atrisināt iesniegto problēmu.

Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana

Izkliedētā reÄ£istrÄ“Å”anas mehānisma izmantoÅ”ana ļauj mums sekot lÄ«dzi nobrauktajam ceļam un darbam ar ziņojumapmaiņu notikumu virzÄ«ta arhitektÅ«ra. Tiek uzskatÄ«ts, ka Ŕī pieeja nodroÅ”ina labāku mērogoÅ”anu un atdalÄ«Å”anu nekā pieprasÄ«juma-atbildes mehānisms, jo tā nodroÅ”ina plÅ«smas kontroli saņēmējam, nevis sÅ«tÄ«tājam. Tomēr par visu Å”ajā dzÄ«vē ir jāmaksā, un Å”eit jums ir nepiecieÅ”ams brokeris. Bet lielām sistēmām Å”is kompromiss ir tā vērts (ko nevar teikt par jÅ«su vidējām tÄ«mekļa lietojumprogrammām).

Ja par izplatÄ«tu reÄ£istrÄ“Å”anu ir atbildÄ«gs brokeris, nevis tradicionālā ziņojumapmaiņas sistēma, varat izmantot papildu funkcijas. Transports var lineāri mērogot gandrÄ«z tikpat labi kā izplatÄ«ta failu sistēma. Datus var glabāt žurnālos ilgu laiku, tāpēc mēs iegÅ«stam ne tikai ziņojumapmaiņu, bet arÄ« informācijas krātuvi. Mērogojama krātuve, nebaidoties no mainÄ«ga koplietoÅ”anas stāvokļa.

Pēc tam varat izmantot statusa straumes apstrādes mehānismu, lai saviem patērētajiem pakalpojumiem pievienotu deklaratÄ«vus datu bāzes rÄ«kus. Å Ä« ir ļoti svarÄ«ga doma. Kamēr dati tiek glabāti koplietotās straumēs, kurām var piekļūt visi pakalpojumi, pakalpojuma veiktā apkopoÅ”ana un apstrāde ir privāta. Tie ir izolēti stingri ierobežotā kontekstā.

Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana
AtbrÄ«vojieties no datu dihotomijas, sadalot nemainÄ«go stāvokļa plÅ«smu. Pēc tam pievienojiet Å”o funkcionalitāti katram pakalpojumam, izmantojot statusful Stream Processing.

Tādējādi, ja jūsu dienestam būs jāstrādā ar pasūtījumiem, preču katalogu, noliktavu, tam būs pilna piekļuve: tikai jūs izlemsiet, kādus datus apvienot, kur tos apstrādāt un kā tiem laika gaitā vajadzētu mainīties. Neskatoties uz to, ka dati tiek koplietoti, darbs ar tiem ir pilnībā decentralizēts. Tas tiek ražots katrā pakalpojumā, pasaulē, kurā viss notiek saskaņā ar jūsu noteikumiem.

Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana
KopÄ«gojiet datus, neapdraudot to integritāti. Katrā pakalpojumā, kam tā ir nepiecieÅ”ama, iekapsulējiet funkciju, nevis avotu.

Tāpēc gadās, ka dati ir jāpārvieto masveidā. Dažreiz pakalpojumam ir nepiecieÅ”ama vietējā vēsturiskā datu kopa izvēlētajā datu bāzes dzinējā. ViltÄ«ba ir tāda, ka var garantēt, ka nepiecieÅ”amÄ«bas gadÄ«jumā kopiju var atjaunot no avota, sazinoties ar izplatÄ«to reÄ£istrÄ“Å”anas mehānismu. Kafkas savienotāji to lieliski paveic.

Tātad Ŕodien apspriestajai pieejai ir vairākas priekŔrocības:

  • Dati tiek izmantoti koplietojamo straumju veidā, ko var ilgstoÅ”i glabāt žurnālos, un mehānisms darbam ar koplietotajiem datiem ir iestrādāts katrā atseviŔķā kontekstā, kas ļauj pakalpojumiem strādāt viegli un ātri. Tādā veidā var lÄ«dzsvarot datu dihotomiju.
  • Datus, kas nāk no dažādiem pakalpojumiem, var viegli apvienot kopās. Tas vienkārÅ”o mijiedarbÄ«bu ar koplietotajiem datiem un novērÅ” nepiecieÅ”amÄ«bu datu bāzē uzturēt lokālās datu kopas.
  • Statusa straumes apstrāde tikai saglabā datus keÅ”atmiņā, un parastie žurnāli joprojām ir patiesÄ«bas avots, tāpēc datu bojājuma problēma laika gaitā nav tik aktuāla.
  • Pakalpojumu pamatā ir dati, kas nozÄ«mē, ka, neskatoties uz pastāvÄ«go datu apjoma pieaugumu, pakalpojumi joprojām var ātri reaģēt uz biznesa notikumiem.
  • MērogojamÄ«bas problēmas attiecas uz brokeri, nevis uz pakalpojumiem. Tas ievērojami samazina rakstÄ«Å”anas pakalpojumu sarežģītÄ«bu, jo nav jādomā par mērogojamÄ«bu.
  • Lai pievienotu jaunus pakalpojumus, nav jāmaina vecie, tāpēc jaunu pakalpojumu pievienoÅ”ana kļūst vienkārŔāka.

Kā redzat, tas ir vairāk nekā tikai ATPÅŖTA. Esam saņēmuÅ”i rÄ«ku komplektu, kas ļauj strādāt ar koplietotiem datiem decentralizētā veidā.

Å odienas rakstā nav atklāti visi aspekti. Mums joprojām ir jāizdomā, kā lÄ«dzsvarot pieprasÄ«juma-atbildes paradigmu un notikumu virzÄ«to paradigmu. Bet ar to tiksim galā nākamreiz. Ir tēmas, kuras jums ir jāiepazÄ«st labāk, piemēram, kāpēc Stateful Stream Processing ir tik laba. Par to mēs runāsim treÅ”ajā rakstā. Un ir arÄ« citas spēcÄ«gas konstrukcijas, kuras mēs varam izmantot, ja Ä·eramies pie tām, piemēram, TieÅ”i Apstrādes vienreiz. Tas ir spēļu mainÄ«tājs izplatÄ«tajām biznesa sistēmām, jo ā€‹ā€‹ā€‹ā€‹tas nodroÅ”ina darÄ«jumu garantijas XA mērogojamā formā. Tas tiks apspriests ceturtajā rakstā. Visbeidzot, mums bÅ«s jāpārskata Å”o principu Ä«stenoÅ”anas detaļas.

Datu dihotomija: datu un pakalpojumu attiecību pārdomāŔana

Bet pagaidām atcerieties to: datu dihotomija ir spēks, ar kuru saskaramies, veidojot biznesa pakalpojumus. Un mums tas ir jāatceras. ViltÄ«ba ir pagriezt visu uz galvas un sākt koplietotos datus uzskatÄ«t par pirmās klases objektiem. Stāvokļa straumes apstrāde nodroÅ”ina unikālu kompromisu. Tas izvairās no centralizētiem "Dieva komponentiem", kas kavē progresu. Turklāt tas nodroÅ”ina datu straumÄ“Å”anas cauruļvadu veiklÄ«bu, mērogojamÄ«bu un noturÄ«bu un pievieno tos katram pakalpojumam. Tāpēc mēs varam koncentrēties uz vispārējo apziņas plÅ«smu, kurai jebkurÅ” pakalpojums var izveidot savienojumu un strādāt ar saviem datiem. Tas padara pakalpojumus mērogojamākus, maināmākus un autonomākus. Tāpēc tie ne tikai labi izskatÄ«sies uz tāfelēm un hipotēžu pārbaudē, bet arÄ« darbosies un attÄ«stÄ«sies gadu desmitiem.

Uzziniet vairāk par kursu.

Avots: www.habr.com

Pievieno komentāru