Å Ä« ir otrÄ daļa rakstu sÄrijai par analÄ«tiskajÄm sistÄmÄm (saite uz 1. daļu).
MÅ«sdienÄs vairs nav Å”aubu, ka rÅ«pÄ«ga datu apstrÄde un rezultÄtu interpretÄcija var palÄ«dzÄt gandrÄ«z jebkura veida uzÅÄmÄjdarbÄ«bai. Å ajÄ sakarÄ analÄ«tiskÄs sistÄmas arvien vairÄk tiek noslogotas ar parametriem, un lietojumprogrammÄs pieaug trigeru un lietotÄju notikumu skaits.
Å Ä« iemesla dÄļ uzÅÄmumi sniedz saviem analÄ«tiÄ·iem arvien vairÄk neapstrÄdÄtas informÄcijas, lai tos analizÄtu un pÄrvÄrstu saprÄtÄ«gos lÄmumos. AnalÄ«tiskÄs sistÄmas nozÄ«mi uzÅÄmumam nevajadzÄtu novÄrtÄt par zemu, un paÅ”ai sistÄmai ir jÄbÅ«t uzticamai un stabilai.
Klientu analītiķi
Klientu analÄ«ze ir pakalpojums, ko uzÅÄmums savieno ar savu vietni vai lietojumprogrammu, izmantojot oficiÄlo SDK, integrÄ savÄ kodu bÄzÄ un atlasa notikumu aktivizÄtÄjus. Å ai pieejai ir acÄ«mredzams negatÄ«vs aspekts: visi savÄktie dati var netikt apstrÄdÄti tieÅ”i tÄ, kÄ jÅ«s vÄlÄtos, jo jebkura jÅ«su izvÄlÄtÄ pakalpojuma ierobežojumi. PiemÄram, vienÄ sistÄmÄ nebÅ«s viegli palaist MapReduce uzdevumus, citÄ nevarÄs palaist savu modeli. VÄl viens trÅ«kums bÅ«s regulÄrais (iespaidÄ«gais) rÄÄ·ins par pakalpojumiem.
TirgÅ« ir daudz klientu analÄ«tikas risinÄjumu, taÄu agri vai vÄlu analÄ«tiÄ·i saskaras ar faktu, ka nav neviena universÄlÄ pakalpojuma, kas bÅ«tu piemÄrots katram uzdevumam (kamÄr visu Å”o pakalpojumu cenas visu laiku aug). Å ÄdÄ situÄcijÄ uzÅÄmumi bieži nolemj izveidot savu analÄ«tikas sistÄmu ar visiem nepiecieÅ”amajiem pielÄgotajiem iestatÄ«jumiem un iespÄjÄm.
Serveru analītiķi
Servera puses analÄ«ze ir pakalpojums, ko var izvietot uzÅÄmumÄ tÄ serveros un (parasti) ar saviem centieniem. Å ajÄ modelÄ« visi lietotÄju notikumi tiek glabÄti iekÅ”Äjos serveros, ļaujot izstrÄdÄtÄjiem izmÄÄ£inÄt dažÄdas uzglabÄÅ”anas datu bÄzes un izvÄlÄties ÄrtÄko arhitektÅ«ru. Un pat tad, ja dažiem uzdevumiem joprojÄm vÄlaties izmantot treÅ”Äs puses klientu analÄ«zi, tas joprojÄm bÅ«s iespÄjams.
Servera puses analÄ«zi var izvietot divos veidos. PirmkÄrt: izvÄlieties dažas atvÄrtÄ pirmkoda utilÄ«tas, izvietojiet tÄs savÄs iekÄrtÄs un izstrÄdÄjiet biznesa loÄ£iku.
Plusi MÄ«nusi
JÅ«s varat pielÄgot visu, ko vÄlaties
Tas bieži vien ir ļoti sarežģīti un prasa atseviŔķus izstrÄdÄtÄjus
OtrkÄrt: izmantojiet SaaS pakalpojumus (Amazon, Google, Azure), nevis izvietojiet tos pats. Par SaaS sÄ«kÄk runÄsim treÅ”ajÄ daļÄ.
Plusi MÄ«nusi
Pie vidÄjiem apjomiem tas var bÅ«t lÄtÄks, bet ar lielu izaugsmi tas joprojÄm kļūs pÄrÄk dÄrgs
NebÅ«s iespÄjams kontrolÄt visus parametrus
AdministrÄÅ”ana pilnÄ«bÄ tiek nodota pakalpojumu sniedzÄja pleciem
Ne vienmÄr ir zinÄms, kas ir pakalpojuma iekÅ”ienÄ (var nebÅ«t vajadzÄ«gs)
KÄ apkopot servera analÄ«zi
Ja mÄs vÄlamies atteikties no klientu analÄ«tikas izmantoÅ”anas un izveidot savu, vispirms mums ir jÄpÄrdomÄ jaunÄs sistÄmas arhitektÅ«ra. TÄlÄk soli pa solim pastÄstÄ«Å”u, kas jÄÅem vÄrÄ, kÄpÄc katrs solis ir vajadzÄ«gs un kÄdus rÄ«kus varat izmantot.
1. Datu saÅemÅ”ana
TÄpat kÄ klientu analÄ«tikas gadÄ«jumÄ, uzÅÄmuma analÄ«tiÄ·i vispirms izvÄlas notikumu veidus, kurus viÅi vÄlas izpÄtÄ«t nÄkotnÄ, un apkopo tos sarakstÄ. Parasti Å”ie notikumi notiek noteiktÄ secÄ«bÄ, ko sauc par "notikumu modeli".
TÄlÄk iedomÄjieties, ka mobilajai lietojumprogrammai (vietnei) ir regulÄri lietotÄji (ierÄ«ces) un daudzi serveri. Lai droÅ”i pÄrsÅ«tÄ«tu notikumus no ierÄ«cÄm uz serveriem, ir nepiecieÅ”ams starpslÄnis. AtkarÄ«bÄ no arhitektÅ«ras var bÅ«t vairÄkas dažÄdas notikumu rindas. Apache Kafka -Å o krodziÅu/apakÅ”punktu rinda, kas tiek izmantota kÄ notikumu apkopoÅ”anas rinda.
SaskaÅÄ ar ziÅu vietnÄ Quora 2014. gadÄ Apache Kafka radÄ«tÄjs nolÄma nosaukt programmatÅ«ru FranÄa Kafkas vÄrdÄ, jo ātÄ ir rakstÄ«Å”anai optimizÄta sistÄmaā un tÄpÄc, ka viÅam patika Kafkas darbi. ā Wikipedia
MÅ«su piemÄrÄ ir daudz datu veidotÄju un datu patÄrÄtÄju (ierÄ«Äu un serveru), un Kafka palÄ«dz tos savienot savÄ starpÄ. PatÄrÄtÄji tiks sÄ«kÄk aprakstÄ«ti turpmÄkajos posmos, kur viÅi bÅ«s galvenie priekÅ”meti. Tagad mÄs apskatÄ«sim tikai datu veidotÄjus (notikumus).
Kafka iekapsulÄ rindas un nodalÄ«juma jÄdzienus; labÄk par to sÄ«kÄk lasÄ«t citur (piemÄram, dokumentÄcija). Neiedziļinoties detaļÄs, iedomÄsimies, ka mobilÄ aplikÄcija tiek palaista divÄm dažÄdÄm OS. PÄc tam katra versija izveido savu atseviŔķu notikumu straumi. Producenti sÅ«ta pasÄkumus uz Kafku, tie tiek ierakstÄ«ti atbilstoÅ”Ä rindÄ.
TajÄ paÅ”Ä laikÄ Kafka ļauj lasÄ«t pa daļÄm un apstrÄdÄt notikumu straumi mini partijÄs. Kafka ir ļoti Ärts rÄ«ks, kas labi pielÄgojas pieaugoÅ”ajÄm vajadzÄ«bÄm (piemÄram, pÄc notikumu Ä£eogrÄfiskÄs atraÅ”anÄs vietas).
Parasti pietiek ar vienu shardu, taÄu mÄrogoÅ”anas laikÄ lietas kļūst sarežģītÄkas (kÄ vienmÄr). DroÅ”i vien neviens nevÄlÄsies ražoÅ”anÄ izmantot tikai vienu fizisku Ŕķembu, jo arhitektÅ«rai jÄbÅ«t izturÄ«gai pret defektiem. Papildus Kafka ir vÄl viens labi zinÄms risinÄjums - RabbitMQ. MÄs to neizmantojÄm ražoÅ”anÄ kÄ notikumu analÄ«zes rindu (ja jums ir Å”Äda pieredze, pastÄstiet mums par to komentÄros!). TomÄr mÄs izmantojÄm AWS Kinesis.
Pirms pÄriet uz nÄkamo soli, mums jÄpiemin vÄl viens sistÄmas papildu slÄnis - neapstrÄdÄta žurnÄlu glabÄÅ”ana. Tas nav obligÄts slÄnis, taÄu tas noderÄs, ja kaut kas noiet greizi un Kafkas notikumu rindas tiek atiestatÄ«tas. NeapstrÄdÄtu žurnÄlu uzglabÄÅ”anai nav nepiecieÅ”ams sarežģīts un dÄrgs risinÄjums, tos var vienkÄrÅ”i ierakstÄ«t kaut kur pareizÄ secÄ«bÄ (pat cietajÄ diskÄ).
2. Notikumu straumju apstrÄde
PÄc tam, kad esam sagatavojuÅ”i visus notikumus un ievietojuÅ”i tos atbilstoÅ”ajÄs rindÄs, mÄs pÄrejam uz apstrÄdes posmu. Å eit es jums pastÄstÄ«Å”u par divÄm visizplatÄ«tÄkajÄm apstrÄdes iespÄjÄm.
PirmÄ iespÄja ir iespÄjot Spark Streaming Apache sistÄmÄ. Visi Apache produkti darbojas HDFS ā droÅ”Ä failu sistÄmÄ ar failu replikÄm. Spark Streaming ir Ärti lietojams rÄ«ks, kas labi apstrÄdÄ straumÄÅ”anas datus un mÄrogo. TomÄr to var bÅ«t grÅ«ti uzturÄt.
VÄl viena iespÄja ir izveidot savu notikumu apstrÄdÄtÄju. Lai to izdarÄ«tu, jums ir nepiecieÅ”ams, piemÄram, uzrakstÄ«t Python lietojumprogrammu, izveidot to programmÄ Docker un abonÄt Kafka rindu. Kad aktivizÄtÄji nonÄk pie doku apdarinÄtÄjiem, tiks sÄkta apstrÄde. Izmantojot Å”o metodi, lietojumprogrammas vienmÄr ir jÄdarbina.
PieÅemsim, ka esam izvÄlÄjuÅ”ies kÄdu no iepriekÅ” aprakstÄ«tajÄm opcijÄm, un pÄriesim pie paÅ”as apstrÄdes. Procesoriem jÄsÄk ar datu derÄ«guma pÄrbaudi, atkritumu un ābojÄtuā notikumu filtrÄÅ”anu. ApstiprinÄÅ”anai mÄs parasti izmantojam Cerberus. PÄc tam varat veikt datu kartÄÅ”anu: dati no dažÄdiem avotiem tiek normalizÄti un standartizÄti, lai tos pievienotu kopÄjai tabulai.
3. Datu bÄze
TreÅ”ais solis ir uzturÄt normalizÄtus notikumus. StrÄdÄjot ar gatavu analÄ«tisko sistÄmu, mums tÄm bÅ«s bieži jÄpiekļūst, tÄpÄc ir svarÄ«gi izvÄlÄties Ärtu datu bÄzi.
Ja dati labi iekļaujas fiksÄtÄ shÄmÄ, varat izvÄlÄties Clickhouse vai kÄdu citu kolonnu datubÄzi. TÄdÄ veidÄ apkopojumi darbosies ļoti Ätri. NegatÄ«vÄ puse ir tÄda, ka shÄma ir stingri fiksÄta un tÄpÄc nebÅ«s iespÄjams pievienot patvaļīgus objektus bez izmaiÅÄm (piemÄram, ja notiek nestandarta notikums). Bet jÅ«s varat skaitÄ«t patieÅ”Äm ļoti Ätri.
NestrukturÄtiem datiem varat izmantot NoSQL, piemÄram, Apache Cassandra. Tas darbojas ar HDFS, labi atkÄrtojas, jÅ«s varat izveidot daudzus gadÄ«jumus, un tas ir izturÄ«gs pret kļūmÄm.
Varat arÄ« izvirzÄ«t kaut ko vienkÄrÅ”Äku, piemÄram, MongoDB. Tas ir diezgan lÄns un paredzÄts maziem apjomiem. Bet plus ir tas, ka tas ir ļoti vienkÄrÅ”s un tÄpÄc piemÄrots sÄkumam.
4. Apkopojumi
RÅ«pÄ«gi saglabÄjot visus notikumus, mÄs vÄlamies apkopot visu svarÄ«go informÄciju no saÅemtÄs partijas un atjauninÄt datu bÄzi. VisÄ pasaulÄ mÄs vÄlamies iegÅ«t atbilstoÅ”us informÄcijas paneļus un metriku. PiemÄram, apkopot lietotÄja profilu no notikumiem un kaut kÄ izmÄrÄ«t uzvedÄ«bu. Notikumi tiek apkopoti, apkopoti un vÄlreiz saglabÄti (lietotÄju tabulÄs). TajÄ paÅ”Ä laikÄ varat izveidot sistÄmu, lai agregatoram-koordinatoram varÄtu pievienot arÄ« filtru: apkopot lietotÄjus tikai no noteikta veida notikumiem.
PÄc tam, ja kÄdam no komandas ir nepiecieÅ”ama tikai augsta lÄ«meÅa analÄ«tika, var pieslÄgt ÄrÄjÄs analÄ«tikas sistÄmas. JÅ«s varat lietot Mixpanel vÄlreiz. bet tÄ kÄ tas ir diezgan dÄrgi, tad tur netiek sÅ«tÄ«ti visi lietotÄju pasÄkumi, bet tikai tas, kas nepiecieÅ”ams. Lai to izdarÄ«tu, mums ir jÄizveido koordinators, kurÅ” nodos dažus neapstrÄdÄtus notikumus vai kaut ko tÄdu, ko mÄs paÅ”i iepriekÅ” apkopojÄm, uz ÄrÄjÄm sistÄmÄm, API vai reklÄmas platformÄm.
5. Frontend
Jums ir jÄsavieno priekÅ”gals ar izveidoto sistÄmu. Labs piemÄrs ir apkalpoÅ”ana sarkans, ir datu bÄzes GUI, kas palÄ«dz veidot informÄcijas paneļus. KÄ mijiedarbÄ«ba darbojas:
LietotÄjs veic SQL vaicÄjumu.
Atbildot uz to, viÅÅ” saÅem zÄ«mi.
Tas izveido tam ājaunu vizualizÄcijuā un iegÅ«st skaistu grafiku, ko varat saglabÄt sev.
PakalpojumÄ esoÅ”Äs vizualizÄcijas tiek automÄtiski atjauninÄtas, jÅ«s varat pielÄgot un izsekot uzraudzÄ«bu. Redash ir bezmaksas, ja tas tiek mitinÄts pats, taÄu kÄ SaaS tas maksÄs 50 USD mÄnesÄ«.
SecinÄjums
PÄc visu iepriekÅ” minÄto darbÄ«bu veikÅ”anas jÅ«s izveidosit sava servera analÄ«zi. LÅ«dzu, Åemiet vÄrÄ, ka tas nav tik vienkÄrÅ”i, kÄ vienkÄrÅ”i savienot klientu analÄ«zi, jo viss ir jÄkonfigurÄ paÅ”am. TÄpÄc pirms savas sistÄmas izveides ir vÄrts salÄ«dzinÄt nepiecieÅ”amÄ«bu pÄc nopietnas analÄ«tikas sistÄmas ar resursiem, ko esat ar mieru tai atvÄlÄt.
Ja esat veicis aprÄÄ·inus un atklÄjis, ka izmaksas ir pÄrÄk augstas, nÄkamajÄ daÄ¼Ä es runÄÅ”u par to, kÄ izveidot lÄtÄku servera puses analÄ«tikas versiju.
Paldies, ka izlasÄ«jÄt! Es labprÄt uzdoÅ”u jautÄjumus komentÄros.