| Tytuł: | Projektowanie i implementacja wysokowydajnych aplikacji w języku PHP |
| Kod: | PHP-performance |
| Kategoria: | PHP |
| Forma: | 60% wykłady / 40% warsztaty |
| Czas trwania: | 3 dni |
| Odbiorcy: | developerzy |
| Zapisy: |
Indywidualne zamówienie i dopasowanie dla grupy. |
| Logistyka: |
W siedzibie klienta lub w innym dowolnym miejscu. |
Szkolenie zostało przygotowane z myślą o programistach i architekach PHP, przed którymi zostało postawione zadanie zaprojektowania i implementacji wysokowydajnej aplikacji webowej.
Szkolenie zawiera szereg praktycznych rozwiązań opracowanych na podstawie doświadczeń w dojrzałych projektach, obsługujących duży wolumen ruchu i działających w oparciu o rozbudowane infrastruktury serwerowe.
Wyróżniki szkolenia
- Kruczki, które dadzą Ci realną przewagę
- Dostęp do wiedzy eksperckiej architekta systemów dużej skali (największy polski portal społecznościowy jak i największy komunikator)
Program Szkolenia
Program jest ramą w jakiej możemy się poruszać merytorycznie - program dla konkretnego szkolenia dedykowanego ustalamy z grupą na podstawie analizy przed-szkoleniowej.-
Wprowadzenie- Dlaczego wydajność aplikacji ma znaczenie?
- Flow obsługi requestu przez PHP
- Wydajność a skalowalność, mity i fakty
- Dlaczego wydajność aplikacji ma znaczenie?
-
Profilowanie i pomiary wydajności aplikacji- Metody i narzędzia przeprowadzanie testów obciążeniowych
- ApacheBenchmark
- Selenium
- JMeter
- ApacheBenchmark
- Monitorowanie aplikacji i serwera
- NewRelic
- StatsD
- Blackfire
- xhprof
- NewRelic
- Pułapki mikrooptymalizacji
- Metody i narzędzia przeprowadzanie testów obciążeniowych
-
Przyśpieszanie aplikacji PHP poprzez konfigurację stosu technologicznego- Dobór właściwego oprogramowania
- Wersja PHP a performance aplikacji
- Wybór web-serwera i związane z tym konsekwencje
- Frankenphp
- Swoole / OpenSwoole
- nginx + php-fpm
- Frankenphp
- Wersja PHP a performance aplikacji
- Opcode caching
- Zasada działania i wpływ na performance aplikacji
- Przyśpieszanie aplikacji z włączonym opcode cache
- Wykorzystanie buildów kodu źródłowego
- Unikanie operacji fstat i związane z tym konsekwencje
- Wykorzystanie buildów kodu źródłowego
- Pozostałe aspekty
- Wykorzystanie modułów opcode jako shared-memory user-cache
- Monitorowanie skuteczności cache
- Przegląd możliwych problemów i metod ich rozwiązania
- Wykorzystanie modułów opcode jako shared-memory user-cache
- Zasada działania i wpływ na performance aplikacji
- Dobór właściwego oprogramowania
-
Frameworki PHP- Przegląd popularnych frameworków PHP i ich natywnej wydajności
- Tuning wydajności aplikacji poprzez wykorzystanie cache
- Cache danych z bazy danych
- Cache requestów HTTP
- Cache danych z bazy danych
- Tuning wydajności aplikacji poprzez jej architekturę
- Przegląd popularnych frameworków PHP i ich natywnej wydajności
-
Optymalizacja schematu bazy danych i zapytań SQL (MySQL)- Silniki składowania danych i ich możliwości
- Identyfikacja wąskich gardeł bazy danych
- Podstawowa optymalizacja schematu bazy danych
- Podstawowa optymalizacja zapytań SQL
- Silniki składowania danych i ich możliwości
-
Cache danych- Wprowadzenie do cache'owania danych
- Cache hit vs miss
- Algorytmy cache
- Inwalidacja i czas życia cache
- Cache hit vs miss
- Narzędzia
- Redis
- AWS ElastiCache
- Redis
- Strategie budowania cache
- Przechowywanie danych per query vs per row
- Przechowywanie danych per query vs per row
- Przegląd typowych use-case'ów związanych z cache danych
- Optymalizacja komunikacji pomiędzy aplikacją a serwerami cache
- Wprowadzenie do cache'owania danych
-
Odciążanie baz danych- Eliminacja zapytań FullTextSearch SQL i przenoszenie ich do dedykowanych rozwiązań
- Eliminacja zapytań FullTextSearch SQL i przenoszenie ich do dedykowanych rozwiązań
-
Cache requestów HTTP- Wprowadzenie do cache'owania danych
- Nagłówki HTTP i ich obsługa w przeglądarce internetowej
- Efektywność cache a obciążenie serwera aplikacji
- Nagłówki HTTP i ich obsługa w przeglądarce internetowej
- Narzędzia
- Nginx
- Varnish
- Nginx
- Wprowadzenie do cache'owania danych
-
Przetwarzanie danych w modelu asynchronicznym- Zmiana miejsca przetwarzania dużych ilości danych jako metoda przyśpieszenia aplikacji
- Systemy kolejkowe
- Zasada działania
- Przegląd typowych use-case'ów związanuych z przetwarzaniem asynchronicznym
- Narzędzia
- RabbitMQ
- Redis
- AWS Simple Queue Service
- RabbitMQ
- Konfiguracja i wykorzystanie serwera RabbitMQ w stosie technologicznym
- Instalacja i uruchomienie
- Podstawowe aspekty pracy i możliwości serwera RabbitMQ
- Generowanie i przetwarzanie wiadomości przesyłanych za pomocą kolejek
- Instalacja i uruchomienie
- Zasada działania
- Zmiana miejsca przetwarzania dużych ilości danych jako metoda przyśpieszenia aplikacji
-
Skalowanie aplikacji- Korzyści wynikające z rozproszenia aplikacji pomiędzy większą liczbę serwerów
- Podstawowe aspekty pracy z rozproszoną aplikacją
- Kierownie ruchem użytkowników pomiędzy instancjami aplikacji
- Utrzymanie sesji użytkownika
- Kierownie ruchem użytkowników pomiędzy instancjami aplikacji
- Korzyści wynikające z rozproszenia aplikacji pomiędzy większą liczbę serwerów
Pobierz program w formacie PDF
Trenerzy
Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.