atoto.cz - do pekla pro data a zpět [lukáš huňka] (5. sraz, praha, 18.2.2016)
Post on 09-Jan-2017
184 Views
Preview:
TRANSCRIPT
Atoto.czdo pekla pro data a zpět
Lukáš HuňkaCTO Atoto.cz@hunaczech
První český porovnávač online supermarketů
- Porovnáme všechno zboží všech providerů
- Vybereme vám nejvýhodnějšího providera
- Vylijeme košík
- Pošleme odkaz
- Profit !
Technologické pozadí projektu
- Oddělení APP do Microservices (REST-API)
- Vyhledávání, našeptávání, nahrazování (Elastic)
- Backend- NETTE (co tu jako děláš kámo?), Kdyby, MySQL(Percona), Doctrine, REDIS,
RabbitMQ
- Testování- Nette/Tester, Codeception (!)
- Frontend- LESS, GULP
- HI (Human Interaction)- Github, Kanban, Slack
Symfony ass-savers
Věci které používáme v naší APP a výrazně nás posouvají
- Symfony/Console- Veškeré datové operace
- Symfony/DomCrawler (Symfony/CSS-selector,Symfony/Browser-kit)
- taky datové operace
- Symfony/YAML- no … na NEON soubory to úplně nebude
Teď to hlavní - DATA
- 6 providerů=prodejců
- denní aktualizace dat
- jedna kompletní aktualizace dat = 56 815 položek
- oddělený front-end od data-warehousu
- několik parserů a downloaderů
- různé vstupy - API (json), HTML (parsing) , manuální export (CSV)
- strašnej mess
Teď to hlavní - DATA po II.
- co se s daty u nás děje- automatické třídění do Master kategorií
- kontrola validity
- doplňující vlastnosti
- gramáže
- jednotky apd.
- parsery není jen na získání dat- množstevní jednotky
- našeptání náhrady
Teď to hlavní - DATA po III.
- ukládáme do Elasticu- místo hromadné reindexace -> pomáhá RabbitMQ
- rabbit zvládne naplnit celou DB během 8 minut (16 consumerů)
- na frontendu udržujeme data v MySQL jako fallback
- primárně čerpáme z Elasticu
Teď to hlavní - DATA po IV.
- úskalí více systémů- rozdílná data
- synchronizace IDs
- duplikace dat
- provider upraví ID
- delistuje a znovu zalistuje produkt
- se změnou EANu nedelistuje starý produkt ale updatne EAN
- kontroluj (a neber úplatky), kontroluj a kontroluj
Koloběh dat v Atoto
- Import -> Data Warehouse -> ElasticSearch -> FrontEnd
- v rámci DataWarehousu další operace:- trendy - vývoj ceny
- napárování externích dat (fotky, popisy, složení atp.)
- Synchronizace IDs mezi několika systémy
- Kvůli dokončení objednávek u providerů
S čím jsme se potýkali
- inkognito - nemožnost dohody s providery
- čerpat data ale neupozornit na sebe a zároveň nenaštvat providera
- HTML parsing - neakceptovatelný
- celé stažení všech dat cca 5 hodin (pouhé stažení bez dalšího zpracování)
- API parsing- mnohem pohodlnější
- rychlejší a flexibilnější
- nutnost vlastní struktury kategorií (proč a jak toho dosáhnout)
Od prvních kroků k chůzi
- Na začátku byla naše aplikace monolit (období hrubého prototypu)
- Nic takového nechceme ! (a nechtějte, fakt !)
- rozpadnutí do více oddělených microservices
- reforma procesu získání dat (viz. další slide)
- sestavení a vytvoření Partnerského API
Reforma procesu získávání dat
Gateway - vstup data
Imigrační - kontrola validity dat a známosti dat
-> Známe -> Reality check (jak moc se liší data oproti stávajícím hodnotám)
-> Neznáme -> Human validation (naše lidská továrna)
ukládáme do Intelligence
Budoucnost dat
- Integrace pomocí partnerského API- výlet do UK za klukama z Tesco IT
- rychlá aktualizace pomocí nodeJS app
- ještě větší sbírání trendů => větší množství dat
- Co nás zajímá- YesSQL - Maria + Percona
- NoSQL - MongoDB
H.R. okénko II - Q&A
- Dotazy osobně nebo kdykoliv jindy na- lukas@atoto.cz
- 607 049 258 (24@7)
- Google+
- http://developer.atoto.cz - 20.000 Kč za tip na vývojáře
Konec :(
I. Podívejte se napravo
II.Pokud vidíte spícího člověka vzbuďte ho a řekněte mu ať tleská
III.Podívejte se nalevo
IV.Zopakujte bod II
V.Tleskejte
Díky za pozornost
top related