📚 Fiches de Révision
92 questions organisées par thème
Architecture Middleware(2 questions)
Qu'est-ce qu'un middleware dans le contexte des architectures distribuées ?
Explication :
Un middleware est un composant logiciel qui agit comme une passerelle entre différentes applications, outils et bases de données. Il facilite la communication et l'intégration entre des systèmes qui n'ont pas été initialement conçus pour fonctionner ensemble.
Quel est le principal avantage d'utiliser un middleware ?
Explication :
Le principal avantage d'un middleware est de réduire la complexité de l'intégration entre systèmes hétérogènes. Il permet de connecter des applications qui ne sont pas faites pour fonctionner ensemble, sans modifier ces applications, ce qui simplifie grandement l'intégration.
Messagerie(2 questions)
Quel modèle de messagerie garantit la livraison d'un message ?
Explication :
Les deux modèles de messagerie (Point-to-point et Publish-Subscribe) peuvent garantir la livraison des messages selon leur configuration. Les systèmes de messagerie modernes offrent généralement des mécanismes de garantie de livraison pour les deux modèles.
Dans un modèle Publish-Subscribe, que se passe-t-il si un subscriber n'est pas disponible ?
Explication :
Dans un modèle Publish-Subscribe avec garantie de livraison, les messages sont mis en file d'attente (queue) jusqu'à ce que le subscriber soit disponible pour les recevoir. Cela garantit qu'aucun message n'est perdu même si le subscriber est temporairement indisponible.
RPC(2 questions)
Qu'est-ce qu'un RPC (Remote Procedure Call) ?
Explication :
Un RPC (Remote Procedure Call) est un mécanisme qui permet d'appeler une fonction ou une méthode sur un serveur distant comme si elle était locale. Il masque la complexité de la communication réseau et permet de traiter les appels distants de manière transparente.
Quel est l'inconvénient principal des RPC synchrones ?
Explication :
Les RPC synchrones bloquent le client jusqu'à ce que la réponse soit reçue. Si le serveur est injoignable ou s'il y a un problème réseau, le client reste bloqué en attente, ce qui peut impacter les performances et la disponibilité de l'application.
ORB(2 questions)
Que signifie ORB dans le contexte de CORBA ?
Explication :
ORB signifie Object Request Broker. Dans le contexte de CORBA (Common Object Request Broker Architecture), l'ORB est le composant central qui gère la communication entre objets distribués.
Quel est le rôle principal d'un ORB ?
Explication :
Le rôle principal d'un ORB est de faciliter la communication entre objets distribués en gérant les appels de méthodes distantes. Il agit comme un intermédiaire qui localise les objets, gère les requêtes et les réponses, et masque la complexité de la distribution.
Transactions(2 questions)
Quelles sont les propriétés ACID d'une transaction ?
Explication :
Les propriétés ACID sont : Atomicité (toutes les opérations réussissent ou aucune), Cohérence (les données restent dans un état valide), Isolation (les transactions concurrentes ne s'interfèrent pas), et Durabilité (les modifications sont permanentes même en cas de panne).
Dans une transaction distribuée, qu'est-ce que le protocole 2PC (Two-Phase Commit) ?
Explication :
Le protocole 2PC (Two-Phase Commit) est un protocole de synchronisation en deux phases utilisé dans les transactions distribuées. La première phase vérifie que tous les participants peuvent committer, la seconde phase effectue le commit ou le rollback selon les réponses.
Définition Middleware(1 question)
Selon la définition du cours, qu'est-ce qu'un middleware ?
Explication :
Selon la définition du cours, un middleware est un logiciel permettant de connecter deux applications (ou plus) qui ne sont initialement pas faites pour fonctionner ensemble, sans modifier ces applications. C'est le ciment qui lie ensemble les différents appareils et plateformes logicielles.
Types de Middleware(8 questions)
Combien de familles principales de middleware sont identifiées dans le cours ?
Explication :
Le cours identifie 5 familles principales de middleware : Communication, Sécurité, Télémétrie, Intégration et Load-balancing. Ces familles permettent de catégoriser les différents types de middlewares selon leur fonction principale.
Quelle famille de middleware permet d'acheminer de la donnée entre deux systèmes ?
Explication :
La famille 'Communication' regroupe les middlewares qui permettent d'acheminer de la donnée entre deux systèmes. Ils peuvent être synchrones, asynchrones ou batch selon le besoin.
Quelle famille de middleware permet de vérifier les habilitations d'un utilisateur à effectuer une action ?
Explication :
La famille 'Sécurité' regroupe les middlewares qui permettent de vérifier les habilitations d'un utilisateur à effectuer une action. Ces middlewares peuvent se placer autour d'un logiciel (wrapper) pour ajouter des fonctionnalités de sécurité sans modifier le code.
Quelle famille de middleware permet de surveiller et auditer les systèmes ?
Explication :
La famille 'Télémétrie' regroupe les middlewares qui permettent de surveiller et auditer les systèmes. Ces middlewares peuvent se placer à côté d'un logiciel (sidekick) pour lire des informations du logiciel principal.
Quelle famille de middleware permet de répartir équitablement la charge sur plusieurs systèmes ?
Explication :
La famille 'Load-balancing' regroupe les middlewares qui permettent de répartir équitablement la charge sur plusieurs systèmes. Ces middlewares sont souvent combinés avec d'autres fonctions comme la sécurité et la télémétrie dans le contexte du Web.
Quelle famille de middleware permet d'unifier des systèmes distincts pour l'utilisateur final ?
Explication :
La famille 'Intégration' regroupe les middlewares qui permettent d'unifier des systèmes distincts pour l'utilisateur final. Les middlewares font souvent plusieurs choses à la fois, par exemple Communication & Intégration.
Les middlewares peuvent-ils appartenir à plusieurs familles en même temps ?
Explication :
Oui, les middlewares font souvent plusieurs choses à la fois. Par exemple, Communication & Intégration peuvent être combinés, idem pour Load-Balancing, Sécurité et Télémétrie quand on parle du Web.
Un hyperviseur est un exemple de quel type de middleware ?
Explication :
Un hyperviseur est un exemple de middleware Logiciel/OS. Il permet de faire abstraction de la couche système d'exploitation et de gérer plusieurs systèmes virtuels sur une même machine physique.
Communication Synchrone/Asynchrone(7 questions)
Quelle est la principale caractéristique d'un middleware de type 'Batch' ?
Explication :
Un middleware de type 'Batch' est un script lancé régulièrement (automatiquement via cron ou manuellement) pour transférer des données d'un système à un autre. C'était la norme des années 1990/2000, mais elle présente des inconvénients comme l'absence de temps-réel et la difficulté de récupération après erreur.
Quel est le principal inconvénient d'un middleware synchrone ?
Explication :
Le principal inconvénient d'un middleware synchrone est que si un des deux services est injoignable, tout plante. Le client reste bloqué en attente de la réponse, ce qui peut impacter la disponibilité de l'application.
Quelle est la norme des années 2020+ pour les middlewares de communication ?
Explication :
La norme des années 2020+ pour les middlewares de communication est l'asynchrone. Les systèmes asynchrones permettent de stocker les messages et de les rendre disponibles aux consommateurs, offrant une meilleure résilience et découplage entre les systèmes.
Quel est l'avantage principal d'un middleware asynchrone par rapport à un synchrone ?
Explication :
L'avantage principal d'un middleware asynchrone est qu'il offre une meilleure résilience et découplage entre les systèmes. Les messages sont stockés et rendus disponibles aux consommateurs, ce qui permet de gérer les pannes et les indisponibilités temporaires.
Dans un middleware batch, comment sont généralement transférées les données ?
Explication :
Dans un middleware batch, les données sont transférées par un script lancé régulièrement, soit automatiquement via cron, soit manuellement. C'était la norme des années 1990/2000 mais présente des inconvénients comme l'absence de temps-réel.
Quel était le principal problème des middlewares batch des années 1990/2000 ?
Explication :
Les middlewares batch des années 1990/2000 présentaient plusieurs problèmes : pas de récupération après erreur, pas de temps-réel, aucune norme, framework ou autre. Ils étaient faciles à développer mais horribles à maintenir.
Quelle était la norme des années 2005/2015 pour les middlewares de communication ?
Explication :
La norme des années 2005/2015 pour les middlewares de communication était le synchrone. C'était un système à l'écoute des entrées/sorties qui envoient les données ailleurs, tournant en permanence et permettant le temps-réel.
Placement Middleware(4 questions)
Quel type de placement de middleware permet d'ajouter des fonctionnalités sans toucher le code d'un logiciel ?
Explication :
Un middleware de type 'Wrapper' se place autour d'un logiciel et permet d'ajouter des fonctionnalités sans modifier le code du logiciel. On le retrouve souvent dans les middlewares de sécurité.
Quel type de middleware se trouve 'dans votre code' pour éviter de réinventer la roue ?
Explication :
Un middleware de type 'Helper' se trouve dans votre code et permet d'éviter de réinventer la roue. Des exemples sont Hibernate, JDBC, OpenTelemetry, etc. Ce sont des bibliothèques qui simplifient le développement.
Quel type de placement de middleware se place entre deux logiciels pour permettre leur communication ?
Explication :
Un middleware de type 'Intermédiaire' se place entre deux logiciels pour permettre leur communication. Il permet de faire communiquer le service A et B alors qu'ils ne sont pas conçus pour fonctionner ensemble.
Quel type de middleware lit simplement les informations du logiciel principal sans le modifier ?
Explication :
Un middleware de type 'Sidekick' se place à côté d'un autre logiciel et lit simplement les informations du logiciel principal. C'est utile pour de la télémétrie notamment, sans modifier le comportement du logiciel principal.
Méthodologie(10 questions)
Que signifie ADR dans le contexte de l'architecture logicielle ?
Explication :
ADR signifie Architecture Decision Record. C'est un document qui enregistre une décision architecturale importante, expliquant le contexte, les options considérées et la raison du choix final.
Avant de coder un middleware, que faut-il étudier en priorité ?
Explication :
Avant de coder un middleware, il faut étudier en priorité le besoin et l'existant. Il faut comprendre qui a besoin de quoi, pourquoi, quels systèmes doivent être connectés, leurs spécificités, formats de données, méthodes d'interaction, etc.
Selon le cours, quel est le meilleur middleware ?
Explication :
Selon le cours, le meilleur middleware est celui qu'on n'écrit pas. Il faut toujours se demander si on a vraiment besoin de connecter ces systèmes distincts entre eux et si on a vraiment besoin de le faire nous-même.
Quand est-il parfois plus simple de se connecter de manière détournée à un middleware ?
Explication :
Il est parfois plus simple de se connecter de manière détournée à un middleware quand les méthodes d'interaction classiques ne sont pas disponibles. On peut alors utiliser les logs, les mails envoyés, la télémétrie, ou accéder directement à la base de données.
Quelle question faut-il se poser en premier avant de créer un middleware ?
Explication :
Avant de créer un middleware, il faut se demander si on a vraiment besoin de connecter ces systèmes distincts entre eux et si on a vraiment besoin de le faire nous-même. Le meilleur middleware est celui qu'on n'écrit pas.
Quels éléments faut-il étudier concernant les systèmes à connecter ?
Explication :
Il faut étudier toutes les spécificités de chaque système : format de données, méthodes d'interaction (SOAP, REST, Base de données, Scraping), rate-limiting, network restrictions, etc. Ces contraintes vont définir votre approche.
Quelle méthode peut être utilisée pour noter les informations sur les systèmes à connecter ?
Explication :
Pour noter les informations sur les systèmes à connecter, on peut utiliser soit du texte (potentiellement difficile de se repérer), soit un graphe (carte mentale). L'important est de faire le tour complet avant de savoir quelle solution technique choisir.
Quand faut-il savoir qu'il est impossible d'interconnecter des systèmes ?
Explication :
Il faut savoir reconnaître quand c'est impossible d'interconnecter des systèmes : pas d'API, pas de logs, pas d'accès à la BDD, scraping très compliqué... Les données qu'on vous demande de regrouper peuvent-elles réellement l'être ?
Quelle question faut-il se poser concernant le besoin d'exposer une API ?
Explication :
Il faut se poser la question : 'A-t-on vraiment besoin d'exposer une API ou pas ?' Le besoin vous permet de choisir la meilleure solution technique en rapport avec l'existant. Il faut étudier le besoin avant de se lancer.
Que faut-il faire avant de choisir les outils et langages pour un middleware ?
Explication :
Avant de choisir les outils et langages, il faut faire le tour complet des besoins et contraintes. Tant qu'on n'a pas fait le tour, on ne peut pas savoir quelle solution technique choisir. Ensuite, on choisit les bons langages, la bonne architecture et les bons outils.
Bonnes Pratiques(8 questions)
Quelle approche est recommandée pour construire des systèmes prêts à s'interconnecter ?
Explication :
L'approche 'API-first' est recommandée pour construire des systèmes prêts à s'interconnecter. Cela signifie concevoir l'API en premier, avant l'implémentation, pour faciliter l'intégration future avec d'autres systèmes.
Pourquoi ne faut-il pas sur-dimensionner un middleware ?
Explication :
Rien ne sert de surdimensionner un middleware, mais il faut anticiper un peu le besoin. Il faut prévoir une architecture extensible, une configuration facilement modifiable, et une API pour récupérer des données, sans pour autant créer quelque chose de trop complexe.
Que faut-il éviter de faire selon le cours concernant les middlewares ?
Explication :
Il faut éviter de réinventer la roue. Votre code n'a pas à être révolutionnaire pour être excellent. Il faut réutiliser les patterns et librairies connues, utiliser les standards, et matcher votre besoin sans créer quelque chose de complètement nouveau.
Pourquoi faut-il éviter de faire du spécifique quand c'est possible ?
Explication :
Il faut éviter de faire du spécifique quand c'est possible. Il faut utiliser les standards et frameworks pré-existants plutôt que de réinventer. On ne recode pas tout maison, on n'invente pas un format de fichier, etc.
Quelle approche permet de créer des systèmes conçus pour s'interconnecter dès le départ ?
Explication :
L'approche API-first permet de créer des systèmes conçus pour s'interconnecter dès le départ. Cela signifie concevoir l'API en premier, avant l'implémentation, pour faciliter l'intégration future.
Que faut-il prévoir dans un middleware pour faciliter son évolution future ?
Explication :
Il faut prévoir dans un middleware : code extensible by design, configuration facilement modifiable, et une API ou similaire pour récupérer des données. Cela permet d'anticiper un peu le besoin sans surdimensionner.
Que signifie 'ne pas sortir le bazooka pour tuer la mouche' dans le contexte des middlewares ?
Explication :
'Ne pas sortir le bazooka pour tuer la mouche' signifie qu'il faut évaluer le besoin avant de choisir une solution trop complexe. Il ne faut pas surdimensionner et utiliser une solution adaptée au besoin réel.
Pourquoi faut-il construire des systèmes prêts à s'interconnecter ?
Explication :
Il faut construire des systèmes prêts à s'interconnecter pour éviter d'avoir besoin de créer un middleware plus tard. Si vous savez que le système va être décomposé en services, pensez à la MQ (Message Queue). Cela s'applique aussi à vos autres logiciels.
ORM(7 questions)
Que signifie ORM ?
Explication :
ORM signifie Object-Relational Mapper. C'est un outil qui fait le mapping entre les objets de votre code et les tables de la base de données relationnelle, permettant de manipuler la base de données de manière orientée objet.
Quel est l'avantage principal d'un ORM ?
Explication :
L'avantage principal d'un ORM est la simplification et l'abstraction de la base de données. Il permet de travailler avec des objets plutôt que des requêtes SQL brutes, ce qui simplifie le code et réduit les erreurs.
Selon le cours, dans quel cas est-il recommandé d'utiliser un ORM ?
Explication :
Un ORM est recommandé pour les besoins simples (CRUD), sans jointures ou requêtes SQL complexes. Pour les besoins complexes avec beaucoup de jointures, il est préférable d'éviter l'ORM car il devient difficile de sortir d'un ORM une fois qu'on y est entré.
Quel est l'inconvénient principal d'un ORM mentionné dans le cours ?
Explication :
L'inconvénient principal d'un ORM est qu'on perd le contrôle de la donnée car elle est pilotée automatiquement. Il devient compliqué de faire des opérations complexes comme des jointures, et il est très difficile de sortir d'un ORM une fois qu'on y est entré.
Pourquoi est-il difficile de sortir d'un ORM une fois qu'on y est entré ?
Explication :
Il est très difficile de sortir d'un ORM une fois qu'on y est entré car le code devient très dépendant de l'ORM. La migration vers un autre ORM ou vers du SQL brut nécessite une refonte importante du code. C'est pourquoi la décision d'utiliser un ORM est définitive pour le projet.
Dans quel cas faut-il éviter d'utiliser un ORM selon le cours ?
Explication :
Il faut éviter d'utiliser un ORM pour les besoins complexes avec beaucoup de jointures ou requêtes SQL complexes. Dans ces cas, il devient difficile de faire des opérations complexes et on perd le contrôle de la donnée.
Quel est un exemple d'ORM mentionné dans le cours pour Java ?
Explication :
Hibernate est un exemple d'ORM mentionné dans le cours pour Java. C'est un Object-Relational Mapper qui permet de simplifier et d'abstraire l'accès à la base de données en travaillant avec des objets plutôt que des requêtes SQL brutes.
Exemples de Middleware(5 questions)
RabbitMQ, Kafka et NATS sont des exemples de middleware de quel type ?
Explication :
RabbitMQ, Kafka et NATS sont des exemples de middleware de communication. Ce sont des systèmes de messagerie qui permettent l'acheminement de données entre systèmes de manière asynchrone.
Java JDBC est un exemple de quel type de middleware ?
Explication :
Java JDBC est un exemple de middleware langage/BDD. C'est une API Java qui permet de se connecter à une base de données relationnelle et d'exécuter des requêtes SQL depuis du code Java.
Traefik est un exemple de quel type de middleware ?
Explication :
Traefik est un exemple de load balancer, qui fait partie de la famille Load-balancing. Il permet de répartir la charge sur plusieurs systèmes et peut également gérer la sécurité et la télémétrie.
Prometheus et Grafana sont des exemples de quel type de middleware ?
Explication :
Prometheus et Grafana sont des exemples de middleware de télémétrie. Ils permettent de surveiller et auditer les systèmes en collectant des métriques et en les visualisant.
NATS est mentionné dans le cours comme exemple de quel type de middleware ?
Explication :
NATS est mentionné dans le cours comme exemple de Message Queue, qui fait partie des middlewares de communication. C'est un système de messagerie asynchrone qui permet l'acheminement de données entre systèmes.
Criticité(2 questions)
Pourquoi un middleware est-il considéré comme critique ?
Explication :
Un middleware est considéré comme critique car il constitue un point central de l'architecture. Si un middleware meurt, plusieurs autres systèmes qui en dépendent tombent par ricochet, créant un effet domino.
Pourquoi faut-il être particulièrement vigilant avec les middlewares ?
Explication :
Il faut être particulièrement vigilant avec les middlewares car ils constituent un point central de l'architecture. Si un middleware meurt, plusieurs autres systèmes qui en dépendent tombent par ricochet, créant un effet domino. Un middleware est donc critique.
Message Queue(2 questions)
À quoi sert une Message Queue ?
Explication :
Une Message Queue sert à faire transiter des données en asynchrone. Elle permet de stocker les messages et de les rendre disponibles aux consommateurs, offrant une meilleure résilience et découplage entre les systèmes.
À quoi sert un topic dans une Message Queue ?
Explication :
Un topic dans une Message Queue sert à regrouper des messages par typologie. Dans un modèle Publish-Subscribe, les topics permettent de catégoriser les messages et de permettre aux subscribers de s'abonner à des types de messages spécifiques.
GraphQL(1 question)
Quel problème résout GraphQL ?
Explication :
GraphQL résout les problèmes d'over-fetching (récupérer trop de données) et d'under-fetching (ne pas récupérer assez de données). Il permet au client de spécifier exactement quelles données il souhaite récupérer dans une seule requête.
API REST(2 questions)
Dans une API REST, quelle URI est valide ?
Explication :
Dans une API REST, l'URI valide est '/students/53'. Les URIs REST doivent être des ressources, pas des actions. L'action (GET, POST, PUT, DELETE) est définie par la méthode HTTP, pas par l'URI. Les URIs doivent être simples et représenter des ressources.
Quelle caractéristique de REST est vraie ?
Explication :
REST est indépendant de HTTP. REST est un style architectural qui peut être implémenté avec d'autres protocoles que HTTP. Cependant, HTTP est le protocole le plus couramment utilisé pour implémenter REST.
Versioning API(2 questions)
Pourquoi versionner son API ? (Plusieurs réponses possibles)
Explication :
On versionne son API principalement pour ne pas casser l'API en cas de changement et pour faciliter l'adoption de nouvelles features. Le versioning permet de maintenir la compatibilité avec les clients existants tout en introduisant de nouvelles fonctionnalités.
Quelle est la méthode la plus courante pour versionner une API REST ?
Explication :
Les méthodes courantes pour versionner une API REST incluent : dans l'URI (/api/v1/resource), dans les headers HTTP (Accept: application/vnd.api+json;version=1), ou dans le domaine (v1.api.example.com). La méthode dans l'URI est la plus courante car la plus simple.
HATEOAS(2 questions)
À quoi est censé servir HATEOAS (en REST) ?
Explication :
HATEOAS (Hypermedia As The Engine Of Application State) permet de découvrir automatiquement l'ensemble des endpoints d'une API. Les réponses contiennent des liens vers les ressources et actions disponibles, permettant une navigation dynamique dans l'API sans documentation préalable.
HATEOAS est-il parfaitement standardisé ?
Explication :
HATEOAS n'est pas parfaitement standardisé. Il existe plusieurs formats pour implémenter HATEOAS comme HAL (Hypertext Application Language), JSON-LD, Collection+JSON, etc. Chaque format a ses propres conventions pour représenter les liens hypermédia.
Load-Balancer(1 question)
Quelles sont les utilités d'un Load-Balancer ?
Explication :
Un Load-Balancer a plusieurs utilités : répartir équitablement la charge sur plusieurs systèmes, améliorer les performances en distribuant les requêtes, et assurer la haute disponibilité en cas de panne d'un serveur. Il peut également gérer la sécurité et la télémétrie.
Semantic Versioning(2 questions)
Qu'est-ce que le Semantic Versioning ?
Explication :
Le Semantic Versioning (SemVer) est un système de versioning basé sur trois nombres : MAJEUR.MINEUR.PATCH (ex: 2.1.3). MAJEUR pour changements incompatibles, MINEUR pour nouvelles fonctionnalités compatibles, PATCH pour corrections de bugs compatibles.
Dans le Semantic Versioning, que signifie une incrémentation du numéro MAJEUR ?
Explication :
Dans le Semantic Versioning, une incrémentation du numéro MAJEUR signifie des changements incompatibles avec les versions précédentes. Cela peut casser l'API pour les clients existants, d'où l'importance du versioning.
Architecture Micro-services(2 questions)
Quel est un avantage d'une architecture micro-services (communication asynchrone) ?
Explication :
Les avantages d'une architecture micro-services avec communication asynchrone incluent : le découplage entre les services, une meilleure résilience en cas de panne (un service peut tomber sans affecter les autres), et une scalabilité indépendante de chaque service selon ses besoins.
Quel est un inconvénient d'une architecture micro-services (communication asynchrone) ?
Explication :
Les inconvénients d'une architecture micro-services incluent : la complexité accrue de l'architecture, la gestion de la cohérence des données distribuées (pas de transactions ACID globales), et le débogage plus difficile car les requêtes traversent plusieurs services.
Codes HTTP(4 questions)
Pourquoi les codes HTTP ont-ils été séparés en cinq catégories ?
Explication :
Les codes HTTP ont été séparés en cinq catégories (1xx Informational, 2xx Success, 3xx Redirection, 4xx Client Error, 5xx Server Error) pour organiser les différents types de réponses selon leur signification, faciliter la compréhension et le traitement des erreurs, et permettre aux clients de réagir différemment.
Quelle est la signification des codes HTTP 2xx ?
Explication :
Les codes HTTP 2xx indiquent le succès de la requête. Exemples : 200 OK (succès), 201 Created (ressource créée), 204 No Content (succès sans contenu à retourner).
Quelle est la signification des codes HTTP 4xx ?
Explication :
Les codes HTTP 4xx indiquent des erreurs du client. Exemples : 400 Bad Request (requête mal formée), 401 Unauthorized (non authentifié), 404 Not Found (ressource introuvable), 422 Unprocessable Entity (sémantique invalide).
Quelle est la signification des codes HTTP 5xx ?
Explication :
Les codes HTTP 5xx indiquent des erreurs du serveur. Exemples : 500 Internal Server Error (erreur interne), 502 Bad Gateway (mauvaise réponse du serveur en amont), 503 Service Unavailable (service temporairement indisponible).
Conception API REST(5 questions)
Pour gérer (CRUD) une liste de films dans une API REST, quelle méthode HTTP utiliser pour créer un film ?
Explication :
Pour créer une ressource dans une API REST, on utilise POST. GET pour lire, PUT pour mettre à jour (remplacement complet), PATCH pour mise à jour partielle, et DELETE pour supprimer.
Pour rechercher un film par son nom dans une API REST, quelle URI serait la plus appropriée ?
Explication :
Pour rechercher un film par son nom, l'URI la plus appropriée est 'GET /movies?name={name}'. Les paramètres de recherche doivent être passés en query parameters, pas dans le path. Le path représente la ressource, les query params représentent les filtres.
Pour lister les acteurs/actrices d'un film dans une API REST, quelle URI serait la plus appropriée ?
Explication :
Pour lister les acteurs d'un film, l'URI la plus appropriée est 'GET /movies/{movieId}/actors'. Cela représente une sous-ressource : les acteurs appartiennent au film, donc ils sont dans le path du film. C'est une relation hiérarchique claire.
Pour ajouter un acteur à un film dans une API REST, quelle méthode HTTP utiliser ?
Explication :
Pour ajouter un acteur à un film, on utilise POST sur l'URI '/movies/{movieId}/actors' ou '/movies/{movieId}/actors/{actorId}'. POST est utilisé pour créer une nouvelle association entre deux ressources.
Pour supprimer un acteur d'un film dans une API REST, quelle méthode HTTP utiliser ?
Explication :
Pour supprimer un acteur d'un film, on utilise DELETE sur l'URI '/movies/{movieId}/actors/{actorId}'. DELETE est utilisé pour supprimer une ressource ou une association entre ressources.
Échelle de Richardson(1 question)
Combien de niveaux existe-t-il sur l'échelle de maturité de Richardson pour REST ?
Explication :
L'échelle de maturité de Richardson pour REST comporte 3 niveaux : Niveau 0 (HTTP comme tunnel), Niveau 1 (Ressources), Niveau 2 (Verbes HTTP), et parfois un Niveau 3 (HATEOAS) qui n'est pas toujours compté séparément.
REST vs Norme(1 question)
REST est-il une norme ?
Explication :
REST n'est pas une norme officielle, c'est un style architectural défini par Roy Fielding dans sa thèse de doctorat. Il décrit des contraintes et principes pour créer des systèmes web évolutifs, mais il n'y a pas de spécification formelle stricte.
Message Queue - Publish-Subscribe(1 question)
Dans un modèle Publish-Subscribe avec topics, que se passe-t-il quand un message est publié sur un topic ?
Explication :
Dans un modèle Publish-Subscribe avec topics, quand un message est publié sur un topic, tous les subscribers abonnés à ce topic reçoivent le message. C'est le principe du broadcast : un message est distribué à tous les abonnés intéressés.
Load-Balancer - Algorithmes(1 question)
Quels sont les algorithmes courants utilisés par un Load-Balancer ?
Explication :
Les algorithmes courants d'un Load-Balancer incluent : Round-robin (distribution circulaire), Least connections (serveur avec le moins de connexions), IP hash (distribution basée sur l'IP du client), Weighted round-robin (avec poids), etc.
Architecture Micro-services - Communication(1 question)
Pourquoi la communication asynchrone est-elle préférée dans les architectures micro-services ?
Explication :
La communication asynchrone est préférée dans les micro-services car elle offre un meilleur découplage (les services ne sont pas directement dépendants) et une meilleure résilience (un service peut être indisponible sans bloquer les autres grâce aux files d'attente).
Semantic Versioning - Utilité(1 question)
Quelle est l'utilité principale du Semantic Versioning ?
Explication :
Le Semantic Versioning permet de : faciliter la gestion des dépendances (savoir si une mise à jour est compatible), communiquer clairement la nature des changements aux utilisateurs, et permettre l'automatisation des mises à jour (mise à jour automatique des patches, par exemple).
Codes HTTP - Catégories(1 question)
Quelle catégorie de codes HTTP indique des informations sur le traitement de la requête ?
Explication :
Les codes HTTP 1xx (Informational) indiquent des informations sur le traitement de la requête. Exemples : 100 Continue (le serveur a reçu les headers et attend le body), 101 Switching Protocols (changement de protocole).