M321 V1
Programmer des systèmes distribués
- Type
- EP obligatoire
- Lieu
- École professionnelle
- Année
- 4ème année d'apprentissage
- 321_1_Programmer%20des%20syst%C3%A8mes%20distribu%C3%A9s.pdf
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
| Connaissance | Texte |
|---|---|
| 321.1.1 | Connaître des termes utilisés en relation avec les systèmes distribués (p. ex. cloud native, Cloud Functions, XaaS). |
| 321.1.2 | Connaî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.3 | Connaître des architectures système pour le développement logiciel (p. ex. monolithe, microservices, client-serveur, peer to peer). |
| 321.1.4 | Connaî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
| Connaissance | Texte |
|---|---|
| 321.2.1 | Connaî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.2 | Connaî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.3 | Connaî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
| Connaissance | Texte |
|---|---|
| 321.3.1 | Connaî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.2 | Connaître des formats de sérialisation et de désérialisation des données (p. ex. JSON, XML, protobuf). |
| 321.3.3 | Connaî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.4 | Connaî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
| Connaissance | Texte |
|---|---|
| 321.4.1 | Connaî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.2 | Connaître des méthodes de mise à l’échelle (scalability) horizontale ou verticale de composants de système distribués. |
| 321.4.3 | Connaî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.4 | Connaî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
| Bande | Compétence | Débutant | Intermédiaire | Avancé | 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
| Module | Titre | PEC communes |
|---|---|---|
| M183 | Implémenter la sécurité d'une application | |
| M223 | Réaliser des applications multi-utilisateurs orientées objets | |
| M324 | Prendre en charge des processus DevOps avec des outils logiciels | |
| M346 | Concevoir et réaliser des solutions cloud | |
| M426 | Développer un logiciel avec des méthodes agiles | |
| M106 | Interroger, traiter et assurer la maintenance des bases de données | |
| M164 | Créer des bases de données et y insérer des données | |
| M295 | Réaliser le back-end pour des applications | |
| M319 | Concevoir et implémenter des applications | |
| M320 | Programmer orienté objet | |
| M322 | Concevoir et implémenter des interfaces utilisateur | |
| M323 | Programmer de manière fonctionnelle |