<h2>Inhaltsübersicht</h2>
<ul>
<li>Abstract</li>
<li>Zielgruppe</li>
<li>Voraussetzungen</li>
<li>Inhalte</li>
<li>Praxisübungen</li>
<li>Rahmen</li>
<li>Kompetenzen</li>
<li>Optionale Vertiefungen</li>
</ul>
<h2>Abstract</h2>
<p>Vertiefung der C++‑Serviceentwicklung mit Apache bRPC: Nebenläufigkeit, asynchrone Patterns, Ressourcen‑ und Fehlerhandling sowie praxiserprobte Strukturierung größerer Services.</p>
<h2>Zielgruppe</h2>
<ul>
<li>C++‑Teams, die produktive bRPC‑Services entwickeln oder modernisieren</li>
<li>Entwickelnde, die von „Hello World“ zu robusten, wartbaren Service‑Implementierungen wechseln</li>
<li>Technische Leads, die Coding‑Guidelines und Architektur‑Patterns definieren</li>
</ul>
<h2>Voraussetzungen</h2>
<ul>
<li>Inhalte des Seminars „Apache bRPC Grundlagen und Architektur“ oder gleichwertige Praxis</li>
<li>Sichere C++‑Praxis (Speicher/Lifetimes, Concurrency‑Grundlagen, Debugging)</li>
<li>Grundverständnis von Protobuf‑IDL und RPC‑Modellen</li>
</ul>
<h2>Inhalte</h2>
<h3>Modul 1: Service‑Design in C++</h3>
<ul>
<li>Strukturierung: Service‑Layer, Domain‑Layer, Adapter (DB/Cache/Downstream)</li>
<li>Fehlerbehandlung: Statuscodes, Fehlerdomänen, Mapping zu API‑Antworten</li>
<li>Deterministische Lifetimes: Ownership‑Modelle für Requests, Responses und Callbacks</li>
</ul>
<h3>Modul 2: Nebenläufigkeit, bthread und Backpressure</h3>
<ul>
<li>M:N‑Threading mit bthread: praktische Auswirkungen auf Blocking‑Calls und Ressourcen</li>
<li>Sichere Nutzung shared state: Locking‑Strategien, lock‑freie Datenstrukturen (wo sinnvoll)</li>
<li>Backpressure‑Muster: Queue‑Längen, Admission Control, Timeouts als Schutzmechanismus</li>
</ul>
<h3>Modul 3: Asynchrone Verarbeitung und Parallelisierung</h3>
<ul>
<li>Asynchrones Server‑Handling: Callback‑basierte Implementierung, Completion‑Flows</li>
<li>Parallelisierung von Downstream‑Calls (Fan‑out/Fan‑in) und Aggregation</li>
<li>Cancellation‑/Deadline‑Propagation und typische Fehlerquellen in Callback‑Ketten</li>
</ul>
<h3>Modul 4: Streaming, Logging und Stabilität</h3>
<ul>
<li>Streaming‑Konzepte (wo geeignet) und Abgrenzung zu Request/Response</li>
<li>Logging‑Strategien: strukturierte Logs, korrelationsfähige IDs, „noflush“‑ähnliche Muster (Konzept)</li>
<li>Graceful Degradation: Fallbacks, Teilantworten, Schutz vor Kaskadenfehlern</li>
</ul>
<h3>Modul 5: Testbarkeit und Code‑Qualität</h3>
<ul>
<li>Unit‑Tests für Domain‑Logik, Contract‑Tests für Protokoll/IDL‑Kompatibilität</li>
<li>Test‑Doubles für Channels/Downstream, deterministische Zeit in Tests</li>
<li>Static Analysis, Sanitizer‑Strategie, CI‑Checkliste für produktive Services</li>
</ul>
<h2>Praxisübungen</h2>
<h3>Übung 1: Service‑Skeleton mit Clean‑Architecture‑Trennung</h3>
<ol>
<li>Projektstruktur mit klaren Layern anlegen (API/Transport, Use‑Cases, Infrastruktur)</li>
<li>Einfachen Endpunkt implementieren und Fehlerdomänen definieren</li>
<li>Konventionen für Logging, Metriken und Fehlercodes festlegen</li>
</ol>
<h3>Übung 2: Asynchroner Endpunkt mit Downstream‑Parallelisierung</h3>
<ol>
<li>Zwei simulierte Downstream‑Calls über Channels parallel starten</li>
<li>Aggregation der Ergebnisse (inkl. Partial Failure) implementieren</li>
<li>Deadlines/Timeouts durchgängig propagieren und Abbruchpfade testen</li>
</ol>
<h3>Übung 3: Schutzmechanismen und Backpressure</h3>
<ol>
<li>Queue‑/Semaphore‑basierte Admission‑Control einbauen</li>
<li>Timeout‑/Retry‑Strategie je Downstream definieren und auf Idempotenz prüfen</li>
<li>Lasttest‑Mini‑Szenario ausführen und Stabilitätsgrenzen dokumentieren</li>
</ol>
<h3>Übung 4: Fehleranalyse aus Sicht des Service</h3>
<ol>
<li>Fehlerfälle synthetisch erzeugen (Timeout, Überlast, fehlerhafte Payload)</li>
<li>Built‑in Diagnose‑Ansichten interpretieren und Hypothesen ableiten</li>
<li>Fix umsetzen und Regressionstest definieren</li>
</ol>
<h2>Rahmen</h2>
<ul>
<li>Empfohlener Zeitbedarf: 3 Tage</li>
<li>Begründung zur Dauer: Fortgeschrittene Nebenläufigkeits‑ und Async‑Patterns erfordern zusätzliche Zeit für Code‑Reviews, Debugging, Lasttests und Stabilitäts‑Iterationen.</li>
<li>Format: Übungsgetrieben, mit Pairing‑Phasen und Review‑Slots</li>
<li>Empfohlene Vorbereitung: lokale Toolchain und ein lauffähiges Beispielprojekt bereitstellen</li>
</ul>
<h2>Kompetenzen</h2>
<ul>
<li>Produktionsreife Service‑Strukturen in C++ entwerfen und umsetzen</li>
<li>Asynchrone Endpunkte korrekt implementieren (inkl. Lifetimes, Abbruchpfade)</li>
<li>Parallelisierung sicher einsetzen und Teilausfälle beherrschen</li>
<li>Backpressure‑ und Stabilitätsmuster in Services integrieren</li>
<li>Test‑ und Quality‑Gates für bRPC‑Services definieren</li>
</ul>
<h2>Optionale Vertiefungen</h2>
<ul>
<li>Erweiterte Channel‑Kombinationen (z. B. Gruppen‑/Mehrkanal‑Strategien als Konzept)</li>
<li>Spezialisierte Threading‑Konfigurationen und Diagnose von Lock‑Contention</li>
<li>Feingranulares Tracing und korrelationsfähige Request‑IDs in heterogenen Systemen</li>
</ul>
