SlideShare a Scribd company logo
1 of 25
Download to read offline
SUBTELNA SZTUKA
OPTYMALIZACJI
lekko, szybko i jeszcze szybciej
Performance Review
Paul Delaroche, 1833, olej na płótnie
SEBASTIAN
SZCZERBOWSKI
23 mln

realnych
użytkowników
7 mln

zapytań
na minutę
150 mln

PV dziennie
350
specjalistów
40

zespołów
> 500

wdrożeń
dziennie
PRZYSPIESZANIE SERWISU
POMIARY
• Start Render
• Fully Loaded
• LoadTime
• Visual Progress
• Visual Complete
WebPageTest
0
0,9
1,8
2,7
3,6
4,5
5,4
6,3
7,2
8,1
9
Real User Monitoring
Safari
3G
WiFi
Chrome
Android
iOS
Mobile
Analityka
ERYK
ZIMOŃCZYK
A group of developers trying to optimise the website to outrun the competitors
Frederic S. Remington, 1889, olej na płótnie
PRZYKŁAD OPTYMALIZACJI
Mobilna strona - m.onet.pl
• kilka milionów użytkowników miesięcznie
• widgety: pogoda, stan powietrza, JakDojade itd.
• notyfikacje
• setki milionów odsłon miesięcznie
NARZĘDZIA
CSS
JavaScript
Service
Worker
Cache
Testy A/B
OBSZARY USPRAWNIEŃ
PWA
• podział arkuszy
• przemyślany projekt
• powtarzalność komponentów
• optymalne rozwiązania animacji
• własny CDN
CSS rules simplified - iteration no. 3
Piet Mondrian, 1929, olej na płótnie
CSS
• moduły AMD
• kolejność skryptów
• ograniczenie zewnętrznych plików
• przetestowany i optymalny kod
Senior developer gets interrupted
Pier Francesco Mola, ok. 1660, olej na płótnie
JavaScript
• szybsza odpowiedź
• różne strategie
• powtarzalność zasobów
• nagłówki odpowiedzi
CACHE
cache
cache serwer
użytkownik
• wsparcie przeglądarek
• zapis do bazy
• różne drogi odpowiedzi
• działanie offline
Service Worker, portrait
Johann Baptist Reiter, 1848, olej na płótnie
Service Worker
• statystyki użytkowników
• wsparcie dla starszych wersji
Service Worker
• splash screen
• natywny feel&look
• aplikacyjny UI
PWA
• testy na użytkownikach
• realne statystyki
Testy A/B
?
Dziękujemy za uwagę!
eryk.zimonczyk@dreamlab.pl
sebastian.szczerbowski@dreamlab.pl

More Related Content

Similar to Subtelna sztuka optymalizacji

Jak zapewnić jakość aplikacjom na sfragmentowanego Androida?
Jak zapewnić jakość aplikacjom na sfragmentowanego Androida?Jak zapewnić jakość aplikacjom na sfragmentowanego Androida?
Jak zapewnić jakość aplikacjom na sfragmentowanego Androida?Damian Szczurek
 
Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6The Software House
 
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
 
PLNOG 21: Piotr Wojciechowski - ANSIBLE_I_AUTOMATYZACJA_W_ŚRODOWISKACH_SZCZEG...
PLNOG 21: Piotr Wojciechowski - ANSIBLE_I_AUTOMATYZACJA_W_ŚRODOWISKACH_SZCZEG...PLNOG 21: Piotr Wojciechowski - ANSIBLE_I_AUTOMATYZACJA_W_ŚRODOWISKACH_SZCZEG...
PLNOG 21: Piotr Wojciechowski - ANSIBLE_I_AUTOMATYZACJA_W_ŚRODOWISKACH_SZCZEG...PROIDEA
 
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
 
Wydajność aplikacji Web z perspektywy użytkownika
Wydajność aplikacji Web z perspektywy użytkownikaWydajność aplikacji Web z perspektywy użytkownika
Wydajność aplikacji Web z perspektywy użytkownikaJacek Okrojek
 
Django - webowy framework dla wymagających
Django - webowy framework dla wymagającychDjango - webowy framework dla wymagających
Django - webowy framework dla wymagającychKrzysztof Kreczko
 
#MTC2018: Optymalizacja doświadczenia użytkownika na stronach mobilnych w cel...
#MTC2018: Optymalizacja doświadczenia użytkownika na stronach mobilnych w cel...#MTC2018: Optymalizacja doświadczenia użytkownika na stronach mobilnych w cel...
#MTC2018: Optymalizacja doświadczenia użytkownika na stronach mobilnych w cel...Mobile Trends
 
Jak Progressive Web Apps rewolucjonizują User Experience
Jak Progressive Web Apps rewolucjonizują User ExperienceJak Progressive Web Apps rewolucjonizują User Experience
Jak Progressive Web Apps rewolucjonizują User ExperienceSquiz Poland
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzkeGaldoMedia
 
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
 
ROS3D - Podsumowanie prac nad projektem
ROS3D - Podsumowanie prac nad projektemROS3D - Podsumowanie prac nad projektem
ROS3D - Podsumowanie prac nad projektemOpen-RnD
 
PLNOG 17 - Piotr Pieprzycki - Praktycznie: Ścieżka Continuous Integration w k...
PLNOG 17 - Piotr Pieprzycki - Praktycznie: Ścieżka Continuous Integration w k...PLNOG 17 - Piotr Pieprzycki - Praktycznie: Ścieżka Continuous Integration w k...
PLNOG 17 - Piotr Pieprzycki - Praktycznie: Ścieżka Continuous Integration w k...PROIDEA
 
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
 
Tech cafe Microservices
Tech cafe MicroservicesTech cafe Microservices
Tech cafe MicroservicesKonrad Król
 
3 lata doświadczeń z Oracle Database Appliance: Customer Success Story
3 lata doświadczeń z Oracle Database Appliance: Customer Success Story3 lata doświadczeń z Oracle Database Appliance: Customer Success Story
3 lata doświadczeń z Oracle Database Appliance: Customer Success StoryOPITZ CONSULTING Polska
 
Zarządzanie stronami www, czyli jak zarabiając pieniądze, pomagać społecznośc...
Zarządzanie stronami www, czyli jak zarabiając pieniądze, pomagać społecznośc...Zarządzanie stronami www, czyli jak zarabiając pieniądze, pomagać społecznośc...
Zarządzanie stronami www, czyli jak zarabiając pieniądze, pomagać społecznośc...Aleksander Kuczek
 

Similar to Subtelna sztuka optymalizacji (20)

Jak zapewnić jakość aplikacjom na sfragmentowanego Androida?
Jak zapewnić jakość aplikacjom na sfragmentowanego Androida?Jak zapewnić jakość aplikacjom na sfragmentowanego Androida?
Jak zapewnić jakość aplikacjom na sfragmentowanego Androida?
 
Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6
 
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
 
PLNOG 21: Piotr Wojciechowski - ANSIBLE_I_AUTOMATYZACJA_W_ŚRODOWISKACH_SZCZEG...
PLNOG 21: Piotr Wojciechowski - ANSIBLE_I_AUTOMATYZACJA_W_ŚRODOWISKACH_SZCZEG...PLNOG 21: Piotr Wojciechowski - ANSIBLE_I_AUTOMATYZACJA_W_ŚRODOWISKACH_SZCZEG...
PLNOG 21: Piotr Wojciechowski - ANSIBLE_I_AUTOMATYZACJA_W_ŚRODOWISKACH_SZCZEG...
 
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 ?
 
Wydajność aplikacji Web z perspektywy użytkownika
Wydajność aplikacji Web z perspektywy użytkownikaWydajność aplikacji Web z perspektywy użytkownika
Wydajność aplikacji Web z perspektywy użytkownika
 
Django - webowy framework dla wymagających
Django - webowy framework dla wymagającychDjango - webowy framework dla wymagających
Django - webowy framework dla wymagających
 
#MTC2018: Optymalizacja doświadczenia użytkownika na stronach mobilnych w cel...
#MTC2018: Optymalizacja doświadczenia użytkownika na stronach mobilnych w cel...#MTC2018: Optymalizacja doświadczenia użytkownika na stronach mobilnych w cel...
#MTC2018: Optymalizacja doświadczenia użytkownika na stronach mobilnych w cel...
 
Wydajny frontend 2023
Wydajny frontend 2023Wydajny frontend 2023
Wydajny frontend 2023
 
university day 1
university day 1university day 1
university day 1
 
Jak Progressive Web Apps rewolucjonizują User Experience
Jak Progressive Web Apps rewolucjonizują User ExperienceJak Progressive Web Apps rewolucjonizują User Experience
Jak Progressive Web Apps rewolucjonizują User Experience
 
Feo w-joomla
Feo w-joomlaFeo w-joomla
Feo w-joomla
 
Extjs & netzke
Extjs & netzkeExtjs & netzke
Extjs & netzke
 
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...
 
ROS3D - Podsumowanie prac nad projektem
ROS3D - Podsumowanie prac nad projektemROS3D - Podsumowanie prac nad projektem
ROS3D - Podsumowanie prac nad projektem
 
PLNOG 17 - Piotr Pieprzycki - Praktycznie: Ścieżka Continuous Integration w k...
PLNOG 17 - Piotr Pieprzycki - Praktycznie: Ścieżka Continuous Integration w k...PLNOG 17 - Piotr Pieprzycki - Praktycznie: Ścieżka Continuous Integration w k...
PLNOG 17 - Piotr Pieprzycki - Praktycznie: Ścieżka Continuous Integration w k...
 
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
 
Tech cafe Microservices
Tech cafe MicroservicesTech cafe Microservices
Tech cafe Microservices
 
3 lata doświadczeń z Oracle Database Appliance: Customer Success Story
3 lata doświadczeń z Oracle Database Appliance: Customer Success Story3 lata doświadczeń z Oracle Database Appliance: Customer Success Story
3 lata doświadczeń z Oracle Database Appliance: Customer Success Story
 
Zarządzanie stronami www, czyli jak zarabiając pieniądze, pomagać społecznośc...
Zarządzanie stronami www, czyli jak zarabiając pieniądze, pomagać społecznośc...Zarządzanie stronami www, czyli jak zarabiając pieniądze, pomagać społecznośc...
Zarządzanie stronami www, czyli jak zarabiając pieniądze, pomagać społecznośc...
 

More from DreamLab

DreamLab Academy #12 Wprowadzenie do React.js
DreamLab Academy #12 Wprowadzenie do React.jsDreamLab Academy #12 Wprowadzenie do React.js
DreamLab Academy #12 Wprowadzenie do React.jsDreamLab
 
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8DreamLab
 
Intro to React | DreamLab Academy
Intro to React | DreamLab AcademyIntro to React | DreamLab Academy
Intro to React | DreamLab AcademyDreamLab
 
Podstawy JavaScript | DreamLab Academy #7
Podstawy JavaScript | DreamLab Academy #7Podstawy JavaScript | DreamLab Academy #7
Podstawy JavaScript | DreamLab Academy #7DreamLab
 
Let's build a PaaS platform, how hard could it be?
Let's build a PaaS platform, how hard could it be?Let's build a PaaS platform, how hard could it be?
Let's build a PaaS platform, how hard could it be?DreamLab
 
Wdrażanie na wulkanie, czyli CI w świecie który nie znosi opóźnień.
Wdrażanie na wulkanie, czyli CI w świecie który nie znosi opóźnień.Wdrażanie na wulkanie, czyli CI w świecie który nie znosi opóźnień.
Wdrażanie na wulkanie, czyli CI w świecie który nie znosi opóźnień.DreamLab
 
Gdy testy to za mało - Continuous Monitoring
Gdy testy to za mało - Continuous MonitoringGdy testy to za mało - Continuous Monitoring
Gdy testy to za mało - Continuous MonitoringDreamLab
 
Intro to JavaScript | Wstęp do programowania w Java Script | DreamLab Academy #4
Intro to JavaScript | Wstęp do programowania w Java Script | DreamLab Academy #4Intro to JavaScript | Wstęp do programowania w Java Script | DreamLab Academy #4
Intro to JavaScript | Wstęp do programowania w Java Script | DreamLab Academy #4DreamLab
 
Intro to Redux | DreamLab Academy #3
Intro to Redux | DreamLab Academy #3 Intro to Redux | DreamLab Academy #3
Intro to Redux | DreamLab Academy #3 DreamLab
 
Quick start with React | DreamLab Academy #2
Quick start with React | DreamLab Academy #2Quick start with React | DreamLab Academy #2
Quick start with React | DreamLab Academy #2DreamLab
 
About Motivation in DevOps Culture
About Motivation in DevOps CultureAbout Motivation in DevOps Culture
About Motivation in DevOps CultureDreamLab
 
Real User Monitoring at Scale @ Atmosphere Conference 2016
Real User Monitoring at Scale @ Atmosphere Conference 2016Real User Monitoring at Scale @ Atmosphere Conference 2016
Real User Monitoring at Scale @ Atmosphere Conference 2016DreamLab
 
DevOps at DreamLab
DevOps at DreamLabDevOps at DreamLab
DevOps at DreamLabDreamLab
 

More from DreamLab (13)

DreamLab Academy #12 Wprowadzenie do React.js
DreamLab Academy #12 Wprowadzenie do React.jsDreamLab Academy #12 Wprowadzenie do React.js
DreamLab Academy #12 Wprowadzenie do React.js
 
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
Selenium WebDriver Testy Automatyczne w Pythonie | DreamLab Academy #8
 
Intro to React | DreamLab Academy
Intro to React | DreamLab AcademyIntro to React | DreamLab Academy
Intro to React | DreamLab Academy
 
Podstawy JavaScript | DreamLab Academy #7
Podstawy JavaScript | DreamLab Academy #7Podstawy JavaScript | DreamLab Academy #7
Podstawy JavaScript | DreamLab Academy #7
 
Let's build a PaaS platform, how hard could it be?
Let's build a PaaS platform, how hard could it be?Let's build a PaaS platform, how hard could it be?
Let's build a PaaS platform, how hard could it be?
 
Wdrażanie na wulkanie, czyli CI w świecie który nie znosi opóźnień.
Wdrażanie na wulkanie, czyli CI w świecie który nie znosi opóźnień.Wdrażanie na wulkanie, czyli CI w świecie który nie znosi opóźnień.
Wdrażanie na wulkanie, czyli CI w świecie który nie znosi opóźnień.
 
Gdy testy to za mało - Continuous Monitoring
Gdy testy to za mało - Continuous MonitoringGdy testy to za mało - Continuous Monitoring
Gdy testy to za mało - Continuous Monitoring
 
Intro to JavaScript | Wstęp do programowania w Java Script | DreamLab Academy #4
Intro to JavaScript | Wstęp do programowania w Java Script | DreamLab Academy #4Intro to JavaScript | Wstęp do programowania w Java Script | DreamLab Academy #4
Intro to JavaScript | Wstęp do programowania w Java Script | DreamLab Academy #4
 
Intro to Redux | DreamLab Academy #3
Intro to Redux | DreamLab Academy #3 Intro to Redux | DreamLab Academy #3
Intro to Redux | DreamLab Academy #3
 
Quick start with React | DreamLab Academy #2
Quick start with React | DreamLab Academy #2Quick start with React | DreamLab Academy #2
Quick start with React | DreamLab Academy #2
 
About Motivation in DevOps Culture
About Motivation in DevOps CultureAbout Motivation in DevOps Culture
About Motivation in DevOps Culture
 
Real User Monitoring at Scale @ Atmosphere Conference 2016
Real User Monitoring at Scale @ Atmosphere Conference 2016Real User Monitoring at Scale @ Atmosphere Conference 2016
Real User Monitoring at Scale @ Atmosphere Conference 2016
 
DevOps at DreamLab
DevOps at DreamLabDevOps at DreamLab
DevOps at DreamLab
 

Subtelna sztuka optymalizacji