Course Code: nodexpressjs
Duration: 21 hours
Prerequisites:
  • Znajomość języka ECMAScript (JavaScript)
  • Podstawowa wiedza z zakresu programowania obiektowego oraz funkcyjnego w JavaScript
Overview:

Szkolenie skierowane jest do developerów aplikacji internetowych pracujących z technologiami server-side oraz client-side. Tematy omawiane w czasie szkolenia mają zaznajomić uczestników z możliwością programowania aplikacji pisanych w języku JavaScript. Podczas szkolenia szeroko omówiona zostanie platforma Node.js oraz praca z frameworkiem Express.js.

Course Outline:

Dzień I

  • czym jest Node.JS, Silnik V8, C++
  • koncepcja modułów i bibliotek, manager pakietów i ekosystem Node.JS
  • asynchroniczny serwer oparty na zdarzeniach
  • aplikacja typu DIRT
  • czym jest Express.js;
  • jak działa Express.js;
  • instalowanie Express.js;
  • podsystem Connect
  • tworzenie szkieletu aplikacji w Express.js
  • zalecana struktura folderów
  • koncepcja wątku Node.JS
  • czy Node.JS ma jeden wątek?
  • LIBUV i ThreadPool - zrozumieć wieloprocesorowość i wieloprocesowość
  • ThreadPool i multitasking, ThreadPool Size
  • LIBUV OS delegation
  • pętla zdarzeń - konsekwencje obsługi żądań, blokady I/O
  • operacje w EventLoop, poza EventLoop, operacje sieciowe i I/O
  • operacje OS Async Helpers
  • EventLoop Ticks
  • nieoczekiwane zdarzenia EventLoop

Dzień II

  • SetTimeout, SetInterval i inne wyjątki
  • komunikacja w czasie rzeczywistym, dwukierunkowa komunikacja z klientem
  • szeregowa i równoległa kontrola przepływu
  • nasza przykładowa aplikacja w Express.js
  • obiekt process, czyli globalny wzorzec Singleton
  • parametry i znaczenie metod app
  • parametry i routing (trasy) Express.js, obiekty typu Request i Response
  • oprogramowanie pośredniczące jako kręgosłup Express.js
  • dlaczego kolejność metod pośredniczących ma znaczenie
  • dane typu locals
  • strumienie danych
  • obsługa błędów w Express.js
  • właściwy sposób udostępniania zasobów statycznych
  • zmienne środowiskowe - przetrzymywanie, ukrywanie, dystrybucja
  • cache-owanie danych i centralizowanie danych - Redis (Promisify)
  • ochrona bazy danych przed przeciążeniem żądań
  • aplikacja w trybie Development
  • debugowanie aplikacji
  • aplikacja w trybie Production
  • przygotowanie odpowiedniego szkieletu aplikacji bezstanowej

Dzień III

  • teoria klastra, klastrowanie w akcji
  • komunikacja między węzłami klastra
  • moduł PM2
  • PM2 - ecosystem file
  • PM2 - deployment
  • PM2 - Graceful Start/Shutdown
  • PM2 - zmienne środowiska i zmienne specjalne
  • zarządzanie klastrem PM2
  • monitoring aplikacji - logi, pm2 monit, keymetrics.io
  • zarządzanie kompozycją aplikacji z PM2
  • balansowanie ruchem - mix PM2 - NGINX
  • balansowanie ruchem - HA Proxy
  • balansowanie ruchem - HA Proxy - Consul Discovery
  • lepsze metody na wykorzystanie maszyny pod aplikację
  • skalowanie/klastrowanie za pomocą kontenerów Docker
  • aplikacja jako kompletny obraz kontenera
  • skalowanie/klastrowanie za pomocą kontenerów Docker - Swarm
  • zarządzanie stanem aplikacji
  • integracja z CI/CD