Å Ä·iet, ka tieÅ”saistes reklÄmas jomai jÄbÅ«t maksimÄli tehnoloÄ£iski attÄ«stÄ«tai un automatizÄtai. Protams, jo tur strÄdÄ tÄdi giganti un savas jomas eksperti kÄ Yandex, Mail.Ru, Google un Facebook. Bet, kÄ izrÄdÄ«jÄs, pilnÄ«bai nav robežu un vienmÄr ir ko automatizÄt.
Sakaru grupa Dentsu Aegis tÄ«kls Krievija ir lielÄkais digitÄlÄs reklÄmas tirgus spÄlÄtÄjs un aktÄ«vi investÄ tehnoloÄ£ijÄs, cenÅ”oties optimizÄt un automatizÄt savus biznesa procesus. Par vienu no neatrisinÄtajÄm tieÅ”saistes reklÄmas tirgus problÄmÄm ir kļuvis statistikas apkopoÅ”ana par reklÄmas kampaÅÄm no dažÄdÄm interneta platformÄm. Å Ä«s problÄmas risinÄjums galu galÄ radÄ«ja produktu D1.DigitÄlais (lasÄ«t kÄ DiVan), par kura attÄ«stÄ«bu vÄlamies runÄt.
KÄpÄc?
1. Projekta uzsÄkÅ”anas brÄ«dÄ« tirgÅ« nebija neviena gatava produkta, kas atrisinÄtu reklÄmas kampaÅu statistikas vÄkÅ”anas automatizÄcijas problÄmu. Tas nozÄ«mÄ, ka neviens, izÅemot mÅ«s paÅ”us, neapmierinÄs mÅ«su vajadzÄ«bas.
TÄdi pakalpojumi kÄ Improvado, Roistat, Supermetrics, SegmentStream piedÄvÄ integrÄciju ar platformÄm, sociÄlajiem tÄ«kliem un Google Analitycs, kÄ arÄ« ļauj izveidot analÄ«tiskos informÄcijas paneļus Ärtai reklÄmas kampaÅu analÄ«zei un kontrolei. Pirms sÄkÄm izstrÄdÄt savu produktu, mÄs mÄÄ£inÄjÄm izmantot dažas no Ŕīm sistÄmÄm, lai vÄktu datus no vietnÄm, taÄu diemžÄl tÄs nevarÄja atrisinÄt mÅ«su problÄmas.
GalvenÄ problÄma bija tÄ, ka pÄrbaudÄ«tie produkti balstÄ«jÄs uz datu avotiem, attÄlojot izvietojumu statistiku pa vietnÄm, un nesniedza iespÄju apkopot statistiku par reklÄmas kampaÅÄm. Å Ä« pieeja neļÄva mums vienuviet skatÄ«t dažÄdu vietÅu statistiku un analizÄt kampaÅas stÄvokli kopumÄ.
VÄl viens faktors bija tas, ka sÄkotnÄjie produkti bija vÄrsti uz Rietumu tirgu un neatbalstÄ«ja integrÄciju ar Krievijas vietnÄm. Un tÄm vietnÄm, ar kurÄm tika ieviesta integrÄcija, ne vienmÄr visi nepiecieÅ”amie rÄdÄ«tÄji tika lejupielÄdÄti pietiekami detalizÄti, un integrÄcija ne vienmÄr bija Ärta un pÄrskatÄma, it Ä«paÅ”i, ja bija nepiecieÅ”ams iegÅ«t kaut ko, kas nav sistÄmas saskarnÄ.
KopumÄ nolÄmÄm nepielÄgoties treÅ”o puÅ”u produktiem, bet sÄkÄm izstrÄdÄt savus...
2. TieÅ”saistes reklÄmas tirgus pieaug gadu no gada, un 2018. gadÄ tas reklÄmas budžetu ziÅÄ apsteidza tradicionÄli lielÄko TV reklÄmas tirgu. TÄtad ir mÄrogs.
3. AtŔķirÄ«bÄ no TV reklÄmas tirgus, kur komercreklÄmas tirdzniecÄ«ba ir monopolizÄta, internetÄ darbojas ļoti daudz individuÄlu dažÄda lieluma reklÄmas inventÄra Ä«paÅ”nieku ar saviem reklÄmas kontiem. TÄ kÄ reklÄmas kampaÅa, kÄ likums, darbojas vairÄkÄs vietnÄs vienlaikus, lai saprastu reklÄmas kampaÅas stÄvokli, ir jÄapkopo visu vietÅu atskaites un jÄapvieno tie vienÄ lielÄ pÄrskatÄ, kas parÄdÄ«s visu attÄlu. Tas nozÄ«mÄ, ka pastÄv optimizÄcijas potenciÄls.
4. Mums Ŕķita, ka reklÄmas inventÄra Ä«paÅ”niekiem internetÄ jau ir infrastruktÅ«ra statistikas apkopoÅ”anai un attÄloÅ”anai reklÄmu kontos, un viÅi varÄs nodroÅ”inÄt Å”iem datiem API. Tas nozÄ«mÄ, ka tehniski ir iespÄjams to Ä«stenot. Teiksim uzreiz, ka tas izrÄdÄ«jÄs nemaz tik vienkÄrÅ”i.
KopumÄ visi priekÅ”noteikumi projekta Ä«stenoÅ”anai mums bija paÅ”saprotami, un skrÄjÄm projektu iedzÄ«vinÄt...
Lielisks plÄns
SÄkumÄ mÄs izveidojÄm ideÄlas sistÄmas vÄ«ziju:
- ReklÄmas kampaÅas no 1C korporatÄ«vÄs sistÄmas tajÄ ir automÄtiski jÄielÄdÄ ar to nosaukumiem, periodiem, budžetiem un izvietojumiem dažÄdÄs platformÄs.
- Par katru izvietojumu reklÄmas kampaÅÄ no vietnÄm, kurÄs notiek izvietojums, automÄtiski jÄlejupielÄdÄ visa iespÄjamÄ statistika, piemÄram, seansu, klikŔķu, skatÄ«jumu skaits utt.
- Dažas reklÄmas kampaÅas tiek izsekotas, izmantojot treÅ”Äs puses uzraudzÄ«bu, izmantojot tÄ sauktÄs reklÄmas sistÄmas, piemÄram, Adriver, Weborama, DCM utt. KrievijÄ ir arÄ« rÅ«pnieciskais interneta skaitÄ«tÄjs - uzÅÄmums Mediascope. SaskaÅÄ ar mÅ«su plÄnu neatkarÄ«gÄ un rÅ«pnieciskÄ monitoringa dati bÅ«tu automÄtiski jÄielÄdÄ attiecÄ«gajÄs reklÄmas kampaÅÄs.
- LielÄkÄ daļa reklÄmas kampaÅu internetÄ ir vÄrstas uz noteiktÄm mÄrÄ·a darbÄ«bÄm (pirkums, zvans, pierakstÄ«Å”anÄs testa braucienam u.c.), kuras tiek izsekotas, izmantojot Google Analytics, un kuru statistika ir svarÄ«ga arÄ« kampaÅas statusa izpratnei un jÄielÄdÄ mÅ«su rÄ«kÄ .
Pirmais pankūka ir biezs
Å
emot vÄrÄ mÅ«su apÅemÅ”anos ievÄrot elastÄ«gus programmatÅ«ras izstrÄdes principus (agile, viss), mÄs nolÄmÄm vispirms izstrÄdÄt MVP un pÄc tam iteratÄ«vi virzÄ«ties uz paredzÄto mÄrÄ·i.
MÄs nolÄmÄm izveidot MVP, pamatojoties uz mÅ«su produktu DANBo (Dentsu Aegis tÄ«kla padome), kas ir tÄ«mekļa lietojumprogramma ar vispÄrÄ«gu informÄciju par mÅ«su klientu reklÄmas kampaÅÄm.
MVP projekts tika pÄc iespÄjas vienkÄrÅ”ots Ä«stenoÅ”anas ziÅÄ. MÄs esam izvÄlÄjuÅ”ies ierobežotu integrÄcijas platformu sarakstu. TÄs bija galvenÄs platformas, piemÄram, Yandex.Direct, Yandex.Display, RB.Mail, MyTarget, Adwords, DBM, VK, FB un galvenÄs reklÄmu sistÄmas Adriver un Weborama.
Lai piekļūtu vietÅu statistikai, izmantojot API, mÄs izmantojÄm vienu kontu. Klientu grupas vadÄ«tÄjam, kurÅ” vÄlÄjÄs izmantot automÄtisku statistikas apkopoÅ”anu par reklÄmas kampaÅu, vispirms platformas kontam bija jÄdeleÄ£Ä piekļuve nepiecieÅ”amajÄm reklÄmas kampaÅÄm vietnÄs.
NÄkamais ir sistÄmas lietotÄjs DANBo bija jÄielÄdÄ Excel sistÄmÄ noteikta formÄta fails, kurÄ bija visa informÄcija par izvietojumu (reklÄmas kampaÅa, platforma, formÄts, izvietoÅ”anas periods, plÄnotie rÄdÄ«tÄji, budžets utt.) un atbilstoÅ”o reklÄmas kampaÅu identifikatori uz vietnes un skaitÄ«tÄji reklÄmas sistÄmÄs.
AtklÄti sakot, tas izskatÄ«jÄs biedÄjoÅ”i:
LejupielÄdÄtie dati tika saglabÄti datu bÄzÄ, un pÄc tam atseviŔķi pakalpojumi savÄca kampaÅu identifikatorus vietnÄs no tiem un lejupielÄdÄja statistiku par tiem.
Katrai vietnei tika uzrakstÄ«ts atseviŔķs Windows serviss, kas reizi dienÄ nonÄca zem viena pakalpojuma konta vietnes API un lejupielÄdÄja statistiku par noteiktiem kampaÅu ID. Tas pats notika ar reklÄmas sistÄmÄm.
LejupielÄdÄtie dati tika parÄdÄ«ti saskarnÄ neliela pielÄgota informÄcijas paneļa veidÄ:
Mums negaidÄ«ti MVP sÄka strÄdÄt un sÄka lejupielÄdÄt aktuÄlo statistiku par reklÄmas kampaÅÄm internetÄ. MÄs ieviesÄm sistÄmu vairÄkiem klientiem, bet, mÄÄ£inot mÄrogot, saskÄrÄmies ar nopietnÄm problÄmÄm:
- GalvenÄ problÄma bija datu sagatavoÅ”anas sarežģītÄ«ba ielÄdei sistÄmÄ. TÄpat izvietojuma dati pirms ielÄdes bija jÄpÄrvÄrÅ” stingri fiksÄtÄ formÄtÄ. LejupielÄdes failÄ bija jÄiekļauj entÄ«tijas identifikatori no dažÄdÄm vietnÄm. MÄs saskaramies ar faktu, ka tehniski neapmÄcÄ«tiem lietotÄjiem ir ļoti grÅ«ti izskaidrot, kur vietnÄ atrast Å”os identifikatorus un kur failÄ tie jÄievada. Å emot vÄrÄ darbinieku skaitu nodaļÄs, kurÄs notiek kampaÅas objektos, un apgrozÄ«jumu, tas radÄ«ja milzÄ«gu atbalstu no mÅ«su puses, par ko mÄs absolÅ«ti nebijÄm apmierinÄti.
- VÄl viena problÄma bija tÄ, ka ne visÄs reklÄmas platformÄs bija mehÄnismi piekļuves reklÄmas kampaÅÄm deleÄ£ÄÅ”anai citiem kontiem. TaÄu pat tad, ja bija pieejams deleÄ£ÄÅ”anas mehÄnisms, ne visi reklÄmdevÄji vÄlÄjÄs pieŔķirt treÅ”o puÅ”u kontiem piekļuvi savÄm kampaÅÄm.
- SvarÄ«gs faktors bija saÅ”utums, ko lietotÄju vidÅ« izraisÄ«ja fakts, ka visi plÄnotie rÄdÄ«tÄji un izvietojuma informÄcija, ko viÅi jau ievada mÅ«su 1C grÄmatvedÄ«bas sistÄmÄ, viÅiem ir jÄievada atkÄrtoti. DANBo.
Tas radÄ«ja domu, ka primÄrajam informÄcijas avotam par izvietoÅ”anu ir jÄbÅ«t mÅ«su 1C sistÄmai, kurÄ visi dati tiek ievadÄ«ti precÄ«zi un laikÄ (Å”eit runa ir par to, ka rÄÄ·ini tiek Ä£enerÄti, pamatojoties uz 1C datiem, tÄpÄc pareiza datu ievade 1C ir prioritÄte ikvienam KPI). TÄ radÄs jauna sistÄmas koncepcija...
JÄdziens
PirmÄ lieta, ko mÄs nolÄmÄm darÄ«t, bija sadalÄ«t sistÄmu statistikas apkopoÅ”anai par reklÄmas kampaÅÄm internetÄ atseviÅ”Ä·Ä produktÄ - D1.DigitÄlais.
JaunajÄ koncepcijÄ mÄs nolÄmÄm ielÄdÄt D1.DigitÄlais informÄciju par reklÄmas kampaÅÄm un izvietojumiem tajÄs no 1C, un pÄc tam apkopojiet statistiku no vietnÄm un reklÄmu apkalpoÅ”anas sistÄmÄm uz Å”iem izvietojumiem. Tam vajadzÄja ievÄrojami vienkÄrÅ”ot lietotÄju dzÄ«vi (un, kÄ parasti, pievienot vairÄk darba izstrÄdÄtÄjiem) un samazinÄt atbalsta apjomu.
PirmÄ problÄma, ar kuru mÄs saskÄrÄmies, bija organizatoriska rakstura, un tÄ bija saistÄ«ta ar faktu, ka mÄs nevarÄjÄm atrast atslÄgu vai zÄ«mi, pÄc kuras mÄs varÄtu salÄ«dzinÄt entÄ«tijas no dažÄdÄm sistÄmÄm ar kampaÅÄm un izvietojumiem no 1C. Fakts ir tÄds, ka process mÅ«su uzÅÄmumÄ ir veidots tÄ, ka reklÄmas kampaÅas dažÄdÄs sistÄmÄs ievada dažÄdi cilvÄki (mediju plÄnotÄji, pirkÅ”ana utt.).
Lai atrisinÄtu Å”o problÄmu, mums bija jÄizgudro unikÄla jaukta atslÄga DANBoID, kas saistÄ«tu entÄ«tijas dažÄdÄs sistÄmÄs un ko varÄtu diezgan viegli un unikÄli identificÄt lejupielÄdÄtajÄs datu kopÄs. Å is identifikators tiek Ä£enerÄts iekÅ”ÄjÄ 1C sistÄmÄ katram atseviŔķam izvietojumam un tiek pÄrsÅ«tÄ«ts uz kampaÅÄm, izvietojumiem un skaitÄ«tÄjiem visÄs vietnÄs un visÄs AdServing sistÄmÄs. DANBoID ievietoÅ”anas prakses ievieÅ”ana visos izvietojumos prasÄ«ja zinÄmu laiku, bet mums tas izdevÄs :)
Tad mÄs noskaidrojÄm, ka ne visÄs vietnÄs ir API automÄtiskai statistikas apkopoÅ”anai, un pat tÄm, kurÄm ir API, tÄ neatgriež visus nepiecieÅ”amos datus.
Å ajÄ posmÄ mÄs nolÄmÄm ievÄrojami samazinÄt integrÄcijas platformu sarakstu un koncentrÄties uz galvenajÄm platformÄm, kas ir iesaistÄ«tas lielÄkajÄ daÄ¼Ä reklÄmas kampaÅu. Å ajÄ sarakstÄ ir iekļauti visi lielÄkie spÄlÄtÄji reklÄmas tirgÅ« (Google, Yandex, Mail.ru), sociÄlajos tÄ«klos (VK, Facebook, Twitter), lielÄkajÄs AdServing un analÄ«tikas sistÄmÄs (DCM, Adriver, Weborama, Google Analytics) un citÄs platformÄs.
LielÄkajai daļai mÅ«su atlasÄ«to vietÅu bija API, kas nodroÅ”inÄja mums nepiecieÅ”amos rÄdÄ«tÄjus. GadÄ«jumos, kad API nebija vai tas nesaturÄja nepiecieÅ”amos datus, datu ielÄdei izmantojÄm atskaites, kas tika sÅ«tÄ«tas katru dienu uz mÅ«su biroja e-pastu (dažÄs sistÄmÄs ir iespÄjams Å”Ädus pÄrskatus konfigurÄt, citÄs mÄs vienojÄmies par Å”Ädu atskaiÅ”u izstrÄdi priekÅ” mums).
AnalizÄjot datus no dažÄdÄm vietnÄm, mÄs noskaidrojÄm, ka entÄ«tiju hierarhija dažÄdÄs sistÄmÄs nav vienÄda. TurklÄt informÄcija no dažÄdÄm sistÄmÄm ir jÄlejupielÄdÄ dažÄdi.
Lai atrisinÄtu Å”o problÄmu, tika izstrÄdÄta SubDANBoID koncepcija. SubDANBoID ideja ir diezgan vienkÄrÅ”a, mÄs atzÄ«mÄjam kampaÅas galveno entÄ«tiju vietnÄ ar Ä£enerÄto DANBoID, un mÄs augÅ”upielÄdÄjam visas ligzdotÄs entÄ«tijas ar unikÄliem vietnes identifikatoriem un veidojam SubDANBoID pÄc DANBoID principa + pirmÄ lÄ«meÅa identifikators. ligzdotÄ entÄ«tija + otrÄ lÄ«meÅa ligzdotÄs entÄ«tijas identifikators +... Å Ä« pieeja ļÄva mums savienot reklÄmas kampaÅas dažÄdÄs sistÄmÄs un lejupielÄdÄt detalizÄtu statistiku par tÄm.
Mums bija arÄ« jÄatrisina problÄma par piekļuvi kampaÅÄm dažÄdÄs platformÄs. KÄ jau rakstÄ«jÄm iepriekÅ”, mehÄnisms piekļuves kampaÅai deleÄ£ÄÅ”anai atseviŔķam tehniskajam kontam ne vienmÄr ir piemÄrojams. TÄpÄc mums bija jÄizstrÄdÄ infrastruktÅ«ra automÄtiskai autorizÄcijai, izmantojot OAuth, izmantojot marÄ·ierus un mehÄnismus Å”o marÄ·ieru atjauninÄÅ”anai.
VÄlÄk rakstÄ mÄÄ£inÄsim sÄ«kÄk aprakstÄ«t risinÄjuma arhitektÅ«ru un ievieÅ”anas tehniskÄs detaļas.
RisinÄjuma arhitektÅ«ra 1.0
UzsÄkot jauna produkta ievieÅ”anu, sapratÄm, ka uzreiz jÄparedz iespÄja pieslÄgt jaunas vietnes, tÄpÄc nolÄmÄm iet mikropakalpojumu arhitektÅ«ras ceļu.
IzstrÄdÄjot arhitektÅ«ru, mÄs nodalÄ«jÄm savienotÄjus visÄm ÄrÄjÄm sistÄmÄm - 1C, reklÄmas platformÄm un reklÄmas sistÄmÄm - atseviŔķos servisos.
GalvenÄ ideja ir tÄda, ka visiem vietÅu savienotÄjiem ir viena un tÄ pati API un tie ir adapteri, kas nodroÅ”ina vietnes API mums Ärtu saskarni.
MÅ«su produkta centrÄ ir tÄ«mekļa lietojumprogramma, kas ir monolÄ«ts, kas veidots tÄ, lai to varÄtu viegli izjaukt servisos. Å Ä« lietojumprogramma ir atbildÄ«ga par lejupielÄdÄto datu apstrÄdi, dažÄdu sistÄmu statistikas apkopoÅ”anu un prezentÄÅ”anu sistÄmas lietotÄjiem.
Lai sazinÄtos starp savienotÄjiem un tÄ«mekļa lietojumprogrammu, mums bija jÄizveido papildu pakalpojums, ko nosaucÄm Connector Proxy. Tas veic pakalpojumu noteikÅ”anas un uzdevumu plÄnotÄja funkcijas. Å is pakalpojums katru nakti veic datu vÄkÅ”anas uzdevumus katram savienotÄjam. Pakalpojuma slÄÅa rakstÄ«Å”ana bija vienkÄrÅ”Äka nekÄ ziÅojumu brokera savienoÅ”ana, un mums bija svarÄ«gi pÄc iespÄjas ÄtrÄk iegÅ«t rezultÄtu.
VienkÄrŔības un izstrÄdes Ätruma labad mÄs arÄ« nolÄmÄm, ka visi pakalpojumi bÅ«s Web API. Tas ļÄva Ätri salikt koncepcijas pierÄdÄ«jumu un pÄrbaudÄ«t, vai viss dizains darbojas.
AtseviŔķs, diezgan sarežģīts uzdevums bija piekļuves iestatÄ«Å”ana datu vÄkÅ”anai no dažÄdiem kontiem, kas, kÄ mÄs nolÄmÄm, lietotÄjiem bÅ«tu jÄveic, izmantojot tÄ«mekļa saskarni. Tas sastÄv no divÄm atseviŔķÄm darbÄ«bÄm: pirmkÄrt, lietotÄjs pievieno pilnvaru, lai piekļūtu kontam, izmantojot OAuth, un pÄc tam konfigurÄ datu vÄkÅ”anu klientam no konkrÄta konta. Pilnvaras iegÅ«Å”ana, izmantojot OAuth, ir nepiecieÅ”ama, jo, kÄ jau rakstÄ«jÄm, ne vienmÄr ir iespÄjams deleÄ£Ät piekļuvi vÄlamajam kontam vietnÄ.
Lai izveidotu universÄlu mehÄnismu konta atlasei no vietnÄm, savienotÄju API bija jÄpievieno metode, kas atgriež JSON shÄmu, kas tiek atveidota formÄ, izmantojot modificÄtu JSONEditor komponentu. TÄdÄ veidÄ lietotÄji varÄja izvÄlÄties kontus, no kuriem lejupielÄdÄt datus.
Lai ievÄrotu vietnÄs pastÄvoÅ”os pieprasÄ«jumu ierobežojumus, mÄs apvienojam iestatÄ«jumu pieprasÄ«jumus vienÄ pilnvarÄ, taÄu vienlaikus varam apstrÄdÄt dažÄdas pilnvaras.
MÄs izvÄlÄjÄmies MongoDB kÄ ielÄdÄto datu krÄtuvi gan tÄ«mekļa lietojumprogrammai, gan savienotÄjiem, kas ļÄva mums pÄrÄk neuztraukties par datu struktÅ«ru sÄkotnÄjÄs izstrÄdes stadijÄs, kad aplikÄcijas objekta modelis mainÄs katru otro dienu.
DrÄ«z vien mÄs noskaidrojÄm, ka ne visi dati labi iederas MongoDB un, piemÄram, ikdienas statistiku ir ÄrtÄk glabÄt relÄciju datu bÄzÄ. TÄpÄc savienotÄjiem, kuru datu struktÅ«ra ir piemÄrotÄka relÄciju datu bÄzei, kÄ krÄtuvi sÄkÄm izmantot PostgreSQL vai MS SQL Server.
IzvÄlÄtÄ arhitektÅ«ra un tehnoloÄ£ijas ļÄva mums salÄ«dzinoÅ”i Ätri izveidot un palaist D1.Digital produktu. Divu gadu produktu izstrÄdes laikÄ mÄs izstrÄdÄjÄm 23 vietÅu savienotÄjus, guvÄm nenovÄrtÄjamu pieredzi darbÄ ar treÅ”o puÅ”u API, iemÄcÄ«jÄmies izvairÄ«ties no dažÄdu vietÅu kļūdÄm, kurÄm katrai bija savas, veicinÄjÄm vismaz 3 API izstrÄdi. vietnÄs, automÄtiski lejupielÄdÄja informÄciju par gandrÄ«z 15 000 kampaÅÄm un vairÄk nekÄ 80 000 izvietojumiem, apkopoja daudz lietotÄju atsauksmes par produkta darbÄ«bu un, pamatojoties uz Ŕīm atsauksmÄm, vairÄkas reizes izdevÄs mainÄ«t produkta galveno procesu.
RisinÄjuma arhitektÅ«ra 2.0
Ir pagÄjuÅ”i divi gadi kopÅ” izstrÄdes sÄkuma D1.DigitÄlais. PastÄvÄ«gÄ sistÄmas slodzes palielinÄÅ”anÄs un arvien jaunu datu avotu parÄdÄ«Å”anÄs pakÄpeniski atklÄja problÄmas esoÅ”ajÄ risinÄjuma arhitektÅ«rÄ.
PirmÄ problÄma ir saistÄ«ta ar no vietnÄm lejupielÄdÄto datu apjomu. MÄs saskÄrÄmies ar faktu, ka visu nepiecieÅ”amo datu apkopoÅ”ana un atjauninÄÅ”ana no lielÄkajÄm vietnÄm sÄka aizÅemt pÄrÄk daudz laika. PiemÄram, datu apkopoÅ”ana no AdRiver reklamÄÅ”anas sistÄmas, ar kuru mÄs izsekojam statistiku lielÄkajai daļai izvietojumu, aizÅem apmÄram 12 stundas.
Lai atrisinÄtu Å”o problÄmu, sÄkÄm izmantot visa veida atskaites datu lejupielÄdei no vietnÄm, cenÅ”amies kopÄ ar vietnÄm attÄ«stÄ«t to API, lai tÄs darbÄ«bas Ätrums atbilstu mÅ«su vajadzÄ«bÄm, un maksimÄli paralÄli datu lejupielÄdei.
VÄl viena problÄma ir saistÄ«ta ar lejupielÄdÄto datu apstrÄdi. Tagad, kad tiek saÅemta jauna izvietojumu statistika, tiek uzsÄkts daudzpakÄpju metrikas pÄrrÄÄ·inÄÅ”anas process, kas ietver neapstrÄdÄtu datu ielÄdi, apkopotÄs metrikas aprÄÄ·inÄÅ”anu katrai vietnei, dažÄdu avotu datu savstarpÄju salÄ«dzinÄÅ”anu un kampaÅas kopsavilkuma metrikas aprÄÄ·inÄÅ”anu. Tas rada lielu slodzi tÄ«mekļa lietojumprogrammai, kas veic visus aprÄÄ·inus. VairÄkas reizes pÄrrÄÄ·ina procesÄ lietojumprogramma patÄrÄja visu servera atmiÅu, aptuveni 10-15 GB, kas visvairÄk ietekmÄja lietotÄju darbu ar sistÄmu.
KonstatÄtÄs problÄmas un vÄrienÄ«gie plÄni produkta tÄlÄkai attÄ«stÄ«bai noveda pie nepiecieÅ”amÄ«bas pÄrskatÄ«t lietojumprogrammu arhitektÅ«ru.
MÄs sÄkÄm ar savienotÄjiem.
MÄs pamanÄ«jÄm, ka visi savienotÄji darbojas pÄc viena modeļa, tÄpÄc izveidojÄm konveijeru karkasu, kurÄ, lai izveidotu savienotÄju, bija tikai jÄieprogrammÄ soļu loÄ£ika, pÄrÄjais bija universÄls. Ja kÄdam savienotÄjam ir nepiecieÅ”ami uzlabojumi, mÄs to nekavÄjoties pÄrnesam uz jaunu ietvaru vienlaikus ar savienotÄja uzlaboÅ”anu.
TajÄ paÅ”Ä laikÄ mÄs sÄkÄm izvietot savienotÄjus Docker un Kubernetes.
PÄreju uz Kubernetes plÄnojÄm diezgan ilgi, eksperimentÄjÄm ar CI/CD iestatÄ«jumiem, bet sÄkÄm kustÄties tikai tad, kad viens savienotÄjs kļūdas dÄļ sÄka apÄst vairÄk nekÄ 20 GB atmiÅu serverÄ«, praktiski nogalinot citus procesus. . IzmeklÄÅ”anas laikÄ savienotÄjs tika pÄrvietots uz Kubernetes kopu, kur tas galu galÄ palika pat pÄc kļūdas novÄrÅ”anas.
Diezgan Ätri sapratÄm, ka Kubernetes ir Ärts, un seÅ”u mÄneÅ”u laikÄ pÄrnesÄm uz ražoÅ”anas klasteri 7 savienotÄjus un Connectors Proxy, kas patÄrÄ visvairÄk resursu.
PÄc savienotÄjiem mÄs nolÄmÄm mainÄ«t pÄrÄjÄs lietojumprogrammas arhitektÅ«ru.
GalvenÄ problÄma bija tÄ, ka dati tiek piegÄdÄti no savienotÄjiem uz starpniekserveriem lielÄs partijÄs, pÄc tam nonÄk DANBoID un tiek nosÅ«tÄ«ti uz centrÄlo tÄ«mekļa lietojumprogrammu apstrÄdei. SakarÄ ar lielo metrikas pÄrrÄÄ·inu skaitu, lietojumprogrammai ir liela slodze.
IzrÄdÄ«jÄs arÄ« diezgan grÅ«ti pÄrraudzÄ«t atseviŔķu datu vÄkÅ”anas darbu statusu un ziÅot par kļūdÄm, kas raduÅ”Äs savienotÄjos uz centrÄlo tÄ«mekļa lietojumprogrammu, lai lietotÄji varÄtu redzÄt, kas notiek un kÄpÄc dati netiek vÄkti.
Lai atrisinÄtu Ŕīs problÄmas, mÄs izstrÄdÄjÄm arhitektÅ«ru 2.0.
GalvenÄ atŔķirÄ«ba starp jauno arhitektÅ«ras versiju ir tÄ, ka Web API vietÄ mÄs izmantojam RabbitMQ un MassTransit bibliotÄku, lai apmainÄ«tos ar ziÅojumiem starp pakalpojumiem. Lai to izdarÄ«tu, mums bija gandrÄ«z pilnÄ«bÄ jÄpÄrraksta Connectors Proxy, padarot to Connectors Hub. Nosaukums tika mainÄ«ts, jo pakalpojuma galvenÄ loma vairs nav pieprasÄ«jumu pÄrsÅ«tÄ«Å”ana uz savienotÄjiem un atpakaļ, bet gan savienotÄju metrikas vÄkÅ”anas pÄrvaldÄ«ba.
No centrÄlÄs tÄ«mekļa lietojumprogrammas informÄciju par izvietojumiem un statistiku no vietnÄm nodalÄ«jÄm atseviŔķos pakalpojumos, kas ļÄva atbrÄ«voties no nevajadzÄ«giem pÄrrÄÄ·iniem un izvietojuma lÄ«menÄ« saglabÄt tikai jau aprÄÄ·inÄto un apkopoto statistiku. MÄs arÄ« pÄrrakstÄ«jÄm un optimizÄjÄm pamata statistikas aprÄÄ·inÄÅ”anas loÄ£iku, pamatojoties uz neapstrÄdÄtiem datiem.
Vienlaikus mÄs migrÄjam visus pakalpojumus un lietojumprogrammas uz Docker un Kubernetes, lai padarÄ«tu risinÄjumu vieglÄk mÄrogojamu un ÄrtÄk pÄrvaldÄmu.
Kur mÄs tagad esam
Koncepcijas arhitektÅ«ras 2.0 produkts D1.DigitÄlais gatavs un darbojas testa vidÄ ar ierobežotu savienotÄju komplektu. Atliek tikai pÄrrakstÄ«t vÄl 20 savienotÄjus uz jaunu platformu, pÄrbaudÄ«t, vai dati ir pareizi ielÄdÄti un visi rÄdÄ«tÄji ir pareizi aprÄÄ·inÄti, un ieviest visu dizainu ražoÅ”anÄ.
Faktiski Å”is process notiks pakÄpeniski, un mums bÅ«s jÄatstÄj atgriezeniskÄ savietojamÄ«ba ar vecajÄm API, lai viss darbotos.
MÅ«su tuvÄkajos plÄnos ietilpst jaunu savienotÄju izstrÄde, integrÄcija ar jaunÄm sistÄmÄm un papildu metrikas pievienoÅ”ana datu kopai, kas lejupielÄdÄta no saistÄ«tajÄm vietnÄm un reklÄmu sistÄmÄm.
MÄs arÄ« plÄnojam pÄrsÅ«tÄ«t visas lietojumprogrammas, tostarp centrÄlo tÄ«mekļa lietojumprogrammu, uz Docker un Kubernetes. ApvienojumÄ ar jauno arhitektÅ«ru tas ievÄrojami vienkÄrÅ”os patÄrÄto resursu izvietoÅ”anu, uzraudzÄ«bu un kontroli.
VÄl viena ideja ir eksperimentÄt ar datu bÄzes izvÄli statistikas glabÄÅ”anai, kas Å”obrÄ«d tiek glabÄta MongoDB. Uz SQL datu bÄzÄm jau esam pÄrcÄluÅ”i vairÄkus jaunus savienotÄjus, taÄu tur atŔķirÄ«ba ir gandrÄ«z nemanÄma, un apkopotai statistikai pa dienÄm, ko var pieprasÄ«t patvaļīgi, ieguvums var bÅ«t diezgan nopietns.
VispÄr plÄni grandiozi, ejam tÄlÄk :)
Raksta R&D Dentsu Aegis Network Russia autori: Georgijs Ostapenko (
Avots: www.habr.com