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