Szkolenie: Go - zaawansowana współbieżność
Szkolenie Go - zaawansowana współbieżność to praktyczny kurs, który uczy projektowania i diagnozowania skomplikowanych systemów współbieżnych w języku Go, w oparciu o goroutines, kanały, prymitywy synchronizacji, model pamięci oraz zaawansowane wzorce projektowe
- Trenerzy praktycy
- Kameralne grupy
Czas trwania szkolenia:2 dni (16h)
Kod kursu:GO/CONCURRENCY
Go - zaawansowana współbieżność
Cele szkolenia
Szkolenie przygotowuje do samodzielnego projektowania i implementowania zaawansowanych wzorców współbieżności Go, w tym pipelines, fan-in/fan-out oraz structured concurrency w systemach produkcyjnych
Szkolenie uczy diagnostyki i debugowania race condition, deadlocków oraz problemów wydajnościowych z użyciem narzędzi takich jak pprof, trace i race detector w aplikacjach concurrency Go
Szkolenie pokazuje, jak łączyć structured concurrency, model pamięci Go oraz prymitywy sync i sync/atomic w skalowalnych rozwiązaniach backendowych
Dla kogo?
Programistów z praktyczną znajomością języka Go, budujących systemy o wysokiej współbieżności i dużym przepływie żądań
Zespołów tworzących brokery wiadomości, stream processory, schedulery oraz inne systemy rozproszone wymagające precyzyjnej kontroli współbieżności
Efekty kształcenia
Uczestnik analizuje działanie schedulera Go (GMP, GOMAXPROCS) oraz model pamięci Go i wykorzystuje tę wiedzę do optymalizacji wydajności aplikacji
Uczestnik implementuje zaawansowane wzorce kanałów Go, takie jak pipelines, fan-out, fan-in oraz mechanizmy backpressure w systemach przetwarzania danych
Uczestnik wykorzystuje prymitywy synchronizacji Go w sposób bezpieczny i wydajny w środowisku produkcyjnym
Uczestnik wykrywa i eliminuje race condition oraz deadlocki z użyciem race detectora, pprof i narzędzi do profilowania współbieżności
Uczestnik projektuje mechanizmy graceful shutdown oraz structured concurrency z użyciem context w aplikacjach wielomodułowych i mikroserwisach
Uczestnik stosuje zaawansowane wzorce architektoniczne, takie jak actor model, lock-free oraz systemy nadzoru (supervisor) w rozwiązaniach Go
Wymagania
Praktyczna umiejętność programowania w języku Go, znajomość goroutines, kanałów oraz interfejsu context.Context
W cenie otrzymasz:
Materiały szkoleniowe
Certyfikat ukończenia szkolenia
W przypadku szkolenia w trybie stacjonarnym zapewnimy Ci również lunch oraz sprzęt niezbędny do nauki
Program szkolenia
Scheduler i model pamięci Go
Model schedulera M:N i komponenty G (goroutine), M (machine / OS thread), P (processor / context) oraz rola GOMAXPROCS
Preempcja w runtime, cykle życia goroutine, parametr GODEBUG
Model pamięci Go: happens-before, widoczność zapisu, memory fencing
Koszt kontekstu goroutine, planowanie oraz influence pracy blokującej
Diagnostyka schedulera: trace, GODEBUG=schedtrace, runtime/metrics
Analiza wykonania z użyciem go tool trace oraz execution tracer
Zaawansowane wzorce kanałów
Pipelines wielostopniowe i kompozycja z funkcji zwracających kanały
Fan-out i fan-in, dystrybucja pracy między goroutines
Backpressure i bufory, strategie drop-oldest, drop-newest, block
Broadcast oraz pub-sub z wykorzystaniem select i slice kanałów
Done channel, cancellation, propagacja sygnałów między warstwami
Timer, Ticker i kanały czasowe w stabilnych pętlach zdarzeń
Testowanie kodu opartego o kanały oraz deterministyczne scenariusze
Synchronizacja i prymitywy niskopoziomowe
sync.Mutex, sync.RWMutex, sync.Once, sync.Cond w praktyce
sync.Pool jako mechanizm redukcji alokacji i jego ograniczenia
sync.Map i kryteria wyboru względem klasycznej mapy z Mutexem
Pakiet sync/atomic i typy Atomic dla int64, uint64, pointer oraz struct Value
errgroup i golang.org/x/sync/semaphore do kontroli równoległości
Structured concurrency: propozycje i obecne wzorce w ekosystemie Go
Context jako kanał propagacji anulowania i deadline
Race conditions, deadlock i debugowanie
Race detector, typowe fałszywe alarmy oraz strategie pracy z -race
Klasyczne pułapki: zapis bez synchronizacji, wspólne mapy, iteracja nad slice
Deadlock: zagnieżdżone mutexy, niezamknięte kanały, select bez default
Livelock i starvation w pulach goroutines oraz strategie mitigacji
Profilowanie współbieżnościowe: mutex profile, block profile, goroutine profile
Narzędzia: delve, pprof, flamegraphs, continuous profiling z Pyroscope lub Parca
Testy fuzz i testy stresowe systemów współbieżnych
Wzorce architektoniczne współbieżności
Worker pool i dynamiczne pule zadań
Actor model w Go: protoactor-go, hollywood oraz inspiracje z Erlang
Wzorce lock-free: RCU, lockfree queue, hazard pointers
Supervisor i drzewa nadzoru, odtwarzanie po błędach
Wzorce graceful shutdown w serwerach HTTP, gRPC oraz konsumerach kolejek
Orkiestracja zadań długotrwałych i strumieniowe przetwarzanie z backpressure
Studium przypadków: klient NATS, klient Kafka, scheduler zadań cron
Wybrane opinie
Przeczytaj pozytywne opinie pochodzące z ankiet satysfakcji z naszych szkoleń wypełnianych wyłącznie przez ich uczestników po realizacji usługi

