Indywidualny program

Poniższa agenda jest tylko ramą na której wspólnie zbudujemy zorientowane na Twoje potrzeby szkolenie.

Apache Kafka w ujęciu dla programistek i programistów Java

  1. Architektura Apache Kafka
    1. Wprowadzenie do komunikacji asynchronicznej
      1. Komunikacja w monolicie vs mikrousługi
      2. Przykłady zastosowań komunikacji asynchronicznej
      3. Systemy oparte o zdarzenia
    2. Architektura Apache Kafka
      1. Wprowadzenie do podstawowych pojęć 
        1. Topics, Partitions, Offsets
        2. Brokers
        3. Topics Replication
        4. Producers
        5. Consumers, Consumers Groups
        6. Offsets
        7. Acks
      2. Kolejność wiadomości
      3. Replikacja 
      4. Jak dobrać odpowiednią ilość partycji?
      5. Poziomy potwierdzenia dostarczenia wiadomości
      6. Co zapewnia Apache Kafka
      7. Skąd bierze się wydajność?
    3. Architektura Confluent Platform
      1. Kafka Streams
      2. Kafka Connect
      3. KSQL
      4. Rest Proxy
      5. Schema Registry
    4. Kafka CLI i Kafkacat
      1. Zarządzanie Topic’ami
      2. Wysyłanie wiadomości
      3. Odbieranie wiadomości
      4. Monitorowanie i zarządzanie Consumer Groups
      5. Zarządzanie Offset’ami
    5. Natywny klient Java
      1. Kafka Producer
        1. Implementacja niestandardowego partycjonowania
        2. Serializacja wiadomości
        3. Idempotentność
      2. Kafka Consumer
        1. Delivery semantics
        2. Deserializacja wiadomości
        3. Partition assignment strategies
        4. Static membership
        5. Implementacja cache w pamięci opartego o Kafka Consumer
      3. Transakcje
        1. Jak działają transakcje?
        2. Jak dobrać parametr transaction.id?
        3. Do czego wykorzystać transakcje na Apache Kafka?
        4. Implementacja aplikacji biznesowej przetwarzającej wiadomości w sposób transakcyjny
      4. Jak skonfigurować system do bezstratnego dostarczania wiadomości?
  2. Kafka Streams
    1. Koncepcja zastosowania w ekosystemie Confluent
    2. Architektura aplikacji opartych o Kafka Streams
      1. Dualizm strumień-tablica   
      2. Topiki kompaktowe
      3. Lokalna baza danych RocksDB
      4. Changelog topic
      5. Repartition topic 
    3. Analiza topologii strumieni
    4. Reset tool
    5. Operacje bezstanowe
    6. Operacje stanowe
      1. Zapis stanu w KTable
      2. Zapis stanu w GlobalKTable
      3. Agregowanie danych 
      4. Łączenie strumieni
      5. Agregacja danych w oknach czasowych
    7. Odczytywanie lokalnego stanu systemu 
      1. Interactive queries
      2. ReadOnlyKeyValueStore
      3. ReadOnlyWindowStore
      4. Standby replicas
    8. Transformers
      1. Przetwarzanie zgodnie z podejściem Stateful Record-By-Record 
    9. Exactly once processing
    10. Testowanie aplikacji opartych o Kafka Streams
      1. Testy jednostkowe z wykorzystaniem kafka-streams-test-utils
      2. Testy integracyjne z wykorzystaniem Testcontainers
    11. Implementacja wzorców 
      1. Saga
      2. Read-Process-Write
      3. Sortowanie i deduplikacja zdarzeń
  3. Wsparcie dla Apache Kafka w Spring Boot
    1. Podstawowe operacje
      1. Wysyłka wiadomości 
        1. KafkaTemplate vs. KafkaProducer
        2. RoutingKafkaTemplate
        3. ReplyingKafkaTemplate
      2. Odbiór wiadomości
        1. Wątki
        2. Walidacja wiadomości
        3. Zarządzanie potwierdzeniami
        4. Ponawianie
        5. Wysyłka odpowiedzi
      3. Transakcje
        1. Publikowanie transakcyjne
        2. Transakcje inicjowane przez odczyt wiadomości
        3. Zarządzanie transaction.id przez Spring
    2. Prawidłowa konfiguracja aplikacji
      1. Zarządzanie błędami
      2. Serializacja i deserializacja
      3. Nagłówki
    3. Testowanie 
      1. Przegląd bibliotek do testowania asynchronicznego
        1. JUnit - Awaitility
        2. Spock - PollingConditions
      2. Wykorzystanie mechanizmów Spring w testach
      3. Uruchamianie Kafka do testów z wykorzystaniem spring-kafka-test
      4. Uruchamianie Kafka do testów z wykorzystaniem Testcontainers
    4. Implementacja aplikacji biznesowej z wykorzystaniem Spring Boot, Apache Kafka oraz relacyjnej bazy danych 
      1. Modelowanie procesów biznesowych w podejściu asynchronicznym
      2. Implementacja mechanizmów zapewniających idempotentność
      3. Wpływ asynchroniczności na modelowanie REST API
      4. Różne poziomy spójności 
      5. Implementacja wzorca Transactional Outbox