M321 V1

Programmer des systèmes distribués

Type
EP obligatoire
Lieu
École professionnelle
Année
4ème année d'apprentissage
PDF
321_1_Programmer%20des%20syst%C3%A8mes%20distribu%C3%A9s.pdf

Compétences PEC liées

Compétence visée par le module

Analyser, comprendre, planifier, étendre et utiliser des systèmes distribués, et transférer des applications existantes vers un système distribué.

Situation / objet

Développement de composants de système dans des systèmes distribués, tels que la saisie du temps, avec connexion de composants de système finis à des fins d’authentification et d’autorisation ainsi que d’un service de stockage persistant des données.

Objectifs opérationnels et connaissances

321.1 Analyser des systèmes logiciels présentant une structure différente et les transférer vers des systèmes distribués. [g1.1, g4.4, g4.5] g1 g4 g5 g6 h4
ConnaissanceTexte
321.1.1Connaître des termes utilisés en relation avec les systèmes distribués (p. ex. cloud native, Cloud Functions, XaaS).
321.1.2Connaître les caractéristiques (p. ex. idempotence/retry, résilience/design for failure, transaction/CQRS/EventSourcing) des systèmes distribués (p. ex. grappe de serveurs/cluster).
321.1.3Connaître des architectures système pour le développement logiciel (p. ex. monolithe, microservices, client-serveur, peer to peer).
321.1.4Connaître des procédures de migration des systèmes logiciels (p. ex. strangler pattern, Big Bang).
321.2 Utiliser des composants de système dans des systèmes distribués. [g5.1, g5.2] g1 g4 g5 g6 h4
ConnaissanceTexte
321.2.1Connaître des catégories de composants de système (p. ex. gestion des identités, gestion des événements, monitorage, conservation des données, répartition de la charge).
321.2.2Connaître des technologies actuelles pour les catégories respectives de composants de système (p. ex. KeyCloak, RabbitMQ, LogStash, Prometheus, Redis, Minio, Traefik, Caddy).
321.2.3Connaître des possibilités pour développer localement des systèmes distribués et connecter les composants de système existants.
321.3 Relier des parties de système via des interfaces bien définies. [g5.2, g5.3] g1 g4 g5 g6 h4
ConnaissanceTexte
321.3.1Connaître l’application du modèle publier-s’abonner ou pub sub pattern (p. ex. message broker, comme RabbitMQ et Kafka, et protocoles tels que AMQP, MQTT).
321.3.2Connaître des formats de sérialisation et de désérialisation des données (p. ex. JSON, XML, protobuf).
321.3.3Connaître des protocoles (p. ex. HTTP, TCP) pour l’échange de données via des interfaces bien définies (p. ex. REST, GraphQL, gRPC, WS, Gateway, Proxy).
321.3.4Connaître des mécanismes d’authentification et d’autorisation (p. ex. OpenID, JWT, oAuth, ABAC/RBAC).
321.4 Implémenter des composants de système dans un système distribué et vérifier leur fonctionnement. [g5.4, g5.7, g6.4, g6.6, h4.3, h4.4] g1 g4 g5 g6 h4
ConnaissanceTexte
321.4.1Connaître des outils pour implémenter les exigences logicielles dans un système distribué (p. ex. conteneur et virtualisation, services cloud tels que CloudFoundry, AWS, etc.).
321.4.2Connaître des méthodes de mise à l’échelle (scalability) horizontale ou verticale de composants de système distribués.
321.4.3Connaître des outils pour documenter des parties de système individuelles et des systèmes distribués ainsi que leurs interfaces (p. ex. OpenAPI, Pact, précondition/postcondition et invariant).
321.4.4Connaître des procédures pour vérifier la fonctionnalité des systèmes distribués (p. ex. bilan de santé, analyse de situation, tests automatisés et manuels) et circonscrire les erreurs.

Matrice de compétences

BandeCompétenceDébutantIntermédiaireAvancéObjectifs
A1 Logiciel d'analyse et de transfert Je peux décrire les structures de différents systèmes logiciels Je peux analyser des systèmes logiciels en ce qui concerne leur adéquation aux systèmes distribués Je peux convertir des systèmes logiciels en systèmes distribués et analyser les effets sur la structure et les interfaces
321.1
A2 Logiciel d'analyse et de transfert Je peux expliquer les bases des architectures de systèmes distribués Je peux préparer des applications existantes pour l'intégration dans des systèmes distribués Je peux mettre en œuvre des stratégies de solutions pour l'intégration de systèmes
321.1
B1 Comprendre et planifier le stockage des données Je peux expliquer les exigences relatives au stockage de données dans les systèmes distribués Je peux utiliser des systèmes de gestion de données dans des systèmes distribués Je peux choisir un système de gestion de données adapté
321.1
C1 Expliquer, mettre en œuvre et évaluer les composants Je peux expliquer le rôle des composants système dans les systèmes distribués Je peux implémenter et tester les composants du système localement et dans un système distribué Je peux évaluer les composants du système pour les intégrer dans des systèmes distribués
321.2
D1 Expliquer et mettre en œuvre l'échange de données Je peux expliquer les principes de l'échange de données Je peux mettre en œuvre et tester l'échange de données selon les concepts de base Je peux choisir une implémentation spécifique pour l'échange de données en fonction des besoins
321.3
D2 Expliquer et mettre en œuvre l'échange de données Je peux distinguer différents types de protocoles d'interface Je peux appliquer des protocoles pour le transfert de données entre les composants du système Je peux évaluer la pertinence des protocoles d'interface pour des cas d'utilisation spécifiques
321.3
E1 Implémenter l’authentification et l’autorisation Je peux expliquer les mécanismes d'authentification et d'autorisation dans les systèmes distribués Je peux implémenter et tester l'authentification et l'autorisation dans des systèmes distribués Je peux proposer des solutions adaptées pour l'authentification et l'autorisation dans les systèmes distribués
321.4
F1 Utiliser des outils de surveillance Je peux expliquer les outils de surveillance des systèmes distribués Je peux utiliser des outils pour surveiller les systèmes distribués Je peux définir des exigences raisonnables en matière de surveillance et mettre en œuvre la configuration des outils en conséquence
321.4

Modules liés par compétences PEC

ModuleTitrePEC communes
M183 Implémenter la sécurité d'une application
g5 g6 h4
M223 Réaliser des applications multi-utilisateurs orientées objets
g4 g5 g6
M324 Prendre en charge des processus DevOps avec des outils logiciels
g1 g5 g6
M346 Concevoir et réaliser des solutions cloud
g1 g4 h4
M426 Développer un logiciel avec des méthodes agiles
g1 g5 g6
M106 Interroger, traiter et assurer la maintenance des bases de données
g4 g5
M164 Créer des bases de données et y insérer des données
g1 g4
M295 Réaliser le back-end pour des applications
g5 g6
M319 Concevoir et implémenter des applications
g4 g5
M320 Programmer orienté objet
g4 g5
M322 Concevoir et implémenter des interfaces utilisateur
g1 g5
M323 Programmer de manière fonctionnelle
g4 g5