Inhaltsverzeichnis
- Kurzprofil
- Rahmendaten
- Zielgruppe
- Voraussetzungen
- Lernziele
- Inhalte
- Praxisübungen
- Technische Umgebung
- Checkliste für die Umsetzung
Kurzprofil
Das Seminar vermittelt die Grundlagen von Apache Avro als schemabasiertem Datenformat für Serialisierung, Austausch und Persistenz. Im Mittelpunkt stehen Schema-Definition, Binärencoding, Container-Dateien sowie die wichtigsten Tooling- und Integrationsmuster. Ein hoher Praxisanteil führt Schritt für Schritt von der ersten Schema-Datei bis zu kompatiblen Schema-Änderungen und reproduzierbaren Build-Artefakten.
Rahmendaten
- Dauer: 2 Tage
- Niveau: Grundlagen
- Format: Theorie, Live-Demos, Hands-on-Labs
- Unterlagen: Beispiel-Schemas, Übungsdatensätze, Templates
Zielgruppe
- Softwareentwicklung und Data Engineering
- Architektur- und Plattform-Teams
- Teams, die Datenverträge zwischen Services oder Pipelines standardisieren
Voraussetzungen
- Grundverständnis von JSON und Datenmodellen
- Programmierpraxis in mindestens einer Sprache (z. B. Java, Python)
Lernziele
- Avro-Schemas sicher modellieren und lesen
- Writer- und Reader-Schema-Prinzip verstehen und anwenden
- Binärserialisierung und Container-Dateien korrekt einsetzen
- Typische Evolutionsschritte (z. B. Felder hinzufügen) kompatibel umsetzen
- Tooling für Validierung, Code-Generierung und Inspektion in Build-Prozesse integrieren
Inhalte
Modul 1: Avro-Grundkonzepte
- Schemabasiertes Datenformat: Vorteile, Grenzen, typische Einsatzmuster
- Datentransport vs. Datenspeicherung: Single-Message vs. Container-Datei
- Writer- und Reader-Schema, Schema-Auflösung als Kernprinzip
Modul 2: Schema-Sprache und Datenmodellierung
- Primitive Typen, Records, Enums, Arrays, Maps
- Unions (inkl. Nullability-Pattern) und Default Values
- Namespaces, Aliases, Dokumentation im Schema
- Logical Types (Datum/Zeit, Decimal) als fachliche Abbildung
Modul 3: Serialisierung, Deserialisierung und Dateiformate
- Binärencoding und Auswirkung auf Größe/Performance
- Object Container File: Header, Sync Marker, Blocks
- Kompression und Blockgrößen als Stellhebel
Modul 4: Tooling und Build-Integration
- Schema-Validierung und Formatchecks
- IDL und Schema-Generierung
- Code-Generierung, Artefaktstruktur und Versionierung
Modul 5: Erste Integrationsmuster
- Payload-Design für Events und APIs
- Schema-Verteilung: Embedded Schema vs. zentrale Ablage
- Fehlertoleranz: Umgang mit unbekannten Feldern und Defaults
Praxisübungen
Lab 1: Erstes Schema erstellen und prüfen
- Record-Schema mit realistischem Datenobjekt modellieren.
- Nullability-Pattern für optionale Felder festlegen.
- Default Values hinzufügen und Schema-Validierung ausführen.
- Schema-Konventionen dokumentieren (Namensschema, Namespace, Doc-Felder).
Lab 2: Daten serialisieren und wieder lesen
- Beispieldaten als Generic- oder Specific-Record erzeugen.
- Binärserialisierung durchführen und Bytegröße vergleichen.
- Deserialisierung mit Reader-Schema ausführen und Ergebnis verifizieren.
- Fehlerfälle erzeugen (falscher Typ, fehlendes Pflichtfeld) und auswerten.
Lab 3: Kompatible Schema-Änderung
- Neue Feldversion entwerfen (Feld hinzufügen, Default setzen).
- Writer/Reader-Kombinationen testen (alt→neu, neu→alt).
- Breaking Changes identifizieren und dokumentieren.
- Versionierungsstrategie als Teamregel festhalten.
Lab 4: Container-Datei schreiben und inspizieren
- Datensätze in eine Avro-Container-Datei schreiben.
- Kompression aktivieren und Blockgröße variieren.
- Datei mit Tooling inspizieren (Schema, Anzahl Records, Metadaten).
- Lesepfad in einer zweiten Sprache simulieren (Interoperabilitätscheck).
Technische Umgebung
- Lokale Entwicklungsumgebung mit Java oder Python
- Build-Tool (Maven oder Gradle) oder vergleichbare Paketverwaltung
- Optional: Container-Laufzeit für reproduzierbare Lab-Setups
Checkliste für die Umsetzung
- Schema-Namenskonvention, Namespace-Strategie und Doc-Felder standardisieren.
- Nullability- und Default-Patterns als Teamregel festlegen.
- Schema-Validierung als CI-Schritt definieren.
- Kompatibilitätsmatrix für zentrale Datendomänen dokumentieren.
- Artefaktversionierung (Schema/Code) und Release-Prozess festlegen.
