ActivityPub Server entwickeln: Referenz-Implementierung (Hands-on)
Lernziele
- Actor-Dokumente und Kernendpunkte implementieren (konzeptionell + praktisch)
- Inbox-Verarbeitung als Pipeline bauen (Parse, Validate, Store, Apply)
- Outbox und Zustellung über Queue realisieren
- Dedupe und Idempotenz durchgängig anwenden
- Interop-Probleme systematisch lokalisieren (Payload, Zustellung, State)
Inhalte und Module
- Projektstruktur: Komponenten, Adapter, Storage, Worker
- Actor-Endpunkte: Representation, Public Key Konzept (konzeptionell)
- Collections: followers/following, outbox pages
- Inbox: Validierung, Dedupe, Side Effects, Persistenz
- Outbox: Activity erzeugen, persistieren, Zustellung an Remote Inboxes
- Delivery Worker: Queue, Retries, Backoff, Dead-letter
- Interop: Payload-Normalisierung, tolerante Parser, Feature Flags
Agenda (UE-Plan)
Tag 1
- UE1: Referenzarchitektur und Projekt-Setup
- UE2: Domänenmodell und Storage-Schema
- UE3: Actor-Dokument erzeugen
- UE4: Collections Grundgerüst
- UE5: Outbox: lokale Create Activities
- UE6: Inbox: Parser und Persistenz
- UE7: Dedupe-Basics
- UE8: Review und Refactoring
Tag 2
- UE1: Follow/Accept State Machine
- UE2: followers/following Collections
- UE3: Threading (Replies) Grundlogik
- UE4: Update/Delete Handling
- UE5: Side Effects und Idempotenz
- UE6: Indexing und Query Patterns
- UE7: Teststrategie (Unit/Integration)
- UE8: Review
Tag 3
- UE1: Delivery Architektur (Queue/Worker)
- UE2: Target Inbox Resolution (konzeptionell)
- UE3: Retry/Backoff Implementationsmuster
- UE4: Rate Limiting und Backpressure
- UE5: Dead-letter und Replay
- UE6: Observability Hooks
- UE7: Lasttests (klein) und Metriken
- UE8: Review
Tag 4
- UE1: Interop Debugging Prozess
- UE2: Toleranzregeln und Normalisierung
- UE3: Feature Flags für Verhalten
- UE4: Moderationshooks (Vorbereitung auf S7)
- UE5: Security Hooks (Vorbereitung auf S6)
- UE6: Stabilisierung und Doku
- UE7: Mini-Abnahme gegen Checkliste
- UE8: Architektur-Readme finalisieren
Praxisübungen Schritt für Schritt
Übung A: Inbox-Verarbeitungspipeline
- Eingangspunkt definieren: /inbox POST akzeptiert JSON.
- Parser bauen: JSON lesen, Pflichtfelder prüfen (id/type/actor/object).
- Validation Layer: Typenwhitelist, Größenlimits, schematische Checks.
- Dedupe Check: activity.id gegen Inbox-Store.
- Persistenz: Activity speichern, Object optional entkoppelt speichern.
- Apply Layer: Side Effects (z. B. Follow-Status, Timeline Eintrag) nur einmal.
- Response: idempotent 2xx, Fehler differenziert (4xx vs. 5xx).
- Logging: correlationId, remoteActorId, activityId.
Übung B: Outbox → Delivery Queue
- Outbox-POST nimmt lokale Aktion (Create/Follow) an.
- Activity erzeugen: neue activity.id, object.id (falls neu).
- Persistieren: Activity und Object in Storage.
- Targets bestimmen: Empfänger aus to/cc ableiten, remote inbox URLs auflösen (konzeptionell).
- Jobs erzeugen: pro Target ein Delivery-Job.
- Worker verarbeitet Jobs: send, retry, mark delivered.
- Fehlerhandling: 429 Backoff, 5xx retry, 4xx fail-fast mit Klassifikation.
Seminar und Anbieter vergleichen
Öffentliche Schulung
Diese Seminarform ist auch als Präsenzseminar bekannt und bedeutet, dass Sie in unseren Räumlichkeiten von einem Trainer vor Ort geschult werden. Jeder Teilnehmer hat einen Arbeitsplatz mit virtueller Schulungsumgebung. Öffentliche Seminare werden in deutscher Sprache durchgeführt, die Unterlagen sind teilweise in Englisch.
Inhausschulung
Diese Seminarform bietet sich für Unternehmen an, welche gleiche mehrere Teilnehmer gleichzeitig schulen möchten. Der Trainer kommt zu Ihnen ins Haus und unterrichtet in Ihren Räumlichkeiten. Diese Seminare können in Deutsch - bei Firmenseminaren ist auch Englisch möglich gebucht werden.
Webinar
Diese Art der Schulung ist geeignet, wenn Sie die Präsenz eines Trainers nicht benötigen, nicht Reisen können und über das Internet an einer Schulung teilnehmen möchten.
Fachbereichsleiter / Leiter der Trainer / Ihre Ansprechpartner
-

Michael Adler
Telefon: + 41 (800) 225127
E-Mail: michael.adler@seminar-experts.ch -

Stefano Conti
Telefon: + 41 (800) 225127
E-Mail: stefano.conti@seminar-experts.ch
Seminardetails
| Dauer: | 4 Tage ca. 6 h/Tag, Beginn 1. Tag: 10:00 Uhr, weitere Tage 09:00 Uhr |
| Preis: |
Öffentlich und Webinar: CHF 2.396 zzgl. MwSt. Inhaus: CHF 6.800 zzgl. MwSt. |
| Teilnehmeranzahl: | min. 2 - max. 8 |
| Teilnehmer: | • Backend-Entwicklung (mid/senior) • Plattformteams, die föderierte Funktionen bauen • Architekt:innen, die Implementation und Betrieb zusammenführen |
| Vorausetzungen: | • Solide Erfahrung in einer Server-Technologie (beliebig) • Grundverständnis von Queues und Persistenz |
| Standorte: | Basel, Bern, Luzern, Sankt Gallen, Winterthur, Zürich |
| Methoden: | Vortrag, Demonstrationen, praktische Übungen am System |
| Seminararten: | Öffentlich, Webinar, Inhaus, Workshop - Alle Seminare mit Trainer vor Ort, Webinar nur wenn ausdrücklich gewünscht |
| Durchführungsgarantie: | ja, ab 2 Teilnehmern |
| Sprache: | Deutsch - bei Firmenseminaren ist auch Englisch möglich |
| Seminarunterlage: | Dokumentation auf Datenträger oder als Download |
| Teilnahmezertifikat: | ja, selbstverständlich |
| Verpflegung: | Kalt- / Warmgetränke, Mittagessen (wahlweise vegetarisch) |
| Support: | 3 Anrufe im Seminarpreis enthalten |
| Barrierefreier Zugang: | an den meisten Standorten verfügbar |
| Weitere Informationen unter +41 (800) 225127 |
Seminartermine
Die Ergebnissliste kann durch Anklicken der Überschrift neu sortiert werden.
