SlideShare a Scribd company logo
1 of 22
Download to read offline
Szkolimy team leaderów i zespoły programistyczne
Projektowanie
wysokowydajnych
i skalowalnych serwisów www
Cześć pierwsza - Warstwa aplikacji
Antoni Orfin <aorfin@imagin.pl>
octivi.com
.com
1. Przedstawienie pojęć
◦ Wydajność
◦ Skalowalność
2. Zapotrzebowanie biznesowe
3. Stopnie rozwoju architektury serwisów webowych
◦ Początki
◦ Skalowanie serwisu
◦ Przyszłość
4. Konkluzje
Agenda
2
.com
 Wydajność – szybkość obsługi żądań HTTP
 Miary
◦ Liczba transakcji na sekundę (req/s)
◦ Czas obsługi żądania przez serwer
◦ Całościowy czas ładowania strony
opóźnienia sieci + obsługa przez serwer + czas renderowania w przeglądarce
 Przykład
◦ Duży sklep internetowy działający w >14 krajach
◦ Statystyki: 5 000 000 odsłon dziennie
◦ Teoria:
5 000 000 / (24 * 60 * 60) = 57 req/s
◦ Praktyka:
 większość ruchu w godzinach pracy – 900-1700
 5 000 000 / (8 * 60 * 60) = 173 req/s
Przedstawienie pojęć
3
.com
 Przykłady wyników testów wydajnościowych
◦ Usługa REST API (PHP, Symfony2, Redis, MySQL)
Requests per second: 653.78 [#/sec] (mean)
Time per request: 1.530 [ms] (mean)
◦ Serwis jednej z uczelni
(PHP, Wordpress, MySQL)
Requests per second: 13.28 [#/sec] (mean)
Time per request: 75.289 [ms] (mean
Przedstawienie pojęć
Wydajność
4
.com
 Ta sama technologia, diametralnie różne
wyniki?
◦ W dużej mierze to od programisty zależy końcowy
rezultat osiągów witryny
◦ W każdej technologii można doprowadzić do „złego
stanu” - pisanie w Erlangu, Node.js czy C++ nie
zapewni, że aplikacja będzie demonem szybkości
Przedstawienie pojęć
Wydajność
5
.com
 Skalowalność – zdolność systemu do obsługi
rosnącej ilości pracy, którą musi wykonać
 Rozróżniamy:
◦ Skalowanie pionowe
◦ Skalowanie poziome
Przedstawienie pojęć
Skalowalność
6
.com
 Skalowanie pionowe – powiększanie systemu
w obrębie jednej instancji (np. dodawanie zasobów
do serwera)
◦ Proste do realizacji (w pewnym zakresie)
◦ Ograniczone możliwości
◦ Duży koszt wraz ze wzrostem wymagań
Przedstawienie pojęć
Skalowalność
Oferta http://www.ovh.pl/serwery_dedykowane/ (13 X 2013) 7
.com
 Skalowanie poziome – możliwość dodania
kolejnych instancji systemu (np. dokupienie
kolejnych serwerów)
◦ Trudniejsze w realizacji – zmiany w architekturze
oprogramowania
◦ Tańsze w dłuższym okresie
Przedstawienie pojęć
Skalowalność
8
.com
 Skalowanie pionowe + poziome -
◦ Skalujemy pionowo dopóki technologia na to pozwala i jest
to opłacalne
◦ Gdy osiągamy szczyt – zmieniamy architekturę serwisu
i skalujemy poziomo
 Motywacja
◦ Skalowanie pionowe jest opłacalne do pewnego stopnia
◦ Ciężko od razu przewidzieć nasze przyszłe potrzeby
Przedstawienie pojęć
Skalowalność
9
.com
 Technologia nie może ograniczać biznesu
 Klient musi jak najszybciej dostać żądany zasób –
inaczej wybierze inną firmę
 Serwis musi być wiarygodny – wysoka dostępność
◦ Wysoka dostępność wpływa na wiarygodność serwisu
 Minimalizacji kosztów
Zapotrzebowanie biznesowe
10
.com
Stopnie rozwoju architektury
serwisów webowych
11
Początki
Architektura
monolityczna
Skalowanie
serwisu
Architektura
warstwowa
Przyszłość
Architektura
zorientowana na
usługi (SOA)
.com 12
Stopnie rozwoju architektury serwisów webowych
Początki
.com
1st Tier Cache
(np. Varnish)
Rozdzielanie ruchu (np. HAProxy)
Replikacja,
Sharding
2nd Tier Cache
(np. Redis, Memcache)
13
Stopnie rozwoju architektury serwisów webowych
Skalowanie serwisu
.com
1. Wydzielenie serwerów bazodanowych
2. Wykorzystanie mechanizmów cache’u
3. Rozdzielanie ruchu – Load Balancing
◦ Dołożenie kolejnych serwerów
aplikacyjnych
14
Stopnie rozwoju architektury serwisów webowych
Skalowanie serwisu
.com
 Podstawowy krok do poprawy wydajności
 Konieczność zakupu kolejnego serwera
 Serwer bazodanowy o innych
parametrach niż aplikacyjny
(np. większe, szybsze dyski)
15
Skalowanie serwisu
Wydzielenie warstwy danych
.com
 HTTP Cache
◦ Poprawne ustawianie nagłówków HTTP – wykorzystanie
przeglądarki użytkownika
 304 Not Modified, Etag, Expires, Last-Modified…
 1st Tier Cache – Reverse Proxy (Varnish)
◦ Najwydajniejsza metoda cache’owania (~20k req/s )
◦ Najbliżej użytkownika, żądanie nie trafia do aplikacji
 2nd Tier Cache – in-memory (Redis, Memcache)
◦ Cache’owanie wyników zapytań do bazy danych,
długotrwałych operacji
◦ Zapisywanie wyników w pamięci RAM
16
Skalowanie serwisu
Wykorzystanie cache’owania
.com
 Kolejne warstwy rozdzielające ruch
1. Rozdzielanie ruchu na DNSach
2. DNS kierują na serwery LB (np. HAProxy)
3. LB kieruje na serwery aplikacyjne
 Problemy
 Awaria jednego z serwerów –
większe obciążenie na pozostałych
 Zarządzanie sesjami użytkowników
 Zduplikowany cache (te same dane
na wielu serwerach)
17
Skalowanie serwisu
Load Balancing
.com
 Jak współdzielić sesję gdy użytkownik może zostać
skierowany na dowolny serwer aplikacyjny?
 Rozwiązanie:
Przechowywanie sesji we współdzielonym źródle
◦ NoSQL, In-memory
 Bardzo wysoka wydajność
 RAM? A co jak serwer padnie? (rozwiązanie: Redis, persistance)
 Możliwość wygasania sesji na podstawie wbudowanych
mechanizmów (TTL)
◦ Tradycyjna baza danych (MySQL)
 Mniejsza wydajność
 Problem z replikacją często zmieniających się danych
18
Skalowanie serwisu
Sesje użytkowników
.com 19
Stopnie rozwoju architektury serwisów webowych
Service Oriented Architecture
.com
 Cechy
◦ Wydzielenie kluczowych systemów jako osobne usługi
◦ Systemy komunikują się za pomocą API (np. REST, SOAP)
◦ Każdy system dąży do architektury „skalowalnej”
 Zalety
◦ Łatwiejsze skalowanie podsystemów
(warstwa nadrzędna odpowiada za mechanizmy uwierzytelniania, sesji…)
◦ Prostszy rozwój i utrzymanie systemów dla większych
zespołów IT
◦ Udostępnienie API „na zewnątrz”
 Wady
◦ Zwiększenie złożoności platformy – konieczność większych
nakładów na zarządzanie
20
Stopnie rozwoju architektury serwisów webowych
Service Oriented Architecture
.com
 Największe serwisy internetowe były budowane od
podstawowych modeli. Dopiero wraz ze wzrostem ruchu
migrowały na coraz bardziej wydajne architektury
 Serwisy webowe należy tworzyć z myślą o ich późniejszej
skalowalności
 Przedwczesne optymalizowanie serwisu jest ryzykowne
◦ …zbyt późne – również 
Konkluzje
21
.com 22
 Pytania, uwagi?
 Zobacz również:
◦ octivi.com
◦ whoisusing.it
W części drugiej…
Omówienie zagadnień związanych z warstwą danych:
 Jak zapewnić wysoką wydajność?
 Jak zapewnić wysoką dostępność?
 Jak rozkładać dane na wielu węzłach?
Dziękuję za uwagę

More Related Content

What's hot

Migracja z Drupal 6 PressFlow do WordPress 4
Migracja z Drupal 6 PressFlow do WordPress 4Migracja z Drupal 6 PressFlow do WordPress 4
Migracja z Drupal 6 PressFlow do WordPress 4Dawid Rzepczynski
 
Maintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaMaintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaTobias Koprowski
 
Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Divante
 
Wdrozenie Chmury W Oparciu O VMware vCloud Suite W Polsce Nie Jest Trudne
Wdrozenie Chmury W Oparciu O VMware vCloud Suite W Polsce Nie Jest TrudneWdrozenie Chmury W Oparciu O VMware vCloud Suite W Polsce Nie Jest Trudne
Wdrozenie Chmury W Oparciu O VMware vCloud Suite W Polsce Nie Jest Trudneflexray
 
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
 
Office 2013 community launch - exchange 2013 what's new
Office 2013 community launch - exchange 2013 what's newOffice 2013 community launch - exchange 2013 what's new
Office 2013 community launch - exchange 2013 what's newKonrad Sagala
 
Jak nie narobić sobie problemów korzystając z EntityFramework
Jak nie narobić sobie problemów korzystając z EntityFrameworkJak nie narobić sobie problemów korzystając z EntityFramework
Jak nie narobić sobie problemów korzystając z EntityFrameworkHighWheelSoftware
 

What's hot (11)

Migracja z Drupal 6 PressFlow do WordPress 4
Migracja z Drupal 6 PressFlow do WordPress 4Migracja z Drupal 6 PressFlow do WordPress 4
Migracja z Drupal 6 PressFlow do WordPress 4
 
Hosting, domena, HTML, CMS
Hosting, domena, HTML, CMSHosting, domena, HTML, CMS
Hosting, domena, HTML, CMS
 
Maintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaMaintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_Znienacka
 
Web Cache
Web CacheWeb Cache
Web Cache
 
Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13
 
Wdrozenie Chmury W Oparciu O VMware vCloud Suite W Polsce Nie Jest Trudne
Wdrozenie Chmury W Oparciu O VMware vCloud Suite W Polsce Nie Jest TrudneWdrozenie Chmury W Oparciu O VMware vCloud Suite W Polsce Nie Jest Trudne
Wdrozenie Chmury W Oparciu O VMware vCloud Suite W Polsce Nie Jest Trudne
 
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...
 
Amica Wronki
Amica WronkiAmica Wronki
Amica Wronki
 
Office 2013 community launch - exchange 2013 what's new
Office 2013 community launch - exchange 2013 what's newOffice 2013 community launch - exchange 2013 what's new
Office 2013 community launch - exchange 2013 what's new
 
O co chodzi z FILESTREAM?
O co chodzi z FILESTREAM?O co chodzi z FILESTREAM?
O co chodzi z FILESTREAM?
 
Jak nie narobić sobie problemów korzystając z EntityFramework
Jak nie narobić sobie problemów korzystając z EntityFrameworkJak nie narobić sobie problemów korzystając z EntityFramework
Jak nie narobić sobie problemów korzystając z EntityFramework
 

Similar to Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji

Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGBart Zaremba
 
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?Tomasz Lelek
 
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
 
Rozproszona i asynchroniczna architektura - case study - Spread it
Rozproszona i asynchroniczna architektura - case study - Spread itRozproszona i asynchroniczna architektura - case study - Spread it
Rozproszona i asynchroniczna architektura - case study - Spread itKrzysztof Szabelski
 
Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...
Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...
Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...Ewa Stepien
 
Publikacja usług Exchange 2013 w internecie. Co dalej bez TMG?
Publikacja usług Exchange 2013 w internecie. Co dalej bez TMG?Publikacja usług Exchange 2013 w internecie. Co dalej bez TMG?
Publikacja usług Exchange 2013 w internecie. Co dalej bez TMG?Konrad Sagala
 
Web 2.0 - Wyzwania technologiczne
Web 2.0 - Wyzwania technologiczneWeb 2.0 - Wyzwania technologiczne
Web 2.0 - Wyzwania technologiczneMaciej Grzyb
 
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
 
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz
 
[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
 
Cometari Dedicated Solutions Oferta ogólna
Cometari Dedicated Solutions Oferta ogólnaCometari Dedicated Solutions Oferta ogólna
Cometari Dedicated Solutions Oferta ogólnaJakub Hajek
 
Citrix provisioning services
Citrix provisioning servicesCitrix provisioning services
Citrix provisioning servicesPawel Serwan
 
Wprowadzenie do Cloud OS
Wprowadzenie do Cloud OSWprowadzenie do Cloud OS
Wprowadzenie do Cloud OSLukasz Kaluzny
 
PLNOG 3: Tomasz Paszkowski Wysokowydajny system składowania plików graficzny...
PLNOG 3: Tomasz Paszkowski  Wysokowydajny system składowania plików graficzny...PLNOG 3: Tomasz Paszkowski  Wysokowydajny system składowania plików graficzny...
PLNOG 3: Tomasz Paszkowski Wysokowydajny system składowania plików graficzny...PROIDEA
 
[PL] PRUG Luty 2022 - Service objecty to za mało - jak żyć z Railsami?
[PL] PRUG Luty 2022 - Service objecty to za mało - jak żyć z Railsami?[PL] PRUG Luty 2022 - Service objecty to za mało - jak żyć z Railsami?
[PL] PRUG Luty 2022 - Service objecty to za mało - jak żyć z Railsami?Andrzej Krzywda
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...Michal Furmankiewicz
 

Similar to Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji (20)

Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUG
 
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?
 
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...
 
Serwery WWW - wykład
Serwery WWW - wykładSerwery WWW - wykład
Serwery WWW - wykład
 
Rozproszona i asynchroniczna architektura - case study - Spread it
Rozproszona i asynchroniczna architektura - case study - Spread itRozproszona i asynchroniczna architektura - case study - Spread it
Rozproszona i asynchroniczna architektura - case study - Spread it
 
Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...
Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...
Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...
 
Publikacja usług Exchange 2013 w internecie. Co dalej bez TMG?
Publikacja usług Exchange 2013 w internecie. Co dalej bez TMG?Publikacja usług Exchange 2013 w internecie. Co dalej bez TMG?
Publikacja usług Exchange 2013 w internecie. Co dalej bez TMG?
 
Web 2.0 - Wyzwania technologiczne
Web 2.0 - Wyzwania technologiczneWeb 2.0 - Wyzwania technologiczne
Web 2.0 - Wyzwania technologiczne
 
It od kuchni w nokaut.pl
It od kuchni w nokaut.plIt od kuchni w nokaut.pl
It od kuchni w nokaut.pl
 
IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl
 
Provident
ProvidentProvident
Provident
 
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
Tomasz Kopacz MTS 2012 Azure - Co i kiedy użyć (IaaS vs paas vshybrid cloud v...
 
[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
 
Cometari Dedicated Solutions Oferta ogólna
Cometari Dedicated Solutions Oferta ogólnaCometari Dedicated Solutions Oferta ogólna
Cometari Dedicated Solutions Oferta ogólna
 
Citrix provisioning services
Citrix provisioning servicesCitrix provisioning services
Citrix provisioning services
 
Wprowadzenie do Cloud OS
Wprowadzenie do Cloud OSWprowadzenie do Cloud OS
Wprowadzenie do Cloud OS
 
PLNOG 3: Tomasz Paszkowski Wysokowydajny system składowania plików graficzny...
PLNOG 3: Tomasz Paszkowski  Wysokowydajny system składowania plików graficzny...PLNOG 3: Tomasz Paszkowski  Wysokowydajny system składowania plików graficzny...
PLNOG 3: Tomasz Paszkowski Wysokowydajny system składowania plików graficzny...
 
[PL] PRUG Luty 2022 - Service objecty to za mało - jak żyć z Railsami?
[PL] PRUG Luty 2022 - Service objecty to za mało - jak żyć z Railsami?[PL] PRUG Luty 2022 - Service objecty to za mało - jak żyć z Railsami?
[PL] PRUG Luty 2022 - Service objecty to za mało - jak żyć z Railsami?
 
Optymalizacja serwisow internetowych - Filestube
Optymalizacja serwisow internetowych - FilestubeOptymalizacja serwisow internetowych - Filestube
Optymalizacja serwisow internetowych - Filestube
 
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...GET.NET -  Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
GET.NET - Osiołkowi w żłobie dano, czyli o tym jak hostować aplikacje na Mic...
 

More from Antoni Orfin

Beyond Continuous Delivery
Beyond Continuous DeliveryBeyond Continuous Delivery
Beyond Continuous DeliveryAntoni Orfin
 
A Year of Droplr Cloud Architecture Evolution with AWS and Serverless
A Year of Droplr Cloud Architecture Evolution with AWS and ServerlessA Year of Droplr Cloud Architecture Evolution with AWS and Serverless
A Year of Droplr Cloud Architecture Evolution with AWS and ServerlessAntoni Orfin
 
Future of Cloud Starts with Serverless
Future of Cloud Starts with ServerlessFuture of Cloud Starts with Serverless
Future of Cloud Starts with ServerlessAntoni Orfin
 
Droplr Serverless Revolution - How we killed 50 servers in a year
Droplr Serverless Revolution - How we killed 50 servers in a yearDroplr Serverless Revolution - How we killed 50 servers in a year
Droplr Serverless Revolution - How we killed 50 servers in a yearAntoni Orfin
 
Performance Testing - Apache Benchmark, JMeter
Performance Testing  - Apache Benchmark, JMeterPerformance Testing  - Apache Benchmark, JMeter
Performance Testing - Apache Benchmark, JMeterAntoni Orfin
 
Testowanie poziomu bezpieczeństwa aplikacji internetowych
Testowanie poziomu bezpieczeństwa aplikacji internetowychTestowanie poziomu bezpieczeństwa aplikacji internetowych
Testowanie poziomu bezpieczeństwa aplikacji internetowychAntoni Orfin
 
Elasticsearch - Guide to Search
Elasticsearch - Guide to SearchElasticsearch - Guide to Search
Elasticsearch - Guide to SearchAntoni Orfin
 

More from Antoni Orfin (8)

Beyond Continuous Delivery
Beyond Continuous DeliveryBeyond Continuous Delivery
Beyond Continuous Delivery
 
A Year of Droplr Cloud Architecture Evolution with AWS and Serverless
A Year of Droplr Cloud Architecture Evolution with AWS and ServerlessA Year of Droplr Cloud Architecture Evolution with AWS and Serverless
A Year of Droplr Cloud Architecture Evolution with AWS and Serverless
 
Future of Cloud Starts with Serverless
Future of Cloud Starts with ServerlessFuture of Cloud Starts with Serverless
Future of Cloud Starts with Serverless
 
Droplr Serverless Revolution - How we killed 50 servers in a year
Droplr Serverless Revolution - How we killed 50 servers in a yearDroplr Serverless Revolution - How we killed 50 servers in a year
Droplr Serverless Revolution - How we killed 50 servers in a year
 
DevOps in Droplr
DevOps in DroplrDevOps in Droplr
DevOps in Droplr
 
Performance Testing - Apache Benchmark, JMeter
Performance Testing  - Apache Benchmark, JMeterPerformance Testing  - Apache Benchmark, JMeter
Performance Testing - Apache Benchmark, JMeter
 
Testowanie poziomu bezpieczeństwa aplikacji internetowych
Testowanie poziomu bezpieczeństwa aplikacji internetowychTestowanie poziomu bezpieczeństwa aplikacji internetowych
Testowanie poziomu bezpieczeństwa aplikacji internetowych
 
Elasticsearch - Guide to Search
Elasticsearch - Guide to SearchElasticsearch - Guide to Search
Elasticsearch - Guide to Search
 

Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji

  • 1. Szkolimy team leaderów i zespoły programistyczne Projektowanie wysokowydajnych i skalowalnych serwisów www Cześć pierwsza - Warstwa aplikacji Antoni Orfin <aorfin@imagin.pl> octivi.com
  • 2. .com 1. Przedstawienie pojęć ◦ Wydajność ◦ Skalowalność 2. Zapotrzebowanie biznesowe 3. Stopnie rozwoju architektury serwisów webowych ◦ Początki ◦ Skalowanie serwisu ◦ Przyszłość 4. Konkluzje Agenda 2
  • 3. .com  Wydajność – szybkość obsługi żądań HTTP  Miary ◦ Liczba transakcji na sekundę (req/s) ◦ Czas obsługi żądania przez serwer ◦ Całościowy czas ładowania strony opóźnienia sieci + obsługa przez serwer + czas renderowania w przeglądarce  Przykład ◦ Duży sklep internetowy działający w >14 krajach ◦ Statystyki: 5 000 000 odsłon dziennie ◦ Teoria: 5 000 000 / (24 * 60 * 60) = 57 req/s ◦ Praktyka:  większość ruchu w godzinach pracy – 900-1700  5 000 000 / (8 * 60 * 60) = 173 req/s Przedstawienie pojęć 3
  • 4. .com  Przykłady wyników testów wydajnościowych ◦ Usługa REST API (PHP, Symfony2, Redis, MySQL) Requests per second: 653.78 [#/sec] (mean) Time per request: 1.530 [ms] (mean) ◦ Serwis jednej z uczelni (PHP, Wordpress, MySQL) Requests per second: 13.28 [#/sec] (mean) Time per request: 75.289 [ms] (mean Przedstawienie pojęć Wydajność 4
  • 5. .com  Ta sama technologia, diametralnie różne wyniki? ◦ W dużej mierze to od programisty zależy końcowy rezultat osiągów witryny ◦ W każdej technologii można doprowadzić do „złego stanu” - pisanie w Erlangu, Node.js czy C++ nie zapewni, że aplikacja będzie demonem szybkości Przedstawienie pojęć Wydajność 5
  • 6. .com  Skalowalność – zdolność systemu do obsługi rosnącej ilości pracy, którą musi wykonać  Rozróżniamy: ◦ Skalowanie pionowe ◦ Skalowanie poziome Przedstawienie pojęć Skalowalność 6
  • 7. .com  Skalowanie pionowe – powiększanie systemu w obrębie jednej instancji (np. dodawanie zasobów do serwera) ◦ Proste do realizacji (w pewnym zakresie) ◦ Ograniczone możliwości ◦ Duży koszt wraz ze wzrostem wymagań Przedstawienie pojęć Skalowalność Oferta http://www.ovh.pl/serwery_dedykowane/ (13 X 2013) 7
  • 8. .com  Skalowanie poziome – możliwość dodania kolejnych instancji systemu (np. dokupienie kolejnych serwerów) ◦ Trudniejsze w realizacji – zmiany w architekturze oprogramowania ◦ Tańsze w dłuższym okresie Przedstawienie pojęć Skalowalność 8
  • 9. .com  Skalowanie pionowe + poziome - ◦ Skalujemy pionowo dopóki technologia na to pozwala i jest to opłacalne ◦ Gdy osiągamy szczyt – zmieniamy architekturę serwisu i skalujemy poziomo  Motywacja ◦ Skalowanie pionowe jest opłacalne do pewnego stopnia ◦ Ciężko od razu przewidzieć nasze przyszłe potrzeby Przedstawienie pojęć Skalowalność 9
  • 10. .com  Technologia nie może ograniczać biznesu  Klient musi jak najszybciej dostać żądany zasób – inaczej wybierze inną firmę  Serwis musi być wiarygodny – wysoka dostępność ◦ Wysoka dostępność wpływa na wiarygodność serwisu  Minimalizacji kosztów Zapotrzebowanie biznesowe 10
  • 11. .com Stopnie rozwoju architektury serwisów webowych 11 Początki Architektura monolityczna Skalowanie serwisu Architektura warstwowa Przyszłość Architektura zorientowana na usługi (SOA)
  • 12. .com 12 Stopnie rozwoju architektury serwisów webowych Początki
  • 13. .com 1st Tier Cache (np. Varnish) Rozdzielanie ruchu (np. HAProxy) Replikacja, Sharding 2nd Tier Cache (np. Redis, Memcache) 13 Stopnie rozwoju architektury serwisów webowych Skalowanie serwisu
  • 14. .com 1. Wydzielenie serwerów bazodanowych 2. Wykorzystanie mechanizmów cache’u 3. Rozdzielanie ruchu – Load Balancing ◦ Dołożenie kolejnych serwerów aplikacyjnych 14 Stopnie rozwoju architektury serwisów webowych Skalowanie serwisu
  • 15. .com  Podstawowy krok do poprawy wydajności  Konieczność zakupu kolejnego serwera  Serwer bazodanowy o innych parametrach niż aplikacyjny (np. większe, szybsze dyski) 15 Skalowanie serwisu Wydzielenie warstwy danych
  • 16. .com  HTTP Cache ◦ Poprawne ustawianie nagłówków HTTP – wykorzystanie przeglądarki użytkownika  304 Not Modified, Etag, Expires, Last-Modified…  1st Tier Cache – Reverse Proxy (Varnish) ◦ Najwydajniejsza metoda cache’owania (~20k req/s ) ◦ Najbliżej użytkownika, żądanie nie trafia do aplikacji  2nd Tier Cache – in-memory (Redis, Memcache) ◦ Cache’owanie wyników zapytań do bazy danych, długotrwałych operacji ◦ Zapisywanie wyników w pamięci RAM 16 Skalowanie serwisu Wykorzystanie cache’owania
  • 17. .com  Kolejne warstwy rozdzielające ruch 1. Rozdzielanie ruchu na DNSach 2. DNS kierują na serwery LB (np. HAProxy) 3. LB kieruje na serwery aplikacyjne  Problemy  Awaria jednego z serwerów – większe obciążenie na pozostałych  Zarządzanie sesjami użytkowników  Zduplikowany cache (te same dane na wielu serwerach) 17 Skalowanie serwisu Load Balancing
  • 18. .com  Jak współdzielić sesję gdy użytkownik może zostać skierowany na dowolny serwer aplikacyjny?  Rozwiązanie: Przechowywanie sesji we współdzielonym źródle ◦ NoSQL, In-memory  Bardzo wysoka wydajność  RAM? A co jak serwer padnie? (rozwiązanie: Redis, persistance)  Możliwość wygasania sesji na podstawie wbudowanych mechanizmów (TTL) ◦ Tradycyjna baza danych (MySQL)  Mniejsza wydajność  Problem z replikacją często zmieniających się danych 18 Skalowanie serwisu Sesje użytkowników
  • 19. .com 19 Stopnie rozwoju architektury serwisów webowych Service Oriented Architecture
  • 20. .com  Cechy ◦ Wydzielenie kluczowych systemów jako osobne usługi ◦ Systemy komunikują się za pomocą API (np. REST, SOAP) ◦ Każdy system dąży do architektury „skalowalnej”  Zalety ◦ Łatwiejsze skalowanie podsystemów (warstwa nadrzędna odpowiada za mechanizmy uwierzytelniania, sesji…) ◦ Prostszy rozwój i utrzymanie systemów dla większych zespołów IT ◦ Udostępnienie API „na zewnątrz”  Wady ◦ Zwiększenie złożoności platformy – konieczność większych nakładów na zarządzanie 20 Stopnie rozwoju architektury serwisów webowych Service Oriented Architecture
  • 21. .com  Największe serwisy internetowe były budowane od podstawowych modeli. Dopiero wraz ze wzrostem ruchu migrowały na coraz bardziej wydajne architektury  Serwisy webowe należy tworzyć z myślą o ich późniejszej skalowalności  Przedwczesne optymalizowanie serwisu jest ryzykowne ◦ …zbyt późne – również  Konkluzje 21
  • 22. .com 22  Pytania, uwagi?  Zobacz również: ◦ octivi.com ◦ whoisusing.it W części drugiej… Omówienie zagadnień związanych z warstwą danych:  Jak zapewnić wysoką wydajność?  Jak zapewnić wysoką dostępność?  Jak rozkładać dane na wielu węzłach? Dziękuję za uwagę