Architecture Flashcards
Quel est l’objectif d’une API Gateway ?
Cacher l’url des micros service, pour n’exposer qu’une seule URL, celle de la Gateway. Cela devient plus simple pour les clients.
Pour qui est utile une API Gateway ?
Pour les clients externes. Mais aussi peut être pour gérer la découverte des services…
Que peut accomplir une API Gateway ?
Routage, authentification, logs, suivi des requêtes, metrics
Qu’est ce que Cloudflare ?
C’est un reverse proxy
Qu’est ce que va améliorer Cloudflare ?
Va nous améliorer la sécurité, la performance et la fiabilité de notre site
Comment cloudflare va améliorer la sécurité de notre site ?
Etant un reverse proxy, il va pouvoir nous protéger des bots, et surtout des attaques DDOS. En ayant plusieurs datacenter, on s’assure que le proxy ne va jamais tomber. Cloudflare est aussi spécialisé dans la détéction de DDOS.
Comment cloudflare va améliorer les performances de notre site ?
Il a une mise en cache, répartie en plusieurs datacenter. C’est le plus proche qui va nous délivrer le document. Il est aussi bon dans la compression de documents
Comment cloudflare va améliorer la fiabilité de notre site ?
Il va pouvoir fonctionner comme un load balancer, qui ne peut pas tomber grâce à ses datacenter.
Comment mettre en place Cloudflare ?
Suivre les consignes du dashboard, mais surtout changer les champ NS du DNS pour rediriger vers un serveur Cloudflare.
Qu’est ce qu’un application monolithique ?
un seul bloc, c’est à dire 1 application qui contient beaucoup de service. Une application monolithique a donc beaucoup de responsabilité.
Qu’est ce qu’une architecture micro-services ?
Plusieurs applications, avec chacune une seule grosse responsabilité. Ces applications font communiquer entre elles, pour former un système solide
Quels sont les avantages d’une architecture monolithique ?
Maintenance simplifiée, déploiement facile, cohérence (les micro services, quand l’api saute, c’est des erreurs au runtime)
Quels sont les avantages d’une architecture micro-service ?
Diviser le travail entre plusieurs développeurs est plus simple (choix du langage, diviser de la responsabilité, sa propre manière de dev…), réduction de l’impact des pannes (un seul service, pas le gros bloc entier), Scalibilité simplifée : on donne des ressources que aux services critiques
Quels sont les défis d’une archi micro service ?
Données : le relationnel devient plus compliqué, les tests deviennent plus compliqués (il faut mocker les retours des autres services), déploiement (il faut mettre en place des outils pour automatiser les deploy), les logs sont centraux, il faut des outils pour surveiller le système
Définition SI ?
Ensemble organisé de ressources qui permet de collecter, stocker, traiter et distribuer de l’information
Qu’est ce qu’un développeur architecte ?
Responsable conception/modélisation SI, s’assurer une bonne orchestration des composants, veille technologique et anticipation, positionnement stratégique du SI dans la boîte.
Que veut dire CORBA ?
Common Object Request Broker Architecture
Quel est l’objectif de CORBA ?
Fournir des interfaces entre client/server, indépendament du langage de programmation utilisé
Qu’est ce que la phase de mapping dans CORBA ?
On créé un fichier .idl qui va représente l’interface de nos objets à faire communiquer. On va ensuite compiler, une fois pour le client, une fois pour le serveur. On va à chaque fois préciser le langage utilisé
Quels sont les fichiers générés par CORBA ?
Chien, l’objet métier, ChienOperations, ChienPOA , ChienStub, ChienHelper. (Chien est un exemple)
A quoi sert le fichier Operations dans CORBA ?
Interface des méthodes de l’objet
A quoi sert le fichier Operations dans CORBA ?
Interface des méthodes de l’objet
A quoi sert le fichier POA dans CORBA ?
Le skeleton qui va englober l’objet CORBA. Réalise le déballage des opérations (requêtes CORBA envoyées par le client) et l’emballage des résultats (réponse à retourner au client). Créé une référence pour l’objet si n’existe pas
A quoi sert le fichier Stub dans CORBA ?
Le Stub est une portion de code côté client qui réalise l’emballage des opérations (requêtes CORBA à envoyer au serveur) et le déballage des résultats (réponse du serveur).
A quoi sert le fichier Helper dans CORBA ?
Utilisé pour la communication CORBA (read, write, create, instantiate…)
Qu’est ce que IIOP ?
C’est le protocole qui permet de communiquer avec CORBA. Indépendant du langage, de l’OS ou de la machine.
Qu’est ce que l’annuaire CORBA ?
Un service qui associe un nom (string) à une référence d’objet (l’id d’un objet CORBA)
Qu’est ce que ORB ?
C’est un middleware qui fait le lien entre les requêtes client et serveur. Il va coordoner les objets CORBA (la gestion de la connectivité, de la communication, de la conversion de types de données et de la sécurité entre les objets distants. Il est également responsable de la localisation des objets distants et de l’acheminement des demandes des clients vers ces objets.)
Que veut dire MOM ?
Message Oriented Middleware
Quels sont les objectifs de MOM ?
Permettre la communication asynchrone entre différents systèmes distribués. Modèle de communication plus fiable et plus tolérant aux pannes
Quels sont les avantages de MOM ?
Communication asynchrone / non bloquante, Couplage faible, puisqu’on a plus besoin de connaitre les config des composants, seulement envoyer un message au MOM. Fonctionne quand il n’y a pas de dépendances temporelle entre les services
Quels sont les message brokers les plus connus ?
Apache Kafka, RabbitMQ
Qu’est ce qu’une communication transiante ?
Dépendance temporelle entre les services (auth qui va chercher à se login dans tous les users services). C’est le principe du REST.
Qu’est ce qu’une communication persistante?
Pas besoin de dépendances temporelle entre les services (par exemple le user service qui appelle les seeders). C’est le principe des MOM. On stocke la requête
Unicast vs Multicast ?
Unicast un seul destinataire, multicast plusieurs destinataires
Qu’est ce qu’une communication PUSH avec MOM ?
En push, c’est le message broker qui va envoyer la notification d’un nouveau message aux clients
Qu’est ce qu’une communication PULL avec MOM ?
En pull, c’est les clients qui va taper dans le MOM pour voir si il y a des nouveaux messages.
Les avantages de Pull vs Push avec MOM ?
Les clients peuvent choisir plus facilement le taux de pull, alors qu’avec le push, ils le subissent. Le pull est plus efficace pour gérer des consommateurs diversifiés
Quels sont les 3 modèles de communication du message broker ?
Queue, Topic, RPC
Qu’est ce que le modèle Queue dans MOM ?
Chaque message est stocké dans une file. Le message va être consommé un seule fois, par un seul destinataire. Le destinataire peut acquitter le message reçu. Donc le client va traiter dans l’ordre de la file les messages reçus.
Qu’est ce que le modèle Topic dans MOM ?
Les messages sont envoyés à un channel, et tous les clients qui sont abonnés au channel vont recevoir le message.
Quelles sont les 3 typologies possibles de MOM ?
Centralisée, décentralisée, hybride.
Que veut dire SOAP ?
Simple Object Access Protocole
Quel est l’objectif de SOAP ?
Définir la structure des messages échangés via HTTP, acheminer les messages en utilisant HTTP
Quelle est la structure d’une requête SOAP ?
Enveloppe/Header/Body/MyCustomRequest
Quelle est la structure d’une réponse SOAP ?
Enveloppe/Header/Body/MyCustomRequest
Quelle est la méthode HTTP impossible avec SOAP ?
C’est le GET, car il faut forcément envoyer un body.
Qu’est ce que WSDL ?
C’est un fichier XML pour définir la structure et le comportement d’une app web.
Quelles sont les balises de WSDL ?
types, message, portType, binding, service
A quoi sert la balise types dans WSDL ?
description des types utilisés en XSD.
A quoi sert la balise message dans WSDL ?
décrit la structure du body, en décrivant les types décrits
A quoi sert la balise binding dans WSDL ?
Décrit le protocole de transport utilisé (http, smtp…)
A quoi sert la balise service dans WSDL ?
définit l’adresse de base du service.
Quelles sont les différentes manières de scaler un monolith ?
vertical, horizontal, asynchronisité, caching, bdd répartie, bdd séparée. bdd read/write
Comment est géré la dépassement de mémoire du cache ?
LRU : La donnée en cache la moins utilisée par l’application est dégagée en première
Comment rafraichir le cache dans un env micro service ?
implémenter un message broker, (MOM), et le service serveur va envoyer un event, à chaque fois que ses données sont modifiées, pour que le client vide son cache.
Qu’est ce qu’un cache froid ?
Un cache vide, souvent au lancement d’une app
Comment réchauffer un cache ?
On va faire des appels asynchrone, sans attendre qu’un utilisateur le remplisse.
Qu’est ce que le RPS et le QPS ?
Requests per seconds et Queries per seconds
Qu’est ce que le DAU ?
Daily active users
Qu’est ce que le usage per DAU ?
Pour chaque features, combien de pourcentage de DAU utilisent la feature
Qu’est ce que les peeks ?
A quel moments de la journée on a une charge importante de requête (ex : Twitter au réveil)
Qu’est ce que le back of the envelop ?
Une méthode pour simplifier le calcul de charge du SI. On va réduire les nombres en puissance de 10, et on va calculer l’ensemble comme ça.
Quel est l’avantage des classes statiques par rapport à l’injection de dépendance ?
Code simplifié, pas de paramètres dans les fonctions.
Quels sont les avantages de l’injection de dépendance par rapport aux classes statiques ?
Modification logique métier/technique sans toucher au code, mocking dans les tests unitaires
Quand utiliser l’injection de dépendance ?
Quand notre classe statique peut être modifiée par un contexte différent, quand on veut mocker un comportement, quand on créé une framework et qu’on veut permettre aux utilisateurs d’override nos comportements.
Quel est l’avantage des Facades dans Laravel ?
Permet d’utiliser l’injection de dépendance sans devoir passer de paramètres, donc d’allier l’avantage des classes statique et l’injection de dépendance
Qu’est ce que l’injection de dépendance ?
C’est quand le framework va instancier une interface dynamiquement lors du runtime. La classe instanciée peut être modifiée selon le contexte
Que sont les protocoles RTMP et SRT ?
Ces sont des protocoles utilisés pour faire du streaming en direct
SRT vs RTMP ?
SRT utilise UDP, RTMP utilise du TCP
Comment les plateformes de streaming détecte le serveurs le plus proche ?
En utilisant du latecy-based routing
Que fait un streaming server ?
Il segmente une vidéo et la transforme en plusieurs résolutions (qualité). C’est gourmant en ressource
Quel est le format de fichier produit par le streaming server ?
Le HLS (HTTP Live Streaming), conçu par Apple.
Ou sont stockés les fichiers HLS produits par le streaming server ?
Sur un CDN, qui va utiliser du cache
Qu’est ce qu’un webhook ?
C’est lorsqu’on fournit une URL d’API en callback suite à un évènement d’une application tierce.
Comment fonctionne un webhook ?
On relie une URL a un évènement d’une application source (C’est elle qui doit les lister). Cette URL va être appelée lorsque l’évènement a lieu. On peut fournir un body.
Comment fonctionne le paiement Wallet sur téléphone (Apple pay et Google Pay) ?
C’est basé sur un token d’authentification, généré en envoyant les infos de la carte. Le token est ensuite déchiffré par la banque.
Apple Pay vs Google Pay ?
Apple pay stocke le token dans un composant spécifique, sécurisé. Google pay le stocke dans l’application Wallet.
Qu’est ce qu’un proxy ?
Un serveur entre la machine client et le serveur target
De quel côté agit le proxy ?
Côté client
Quels sont les autres noms d’un proxy ?
Forward proxy ou outbound proxy
Quelle est l’utilité d’un proxy ?
Anonymiser l’IP du client, bypass certaines restrictions du navigateurs (géolocalisation par exemple), bloquer du contenu dans les entreprises, Contourner un firewall trop restrictif
Lien entre VPN et proxy ?
Un VPN est un type de proxy
Qu’est ce qu’un reverse proxy ?
Un serveur entre la requête client et le serveur qui contient la ressource.
De quel côté agit le reverse proxy ?
Côté serveur
Quelle est l’utilité d’un reverse proxy ?
Cacher la structure interne du serveur, mettre en cache des ressources statiques, agit en tant que load balancer, gérer le SSL, compresser les données…
Exemple de reverse proxy ?
Nginx ou Apache
Quel est l’autre nom de reverse proxy ?
Inbound proxy
Qu’est ce que la complexité cyclomatique ?
Représente le nombre d’embranchement possible dans le code et donc sa complexité a debugger
Qu’est ce que les LOC ?
C’est le nombre de lignes de codes d’un projet
Qu’est ce que la métrics “couplage” dans le code ?
On regarde si le code est trop fortement couplés (des objets possèdent toutes les références du monde…)
De quoi est composé l’indice de maintenabilité ?
C’est la somme de la complexité cyclomatique, du LOC, et du volume halstead
Qu’est ce que le volume halstead ?
Mesure le nombre de variables dans le code
Qu’est ce que le rework ratio ?
Pourcentage qui indique quels sont les fichiers qui sont les plus édités par les dev.
Quels sont les problèmes des ID générés séquentiellement ?
Pas unique dans le SI (pleins d’entité avec l’id 1 par ex), pas scalable car autorité pour produire les ID, pas sécurisé car on peut deviner la suite.
Quelle est la meilleure méthode pour générer un id unique, scalable et sécurisé dans le SI?
Utiliser les UUID
Quelle est la meilleure méthode pour générer un id court dans le SI?
Un nombre aléatoire
Quelle est la meilleure méthode pour générer un id humain readable dans le SI ?
Se baser sur le user input et rajouter un uuid a la fin
Quand se baser sur un external ID pour définir l’ID de notre entité ?
Uniquement lorsqu’on a assez confiance dans le service externe pour qu’il ne change pas ses ids.
Qu’est ce que le strangler pattern ?
Diviser un monolithe en plusieurs microservice , et ajouter une API gateway dessus pour migrer petit à petit le système
Pourquoi ajouter une API gateway lors du strangler Pattern ?
Afin de de migrer vers les nouveaux microservices mais doucement (par tenant, par région…)
Qu’est ce que gRPC ?
Une techno de communication qui permet de récupérer des données naturellement dans le code, sans passer par du json
Comment fonctionne gRPC?
Le serveur créé un fichier proto qui défini son interface. Le proto va être compilé en stubs, propres à chaque langage de client. Le client va appeler dans son code le stub.
Avantage de gRPC ?
Beaucoup plus rapide que du REST. Autocompletion dans le code, sérialisation automatique
Inconvénients gRPC ?
Pas accessible depuis un navigateur, fortement couplés car demande de recompiler le proto et de retélécharger les stubs.