Aller au contenu

321 : Programmer des systèmes distribués

Compétences

  • Verteilte Systeme analysieren, verstehen, planen, erweitern und anwenden, sowie bestehende Applikationen in ein verteiltes System überführen.

Objectifs opérationnels

  1. Analysiert unterschiedlich strukturierte Softwaresysteme und überführt diese in verteilte Systeme. [g1.1, g4.4, g4.5]
  2. Verwendet Systemkomponenten in verteilten Systemen. [g5.1, g5.2]
  3. Verbindet Systemteile über wohl definierte Schnittstellen. [g5.2, g5.3]
  4. Implementiert Systemkomponenten in einem verteilten System und überprüft deren Funktion. [g5.4, g5.7, g6.4, g6.6, h4.3, h4.4]

Liens domaine de compétence opérationnels

Domaine de compétence

Domaine de compétence Ingénierie d’applications
Objet Entwickeln von Systemkomponenten in verteilten Systemen, wie eine Zeiterfassung, mit der Anbindung von fertigen Systemkomponenten zur Authentifizierung und Autorisierung sowie einem Dienst zur persistenten Datenhaltung.
Attestation
Prérequis 117 : Mettre en place l’infrastructure informatique et réseau d’une petite entreprise
319 : Concevoir et implémenter des applications
347 : Utiliser un service avec des conteneurs
Nombre de leçons env. 40
Reconnaissance Certificat fédéral de capacité

Connaissances opérationnelles nécessaires

1 1.1 Kennt Begriffe, die im Bezug mit verteilten Systemen verwendet werden (z. B. Cloud-Native, Cloud-Functions, XaaS).
1.2 Kennt die Eigenschaften (z.B. Idempotenz/Retry, Resilience/design for failure, Transaktion/CQRS/EventSourcing) von verteilten Systemen (z.B. Rechnerverbund).
1.3 Kennt Systemarchitekturen zur Softwareentwicklung (z.B. Monolith, Microservices, Client-Server, Peer to Peer).
1.4 Kennt Vorgehensweisen, um Softwaresysteme zu migrieren (z.B. Strangler-Pattern, Big Bang).
2 2.1 Kennt Kategorien von Systemkomponenten (z. B. Identitätsverwaltung, Ereignisverwaltung, Monitoring, Datenhaltung, Lastenverteilung).
2.2 Kennt aktuelle Technologien für die jeweiligen Kategorien von Systemkomponenten (z.B. KeyCloak, RabbitMQ, LogStash, Prometheus, Redis, Minio, Traefik, Caddy).
2.3 Kennt Möglichkeiten, um verteilte Systeme lokal zu entwickeln und bestehende Systemkomponenten anzubinden.
3 3.1 Kennt die Anwendung des Pub-Sub-Patterns (z. B. Message-Broker wie RabbitMQ, Kafka und Protokolle wie AMQP, MQTT).
3.2 Kennt Hilfsmittel zum Serialisieren und Deserialisieren von Daten (z. B. JSON, XML, protobuf).
3.3 Kennt Protokolle (z. B. HTTP, TCP) zum Datenaustausch über wohl definierte Schnittstellen (z. B. REST, GraphQL, gRPC, WS, Gateway, Proxy).
3.4 Kennt Mechanismen für Authentifizierung und Autorisierung (z. B. OpenID, JWT, oAuth, ABAC/RBAC).
4 4.1 Kennt Werkzeuge, um Softwareanforderungen in einem verteilten System zu implementieren (z.B. Container und Virtualisierung, Clouddienste wie CloudFoundry, AWS…).
4.2 Kennt Methoden zur horizontalen und vertikalen Skalierung von verteilten Systemkomponenten.
4.3 Kennt Mittel um einzelne Systemteile und verteilte Systeme, sowie deren Schnittstellen zu dokumentieren (z. B. OpenAPI, Pact, Pre-/Postcondition&Invariante).
4.4 Kennt Vorgehensweisen, um die Funktionstüchtigkeit von verteilten Systemen zu überprüfen (z. B. Health-Check, Situationsanalyse, automatisierte und manuelle Tests) und Fehler einzugrenzen.