Sveiki visiem! Mums ir lieliskas ziÅas, jÅ«nijÄ OTUS kursu atsÄk
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.
Å Ä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.
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.
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.
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Ä.
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.
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.
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.
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
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Ä.
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.
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 (
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.
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 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.
IzkliedÄtÄ reÄ£istrÄÅ”anas mehÄnisma izmantoÅ”ana ļauj mums sekot lÄ«dzi nobrauktajam ceļam un darbam ar ziÅojumapmaiÅu
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Ä.
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.
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,
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.
Avots: www.habr.com