SlideShare ist ein Scribd-Unternehmen logo
1 von 15
Optymalizacja serwisów internetowych
Piotr Deszyński, Łukasz Kawczyński, Rafał Malinowski

26.02.2010
Z czym się zmagamy?

✤   24 miliony unikalnych użytkowników miesięcznie

✤   10 milionów zapytań do wyszukiwarki na dobę

✤   Ponad 50 milionów rekordów w bazie danych

                               Rozkład obciążenia serwerów
                   68%
                                600 sesji na sekundę do load balancera
       15%
                                   static    frontend     openx

             17%
Infrastruktura serwisu

✤   18 maszyn do obsługi frontendu

✤   3 maszyny do przechowywania statycznej zawartości

✤   14 serwerów do Sphinxa

✤   6 serwerów bazodanowych

✤   3 load balancery rozdzielające ruch

✤   Wydzielenie serwerów ułatwia monitorowanie oraz replikowanie
    poszczególnych węzłów danych
„Premature optimization
  is the root of all evil”
         Donald Knuth
Początki serwisu


✤   Wyszukiwarka multimediów

✤   Jeden fizyczny serwer na którym znajdował się serwer HTTP, baza danych
    oraz interpreter PHP

✤   Wyszukiwanie oparte o MySQL (full-text search)

✤   Rosnący ruch - problemy z MySQL
Prawdziwy start

✤   Decyzje:

    ✤   Przepisanie frontendu z użyciem Zend Framework

    ✤   Wykorzystanie Zend_Search_Lucene

✤   Problemy:

    ✤   Długie czasy wyszukiwań

    ✤   Długie czasy przebudowy indeksów, problemy ze stabilnością

✤   Próby integracji Lucene Java
Sphinx


✤   API - prosta i szybka integracja z PHP

✤   Budowa indexów z danych pobranych z MySQL

✤   Szybka przebudowa indeksów

✤   Możliwości filtrowania - filtry numeryczne i tekstowe
Sphinx - skalowalność

                           Frontend
                                               Szukaj

                          Serwer HTTP

                                               Żądanie

                   Sphinx distributed search




index 1/n     index 1/n     index 1/n      .........    index 1/n
Sphinx - wydajność

             Frontend
                                                         Szukaj

           Serwer HTTP

                                                         Żądanie

           Load balancer                           Wybranie serwera




Sphinx 1   Sphinx 2        Sphinx 3   .....   Sphinx n   Repliki
Sphinx - optymalizacja

✤   Podział na klastry usługowe

✤   Podział indexów wg schematu main+delta

    ✤   Główny index przebudowywany bardzo rzadko

    ✤   Delty przebudowywane kilka razy dziennie

✤   Cachowanie zapytań i mechanizmy odświeżania

✤   Pomijanie słów kluczowych - przykładowo "rar"
Optymalizacje odwołań I/O


✤   Kompresja CSS/JavaScript/HTML

✤   Redukcja ilości odwołań do JavaScript/CSS

✤   Grafika oparta na sprite-ach

✤   Użycie akceleratora PHP (xcache)
Sharding - optymalizacja na przyszłość

                                       Dane

                PHP                   Decyzja wyboru sharda


                                      Zapis danych do odpowiedniej bazy

      Shard 1         Shard 2

✤   Podział danych na dwie bazy

✤   Możliwość późniejszego skalowania - manipulowanie danymi

✤   Denormalizacja bazy
Optymalizować, ale kiedy ?

✤   Optymalizacja na etapie wytwarzania oprogramowania nie koniecznie jest
    dobra

✤   Optymalizacja powinna być reakcją na wzrastające obciążenie

✤   Optymalizacja powinna wynikać z obserwacji działania aplikacji

    ✤   ilość wizyt/odsłon - sprawa oczywista

    ✤   obciążenie serwerów/usług - load i/o sieciowe, i/o dysków, zapytania
        do serwerów http, bazy danych, systemów cache itp.
Plany na przyszłość



✤   W planach testy takich rozwiązań jak:

    ✤   PHP HipHop

    ✤   Cassandra
Pytania ?

Weitere ähnliche Inhalte

Was ist angesagt?

MongoDB - baza danych zorientowana dokumentowo. Czy ruch NoSQL ma sens?
MongoDB - baza danych zorientowana dokumentowo. Czy ruch NoSQL ma sens?MongoDB - baza danych zorientowana dokumentowo. Czy ruch NoSQL ma sens?
MongoDB - baza danych zorientowana dokumentowo. Czy ruch NoSQL ma sens?Wojciech Sznapka
 
Serwery i hosting w służbie SEO
Serwery i hosting w służbie SEOSerwery i hosting w służbie SEO
Serwery i hosting w służbie SEOSilesia SEM
 
Mongo db baza danych zorientowana dokumentowo
Mongo db  baza danych zorientowana dokumentowo Mongo db  baza danych zorientowana dokumentowo
Mongo db baza danych zorientowana dokumentowo XSolve
 
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza SzymonSadlo
 
Przetwarzanie asynchroniczne w zastosowaniach webowych
Przetwarzanie asynchroniczne w zastosowaniach webowychPrzetwarzanie asynchroniczne w zastosowaniach webowych
Przetwarzanie asynchroniczne w zastosowaniach webowychleafnode
 
PHP - Normalizowanie danych - Symfony
PHP - Normalizowanie danych - SymfonyPHP - Normalizowanie danych - Symfony
PHP - Normalizowanie danych - SymfonySabina Irzyk
 
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPROIDEA
 
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...PROIDEA
 
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwAsynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwLuke Adamczewski
 

Was ist angesagt? (11)

MongoDB - baza danych zorientowana dokumentowo. Czy ruch NoSQL ma sens?
MongoDB - baza danych zorientowana dokumentowo. Czy ruch NoSQL ma sens?MongoDB - baza danych zorientowana dokumentowo. Czy ruch NoSQL ma sens?
MongoDB - baza danych zorientowana dokumentowo. Czy ruch NoSQL ma sens?
 
Serwery i hosting w służbie SEO
Serwery i hosting w służbie SEOSerwery i hosting w służbie SEO
Serwery i hosting w służbie SEO
 
PHP5 i MySQL. Biblia
PHP5 i MySQL. BibliaPHP5 i MySQL. Biblia
PHP5 i MySQL. Biblia
 
Mongo db baza danych zorientowana dokumentowo
Mongo db  baza danych zorientowana dokumentowo Mongo db  baza danych zorientowana dokumentowo
Mongo db baza danych zorientowana dokumentowo
 
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza
Optymalizacyjna magia, czyli jak wyciągać króliki z kapelusza
 
Przetwarzanie asynchroniczne w zastosowaniach webowych
Przetwarzanie asynchroniczne w zastosowaniach webowychPrzetwarzanie asynchroniczne w zastosowaniach webowych
Przetwarzanie asynchroniczne w zastosowaniach webowych
 
PHP - Normalizowanie danych - Symfony
PHP - Normalizowanie danych - SymfonyPHP - Normalizowanie danych - Symfony
PHP - Normalizowanie danych - Symfony
 
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
 
It od kuchni w nokaut.pl
It od kuchni w nokaut.plIt od kuchni w nokaut.pl
It od kuchni w nokaut.pl
 
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...
4Developers 2015: Szybciej niż Struś Pędziwiatr - WebSockets w aplikacjach we...
 
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwAsynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
 

Andere mochten auch

Social Media Optimization Plan
Social Media Optimization PlanSocial Media Optimization Plan
Social Media Optimization PlanMargaux
 
LAMP_TRAINING_SESSION_5
LAMP_TRAINING_SESSION_5LAMP_TRAINING_SESSION_5
LAMP_TRAINING_SESSION_5umapst
 
User Study On Multitouch screens
User Study On Multitouch screensUser Study On Multitouch screens
User Study On Multitouch screensDavy Debacker
 
UCLA project - Customized Bras
UCLA project - Customized BrasUCLA project - Customized Bras
UCLA project - Customized BrasLisandra Maioli
 
Contextual enquiry v1.0
Contextual enquiry v1.0Contextual enquiry v1.0
Contextual enquiry v1.0nazim iqbal
 
LAMP_TRAINING_SESSION_2
LAMP_TRAINING_SESSION_2LAMP_TRAINING_SESSION_2
LAMP_TRAINING_SESSION_2umapst
 

Andere mochten auch (20)

Social Media Optimization Plan
Social Media Optimization PlanSocial Media Optimization Plan
Social Media Optimization Plan
 
Power presentació ap s
Power presentació ap sPower presentació ap s
Power presentació ap s
 
LAMP_TRAINING_SESSION_5
LAMP_TRAINING_SESSION_5LAMP_TRAINING_SESSION_5
LAMP_TRAINING_SESSION_5
 
Bitcoin znak nowych czasów czy element starego porządku
Bitcoin  znak nowych czasów czy element starego porządkuBitcoin  znak nowych czasów czy element starego porządku
Bitcoin znak nowych czasów czy element starego porządku
 
2004 0520 Tx
2004 0520 Tx2004 0520 Tx
2004 0520 Tx
 
User Study On Multitouch screens
User Study On Multitouch screensUser Study On Multitouch screens
User Study On Multitouch screens
 
Smarter Cities czyli inteligente miasta wg IBM
Smarter Cities czyli inteligente miasta wg IBMSmarter Cities czyli inteligente miasta wg IBM
Smarter Cities czyli inteligente miasta wg IBM
 
111
111111
111
 
Jakdojade.pl – planer podróży transportem publicznym - Netcamp #15
Jakdojade.pl – planer podróży transportem publicznym - Netcamp #15Jakdojade.pl – planer podróży transportem publicznym - Netcamp #15
Jakdojade.pl – planer podróży transportem publicznym - Netcamp #15
 
L’ hort a l’escola bressol municipal secà
L’ hort a l’escola bressol municipal secàL’ hort a l’escola bressol municipal secà
L’ hort a l’escola bressol municipal secà
 
Memories
MemoriesMemories
Memories
 
UCLA project - Customized Bras
UCLA project - Customized BrasUCLA project - Customized Bras
UCLA project - Customized Bras
 
Druk 3D - where is the money? Michał Frączek – Materialination
Druk 3D - where is the money? Michał Frączek – MaterialinationDruk 3D - where is the money? Michał Frączek – Materialination
Druk 3D - where is the money? Michał Frączek – Materialination
 
Dos anys implicats
Dos anys implicatsDos anys implicats
Dos anys implicats
 
2004 0804 Tx
2004 0804 Tx2004 0804 Tx
2004 0804 Tx
 
2004_0525CA
2004_0525CA2004_0525CA
2004_0525CA
 
Anna Orecka, Sebastian Dawid - Projekt jakość, czyli jak skutecznie podnosić ...
Anna Orecka, Sebastian Dawid - Projekt jakość, czyli jak skutecznie podnosić ...Anna Orecka, Sebastian Dawid - Projekt jakość, czyli jak skutecznie podnosić ...
Anna Orecka, Sebastian Dawid - Projekt jakość, czyli jak skutecznie podnosić ...
 
Contextual enquiry v1.0
Contextual enquiry v1.0Contextual enquiry v1.0
Contextual enquiry v1.0
 
LAMP_TRAINING_SESSION_2
LAMP_TRAINING_SESSION_2LAMP_TRAINING_SESSION_2
LAMP_TRAINING_SESSION_2
 
2005 0504 Ca
2005 0504 Ca2005 0504 Ca
2005 0504 Ca
 

Ähnlich wie Optymalizacja serwisow internetowych - Filestube

[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegroallegro.tech
 
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacjiProjektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacjiAntoni Orfin
 
Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Divante
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PROIDEA
 
PHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawPHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawWydawnictwo Helion
 
Pocałunek śmierci
Pocałunek śmierciPocałunek śmierci
Pocałunek śmierciDivante
 
Wjug from java to big data
Wjug   from java to big dataWjug   from java to big data
Wjug from java to big dataPiotr Guzik
 
integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...
integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...
integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...Nazar Patrylo
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startPHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startWydawnictwo Helion
 
IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl 3camp
 
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...PROIDEA
 
(node.js) Web Development - prościej
(node.js) Web Development - prościej(node.js) Web Development - prościej
(node.js) Web Development - prościejMateusz Kwasniewski
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Adrian Kalbarczyk
 
Paleta możliwości web developera
Paleta możliwości web developeraPaleta możliwości web developera
Paleta możliwości web developeraTomasz Borowski
 
3camp - Lucene pod presją?
3camp - Lucene pod presją?  3camp - Lucene pod presją?
3camp - Lucene pod presją? Wirtualna Polska
 
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaModsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaLeszek Mi?
 

Ähnlich wie Optymalizacja serwisow internetowych - Filestube (20)

[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacjiProjektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
 
Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
 
PHP. Rozmówki
PHP. RozmówkiPHP. Rozmówki
PHP. Rozmówki
 
PHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawPHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstaw
 
Pocałunek śmierci
Pocałunek śmierciPocałunek śmierci
Pocałunek śmierci
 
Wjug from java to big data
Wjug   from java to big dataWjug   from java to big data
Wjug from java to big data
 
integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...
integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...
integracja danych przesyłanych za pomocą Web-Socketów na przykladie bibliote...
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startPHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start
 
IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl
 
Jaki hosting pod wordpressa
Jaki hosting pod wordpressaJaki hosting pod wordpressa
Jaki hosting pod wordpressa
 
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...
Marcin Mazurek - High Scalability: Building bigger, faster, more reliable web...
 
(node.js) Web Development - prościej
(node.js) Web Development - prościej(node.js) Web Development - prościej
(node.js) Web Development - prościej
 
Aplikacje internetowe (2010)
Aplikacje internetowe (2010)Aplikacje internetowe (2010)
Aplikacje internetowe (2010)
 
Paleta możliwości web developera
Paleta możliwości web developeraPaleta możliwości web developera
Paleta możliwości web developera
 
Apache. Rozmówki
Apache. RozmówkiApache. Rozmówki
Apache. Rozmówki
 
3camp - Lucene pod presją?
3camp - Lucene pod presją?  3camp - Lucene pod presją?
3camp - Lucene pod presją?
 
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-PolskaModsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
Modsecurity-czy-Twoj-WAF-to-potrafi-Leszek-Mis-Linux-Polska
 
Iron Python I Dlr
Iron Python I DlrIron Python I Dlr
Iron Python I Dlr
 

Mehr von Fundacja Rozwoju Branży Internetowej Netcamp

Jak będzie wyglądała przyszłość e-commerce za kolejne 15 lat? - Paweł Fornals...
Jak będzie wyglądała przyszłość e-commerce za kolejne 15 lat? - Paweł Fornals...Jak będzie wyglądała przyszłość e-commerce za kolejne 15 lat? - Paweł Fornals...
Jak będzie wyglądała przyszłość e-commerce za kolejne 15 lat? - Paweł Fornals...Fundacja Rozwoju Branży Internetowej Netcamp
 
Development w ręce ludu - czyli wielki powrót twórców niezależnych w czasach ...
Development w ręce ludu - czyli wielki powrót twórców niezależnych w czasach ...Development w ręce ludu - czyli wielki powrót twórców niezależnych w czasach ...
Development w ręce ludu - czyli wielki powrót twórców niezależnych w czasach ...Fundacja Rozwoju Branży Internetowej Netcamp
 
Jak stworzyć aplikację mobilną która nie zarabia i zdobyć inwestora, lekcje z...
Jak stworzyć aplikację mobilną która nie zarabia i zdobyć inwestora, lekcje z...Jak stworzyć aplikację mobilną która nie zarabia i zdobyć inwestora, lekcje z...
Jak stworzyć aplikację mobilną która nie zarabia i zdobyć inwestora, lekcje z...Fundacja Rozwoju Branży Internetowej Netcamp
 
Growth Hacking. Jak pozyskać i zatrzymać użytkowników aplikacji mobilnej. - M...
Growth Hacking. Jak pozyskać i zatrzymać użytkowników aplikacji mobilnej. - M...Growth Hacking. Jak pozyskać i zatrzymać użytkowników aplikacji mobilnej. - M...
Growth Hacking. Jak pozyskać i zatrzymać użytkowników aplikacji mobilnej. - M...Fundacja Rozwoju Branży Internetowej Netcamp
 
Jak przeskoczyć przepaść, stworzyć produkt technologiczny i na nim zarobić - ...
Jak przeskoczyć przepaść, stworzyć produkt technologiczny i na nim zarobić - ...Jak przeskoczyć przepaść, stworzyć produkt technologiczny i na nim zarobić - ...
Jak przeskoczyć przepaść, stworzyć produkt technologiczny i na nim zarobić - ...Fundacja Rozwoju Branży Internetowej Netcamp
 

Mehr von Fundacja Rozwoju Branży Internetowej Netcamp (20)

Introduction to Lean Startup for Startup Weekend attendees - Michael Kacprzak
Introduction to Lean Startup for Startup Weekend attendees - Michael KacprzakIntroduction to Lean Startup for Startup Weekend attendees - Michael Kacprzak
Introduction to Lean Startup for Startup Weekend attendees - Michael Kacprzak
 
Doing IT the right way - Marcin Kaczmarek, Consileon
Doing IT the right way - Marcin Kaczmarek, ConsileonDoing IT the right way - Marcin Kaczmarek, Consileon
Doing IT the right way - Marcin Kaczmarek, Consileon
 
Jak będzie wyglądała przyszłość e-commerce za kolejne 15 lat? - Paweł Fornals...
Jak będzie wyglądała przyszłość e-commerce za kolejne 15 lat? - Paweł Fornals...Jak będzie wyglądała przyszłość e-commerce za kolejne 15 lat? - Paweł Fornals...
Jak będzie wyglądała przyszłość e-commerce za kolejne 15 lat? - Paweł Fornals...
 
Development w ręce ludu - czyli wielki powrót twórców niezależnych w czasach ...
Development w ręce ludu - czyli wielki powrót twórców niezależnych w czasach ...Development w ręce ludu - czyli wielki powrót twórców niezależnych w czasach ...
Development w ręce ludu - czyli wielki powrót twórców niezależnych w czasach ...
 
Zmysły rozszerzone - jak wearable computing zmienia świat - Paweł Surgiel
Zmysły rozszerzone - jak wearable computing zmienia świat - Paweł SurgielZmysły rozszerzone - jak wearable computing zmienia świat - Paweł Surgiel
Zmysły rozszerzone - jak wearable computing zmienia świat - Paweł Surgiel
 
Czy wearable car jest wizja przyszlosci?
Czy wearable car jest wizja przyszlosci?Czy wearable car jest wizja przyszlosci?
Czy wearable car jest wizja przyszlosci?
 
Google glass – kolejna rewolucja w tworzeniu aplikacji mobilnych
Google glass – kolejna rewolucja w tworzeniu aplikacji mobilnychGoogle glass – kolejna rewolucja w tworzeniu aplikacji mobilnych
Google glass – kolejna rewolucja w tworzeniu aplikacji mobilnych
 
Marketing automation w praktyce - Tomasz Kryk
Marketing automation w praktyce - Tomasz KrykMarketing automation w praktyce - Tomasz Kryk
Marketing automation w praktyce - Tomasz Kryk
 
Potencjal API w e-commerce - Przemek Basiak, IAI
Potencjal API w e-commerce - Przemek Basiak, IAIPotencjal API w e-commerce - Przemek Basiak, IAI
Potencjal API w e-commerce - Przemek Basiak, IAI
 
Jak odzyskać domenę i chronić markę w e-biznesie – Rafał Malujda
Jak odzyskać domenę i chronić markę w e-biznesie – Rafał MalujdaJak odzyskać domenę i chronić markę w e-biznesie – Rafał Malujda
Jak odzyskać domenę i chronić markę w e-biznesie – Rafał Malujda
 
Projektowanie, wdrożenie i promocja aplikacji dla iPhone
Projektowanie, wdrożenie i promocja aplikacji dla iPhoneProjektowanie, wdrożenie i promocja aplikacji dla iPhone
Projektowanie, wdrożenie i promocja aplikacji dla iPhone
 
Jak stworzyć aplikację mobilną która nie zarabia i zdobyć inwestora, lekcje z...
Jak stworzyć aplikację mobilną która nie zarabia i zdobyć inwestora, lekcje z...Jak stworzyć aplikację mobilną która nie zarabia i zdobyć inwestora, lekcje z...
Jak stworzyć aplikację mobilną która nie zarabia i zdobyć inwestora, lekcje z...
 
Obsluga srodowiska programistycznego - Badanie programistów
Obsluga srodowiska programistycznego - Badanie programistówObsluga srodowiska programistycznego - Badanie programistów
Obsluga srodowiska programistycznego - Badanie programistów
 
Growth Hacking. Jak pozyskać i zatrzymać użytkowników aplikacji mobilnej. - M...
Growth Hacking. Jak pozyskać i zatrzymać użytkowników aplikacji mobilnej. - M...Growth Hacking. Jak pozyskać i zatrzymać użytkowników aplikacji mobilnej. - M...
Growth Hacking. Jak pozyskać i zatrzymać użytkowników aplikacji mobilnej. - M...
 
Jak przeskoczyć przepaść, stworzyć produkt technologiczny i na nim zarobić - ...
Jak przeskoczyć przepaść, stworzyć produkt technologiczny i na nim zarobić - ...Jak przeskoczyć przepaść, stworzyć produkt technologiczny i na nim zarobić - ...
Jak przeskoczyć przepaść, stworzyć produkt technologiczny i na nim zarobić - ...
 
Responsive Web Design - Michał Rachowski Squiz
Responsive Web Design - Michał Rachowski SquizResponsive Web Design - Michał Rachowski Squiz
Responsive Web Design - Michał Rachowski Squiz
 
Jak się robi Internety z wykorzystaniem social media
Jak się robi Internety z wykorzystaniem social mediaJak się robi Internety z wykorzystaniem social media
Jak się robi Internety z wykorzystaniem social media
 
Chmura wszystko zmienia – jak cloud computing przewraca do góry nogami rynek ...
Chmura wszystko zmienia – jak cloud computing przewraca do góry nogami rynek ...Chmura wszystko zmienia – jak cloud computing przewraca do góry nogami rynek ...
Chmura wszystko zmienia – jak cloud computing przewraca do góry nogami rynek ...
 
Social TV – you haven’t seen it yet
Social TV – you haven’t seen it yetSocial TV – you haven’t seen it yet
Social TV – you haven’t seen it yet
 
Trendy na rynku rozwiązań mobilnych
Trendy na rynku rozwiązań mobilnychTrendy na rynku rozwiązań mobilnych
Trendy na rynku rozwiązań mobilnych
 

Optymalizacja serwisow internetowych - Filestube

  • 1. Optymalizacja serwisów internetowych Piotr Deszyński, Łukasz Kawczyński, Rafał Malinowski 26.02.2010
  • 2. Z czym się zmagamy? ✤ 24 miliony unikalnych użytkowników miesięcznie ✤ 10 milionów zapytań do wyszukiwarki na dobę ✤ Ponad 50 milionów rekordów w bazie danych Rozkład obciążenia serwerów 68% 600 sesji na sekundę do load balancera 15% static frontend openx 17%
  • 3. Infrastruktura serwisu ✤ 18 maszyn do obsługi frontendu ✤ 3 maszyny do przechowywania statycznej zawartości ✤ 14 serwerów do Sphinxa ✤ 6 serwerów bazodanowych ✤ 3 load balancery rozdzielające ruch ✤ Wydzielenie serwerów ułatwia monitorowanie oraz replikowanie poszczególnych węzłów danych
  • 4. „Premature optimization is the root of all evil” Donald Knuth
  • 5. Początki serwisu ✤ Wyszukiwarka multimediów ✤ Jeden fizyczny serwer na którym znajdował się serwer HTTP, baza danych oraz interpreter PHP ✤ Wyszukiwanie oparte o MySQL (full-text search) ✤ Rosnący ruch - problemy z MySQL
  • 6. Prawdziwy start ✤ Decyzje: ✤ Przepisanie frontendu z użyciem Zend Framework ✤ Wykorzystanie Zend_Search_Lucene ✤ Problemy: ✤ Długie czasy wyszukiwań ✤ Długie czasy przebudowy indeksów, problemy ze stabilnością ✤ Próby integracji Lucene Java
  • 7. Sphinx ✤ API - prosta i szybka integracja z PHP ✤ Budowa indexów z danych pobranych z MySQL ✤ Szybka przebudowa indeksów ✤ Możliwości filtrowania - filtry numeryczne i tekstowe
  • 8. Sphinx - skalowalność Frontend Szukaj Serwer HTTP Żądanie Sphinx distributed search index 1/n index 1/n index 1/n ......... index 1/n
  • 9. Sphinx - wydajność Frontend Szukaj Serwer HTTP Żądanie Load balancer Wybranie serwera Sphinx 1 Sphinx 2 Sphinx 3 ..... Sphinx n Repliki
  • 10. Sphinx - optymalizacja ✤ Podział na klastry usługowe ✤ Podział indexów wg schematu main+delta ✤ Główny index przebudowywany bardzo rzadko ✤ Delty przebudowywane kilka razy dziennie ✤ Cachowanie zapytań i mechanizmy odświeżania ✤ Pomijanie słów kluczowych - przykładowo "rar"
  • 11. Optymalizacje odwołań I/O ✤ Kompresja CSS/JavaScript/HTML ✤ Redukcja ilości odwołań do JavaScript/CSS ✤ Grafika oparta na sprite-ach ✤ Użycie akceleratora PHP (xcache)
  • 12. Sharding - optymalizacja na przyszłość Dane PHP Decyzja wyboru sharda Zapis danych do odpowiedniej bazy Shard 1 Shard 2 ✤ Podział danych na dwie bazy ✤ Możliwość późniejszego skalowania - manipulowanie danymi ✤ Denormalizacja bazy
  • 13. Optymalizować, ale kiedy ? ✤ Optymalizacja na etapie wytwarzania oprogramowania nie koniecznie jest dobra ✤ Optymalizacja powinna być reakcją na wzrastające obciążenie ✤ Optymalizacja powinna wynikać z obserwacji działania aplikacji ✤ ilość wizyt/odsłon - sprawa oczywista ✤ obciążenie serwerów/usług - load i/o sieciowe, i/o dysków, zapytania do serwerów http, bazy danych, systemów cache itp.
  • 14. Plany na przyszłość ✤ W planach testy takich rozwiązań jak: ✤ PHP HipHop ✤ Cassandra