<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>Ein praxisorientierter Einstieg in Apache bRPC: Architektur, Kernkonzepte und der Weg vom Build bis zum ersten produktionsnahen RPC‑Service in C++.</p>
<h2>Zielgruppe</h2>
<ul>
<li>C++‑Entwickelnde, die RPC‑basierte Services entwickeln oder betreiben</li>
<li>Architekt:innen im Umfeld Microservices, verteilte Systeme und APIs</li>
<li>Platform‑/SRE‑Rollen, die Grundlagen für Betrieb und Fehlersuche benötigen</li>
</ul>
<h2>Voraussetzungen</h2>
<ul>
<li>Solide C++‑Kenntnisse (Build‑Toolchain, Includes/Linking, RAII)</li>
<li>Grundlagen zu Netzwerk, TCP, HTTP sowie Client‑Server‑Kommunikation</li>
<li>Optional: Erfahrung mit Protobuf oder gRPC ist hilfreich, aber nicht zwingend</li>
</ul>
<h2>Inhalte</h2>
<h3>Modul 1: Überblick und Systemmodell</h3>
<ul>
<li>Positionierung von bRPC in Service‑Architekturen (RPC, REST, Hybrid‑Ansätze)</li>
<li>Bausteine: Server, Service, Channel, Controller, Closure/Callback</li>
<li>Synchronous vs. asynchronous Verarbeitung und typische Einsatzmuster</li>
</ul>
<h3>Modul 2: Protokolle und Schnittstellen</h3>
<ul>
<li>Protobuf‑basierte Services: IDL‑Grundlagen, Request/Response‑Modelle</li>
<li>Mehrprotokoll‑Betrieb: HTTP/HTTPS und weitere Protokolle auf einem Port (Konzept und Grenzen)</li>
<li>Fehlercodes, Timeouts, Retries und Idempotenz als Basis für robuste APIs</li>
</ul>
<h3>Modul 3: Nebenläufigkeit und Laufzeit</h3>
<ul>
<li>Threading‑Grundlagen in bRPC: Worker‑Threads und M:N‑Konzepte mit bthread</li>
<li>Wichtige Parameter (z. B. globale Concurrency) und deren Auswirkung auf Latenz/Throughput</li>
<li>Ressourcenmodell: Memory‑Ownership, Lebenszyklen von Request/Response, sichere Callback‑Strukturen</li>
</ul>
<h3>Modul 4: Built‑in Services für Sichtbarkeit und Diagnose</h3>
<ul>
<li>Status‑ und Variablenansichten (Konzept von /status und /vars) für Runtime‑Einblicke</li>
<li>Connection‑Übersichten und RPC‑Tracing (Konzept von /connections und /rpcz)</li>
<li>Einführung in Profiler‑Services (CPU/Heap/Contention) und sinnvolle Einsatzzeitpunkte</li>
</ul>
<h2>Praxisübungen</h2>
<h3>Übung 1: Entwicklungsumgebung und Build</h3>
<ol>
<li>Toolchain prüfen (Compiler, CMake, Abhängigkeiten) und ein minimales Projektgerüst anlegen</li>
<li>bRPC in das Build einbinden und einen leeren Server‑Skeleton kompilieren</li>
<li>Lokalen Start, Health‑Check und sauberes Shutdown‑Handling verifizieren</li>
</ol>
<h3>Übung 2: Hello‑RPC mit Protobuf</h3>
<ol>
<li>Ein kleines Protobuf‑Schema definieren (Request/Response, Service‑Interface)</li>
<li>Server‑Implementierung erstellen und Service registrieren</li>
<li>Client‑Channel konfigurieren, ersten Call ausführen, Fehlerfälle testen (Timeout/Fehlercode)</li>
</ol>
<h3>Übung 3: Baseline‑Observability</h3>
<ol>
<li>Built‑in Services aktivieren und grundlegende Laufzeitdaten interpretieren</li>
<li>Eigene Zähler/Metriken als bvar‑Konzept ergänzen und sichtbar machen</li>
<li>Ein reproduzierbares Troubleshooting‑Mini‑Runbook aus den Beobachtungen ableiten</li>
</ol>
<h3>Übung 4: Synchronous vs. asynchronous Verarbeitung</h3>
<ol>
<li>Service‑Methode in synchroner Variante implementieren und Verhalten messen</li>
<li>Asynchrone Variante mit Callback/Closure umsetzen</li>
<li>Unterschiede bei Thread‑Nutzung, Latenz und Fehlerbehandlung dokumentieren</li>
</ol>
<h2>Rahmen</h2>
<ul>
<li>Empfohlener Zeitbedarf: 2 Tage</li>
<li>Begründung zur Dauer: Grundkonzepte, Build/Tooling und mehrere Hands‑on‑Übungen benötigen zusammen ausreichend Zeit für Wiederholung, Fehleranalyse und saubere Patterns.</li>
<li>Format: Präsenz oder Live‑Online, hoher Übungsanteil</li>
<li>Teilnehmendenzahl: ideal 6–12 für intensives Pairing und Reviews</li>
</ul>
<h2>Kompetenzen</h2>
<ul>
<li>bRPC‑Architektur und zentrale Komponenten sicher einordnen</li>
<li>Einen funktionsfähigen RPC‑Service in C++ erstellen und testen</li>
<li>Grundlegende Robustheitsmechanismen (Timeout, Retries, Idempotenz) anwenden</li>
<li>Diagnose‑Werkzeuge von bRPC strukturiert für Fehlersuche nutzen</li>
</ul>
<h2>Optionale Vertiefungen</h2>
<ul>
<li>Einführung in Naming Services und Client‑seitiges Load Balancing</li>
<li>Grundlagen der Protokoll‑Erweiterbarkeit und Mehrprotokoll‑Gateways</li>
<li>Erste Performance‑Messungen und einfache Optimierungshebel</li>
</ul>
