5. Tworzenie i optymalizacja wydajności systemów

  1. Teoretyczne podstawy

    • Złożoność obliczeniowa
    • Złożoność pamięciowa
    • Złożoność cyklometryczna
    • Dług techniczny
  2. Praktyka

    • Spaghetti code
    • Zależności w kodzie i między modułami
    • S.O.L.I.D.
    • TDD: test first vs test last development
    • Czym w praktyce jest dług techniczny
    • Ekosystem narzędziowy
  3. Micro-benchmarking

    • Problematyka
    • Najczęstsze błędy
    • Normalizacja wyników
    • Porównywanie wyników
    • Wyciąganie wniosków
  4. Refactoring legacy systemów

    • Jak rozpocząć refactoring?
    • Strategie refactoringu
    • Czy testy są konieczne?
  5. Jakość kodu

    • SonarQube i SonarLint
    • Wyciąganie wniosków z analizy statycznej
    • Quality Gates
    • Mierzenie pokrycia testami
    • Testy mutacyjne
  6. Microservices

    • Co to są mikrousługi?
    • Idea stojąca za mikrousługami
    • Czy mikrousługi są dobre dla mojego projektu?
    • Service Discovery i Service Registry
    • Heart Beat
    • Distributed Logging i Log Spooling
    • API Gateway
    • Najczęstsze błędy
  7. Wdrożenia

    • Strategie wdrożeń
    • Unikanie downtime
    • Wersjonowanie API
    • Kompatybilność API