Zaawansowana architektura systemów PHP - projektowanie i implementacja skalowalnych aplikacji webowych

Kod: PHP-arch
Kategoria: PHP
Forma: 70% wykłady / 30% warsztaty
Czas trwania: 3 dni
Grupa docelowa: developerzy
Logistyka: W siedzibie klienta lub w innym dowolnym miejscu.
Data i dokładny zakres do ustalenia podczas analizy przed-szkoleniowej.

Szkolenie zostało przygotowane z myślą o programistach i architektach pracujących nad dużymi aplikacjami webowymi typu mission-critical, funkcjonujących w oparciu o klaster redundantnych serwerów.

Szkolenie zawiera szereg praktycznych rozwiązań opracowanych na podstawie doświadczeń w dużych projektach webowych, hostowanych na klastrach wielkości 10-600 fizycznych serwerów.

Wyróżniki szkolenia

Podczas zajęć możesz oczekiwać szczególnych akcentów położonych na poniższe aspekty:

  • Zaingrowane podejśćie do: skalowania, bezpieczeństwa, failover, CQRS
  • Całościowe i szersze spojrzenie na problemy
  • Dostęp do wiedzy eksperckiej

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.

  1. Wprowadzenie
    1. Dlaczego warto zawczasu zadbać o skalowanie aplikacji?
    2. Historie popularnych witryn internetowych, ich dobre i złe wybory
      1. Zestawienie najczęściej występujących problemów
    3. Korzyści wynikające z zastosowania architektury umożliwiającej skalowanie
    4. Skalowalność a wydajność systemu
  2. Architektura kodu aplikacji
    1. Backend i frontend aplikacji
      1. Separowalność i specjalizacja poszczególnych części aplikacji
      2. Komunikacja
    2. Nowoczesne frameworki PHP
      1. Symfony
      2. Laravel
      3. Zend
    3. Nowoczesne frameworki JavaScript
      1. Backbone
      2. EmberJS
      3. AngularJS
    4. Organizacja kodu
      1. Architektura MVC
      2. Moduły oprogramowania
        1. Możliwości i zastosowanie Composera
      3. Wzorce projektowe
      4. Serwisy usługowe i Dependency Injection
      5. Mapowanie relacyjno-obiektowe
        1. Przegląd dostępnych rozwiązań
        2. Ograniczenia narzędzi ORM
      6. Command-query Responsibility Segregation
        1. Stos Command
        2. API dla modelu biznesowego
        3. Stos Read
        4. Optymalizacja pod kątem dużej ilości odczytów
        5. Synchronizacja stosów
        6. SQL, widoki, zdarzenia biznesowe
      7. Struktura monolityczna vs architektura mikroserwisów
        1. Case studies projektów migrujących pomiędzy stylami, przyczyny i osiągane rezultaty
  3. Architektura systemu
    1. Środowisko uruchomieniowe aplikacji, kod źródłowy to nie wszystko
    2. Typowa ścieżka skalowania aplikacji
      1. Środowisko single-server jako punkt startowy
      2. Rozproszenie usług w pojedynczych instancjach
      3. Rozproszenie usług w wielu instancjach
      4. Przegląd typowych problemów
    3. Redundancja usług dla wysokiej dostępności
      1. Kierowanie ruchem pomiędzy reduntantnymi serwerami
      2. Obsługa sytuacji krytycznych, failover
      3. Wpływ redundancji na kod aplikacji
    4. Eliminacja obciążeń
      1. Przyśpieszanie aplikacji PHP
        1. Opcode cache
        2. Buildy aplikacji
      2. Cache'owanie danych
        1. Wprowadzenie do cache'owania
        2. Tworzenie i inwalidacja cache
        3. Memcached
        4. Techniki wykorzystania dedykowanych narzędzi w celu odciążenia warstwy bazy danych
      3. Cache HTTP
        1. Wprowadzenie do cache'owania
        2. Varnish jako web-application accelerator
      4. Serwery Full-Text-Search
        1. Problem wyszukiwania tekstu w relacyjnych bazach danych
        2. Sphinx jako serwer FTS
        3. Podstawowa konfiguracji serwera Sphinx i indeksacja źródeł danych
        4. Flow komunikacji pomiędzy aplikacją a serwerem Sphinx
        5. Metody indeksacji dużych źródeł danych
        6. Shardowanie indeksów
    5. Skalowanie warstwy bazy danych
      1. Modele replikacji
        1. Master-slave(s)
        2. Master-master
        3. Problemy aplikacyjne wynikające z replikacji
        4. Zakleszczenia
        5. Replication-lag
      2. Shardowanie tabel
        1. Wprowadzenie do koncepcji shardowania
        2. Korzyści i ograniczenia
        3. Techniki podziału baz danych
        4. Konsekwencje dla warstwy dostępu do danych w aplikacji
      3. Rozwiązania NoSQL
        1. CAP theorem
        2. Przegląd dostępnych rozwiązań i ich możliwości
    6. Systemy kolejkowe
      1. Wprowadzenie do systemów kolejkowych
      2. Wykorzystanie systemów kolejkowych do rozdzielania systemów
      3. Narzędzia
        1. AMQP
        2. RabbitMQ
    7. Deployment aplikacji na klaster serwerowy
      1. Różnice pomiędzy deploymentem w ramach pojedynczego serwera a klastrem
      2. Konsekwencje deploymentu systemów wielowarstwowych
    8. Monitoring
      1. Monitoring pracy infrastruktury serwerowej
      2. Monitoring pracy aplikacji
      3. Narzędzia
    9. Infrastruktura serwerowa
      1. Cloud computing vs infrastruktura dedykowana
      2. Narzędzia developerskie / devops
        1. Vagrant
        2. Docker
  4. Case-studies realnych projektów
    1. Shardowane bazy danych
    2. Skalowalne storage plików
    3. Skalowalne systemy kolejkowe
    4. Skalowalne wyszukiwanie full-text-search w dużym datasecie
    5. Wykorzystanie systemów NoSQL w celu zwiększenia skalowalności i wydajności aplikacji


Pobierz program w formacie PDF

Trenerzy

Poznaj ekspertów, którzy mogą poprowadzić Twoje szkolenie.

Materiały związane ze szkoleniem

Idea renesansowej pracowni - Bottegi zakłada nieustanną pracę jej członków i dzielenie się jej wynikami.

Zapytaj o szkolenie

Imię i nazwisko:
Firma:
E-mail:
Nr tel:
Temat:
Wiadomość:

Jeżeli preferujesz osobisty kontakt to zawsze możesz zadzwonić.

Iwona Sobótka

Koordynatorka szkoleń