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
Grupa docelowa: developerzy

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

Pobierz program w formacie PDF
  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
          Możliwości i zastosowanie Composera
      3. Wzorce projektowe
      4. Serwisy usługowe i Dependency Injection
      5. Mapowanie relacyjno-obiektowe
          Przegląd dostępnych rozwiązańOgraniczenia narzędzi ORM
      6. Command-query Responsibility Segregation
          Stos CommandAPI dla modelu biznesowegoStos ReadOptymalizacja pod kątem dużej ilości odczytówSynchronizacja stosówSQL, widoki, zdarzenia biznesowe
      7. Struktura monolityczna vs architektura mikroserwisów
          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
          Opcode cacheBuildy aplikacji
      2. Cache'owanie danych
          Wprowadzenie do cache'owaniaTworzenie i inwalidacja cacheMemcachedTechniki wykorzystania dedykowanych narzędzi w celu odciążenia warstwy bazy danych
      3. Cache HTTP
          Wprowadzenie do cache'owaniaVarnish jako web-application accelerator
      4. Serwery Full-Text-Search
          Problem wyszukiwania tekstu w relacyjnych bazach danychSphinx jako serwer FTSPodstawowa konfiguracji serwera Sphinx i indeksacja źródeł danychFlow komunikacji pomiędzy aplikacją a serwerem SphinxMetody indeksacji dużych źródeł danychShardowanie indeksów
    5. Skalowanie warstwy bazy danych
      1. Modele replikacji
          Master-slave(s)Master-masterProblemy aplikacyjne wynikające z replikacjiZakleszczeniaReplication-lag
      2. Shardowanie tabel
          Wprowadzenie do koncepcji shardowaniaKorzyści i ograniczeniaTechniki podziału baz danychKonsekwencje dla warstwy dostępu do danych w aplikacji
      3. Rozwiązania NoSQL
          CAP theoremPrzeglą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
          AMQPRabbitMQ
    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
          VagrantDocker
  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

Trenerzy

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

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ń