La performance lors d’un entretien de system design est un facteur critique pour valider si un candidat peut concevoir des systèmes évolutifs et efficaces. La maîtrise des terminologies clés peut définitivement vous aider à exceller. Voici les 50 termes essentiels en conception de systèmes que nous allons expliquer avec des définitions et des exemples de fonctionnement, ainsi que des ressources pour approfondir vos connaissances.
Scalability
Définition : La capacité d’un système à supporter une charge accrue en ajoutant des ressources.
Exemple : Ajouter plus de serveurs pour gérer une augmentation du trafic web.
En savoir plus :What is Scalability and How to Achieve it?
Load Balancer
Définition : Division du trafic réseau entrant entre plusieurs serveurs pour qu’aucun serveur ne soit surchargé.
Exemple : Répartition du trafic web entre plusieurs instances EC2 via le service AWS Elastic Load Balancer (ELB).
En savoir plus :Understanding Load Balancer
Microservices
Définition : Un modèle architectural qui structure une application en une collection de services faiblement couplés.
Exemple : Découper une application monolithique en services indépendants pour la gestion des utilisateurs, le traitement des paiements, et l’envoi de notifications.
En savoir plus :What are Microservices?
CAP Theorem
Définition : Ce théorème stipule qu’un système distribué ne peut offrir que deux des trois garanties suivantes : Consistency, Availability, et Partition Tolerance.
Exemple : Savoir quand faire des compromis entre la Consistency et la Availability dans la conception de bases de données distribuées.
En savoir plus :Understanding CAP Theorem
Sharding
Définition : Découper une grande base de données en fragments plus petits appelés shards pour une meilleure gestion.
Exemple : Sharding d’une base de données utilisateur en fonction de la région géographique.
En savoir plus :Database Sharding Explained
Latency
Définition : Le temps nécessaire pour qu’une donnée voyage du point A au point B.
Exemple : Mesurer le délai de livraison d’un message via une application de chat.
En savoir plus :Latency explained!
Throughput
Définition : Une mesure de la quantité de données traitées par un système dans un laps de temps donné.
Exemple : Le nombre de requêtes traitées par un serveur web en une seconde.
En savoir plus :Throughput in Computer Networks
Cache
Définition : Composant matériel ou logiciel qui stocke des données pour éviter des requêtes futures similaires, et les servir plus rapidement.
Exemple : Implémenter un cache Redis pour des requêtes répétées à la base de données.
En savoir plus :Caching Explained
Content Delivery Network (CDN)
Définition : Un système de serveurs géographiquement dispersés qui distribuent le contenu web en fonction de l’emplacement géographique de l’utilisateur.
Exemple : Utiliser Cloudflare CDN pour accélérer le chargement des pages web.
En savoir plus :What is a CDN?
REST API
Définition : Un style architectural conçu pour créer des services web où les données sont accessibles et manipulées via des requêtes HTTP.
Exemple : Concevoir une API pour les réseaux sociaux en suivant les principes de REST (Representational State Transfer).
En savoir plus :REST API Tutorial
GraphQL
Définition : Un langage conçu pour interroger des données, plus puissant et flexible que REST.
Exemple : Utiliser GraphQL pour récupérer des informations d’utilisateur en une seule requête.
En savoir plus :GraphQL Introduction
ACID
Définition : Un ensemble de propriétés garantissant le traitement fiable des transactions de base de données : Atomicity, Consistency, Isolation, Durability.
Exemple : Garantir que les transactions bancaires respectent les propriétés ACID pour éviter les données corrompues.
En savoir plus :ACID Properties in Databases
BASE
Définition : Une alternative à ACID qui favorise la disponibilité et la tolérance aux partitions par rapport à une stricte cohérence. Système Basically Available, Soft state, Eventually consistent.
Exemple : Conception d’une base de données NoSQL hautement disponible et éventuellement cohérente.
En savoir plus :BASE vs ACID
NoSQL
Définition : Un type de base de données conçu pour le stockage et la récupération de données modélisées autrement que dans les relations tabulaires des bases relationnelles.
Exemple : Utiliser MongoDB pour un stockage de données basé sur des documents.
En savoir plus :What is a NoSQL Database?
SQL
Définition : Le langage standard utilisé pour stocker, manipuler et récupérer des données dans les bases de données relationnelles.
Exemple : Écrire des requêtes SQL pour récupérer des données depuis une base de données relationnelle.
En savoir plus :SQL Tutorial
Database Indexing
Définition : Une technique de structure de données permettant de rechercher et d’accéder rapidement aux données d’une base de données.
Exemple : Créer un index sur la colonne User ID pour accélérer la recherche.
En savoir plus :Database Indexing
Replication
Définition : Processus de copie et de maintien des objets de base de données dans plusieurs bases faisant partie d’un système de base de données distribuée.
Exemple : Permettre à une base de données d’être disponible dans différentes régions géographiques via la replication.
En savoir plus :Database Replication
Failover
Définition : Un mode opérationnel de secours dans lequel les fonctions d’un composant système sont reprises par d’autres composants en cas de perte du composant principal.
Exemple : Mettre en place des failovers automatiques vers des serveurs de secours en cas de panne de votre serveur principal.
En savoir plus :Failover vs Disaster Recovery
API Gateway
Définition : Un serveur qui se place en amont des API, recevant les requêtes, appliquant des règles de sécurité, et les transmettant aux services de backend.
Exemple : Utiliser AWS API Gateway pour gérer les API.
En savoir plus :What is an API Gateway?
Service Mesh
Définition : Une couche d’infrastructure dédiée qui facilite la communication de service à service entre les microservices.
Exemple : Intégrer Istio comme service mesh pour gérer les interactions entre microservices.
En savoir plus :Introduction to Service Mesh
Serverless Computing
Définition : Une implémentation de cloud computing permettant une allocation dynamique des ressources par le fournisseur cloud.
Exemple : Exécuter du code backend sans provisioning de serveur via AWS Lambda.
En savoir plus :What is Serverless Computing?
Event-Driven Architecture
Définition : Un paradigme d’architecture logicielle favorisant la génération, la détection, la consommation et la réaction aux événements.
Exemple : Concevoir un système de communication par événements entre microservices avec Apache Kafka.
En savoir plus :Event-Driven Architecture
Monolithic Architecture
Définition : Une architecture logicielle où tous les éléments sont regroupés dans une seule application exécutée en tant qu’unité unique.
Exemple : Les anciennes applications d’entreprise traditionnelles construites comme une unité monolithique.
En savoir plus :Monolithic vs Microservices Architecture
Distributed Systems
Définition : Un modèle où des composants situés sur des ordinateurs en réseau communiquent entre eux et coordonnent leurs actions en envoyant des messages.
Exemple : Concevoir un système de fichiers distribué comme Hadoop.
En savoir plus :Introduction to Distributed Systems
Message Queue
Définition : Une méthode permettant une communication asynchrone de service à service dans les architectures serverless et microservices.
Exemple : Utiliser RabbitMQ pour mettre en file d’attente des messages entre services.
En savoir plus :Message Queues Explained
Pub/Sub Model
Définition : Un modèle de messagerie où les expéditeurs (publishers) publient des messages de manière abstraite et où ces messages peuvent être reçus par des destinataires (subscribers) sans que l’expéditeur connaisse leur identité.
Exemple : Un système de notifications utilisant Google Cloud Pub/Sub.
En savoir plus :Pub/Sub Messaging
Data Partitioning
Définition : La division d’une base de données en parties plus petites et gérables.
Exemple : Partitionner une table de base de données par date pour accélérer l’exécution des requêtes.
En savoir plus :Database Partitioning
Horizontal Scaling
Définition : Augmenter la capacité en ajoutant plus de machines ou nœuds dans un système.
Exemple : Ajouter des serveurs web supplémentaires pour gérer un volume croissant de trafic utilisateur.
En savoir plus :Horizontal vs Vertical Scaling
Vertical Scaling
Définition : Mettre à niveau une machine existante en ajoutant plus de puissance (CPU, RAM).
Exemple : Augmenter la RAM d’un serveur pour qu’il puisse traiter plus de requêtes simultanément.
En savoir plus :Horizontal vs Vertical Scaling
Rate Limiting
Définition : Contrôler le débit de trafic envoyé ou reçu par un contrôleur d’interface réseau.
Exemple : Limiter une API pour éviter les abus en réduisant le nombre de requêtes par minute.
En savoir plus :Understanding Rate Limiting
Circuit Breaker Pattern
Définition : Un modèle de conception utilisé pour détecter les échecs et encapsuler la logique pour empêcher qu’un échec ne se répète constamment.
Exemple : Gérer des appels de services distants échoués à l’aide d’un circuit breaker dans une architecture microservices.
En savoir plus :Circuit Breaker Pattern
Data Consistency
Définition : S’assurer que les données sont identiques sur plusieurs instances et qu’elles ne sont pas corrompues.
Exemple : Maintenir la consistency des données utilisateur à travers plusieurs réplicas d’une base de données.
En savoir plus :Data Consistency Models
Eventual Consistency
Définition : Un modèle de consistency utilisé en informatique distribuée, où les mises à jour finissent par se propager à tous les nœuds.
Exemple :Amazon DynamoDB offre un modèle de eventual consistency pour les opérations de lecture.
En savoir plus :Eventual Consistency
Strong Consistency
Définition : Un modèle de consistency garantissant que chaque lecture obtient la dernière écriture d’une donnée donnée.
Exemple : Utiliser la strong consistency dans un système de transactions financières.
En savoir plus :Strong Consistency
Containerization
Définition : L’encapsulation d’une application et de ses dépendances dans un conteneur pouvant être exécuté dans n’importe quel environnement informatique.
Exemple : Utiliser Docker pour containerizer des applications et les déployer dans divers environnements tels que dev, test, prod.
En savoir plus :What is Containerization?
Kubernetes
Définition : Une plateforme open-source qui automatise le déploiement, le scaling et le fonctionnement des applications en conteneur.
Exemple : Déployer et gérer des applications en conteneur avec Kubernetes.
En savoir plus :Kubernetes Documentation
Autoscaling
Définition : Ajuster automatiquement le nombre de ressources informatiques en fonction de la charge des utilisateurs.
Exemple : Utiliser la fonction Auto Scaling d’AWS EC2 pour ajuster dynamiquement le nombre d’instances selon la demande.
En savoir plus :Auto Scaling Explained
Multi-Tenancy
Définition : Une architecture où une seule instance d’une application logicielle sert plusieurs consommateurs ou clients.
Exemple : Les applications SaaS, telles que Salesforce, utilisent la multi-tenancy pour servir leurs différents types de clients.
En savoir plus :Single Tenancy vs Multi-Tenancy
Load Shedding
Définition : Réduire certaines demandes ou dégrader les services pour maintenir la santé globale du système en cas de forte charge.
Exemple : Désactiver tous les services non essentiels pendant les périodes de trafic de pointe.
En savoir plus :Load Shedding
Idempotence
Définition : Une propriété d’opérations en mathématiques et en informatique garantissant que leur résultat reste le même si elles sont répétées plusieurs fois.
Exemple : Une requête HTTP DELETE est idempotente.
En savoir plus :Idempotence in APIs
Quorum
Définition : Le nombre minimum de votes nécessaires pour valider une transaction distribuée.
Exemple : La quorum-based replication garantit que la consistency existe dans la base de données distribuée.
En savoir plus :Quorum Systems
Orchestration
Définition : Un modèle d’interaction de services où un coordinateur central contrôle l’interaction entre les services.
Exemple : Utiliser un moteur de workflow pour gérer un processus métier multi-étapes.
En savoir plus :Orchestration
Choreography
Définition : Un modèle d’interaction de services dans lequel chaque service est autonome et interagit avec d’autres via des événements, sans coordinateur central.
Exemple : Des microservices communiquant via un bus d’événements selon le modèle de choreography.
En savoir plus :Choreography vs Orchestration
Service Registry
Définition : Une base de données qui suit les instances de microservices.
Exemple : Utiliser le service registry d’Eureka dans une architecture microservices.
En savoir plus :Service Registry and Discovery
API Rate Limiting
Définition : Contrôler combien de requêtes un client peut faire à une API dans un laps de temps donné.
Exemple : Limiter les requêtes à une API à 100 par minute pour éviter les abus.
En savoir plus :API Rate Limiting
Data Warehouse
Définition : Un système qui aide à la génération de rapports et à l’analyse des données métiers ; le cœur de la Business Intelligence.
Exemple :Amazon Redshift peut être utilisé pour la mise en œuvre d’un data warehouse.
En savoir plus :Understanding Data Warehouse
Data Lake
Définition : Un système ou dépôt où les données sont conservées dans leur format natif ou brut, généralement sous forme de fichiers ou de blobs d’objets.
Exemple : Stockage à l’échelle de plusieurs pétaoctets pour gérer des données structurées et non structurées dans un data lake.
En savoir plus :Data Lake
OLAP
Définition :Online Analytical Processing : Une catégorie de logiciels permettant l’analyse des données stockées dans une base de données.
Exemple : Utilisation de OLAP cubes pour effectuer des analyses pointues et des requêtes arbitraires.
En savoir plus :OLAP Explained
OLTP
Définition :Online Transaction Processing : une catégorie de systèmes qui gèrent des applications transactionnelles.
Exemple : Utiliser des systèmes OLTP pour la gestion des transactions, comme dans les systèmes bancaires.
En savoir plus :OLTP Explained
Big Data
Définition : Ensemble de données volumineux et complexes qui ne peuvent pas être gérés efficacement par des logiciels de traitement de données traditionnels.
Exemple : Analyser les interactions sur les réseaux sociaux pour prédire les tendances de la mode.