Date : Mai 2023
Examen - Architectures Logicielles Section : GL4
Durée : 1h30 Nombre de pages : 4+1+2
Responsable du cours : Dr. Lilia Sfaxi Documents AUTORISÉS
Instructions
— Cet examen est sous la forme d’un QCM. Vous comprendrez, selon l’énoncé de chaque question, s’il s’agit d’une
réponse unique ou multiple.
— Il faut remplir et rendre uniquement la feuille de réponse, en remplissant totalement le cercle avec un stylo de
couleur foncée.
— Attention, vous ne pourrez pas demander une autre feuille de votre surveillant ! Si vous vous êtes trompé(e),
il faut utiliser un correcteur pour blanchir le cercle en question.
Data Mesh
On retrouve encore une fois le Data Mesh, mais cette fois-ci sous un angle architectural...
1. Quel problème peut poser l’approche "Domain-driven Design" ?
A. Aucun problème, cette approche est parfaite.
B. L’équipe Data devient surchargée par les demandes des différentes équipes de domaine ♠
C. La méthode Domain-driven Design entraîne une complexité excessive du code.
D. Les équipes de domaine ne sont pas impliquées activement dans le processus de conception des
données.
2. Quel principe ne fait pas partie des principes fondamentaux des Data Mesh ?
A. La gouvernance centralisée ♠
B. La propriété du domaine
C. Les données en tant que produit
D. La plate-forme d’infrastructure de données en libre-service
3. Quel type d’architecture se marie naturellement avec un Data Mesh ?
A. Microservices ♠ B. N-Tiers C. Hexagonale D. Master-worker
4. Qu’arrivera-t-il à l’équipe des données (data team) classique dans une architecture Data Mesh ?
A. L’équipe Data n’existera plus, car chaque domaine s’occupera désormais de ses propres données.
B. L’équipe de données devient une équipe de support qui fournit des compétences et services spé-
cialisés aux différentes équipes de domaine.♠
C. L’équipe des données continue à fonctionner de la même manière qu’auparavant.
D. L’équipe des données est fusionnée avec les équipes de domaine.
5. Comment peut-on exploiter une architecture orientée évènements dans un data mesh ?
A. Impossible. Ces deux architectures ne se marient pas bien.
B. Il est intéressant de mettre en place un système de messagerie pour capturer les évènements
de domaine, afin qu’ils soient ingérés par la plateforme de données, traités et disponible pour
l’analyse. ♠
1
C. Dans un Data Mesh, il n’est pas nécessaire de mettre en place un système de messagerie pour
capturer les évènements de domaine. Ces évènements peuvent être directement intégrés dans la
plateforme de données sans nécessiter de traitement supplémentaire, permettant ainsi une dispo-
nibilité immédiate pour l’analyse.
D. La mise en place d’un système de messagerie pour capturer les évènements de domaine dans un
Data Mesh peut être une surcharge inutile. Les évènements de domaine peuvent être traités en
dehors de la plateforme de données, puis directement utilisés pour l’analyse, sans passer par une
ingestion au sein de la plateforme de données.
6. L’un des avantages de l’utilisation d’un Data Mesh avec la méthodologie DDD (Domain-driven Design)
est le suivant : "Data Mesh favorise une architecture modulaire et distribuée pour les données, ce qui
facilite l’intégration et la modification des sources de données et des services. Ceci permet de s’adapter plus
rapidement à l’évolution des besoins de l’entreprise et d’introduire de nouvelles capacités en matière de
données.". Quel besoin non fonctionnel cela représent-t-il ?
A. Scalabilité B. Portabilité C. Flexibilité ♠ D. Disponibilité
7. En contrepartie, plusieurs inconvénients peuvent s’ensuivre, dont je cite : "La gestion et l’exploitation
d’un écosystème de données distribuées peuvent introduire des complexités opérationnelles. Assurer une sur-
veillance adéquate, un suivi des données et un dépannage dans plusieurs domaines et services de données
peut s’avérer plus difficile que dans un environnement de données centralisé. Les frais généraux opération-
nels et les efforts de maintenance peuvent augmenter à mesure que la complexité du système s’accroît.". De
quels besoins non fonctionnels s’agit-il ici ? (plusieurs réponses possibles ici)
A. Maintenabilité ♠ B. Portabilité C. Auditabilité ♠ D. Disponibilité
E. Scalabilité
8. Nous avons vu ensemble une autre architecture qui aborde le principe de "mesh", c’est l’architecture
"Service Mesh". Une définition de Mesh est la suivante : "En infographie et en modélisation 3D, un
maillage (mesh) fait référence à un réseau de sommets, d’arêtes et de faces qui définissent la forme d’un
objet tridimensionnel." Que seront ces maillages dans le cas d’un data mesh vs. dans le cas d’un service
mesh ?
A. Dans un Service Mesh, les sommets seront les différents outils et services utilisés pour monitorer
et tracer les communications entre les microservices, tandis que pour un Data Mesh, ce seront les
différents outils et services utilisés pour gérer la qualité et la gouvernance des données.
B. Dans un Service Mesh, les sommets seront les différentes instances des microservices, tandis que
pour un Data Mesh, ce seront les différents clusters de bases de données.
C. Dans un Data Mesh, les sommets seront les différents composants d’infrastructure réseau utilisés
pour gérer les communications entre les microservices, tandis que pour un Service Mesh, ce seront
les différents composants d’infrastructure de stockage et de traitement des données.
D. Dans un Service Mesh, les sommets seront ces proxys qui externalisent les opérations non fonc-
tionnelles d’un microservice, tandis que pour un Data Mesh, ce sont les réseaux de produits de
données et les composants de l’infrastructure des données associées à chaque domaine. ♠
Layered vs Clean Architecture
Nous avons vu en classe ces deux architectures. Nous avons dit en passant que la Clean architecture
pouvait être considérée comme une "déclinaison" de l’architecture en couches, mais la réalité est un peu
plus complexe que cela... Nous allons voir dans l’annexe (tiré de l’article Comparing Three-Layered and Clean
Architecture for Web Development 1 ) plus en détails ce qui fait la différence.
9. Quelle est la principale différence entre une architecture en couches et une architecture N-Tiers ?
A. Une architecture en couches se caractérise par une distribution géographique des composants,
tandis qu’une architecture N-Tiers implique une distribution verticale des fonctionnalités.
1. [Link]
2
B. Une architecture N-tiers représente une séparation "physique" de composants indépendamment
déployables, alors qu’une architecture en couches concerne une séparation plus logique du code.
♠
C. L’architecture en couches permet une meilleure extensibilité et évolutivité, tandis que l’architec-
ture N-Tiers est plus adaptée aux applications monolithiques.
D. Dans une architecture en couches, chaque couche est responsable d’une fonctionnalité spécifique,
tandis que dans une architecture N-Tiers, chaque tier représente une étape du processus de trai-
tement des données.
10. Une architecture Clean est un pattern architectural qui peut être associé à différents types d’architec-
tures logicielles, y compris l’architecture monolithique.
A. Vrai ♠ B. Faux
11. Dans une architecture Clean, les couches sont ordonnées de la abstraite (Infrastructure) vers la plus
concrète (Entités).
A. Vrai ♠ B. Faux
12. Quelle est la différence entre l’architecture en couches et l’architecture Clean en termes d’accès aux
données ?
A. Dans l’architecture en couches, l’accès aux données est décentralisé et chaque couche a sa propre
logique d’accès aux données, tandis que dans l’architecture Clean, l’accès aux données est cen-
tralisé et géré par une couche dédiée.
B. L’accès aux données dans une architecture en couches est la couche la plus importante, car c’est
sur elle que repose tout le reste, et dont tout dépend. Tandis que pour la clean architecture, elle
représente un "détail" éloigné et indépendant du coeur de notre application. ♠
C. L’architecture en couches considère l’accès aux données comme un aspect secondaire, tandis que
l’architecture Clean le place au centre de la conception et de la structure de l’application.
D. Dans l’architecture en couches, l’accès aux données est principalement réalisé à l’aide de services
externes, tandis que dans l’architecture Clean, l’accès aux données se fait directement à partir de
chaque couche.
13. Quelle est la différence entre l’architecture en couches et l’architecture Clean en termes de UI ?
A. Dans l’architecture en couches, l’UI est responsable de l’accès direct aux données, tandis que
dans l’architecture Clean, l’UI communique avec la couche application pour obtenir les données
nécessaires.
B. L’architecture Clean considère l’UI comme une partie intégrante de la couche de présentation, où
elle est responsable de la logique métier, tandis que l’architecture en couches place l’UI dans une
couche distincte qui se concentre uniquement sur l’affichage des données.
C. Dans l’architecture en couches, l’UI est gérée par un framework spécifique, tel que Angular ou
React, tandis que dans l’architecture Clean, l’UI est développée de manière personnalisée pour
répondre aux besoins spécifiques de l’application.
D. Pour les deux architectures, l’UI se situe au niveau de la couche la plus externe, cela dit, pour
l’architecture en couches, une partie de la logique métier peut parfois se trouver au niveau de
l’UI (si cette dernière utilise un pattern tel que MVC, par exemple), alors que dans l’architecture
Clean, il existe une séparation claire entre la logique métier (déléguée à la couche application) et
les responsabilités de l’UI. ♠
14. L’architecture Clean utilise l’approche DDD.
A. Vrai ♠ B. Faux
15. Dans une architecture Clean, les interfaces graphiques font partie de la couche externe, tandis que les
tests unitaires sont répartis sur chacune des couches pour tester leurs fonctionnalités de façon distincte.
A. Vrai B. Faux ♠
3
16. Quel est le rôle principal de la couche Adapters de la clean architecture ?
A. Le rôle principal de la couche Adapters est de convertir les données et les concepts de l’application
dans un format compréhensible par les éléments externes, et vice versa.♠
B. La couche Adapters de la clean architecture est responsable de la gestion des connexions réseau
et de la communication avec les services externes.
C. La couche Adapters est responsable de la gestion de la logique métier de l’application et de l’or-
chestration des différentes couches de l’architecture.
D. La couche Adapters se concentre uniquement sur l’interface utilisateur (UI) de l’application, gé-
rant les interactions avec les utilisateurs et les événements liés à l’interface.
17. Dans une clean architecture, l’UI fait partie de la couche Infrastructure.
A. Vrai ♠ B. Faux
18. Comment communiquent les couches dans les deux architectures (en couches et clean) ?
A. Dans une architecture en couches, les couches abstraites font appel aux couches concrètes, ces
dernières n’auront donc aucune idée sur ce qui se passe au dessus. Tandis que dans une architec-
ture clean, les couches de haut niveau ne dépendent pas des couches de bas niveau, mais utilisent
des ports pour communiquer avec eux et assurer la séparation des préoccupations.♠
B. Dans une architecture en couches, les couches communiquent directement entre elles sans aucune
restriction ou encapsulation. Tandis que dans une architecture Clean, les couches supérieures
peuvent dépendre directement des couches inférieures pour communiquer et partager des don-
nées.
C. Dans une architecture en couches, les couches supérieures peuvent accéder directement aux dé-
tails d’implémentation des couches inférieures, favorisant ainsi une communication directe et
rapide. Tandis que dans une architecture Clean, les couches de bas niveau ont une visibilité com-
plète sur les couches de haut niveau et peuvent communiquer directement avec elles sans passer
par des interfaces spécifiques.
19. Parmi les deux architectures, laquelle applique le principe de "Stable Dependencies Principle" ?
A. La clean architecture car, grâce à l’inversion de dépendances, les couches les plus instables re-
posent sur les couches les plus stables. ♠
B. Les deux architectures appliquent le principe de "Stable Dependencies Principle" en inversant les
dépendances entre les différentes couches de l’application.
C. L’architecture en couches applique le principe de "Stable Dependencies Principle" en garantissant
que les couches supérieures (donc moins stables) dépendent des couches inférieures (plus stables)
pour assurer la stabilité et la cohérence du système.
D. Ni l’architecture en couches ni l’architecture Clean ne sont liées au principe de "Stable Dependen-
cies Principle". Ce principe est propre aux applications utilisant le paradigme OO uniquement.
20. Comment est-ce qu’une entité est mappée à une donnée concrète dans une clean architecture ?
A. Le mappage des entités vers des données concrètes est effectué directement dans les entités elles-
mêmes.
B. Le mappage des entités vers des données concrètes est effectué dans les couches use cases de
l’architecture Clean.
C. Le mappage des entités vers des données concrètes doit être effectué dans les adaptateurs de
persistance grâce au principe d’inversion de contrôle. ♠
D. Ce sont les données concrètes qui font appel aux entités directement, au lieu contraire.
♣ Bon travail