SlideShare a Scribd company logo
1 of 17
Download to read offline
SME.SK ODPORÚČAČ
• Aké články čítajú mne podobní ľudia a ja som nevidel?
• veľa veľa dát (~1M pageviews denne)
• každú minútu nové (~1000)
• veľa veľa traffic (peak okolo 9 ráno)
• rýchla odozva (horná hranica ~2-3 sekundy)
ALGORITMUS
• algoritmus k-najbližších susedov
• fulltext search ako ho nepoznáte (tf-idf zadarmo!)
• + implicitná negatívna spätná väzba
    • čo už videl, ale neklikol
•    + explicitná negatívna spätná väzba
    • toto nechcem už vidieť (x tlačítko)
SYNTETICKÉ TESTOVANIE
• 15-dňové logy
• trénovacia / testovacia časť
• na koľko % z top10 klikol neskôr?
• škálovateľnosť (voči velkosti okna)
REÁLNE TESTOVANIE                                                                                           Normalized reject rate
                                                                                   0.7

    •          2 odporúčače
              • “standard”
                                                                                   0.6

                                                                                   0.5                                                                    ?
                                                                                   0.4
              • + implicitná negatívna spätná väzba                                                                                                       standard




                                                                               %
                                                                                   0.3                                                                    negative feedback


    •          parameter veľkosti okolia                                           0.2

                                                                                   0.1
              • 5 až 50 s krokom 5                                                     0
                                                                                           5   10   15   20       25      30      35    40    45    50

    •          = 20 skupín                                                                                neighborhood size


    •          7 dní = 2.8M odporúčaní                                                                                  click/reject ratio


                                                                                                                                                          ?
                                                                                   3.1

    •          čo merať?                                                           2.9
                                                                                   2.7
              • počet klikov na “toto nechcem”                                     2.5

              • počet klikov na odporúčané články                                  2.3
                                                                                   2.1
                                                                                                                                                           standard
                                                                                                                                                           negative feedback

              • pomer klikov na článok a klikov na                                 1.9

                “toto nechcem”                 Signifikancia?                      1.7
                                                                                   1.5
                                                              Kruskal - Wallis 5test 10             15   20        25      30     35     40    45    50
                                                                                                              neighborhood size
                               Normalized click rate
    1.2

     1

    0.8
                                                                   !
    0.6                                                            standard
%




                                                                   negative feedback
    0.4

    0.2

     0
          5     10   15   20    25     30      35   40   45   50
                           neighborhood size
NASADZOVANIE – PRÍPRAVA
• rails, mysql, sphinx, passenger, cron, apache, debian
• Virtuálny stroj od sme.sk
• Monitorovanie výkonu (New Relic RPM)
  • záťaž, pamäť, pomalé akcie, databáza, dopyty, indexy...
• Reportovanie chýb (Hoptoad + Redmine)
  • pošle mail keď nastane chyba, otvorí/upraví ticket...
• Automatické nasadzovanie (capistrano)
  • stiahne novú verziu z repozitára, migrácie db, crontab, symlink,
    restart...
NASADZOVANIE - REALITA
• Virtuálny stroj sme.sk >> nimbus.fiit.stuba.sk
• Monitorovanie výkonu #win
• Notifikácia chýb + Redmine #fail
• MySQL
  • pri tabuľkách s >10M riadkov končí sranda
  • query planner je niekedy sprostejší ako ja #fail
• Automatické nasadzovanie #win
  • príkaz na vypnutie služby (.htaccess redirect 400)
NASADZOVANIE - REALITA
• Virtuálny stroj sme.sk >> nimbus.fiit.stuba.sk
• Monitorovanie výkonu #win
• Notifikácia chýb + Redmine #fail
• MySQL
  • pri tabuľkách s >10M riadkov končí sranda
  • query planner je niekedy sprostejší ako ja #fail
• Automatické nasadzovanie #win
  • príkaz na vypnutie služby (.htaccess redirect 400)
NASADZOVANIE - REALITA
• Virtuálny stroj sme.sk >> nimbus.fiit.stuba.sk
• Monitorovanie výkonu #win
• Notifikácia chýb + Redmine #fail
• MySQL
  • pri tabuľkách s >10M riadkov končí sranda
  • query planner je niekedy sprostejší ako ja #fail
• Automatické nasadzovanie #win
  • príkaz na vypnutie služby (.htaccess redirect 400)
NASADZOVANIE - REALITA
• Virtuálny stroj sme.sk >> nimbus.fiit.stuba.sk
• Monitorovanie výkonu #win
• Notifikácia chýb + Redmine #fail
• MySQL
  • pri tabuľkách s >10M riadkov končí sranda
  • query planner je niekedy sprostejší ako ja #fail
• Automatické nasadzovanie #win
  • príkaz na vypnutie služby (.htaccess redirect 400)
SPUSTENIE
• pondelok 8.11.                             10%!

• o 4 hodiny neskôr
• don’t panic!
  • 1 jadro + 2GB RAM => 4 jadrá + 3GB RAM
  • hacky hack!
• utorok 9.11.
• streda 10.11 7:30am
  • mašina je mŕtva
SPUSTENIE                                    10%!



• pondelok 8.11.
• o 4 hodiny neskôr
• don’t panic!
  • 1 jadro + 2GB RAM => 4 jadrá + 3GB RAM
  • hacky hack!
• utorok 9.11.
• streda 10.11 7:30am
  • mašina je mŕtva
SPUSTENIE
• pondelok 8.11.
• o 4 hodiny neskôr
• don’t panic!
  • 1 jadro + 2GB RAM => 4 jadrá + 3GB RAM
  • hacky hack!
• utorok 9.11.
• streda 10.11 7:30am
  • mašina je mŕtva
OHLASY
• etrend
OHLASY
• etrend
• twitter
OHLASY
• etrend
• twitter
• diskusie sme.sk
OHLASY
• etrend
• twitter
• diskusie sme.sk

More Related Content

Viewers also liked

Leveraging microblogs for resource ranking
Leveraging microblogs for resource rankingLeveraging microblogs for resource ranking
Leveraging microblogs for resource rankingTomas Majer
 
MONOGRAM Tech Mondays: GIT
MONOGRAM Tech Mondays: GITMONOGRAM Tech Mondays: GIT
MONOGRAM Tech Mondays: GITTomas Majer
 
Nove trendy v html a css
Nove trendy v html a cssNove trendy v html a css
Nove trendy v html a cssTomas Majer
 
elasticsearch - advanced features in practice
elasticsearch - advanced features in practiceelasticsearch - advanced features in practice
elasticsearch - advanced features in practiceJano Suchal
 
Ruby on Rails Presentation
Ruby on Rails PresentationRuby on Rails Presentation
Ruby on Rails PresentationJoost Hietbrink
 

Viewers also liked (6)

Leveraging microblogs for resource ranking
Leveraging microblogs for resource rankingLeveraging microblogs for resource ranking
Leveraging microblogs for resource ranking
 
MONOGRAM Tech Mondays: GIT
MONOGRAM Tech Mondays: GITMONOGRAM Tech Mondays: GIT
MONOGRAM Tech Mondays: GIT
 
Čo po GAMČI?
Čo po GAMČI?Čo po GAMČI?
Čo po GAMČI?
 
Nove trendy v html a css
Nove trendy v html a cssNove trendy v html a css
Nove trendy v html a css
 
elasticsearch - advanced features in practice
elasticsearch - advanced features in practiceelasticsearch - advanced features in practice
elasticsearch - advanced features in practice
 
Ruby on Rails Presentation
Ruby on Rails PresentationRuby on Rails Presentation
Ruby on Rails Presentation
 

More from Jano Suchal

Improving code quality
Improving code qualityImproving code quality
Improving code qualityJano Suchal
 
Beyond search queries
Beyond search queriesBeyond search queries
Beyond search queriesJano Suchal
 
Rank all the things!
Rank all the things!Rank all the things!
Rank all the things!Jano Suchal
 
Bonetics: Mastering Puppet Workshop
Bonetics: Mastering Puppet WorkshopBonetics: Mastering Puppet Workshop
Bonetics: Mastering Puppet WorkshopJano Suchal
 
Peter Mihalik: Puppet
Peter Mihalik: PuppetPeter Mihalik: Puppet
Peter Mihalik: PuppetJano Suchal
 
Tomáš Čorej: Configuration management & CFEngine3
Tomáš Čorej: Configuration management & CFEngine3Tomáš Čorej: Configuration management & CFEngine3
Tomáš Čorej: Configuration management & CFEngine3Jano Suchal
 
SQL: Query optimization in practice
SQL: Query optimization in practiceSQL: Query optimization in practice
SQL: Query optimization in practiceJano Suchal
 
Garelic: Google Analytics as App Performance monitoring
Garelic: Google Analytics as App Performance monitoringGarelic: Google Analytics as App Performance monitoring
Garelic: Google Analytics as App Performance monitoringJano Suchal
 
Miroslav Šimulčík: Temporálne databázy
Miroslav Šimulčík: Temporálne databázyMiroslav Šimulčík: Temporálne databázy
Miroslav Šimulčík: Temporálne databázyJano Suchal
 
Vojtech Rinik: Internship v USA - moje skúsenosti
Vojtech Rinik: Internship v USA - moje skúsenostiVojtech Rinik: Internship v USA - moje skúsenosti
Vojtech Rinik: Internship v USA - moje skúsenostiJano Suchal
 
Petr Joachim: Redis na Super.cz
Petr Joachim: Redis na Super.czPetr Joachim: Redis na Super.cz
Petr Joachim: Redis na Super.czJano Suchal
 
Metaprogramovanie #1
Metaprogramovanie #1Metaprogramovanie #1
Metaprogramovanie #1Jano Suchal
 
PostgreSQL: Advanced features in practice
PostgreSQL: Advanced features in practicePostgreSQL: Advanced features in practice
PostgreSQL: Advanced features in practiceJano Suchal
 
Postobjektové programovanie v Ruby
Postobjektové programovanie v RubyPostobjektové programovanie v Ruby
Postobjektové programovanie v RubyJano Suchal
 

More from Jano Suchal (15)

Datanest 3.0
Datanest 3.0Datanest 3.0
Datanest 3.0
 
Improving code quality
Improving code qualityImproving code quality
Improving code quality
 
Beyond search queries
Beyond search queriesBeyond search queries
Beyond search queries
 
Rank all the things!
Rank all the things!Rank all the things!
Rank all the things!
 
Bonetics: Mastering Puppet Workshop
Bonetics: Mastering Puppet WorkshopBonetics: Mastering Puppet Workshop
Bonetics: Mastering Puppet Workshop
 
Peter Mihalik: Puppet
Peter Mihalik: PuppetPeter Mihalik: Puppet
Peter Mihalik: Puppet
 
Tomáš Čorej: Configuration management & CFEngine3
Tomáš Čorej: Configuration management & CFEngine3Tomáš Čorej: Configuration management & CFEngine3
Tomáš Čorej: Configuration management & CFEngine3
 
SQL: Query optimization in practice
SQL: Query optimization in practiceSQL: Query optimization in practice
SQL: Query optimization in practice
 
Garelic: Google Analytics as App Performance monitoring
Garelic: Google Analytics as App Performance monitoringGarelic: Google Analytics as App Performance monitoring
Garelic: Google Analytics as App Performance monitoring
 
Miroslav Šimulčík: Temporálne databázy
Miroslav Šimulčík: Temporálne databázyMiroslav Šimulčík: Temporálne databázy
Miroslav Šimulčík: Temporálne databázy
 
Vojtech Rinik: Internship v USA - moje skúsenosti
Vojtech Rinik: Internship v USA - moje skúsenostiVojtech Rinik: Internship v USA - moje skúsenosti
Vojtech Rinik: Internship v USA - moje skúsenosti
 
Petr Joachim: Redis na Super.cz
Petr Joachim: Redis na Super.czPetr Joachim: Redis na Super.cz
Petr Joachim: Redis na Super.cz
 
Metaprogramovanie #1
Metaprogramovanie #1Metaprogramovanie #1
Metaprogramovanie #1
 
PostgreSQL: Advanced features in practice
PostgreSQL: Advanced features in practicePostgreSQL: Advanced features in practice
PostgreSQL: Advanced features in practice
 
Postobjektové programovanie v Ruby
Postobjektové programovanie v RubyPostobjektové programovanie v Ruby
Postobjektové programovanie v Ruby
 

sme.sk čočítať ontožíur-2010

  • 1.
  • 2. SME.SK ODPORÚČAČ • Aké články čítajú mne podobní ľudia a ja som nevidel? • veľa veľa dát (~1M pageviews denne) • každú minútu nové (~1000) • veľa veľa traffic (peak okolo 9 ráno) • rýchla odozva (horná hranica ~2-3 sekundy)
  • 3. ALGORITMUS • algoritmus k-najbližších susedov • fulltext search ako ho nepoznáte (tf-idf zadarmo!) • + implicitná negatívna spätná väzba • čo už videl, ale neklikol • + explicitná negatívna spätná väzba • toto nechcem už vidieť (x tlačítko)
  • 4. SYNTETICKÉ TESTOVANIE • 15-dňové logy • trénovacia / testovacia časť • na koľko % z top10 klikol neskôr? • škálovateľnosť (voči velkosti okna)
  • 5. REÁLNE TESTOVANIE Normalized reject rate 0.7 • 2 odporúčače • “standard” 0.6 0.5 ? 0.4 • + implicitná negatívna spätná väzba standard % 0.3 negative feedback • parameter veľkosti okolia 0.2 0.1 • 5 až 50 s krokom 5 0 5 10 15 20 25 30 35 40 45 50 • = 20 skupín neighborhood size • 7 dní = 2.8M odporúčaní click/reject ratio ? 3.1 • čo merať? 2.9 2.7 • počet klikov na “toto nechcem” 2.5 • počet klikov na odporúčané články 2.3 2.1 standard negative feedback • pomer klikov na článok a klikov na 1.9 “toto nechcem” Signifikancia? 1.7 1.5 Kruskal - Wallis 5test 10 15 20 25 30 35 40 45 50 neighborhood size Normalized click rate 1.2 1 0.8 ! 0.6 standard % negative feedback 0.4 0.2 0 5 10 15 20 25 30 35 40 45 50 neighborhood size
  • 6. NASADZOVANIE – PRÍPRAVA • rails, mysql, sphinx, passenger, cron, apache, debian • Virtuálny stroj od sme.sk • Monitorovanie výkonu (New Relic RPM) • záťaž, pamäť, pomalé akcie, databáza, dopyty, indexy... • Reportovanie chýb (Hoptoad + Redmine) • pošle mail keď nastane chyba, otvorí/upraví ticket... • Automatické nasadzovanie (capistrano) • stiahne novú verziu z repozitára, migrácie db, crontab, symlink, restart...
  • 7. NASADZOVANIE - REALITA • Virtuálny stroj sme.sk >> nimbus.fiit.stuba.sk • Monitorovanie výkonu #win • Notifikácia chýb + Redmine #fail • MySQL • pri tabuľkách s >10M riadkov končí sranda • query planner je niekedy sprostejší ako ja #fail • Automatické nasadzovanie #win • príkaz na vypnutie služby (.htaccess redirect 400)
  • 8. NASADZOVANIE - REALITA • Virtuálny stroj sme.sk >> nimbus.fiit.stuba.sk • Monitorovanie výkonu #win • Notifikácia chýb + Redmine #fail • MySQL • pri tabuľkách s >10M riadkov končí sranda • query planner je niekedy sprostejší ako ja #fail • Automatické nasadzovanie #win • príkaz na vypnutie služby (.htaccess redirect 400)
  • 9. NASADZOVANIE - REALITA • Virtuálny stroj sme.sk >> nimbus.fiit.stuba.sk • Monitorovanie výkonu #win • Notifikácia chýb + Redmine #fail • MySQL • pri tabuľkách s >10M riadkov končí sranda • query planner je niekedy sprostejší ako ja #fail • Automatické nasadzovanie #win • príkaz na vypnutie služby (.htaccess redirect 400)
  • 10. NASADZOVANIE - REALITA • Virtuálny stroj sme.sk >> nimbus.fiit.stuba.sk • Monitorovanie výkonu #win • Notifikácia chýb + Redmine #fail • MySQL • pri tabuľkách s >10M riadkov končí sranda • query planner je niekedy sprostejší ako ja #fail • Automatické nasadzovanie #win • príkaz na vypnutie služby (.htaccess redirect 400)
  • 11. SPUSTENIE • pondelok 8.11. 10%! • o 4 hodiny neskôr • don’t panic! • 1 jadro + 2GB RAM => 4 jadrá + 3GB RAM • hacky hack! • utorok 9.11. • streda 10.11 7:30am • mašina je mŕtva
  • 12. SPUSTENIE 10%! • pondelok 8.11. • o 4 hodiny neskôr • don’t panic! • 1 jadro + 2GB RAM => 4 jadrá + 3GB RAM • hacky hack! • utorok 9.11. • streda 10.11 7:30am • mašina je mŕtva
  • 13. SPUSTENIE • pondelok 8.11. • o 4 hodiny neskôr • don’t panic! • 1 jadro + 2GB RAM => 4 jadrá + 3GB RAM • hacky hack! • utorok 9.11. • streda 10.11 7:30am • mašina je mŕtva