SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Atoto.cz
do pekla pro data a zpět
Lukáš Huňka
CTO 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 (!)
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
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)
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
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
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
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
H.R. okénko II - Q&A
- Dotazy osobně nebo kdykoliv jindy na
- lukas@atoto.cz
- 607 049 258 (24@7)
- Twitter
- Facebook
- 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

Weitere ähnliche Inhalte

Andere mochten auch

Bruce Laymon Updated Resume 2015
Bruce Laymon Updated Resume 2015Bruce Laymon Updated Resume 2015
Bruce Laymon Updated Resume 2015
Bruce Laymon
 
Google Driverless (Autonomous) Car
Google Driverless (Autonomous) CarGoogle Driverless (Autonomous) Car
Google Driverless (Autonomous) Car
Farhan Badar
 
How to run a debate
How to run a debateHow to run a debate
How to run a debate
Imane SBAI
 
"Qui seront les HEROes de l'entreprise 4.0 ?" Anne Rey-Ferrer #MBAMCI
"Qui seront les HEROes de l'entreprise 4.0 ?" Anne Rey-Ferrer #MBAMCI"Qui seront les HEROes de l'entreprise 4.0 ?" Anne Rey-Ferrer #MBAMCI
"Qui seront les HEROes de l'entreprise 4.0 ?" Anne Rey-Ferrer #MBAMCI
Anne Rey-Ferrer
 

Andere mochten auch (14)

5 colloque toit-terrasse - jean-claude zemmour - Les cles de la reussite d ...
5   colloque toit-terrasse - jean-claude zemmour - Les cles de la reussite d ...5   colloque toit-terrasse - jean-claude zemmour - Les cles de la reussite d ...
5 colloque toit-terrasse - jean-claude zemmour - Les cles de la reussite d ...
 
Vegetalisons Paris, saison #2 - compte-rendu
Vegetalisons Paris, saison #2 - compte-renduVegetalisons Paris, saison #2 - compte-rendu
Vegetalisons Paris, saison #2 - compte-rendu
 
1 colloque toit-terrasse - frederic schoeller, architecte
1   colloque toit-terrasse - frederic schoeller, architecte1   colloque toit-terrasse - frederic schoeller, architecte
1 colloque toit-terrasse - frederic schoeller, architecte
 
La notion de l'économie
La notion de l'économieLa notion de l'économie
La notion de l'économie
 
Pourquoi votre agence ou votre projet avec votre client s’est-il planté ?
Pourquoi votre agence ou votre projet avec votre client s’est-il planté ?Pourquoi votre agence ou votre projet avec votre client s’est-il planté ?
Pourquoi votre agence ou votre projet avec votre client s’est-il planté ?
 
Cour 06-réglement-du-pos
Cour 06-réglement-du-posCour 06-réglement-du-pos
Cour 06-réglement-du-pos
 
China NCAP Updates
China NCAP UpdatesChina NCAP Updates
China NCAP Updates
 
Bruce Laymon Updated Resume 2015
Bruce Laymon Updated Resume 2015Bruce Laymon Updated Resume 2015
Bruce Laymon Updated Resume 2015
 
Google Driverless (Autonomous) Car
Google Driverless (Autonomous) CarGoogle Driverless (Autonomous) Car
Google Driverless (Autonomous) Car
 
Le Digital marketing
Le Digital marketingLe Digital marketing
Le Digital marketing
 
Le marketing digital.pdf book
Le marketing digital.pdf bookLe marketing digital.pdf book
Le marketing digital.pdf book
 
How to run a debate
How to run a debateHow to run a debate
How to run a debate
 
"Qui seront les HEROes de l'entreprise 4.0 ?" Anne Rey-Ferrer #MBAMCI
"Qui seront les HEROes de l'entreprise 4.0 ?" Anne Rey-Ferrer #MBAMCI"Qui seront les HEROes de l'entreprise 4.0 ?" Anne Rey-Ferrer #MBAMCI
"Qui seront les HEROes de l'entreprise 4.0 ?" Anne Rey-Ferrer #MBAMCI
 
Modèles d’affaires pour tablettes
Modèles d’affaires pour tablettesModèles d’affaires pour tablettes
Modèles d’affaires pour tablettes
 

Mehr von Péhápkaři

Mehr von Péhápkaři (20)

Startup vs korporace vs Previo
Startup vs korporace vs PrevioStartup vs korporace vs Previo
Startup vs korporace vs Previo
 
RabbitMQ a ElasticSearch v Previu
RabbitMQ a ElasticSearch v PreviuRabbitMQ a ElasticSearch v Previu
RabbitMQ a ElasticSearch v Previu
 
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
 
Čtvrtkon #53 - Štěpán Zikmund
Čtvrtkon #53 - Štěpán ZikmundČtvrtkon #53 - Štěpán Zikmund
Čtvrtkon #53 - Štěpán Zikmund
 
Václav Makeš - Infrastructure as code - Jak nahazovat stroje a nic moc nevědě...
Václav Makeš - Infrastructure as code - Jak nahazovat stroje a nic moc nevědě...Václav Makeš - Infrastructure as code - Jak nahazovat stroje a nic moc nevědě...
Václav Makeš - Infrastructure as code - Jak nahazovat stroje a nic moc nevědě...
 
Tomáš Klíma - Implementace BitCoinut v praxi (13. sraz přátel PHP v Praze)
Tomáš Klíma - Implementace BitCoinut v praxi (13. sraz přátel PHP v Praze)Tomáš Klíma - Implementace BitCoinut v praxi (13. sraz přátel PHP v Praze)
Tomáš Klíma - Implementace BitCoinut v praxi (13. sraz přátel PHP v Praze)
 
PHP Evening #1 - Automatizace [Jan Klat]
PHP Evening #1 - Automatizace [Jan Klat]PHP Evening #1 - Automatizace [Jan Klat]
PHP Evening #1 - Automatizace [Jan Klat]
 
PHP Evening #1 - Propel ORM [Martin Sojka]
PHP Evening #1 - Propel ORM [Martin Sojka]PHP Evening #1 - Propel ORM [Martin Sojka]
PHP Evening #1 - Propel ORM [Martin Sojka]
 
Tomáš Kazatel - Jsme přece vývojáři, ne textaři (12. sraz přátel PHP v P...
Tomáš Kazatel - Jsme přece vývojáři, ne textaři (12. sraz přátel PHP v P...Tomáš Kazatel - Jsme přece vývojáři, ne textaři (12. sraz přátel PHP v P...
Tomáš Kazatel - Jsme přece vývojáři, ne textaři (12. sraz přátel PHP v P...
 
Jakub Kratina - Když si dva vývojáři založí s.r.o. (12. sraz přátel PHP v Pra...
Jakub Kratina - Když si dva vývojáři založí s.r.o. (12. sraz přátel PHP v Pra...Jakub Kratina - Když si dva vývojáři založí s.r.o. (12. sraz přátel PHP v Pra...
Jakub Kratina - Když si dva vývojáři založí s.r.o. (12. sraz přátel PHP v Pra...
 
Petr Pavel - Co musí programátor umět kromě programování (12. sraz přátel PHP...
Petr Pavel - Co musí programátor umět kromě programování (12. sraz přátel PHP...Petr Pavel - Co musí programátor umět kromě programování (12. sraz přátel PHP...
Petr Pavel - Co musí programátor umět kromě programování (12. sraz přátel PHP...
 
Tomáš Strejček - Velikost týmu vs. monolith a mikroservicy (11. sraz přátel ...
Tomáš Strejček - Velikost týmu vs. monolith a mikroservicy  (11. sraz přátel ...Tomáš Strejček - Velikost týmu vs. monolith a mikroservicy  (11. sraz přátel ...
Tomáš Strejček - Velikost týmu vs. monolith a mikroservicy (11. sraz přátel ...
 
Jindřich Kubát - Microservice – Post Monolith Architecture (11. sraz přátel P...
Jindřich Kubát - Microservice – Post Monolith Architecture (11. sraz přátel P...Jindřich Kubát - Microservice – Post Monolith Architecture (11. sraz přátel P...
Jindřich Kubát - Microservice – Post Monolith Architecture (11. sraz přátel P...
 
Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...
Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...
Jakub Kratina - Jak testovat aplikace s radostí díky Codeception (11. sraz př...
 
Ako nespáliť server - Monit [Jozef Lami] (7. sraz, Praha)
Ako nespáliť server - Monit [Jozef Lami] (7. sraz, Praha)Ako nespáliť server - Monit [Jozef Lami] (7. sraz, Praha)
Ako nespáliť server - Monit [Jozef Lami] (7. sraz, Praha)
 
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
Doctrine - Co dělat když entity nestačí [Filip Procházka] (7. sraz, Praha)
 
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
 
Automatizace jednoduše [Martin Zeman] (6. sraz, Praha, 31.3.2016)
Automatizace jednoduše [Martin Zeman] (6. sraz, Praha, 31.3.2016)Automatizace jednoduše [Martin Zeman] (6. sraz, Praha, 31.3.2016)
Automatizace jednoduše [Martin Zeman] (6. sraz, Praha, 31.3.2016)
 
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
 
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
 

Atoto.cz - Do pekla pro data a zpět [Lukáš Huňka] (5. sraz, Praha, 18.2.2016)

  • 1. Atoto.cz do pekla pro data a zpět Lukáš Huňka CTO Atoto.cz @hunaczech
  • 2. 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 !
  • 3. 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 (!)
  • 4. 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
  • 5. 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)
  • 6. 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
  • 7. 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
  • 8. 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
  • 9. 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ů
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. H.R. okénko II - Q&A - Dotazy osobně nebo kdykoliv jindy na - lukas@atoto.cz - 607 049 258 (24@7) - Twitter - Facebook - Google+ - http://developer.atoto.cz - 20.000 Kč za tip na vývojáře
  • 15. 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