Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
SKALOWANIE APLIKACJI PHP Leszek Krupiński, PHPCon 2014
Slide 2
Slide 2 text
LEAFNODE
Slide 3
Slide 3 text
CO TO JEST SKALOWALNOŚĆ?
Slide 4
Slide 4 text
— WIKIPEDIA Skalowalność (ang. scalability) - zapewnienie coraz wydajniejszej pracy w miarę zwiększania liczby elementów składowych.
Slide 5
Slide 5 text
SKALOWANIE WERTYKALNE
Slide 6
Slide 6 text
SKALOWANIE HORYZONTALNE
Slide 7
Slide 7 text
PO CO DBAĆ O SKALOWALNOŚĆ?
Slide 8
Slide 8 text
ZADOWOLENIE KLIENTA
Slide 9
Slide 9 text
bit.ly/slowwebspeed
Slide 10
Slide 10 text
No content
Slide 11
Slide 11 text
No content
Slide 12
Slide 12 text
JAKIE SĄ KRYTYCZNE WARTOŚCI?
Slide 13
Slide 13 text
No content
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
WYMIERNE KORZYŚCI
Slide 16
Slide 16 text
15,4% WIĘCEJ POBRAŃ FIREFOKSA PO PRZYSPIESZENIU STRONY MOZILLI O 2,2s
Slide 17
Slide 17 text
14% WIĘCEJ WPŁAT NA KAMPANIĘ BARACKA OBAMY PO PRZYSPIESZENIU STRONY ZGŁOSZENIOWEJ O 60%
Slide 18
Slide 18 text
WYLICZENIA WALMARTU I AMAZONU: ZYSKI WIĘKSZE O 1% ZA KAŻDE 100ms
Slide 19
Slide 19 text
WYLICZENIA YAHOO: 9% WIĘCEJ RUCHU W SERWISIE ZA KAŻDE 400ms
Slide 20
Slide 20 text
PODSTAWY
Slide 21
Slide 21 text
HTTP REQUEST
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
No content
Slide 25
Slide 25 text
SKOCZĘ JESZCZE PO WARZYWA
Slide 26
Slide 26 text
CO MOŻNA ZROBIĆ?
Slide 27
Slide 27 text
• SZYBSZA OBSŁUGA KLIENTA • WIĘCEJ KAS • KOLEJNE SKLEPY
Slide 28
Slide 28 text
KUPMY WIĘKSZY SERWER
Slide 29
Slide 29 text
KUPMY WIĘCEJ SERWERÓW
Slide 30
Slide 30 text
BEZ ODPOWIEDNIEJ ARCHITEKTURY NIE MA TO SENSU
Slide 31
Slide 31 text
BYĆ MOŻE WYSTARCZY OPTYALIZACJA APLIKACJI
Slide 32
Slide 32 text
WYCIŚNIĘCIE MAKSIMUM Z MOŻLIWOŚCI MASZYNY
Slide 33
Slide 33 text
OPTYMALIZUJ ISTOTNE FRAGMENTY KODU
Slide 34
Slide 34 text
— Donald Knuth Premature optimization is the root of all evil.
Slide 35
Slide 35 text
UPEWNIJ SIĘ, ŻE TO NA PEWNO PHP JEST WINNE
Slide 36
Slide 36 text
NARZĘDZIA
Slide 37
Slide 37 text
xdebug + cachegrind
Slide 38
Slide 38 text
No content
Slide 39
Slide 39 text
XHProf
Slide 40
Slide 40 text
No content
Slide 41
Slide 41 text
New Relic
Slide 42
Slide 42 text
NEWRELIC POKAŻE KTÓRE KOMPONENTY DOMINUJĄ OBCIĄŻENIE
Slide 43
Slide 43 text
METRYKI
Slide 44
Slide 44 text
No content
Slide 45
Slide 45 text
STATSD
Slide 46
Slide 46 text
No content
Slide 47
Slide 47 text
MIN, MAX, 90th, COUNT, MEAN
Slide 48
Slide 48 text
GRAPHITE
Slide 49
Slide 49 text
No content
Slide 50
Slide 50 text
No content
Slide 51
Slide 51 text
ANALIZA LOGÓW: LOGSTASH, GRAYLOG2
Slide 52
Slide 52 text
PHP
Slide 53
Slide 53 text
ZAKTUALIZUJ PHP
Slide 54
Slide 54 text
STANDARD NA 2014: NGINX + PHP-FPM
Slide 55
Slide 55 text
NGINX: SZYBKOŚĆ, ELASTYCZNOŚĆ
Slide 56
Slide 56 text
PHP-FPM: ROZDZIELENIE PROCESÓW
Slide 57
Slide 57 text
WŁĄCZ OPCODE CACHE
Slide 58
Slide 58 text
ZOPTYMALIZUJ FRAMEWORK
Slide 59
Slide 59 text
WŁĄCZ CACHE
Slide 60
Slide 60 text
WYŁĄCZ AUTOGENEROWANIE
Slide 61
Slide 61 text
WYŁĄCZ ZBĘDNE MODUŁY
Slide 62
Slide 62 text
OPTYMALIZACJA BAZY DANYCH
Slide 63
Slide 63 text
GŁÓWNA PRZYCZYNA PROBLEMÓW Z WYDAJNOŚCIĄ
Slide 64
Slide 64 text
SLOW LOG? PERCONA TOOLKIT
Slide 65
Slide 65 text
INDEKSY QUERY CACHE ALTERNATYWNE SILNIKI
Slide 66
Slide 66 text
NOSQL
Slide 67
Slide 67 text
ARCHITEKTURA
Slide 68
Slide 68 text
No content
Slide 69
Slide 69 text
DOBIERZ KOMPONENTY
Slide 70
Slide 70 text
FULL TEXT SEARCH? SPHINX.
Slide 71
Slide 71 text
STRUKTURY DANYCH? REDIS.
Slide 72
Slide 72 text
BUFORUJ DANE
Slide 73
Slide 73 text
•WYNIKI ZAPYTAŃ •ODPOWIEDZI API •KONFIGURACJA •GENEROWANE DANE
Slide 74
Slide 74 text
NAJCZĘŚCIEJ UŻYWANE: W PAMIĘCI
Slide 75
Slide 75 text
MEMCACHE
Slide 76
Slide 76 text
MOŻLIWOŚĆ WYDZIELENIA WSPÓŁDZIELONEGO SERWERA MEMCACHE
Slide 77
Slide 77 text
VARNISH
Slide 78
Slide 78 text
NAGŁÓWKI HTTP bit.ly/httpcache
Slide 79
Slide 79 text
MAX AGE LAST MODIFIED ETAG
Slide 80
Slide 80 text
ROZDZIEL SKŁADNIKI
Slide 81
Slide 81 text
! ARCHITEKTURA HEKSAGONALNA
Slide 82
Slide 82 text
No content
Slide 83
Slide 83 text
PRZETWARZAJ ASYNCHRONICZNIE
Slide 84
Slide 84 text
GDZIEŚ TU UŻYTKOWNIK KLIKA “RELOAD”
Slide 85
Slide 85 text
Aplikacja Kolejka
Slide 86
Slide 86 text
Nowa%piosenka Rekodowanie C++ MusicShare Generowanie%skrótu% piosenki C++ Web%Service Java Jabber erlang Statyczny%HTML PHP DECOUPLING
Slide 87
Slide 87 text
LOAD BALANCING Front&end RabbitMQ Consumer
Slide 88
Slide 88 text
! POZA JEDEN SERWER
Slide 89
Slide 89 text
LOAD BALANCER
Slide 90
Slide 90 text
VARNISH HAPROXY NGINX
Slide 91
Slide 91 text
PROBLEMY
Slide 92
Slide 92 text
! DANE WSPÓŁDZIELONE
Slide 93
Slide 93 text
SESJE
Slide 94
Slide 94 text
! PERSISTENT LOAD BALANCER
Slide 95
Slide 95 text
! WSPÓLNY MEMCACHE
Slide 96
Slide 96 text
INNE DANE
Slide 97
Slide 97 text
! PLIKI STATYCZNE
Slide 98
Slide 98 text
! WSPÓLDZIELONY SYSTEM PLIKÓW
Slide 99
Slide 99 text
API
Slide 100
Slide 100 text
ARCHITEKTURA DLA BAZ DANYCH
Slide 101
Slide 101 text
REPLIKACJA MASTER-SLAVE
Slide 102
Slide 102 text
SHARDING
Slide 103
Slide 103 text
No content
Slide 104
Slide 104 text
No content
Slide 105
Slide 105 text
No content
Slide 106
Slide 106 text
PROBLEMY
Slide 107
Slide 107 text
RESHARDING
Slide 108
Slide 108 text
JOIN
Slide 109
Slide 109 text
NA KONIEC
Slide 110
Slide 110 text
NIE OPTYMALIZUJ PRZEDWCZEŚNIE
Slide 111
Slide 111 text
BUDUJ ARCHITEKTURĘ PERSPETYWICZNIE
Slide 112
Slide 112 text
OPTYMALIZUJ STOSOWNIE DO SKALI
Slide 113
Slide 113 text
BĄDŹ ZEN
Slide 114
Slide 114 text
ŻYCZĘ WSZYSTKIM TAKICH PROBLEMÓW :-)
Slide 115
Slide 115 text
https://joind.in/11839 @leafnode
Slide 116
Slide 116 text
PYTANIA?
Slide 117
Slide 117 text
DZIĘKUJĘ ZA UWAGĘ Title image credits: https://www.flickr.com/photos/torkildr/3462607995/