Tutoriel Terraform pour les débutants : Infrastructure en tant que code du premier fichier aux modules

  1. Accueil
  2. Blog
  3. DevOps

DevOps

Tutoriel Terraform pour les débutants : Infrastructure en tant que code du premier fichier aux modules

Apprenez Terraform sans compte cloud ni facture surprise. Commencez par des fichiers locaux pour comprendre la planification, l’application et l’état, puis passez à de véritables ressources cloud, des modules et un flux de travail sécurisé pour les équipes.

10 min de lecture
Tutoriel Terraform pour débutants : infrastructure en tant que code du premier fichier aux modules

À retenir

  • Terraform crée et modifie l’infrastructure à partir de fichiers texte que vous pouvez conserver dans Git.
  • Le flux de travail principal est init, plan, apply et plan et montre les changements avant qu’ils ne se produisent.
  • Le fichier d’état enregistre ce que Terraform gère. Protégez-le et ne le confiez jamais à Git.
  • Utilisez des modules pour réutiliser des modèles et un état distant avec verrouillage lorsque vous travaillez en équipe.

Cliquer sur une console cloud convient à un serveur. Cela tombe en panne lorsque vous avez besoin de la même configuration en préparation et en production, ou lorsque quelqu’un demande qui a modifié une règle de pare-feu en mars dernier. Ce Tutoriel Terraform pour débutants vous montre une meilleure méthode : décrivez votre infrastructure dans le code et laissez un outil la concrétiser.

La plupart des didacticiels commencent par un compte cloud, ce qui ajoute un risque de facturation avant que vous ayez appris quoi que ce soit. Nous commençons par le fournisseur Terraform local, qui crée simplement des fichiers sur votre ordinateur, donc les erreurs ne coûtent rien. Ces exemples et l’exemple de sortie sont des illustrations standard que nous n’avons pas exécutées pour cet article, et la formulation exacte varie selon la version.

Qu’est-ce que Terraform ?

Terraform est un outil d’infrastructure en tant que code (IaC) de HashiCorp. Vous écrivez des fichiers de configuration en HCL, le langage de configuration HashiCorp, décrivant le résultat final souhaité. Terraform détermine ensuite ce qu’il faut créer, modifier ou supprimer pour y arriver.

Il communique avec les plateformes via des plugins appelés providers. Il existe des fournisseurs pour AWS, Azure, Google Cloud, Kubernetes, GitHub, Cloudflare et bien d’autres, vous pouvez donc utiliser un seul flux de travail pour tous.

Une chose à savoir : en 2023, HashiCorp a migré Terraform vers la Business Source License. La communauté a ensuite créé OpenTofu, un fork open source qui utilise des commandes et une configuration très similaires. Ce que vous apprenez ici s’applique en grande partie aux deux.

Pourquoi l’infrastructure en tant que code ?

Question Travail manuel sur console Terraforme
Qui a changé quoi ? Difficile de le savoir Historique de Git
Pouvons-nous copier la mise en scène en production ? Clic prudent Réutiliser le code
A quoi va servir ce changement ? Tu le découvres après terraform plan vous montre en premier
Quelqu’un peut-il l’examiner ? Pas facilement Une demande de tirage normale
Reprise après sinistre Cela dépend de la mémoire des gens Recréez à partir du code et sauvegardes de données

Terraform est également déclaratif. Vous dites “il devrait y avoir trois serveurs”, et non “créez un serveur trois fois”. S’il en existe déjà deux, il en ajoute un. Un script qui répète simplement ses étapes pourrait finir par en créer trois autres.

Installer Terraform

Installez-le en suivant les instructions officielles de HashiCorp pour votre système d’exploitation, puis confirmez qu’il fonctionne :

terraform -version

Créez un dossier vide pour le projet. Terraform lit chaque .tf fichier du dossier actuel, donc un dossier équivaut à une configuration.

Votre première configuration

Créez un fichier nommé main.tf :

terraform {
  required_providers {
    local = {
      source  = "hashicorp/local"
      version = "~> 2.5"
    }
  }
}

resource "local_file" "greeting" {
  filename = "${path.module}/hello.txt"
  content  = "Hello from Terraform\n"
}

Regardez le bloc resource, car presque tout ce que vous écrivez suit cette forme. local_file est le type de ressource et greeting est votre propre nom dans la configuration. Ensemble, ils forment son adresse : local_file.greeting. Les arguments à l’intérieur décrivent ce que vous voulez.

Le workflow : initialiser, planifier, appliquer

initialisation de la terraformation

Cela prépare le dossier et télécharge les fournisseurs que vous avez demandés. Exécutez-le une fois au début, et à nouveau chaque fois que vous ajoutez un fournisseur ou un module. Il crée également un fichier .terraform.lock.hcl qui enregistre les versions exactes du fournisseur. Validez ce fichier sur Git.

terraform init

plan de terraformation

Celui-ci compare votre code avec ce qui existe et affiche les modifications prévues, sans rien toucher :

terraform plan

# local_file.greeting will be created
+ resource "local_file" "greeting" {
    + content  = "Hello from Terraform\n"
    + filename = "./hello.txt"
  }

Plan: 1 to add, 0 to change, 0 to destroy.

Apprenez les symboles, car vous lirez beaucoup de plans :

Symbole Signification
+ Créer
~ Mise à jour en place
- Détruire
-/+ Détruire et recréer

terraformer appliquer

Celui-ci montre à nouveau le plan, demande confirmation et apporte les modifications :

terraform apply

Tapez yes et hello.txt apparaît. Maintenant, exécutez à nouveau terraform plan. Il ne devrait signaler aucun changement, car la réalité correspond déjà à votre code. Cette propriété, dont l’exécution répétée n’entraîne aucun changement supplémentaire, est appelée idempotence.

Changer et détruire

Modifiez la ligne content et exécutez terraform plan. Terraform repère la différence et propose un changement. Pour cette ressource, il remplace le fichier. Faites attention aux remplacements sur une infrastructure réelle, car recréer une base de données pourrait entraîner une perte de données.

Ensuite, supprimez hello.txt à la main et planifiez à nouveau. Terraform remarque qu’il manque et propose de le recréer. Une différence entre votre code et la réalité est appelée drift, et la détecter est l’un des principaux avantages de l’outil.

Pour supprimer tout ce que gère cette configuration, exécutez :

terraform destroy

Variables et sorties

Les valeurs codées en dur vous empêchent de réutiliser le code. Les variables d’entrée rendent une configuration flexible et les sorties renvoient des valeurs utiles :

# variables.tf
variable "environment" {
  type        = string
  description = "Deployment environment"
  default     = "dev"

  validation {
    condition     = contains(["dev", "staging", "prod"], var.environment)
    error_message = "Use dev, staging or prod."
  }
}

# main.tf
resource "local_file" "config" {
  filename = "${path.module}/${var.environment}.txt"
  content  = "environment=${var.environment}\n"
}

# outputs.tf
output "config_path" {
  value = local_file.config.filename
}

Définissez les valeurs sur la ligne de commande ou conservez-les dans un fichier appelé terraform.tfvars, qui est chargé automatiquement :

terraform apply -var="environment=staging"

L’utilisation de local_file.config.filename dans la sortie indique également la façon dont les ressources se réfèrent les unes aux autres. Terraform lit ces références pour déterminer le bon ordre dans lequel créer les éléments.

État de Terraform

Après avoir postulé, vous trouverez un fichier appelé terraform.tfstate. Il s’agit de l’enregistrement de Terraform de ce qu’il gère, en mappant votre code à des objets réels. Sans cela, Terraform ne saurait pas que local_file.greeting est ce fichier spécifique.

Trois règles comptent ici :

  1. Ne jamais valider l’état dans Git. Il peut contenir des mots de passe et d’autres secrets en texte brut.
  2. Ne le modifiez pas à la main. Utilisez des commandes telles que terraform state list et terraform state mv.
  3. Utilisez un backend distant pour les projets d’équipe. Un backend partagé stocke l’état de manière centralisée et le verrouille, de sorte que deux personnes ne peuvent pas postuler en même temps.

Voici un backend typique utilisant Amazon S3, avec un bucket que vous créez à l’avance :

terraform {
  backend "s3" {
    bucket       = "my-company-terraform-state"
    key          = "shop/prod/terraform.tfstate"
    region       = "ap-south-1"
    encrypt      = true
    use_lockfile = true
  }
}

Astuce : Commencez chaque projet avec un .gitignore qui exclut .terraform/, *.tfstate, *.tfstate.* et tout *.tfvars fichier contenant des secrets.

Une véritable ressource cloud

Le flux de travail ne change pas lorsque vous passez à un cloud. Voici un bucket S3 sur AWS. Vérifiez d’abord les prix et détruisez tout ce que vous créez en vous entraînant :

provider "aws" {
  region = "ap-south-1"
}

resource "aws_s3_bucket" "reports" {
  bucket = "my-unique-reports-bucket-2026"

  tags = {
    Environment = var.environment
    ManagedBy   = "terraform"
  }
}

Terraform obtient les informations d’identification de votre configuration AWS CLI ou de vos variables d’environnement. N’écrivez jamais de clés d’accès dans un fichier .tf.

Modules

Un module est simplement un dossier de fichiers Terraform que vous pouvez appeler avec différentes entrées. Cela fonctionne un peu comme une fonction, vous permettant de définir un modèle une fois et de le réutiliser :

project/
  main.tf
  modules/
    reports_bucket/
      main.tf
      variables.tf
      outputs.tf
module "staging_reports" {
  source      = "./modules/reports_bucket"
  environment = "staging"
}

module "prod_reports" {
  source      = "./modules/reports_bucket"
  environment = "prod"
}

Le registre public Terraform propose également des modules prêts à l’emploi, mais lisez-les avant de vous y fier et épinglez la version. Ne construisez pas de modules trop tôt. Attendez d’avoir répété un motif au moins deux fois.

Un flux de travail d’équipe sécurisé

  1. Créez une branche et modifiez les fichiers .tf. Consultez notre Tutoriel Git pour débutants si vous avez besoin d’un rappel.
  2. Exécutez terraform fmt et terraform validate.
  3. Ouvrez une pull request, avec le résultat de terraform plan joint pour examen.
  4. Après approbation, appliquez ce plan enregistré à partir d’un endroit contrôlé, idéalement un pipeline.

Enregistrer le plan garantit que vous appliquez exactement ce qui a été examiné :

terraform plan -out=tfplan
terraform apply tfplan

Cela s’intègre naturellement dans CI/CD et GitHub Actions. Terraform provisionne généralement le cluster et des outils comme Kubernetes exécutent ensuite des applications par-dessus.

Erreurs courantes

  • Postuler sans lire le plan. Un -/+ sur une base de données peut être une surprise très coûteuse.
  • Conserver l’état sur un ordinateur portable. Perdez cet ordinateur portable et Terraform perd la trace de votre infrastructure.
  • Effectuer des modifications manuelles sur la console. Elles provoquent une dérive et la prochaine application peut les annuler.
  • Utilisation de versions non épinglées. Épinglez les versions du fournisseur et du module afin que les mises à niveau aient lieu volontairement.
  • Utiliser une énorme configuration. Le fractionnement par environnement ou système limite les dégâts de toute erreur.

Pour conclure

Vous avez maintenant vu les idées derrière presque tous les travaux de Terraform : déclarer les ressources, revoir le plan, l’appliquer et protéger l’État. Entraînez-vous avec le fournisseur local jusqu’à ce que le flux de travail semble naturel, puis gérez une petite ressource réelle dans un compte gratuit. Apportez l’état et les modules distants une fois que plusieurs personnes ou plusieurs environnements sont impliqués.

Questions fréquentes

A quoi sert Terraform ?

Terraform est utilisé pour créer et gérer une infrastructure, telle que des serveurs, des réseaux, des bases de données et DNS, en la décrivant dans le code au lieu de la configurer manuellement.

Terraform est-il gratuit ?

L’utilisation de Terraform CLI est gratuite sous sa licence Business Source, bien que les conditions restreignent certaines utilisations commerciales concurrentes. HCP Terraform propose des niveaux payants et OpenTofu est open source.

Quelle est la différence entre Terraform et Ansible ?

Terraform provisionne principalement l’infrastructure de manière déclarative. Ansible configure principalement les logiciels sur les machines existantes. De nombreuses équipes utilisent les deux, Terraform d’abord et Ansible ensuite.

Qu’est-ce qu’un fichier d’état Terraform ?

Il s’agit d’un enregistrement mappant votre configuration à des ressources réelles. Terraform l’utilise pour apporter des modifications. Il peut contenir des secrets, alors stockez-le en toute sécurité et gardez-le hors de Git.

Dois-je connaître la programmation pour apprendre Terraform ?

Pas vraiment. HCL est simple et déclaratif. Comprendre la plateforme que vous gérez, telle que le réseau AWS, est généralement plus difficile que le langage lui-même.

Continuez à apprendre

Travailler avec Stack Quora

Besoin d’aide pour les tests, WordPress ou le référencement ?

Nous aidons les équipes à proposer de meilleurs logiciels et à développer leurs sites. Dites-nous sur quoi vous travaillez et nous vous proposerons une prochaine étape claire.

Continuez à lire

Plus de guides sur tests, IA et développement moderne

Vous avez apprécié cet article ? Choisissez un sujet et accédez directement à nos nouveaux didacticiels.

Intelligence artificielle

Les hallucinations de l'IA expliquées : pourquoi les modèles de langage inventent les choses et comment les réduire

Les hallucinations de l'IA ont expliqué : ce qu'elles sont, pourquoi les modèles de langage les produisent, les types courants, comment les réduire …

Lire l'article →
DevOps

Variables d'environnement expliquées : fichiers .env, secrets et configuration correctement effectués

Variables d'environnement expliquées avec des exemples Python que nous avons exécutés : lecture et définition, pourquoi chaque valeur est une chaîne…

Lire l'article →
Développement logiciel

Limitation du débit de l'API expliquée : algorithmes, en-têtes et gestion des erreurs 429

Limitation du débit de l'API expliquée avec une simulation que nous avons exécutée : compartiment de jetons, fenêtre fixe, fenêtre glissante, 429 ré…

Lire l'article →
Automatisation des tests

Se moquer en Python : unittest.mock, patch et les erreurs qui font mentir les tests

Moquerie en Python avec unittest.mock, testée : Mock et return_value, side_effect, correctifs où un nom est utilisé, spec et autospec, dates moqueus…

Lire l'article →
Tests logiciels

Couverture du code expliquée : couverture des lignes par rapport aux branches et ce que signifie réellement 100 %

Couverture du code expliquée avec une véritable exécution de cover.py : couverture des lignes, des branches et des conditions, lecture d'un rapport,…

Lire l'article →
Bases de données et SQL

DELETE vs TRUNCATE vs DROP dans SQL : différences, restauration et quand les utiliser

DELETE vs TRUNCATE vs DROP expliqué avec SQL testé : ce que chacun supprime, restauration, déclencheurs, réinitialisation d'identité, vitesse et en …

Lire l'article →
Bases de données et SQL

Vues SQL expliquées : créez, utilisez et évitez les pièges, avec des exemples

Vues SQL expliquées avec les requêtes que nous avons exécutées : création d'une vue, résultats en direct, masquage des colonnes, performances, vues …

Lire l'article →
Développement logiciel

Interface TypeScript vs Type : différences réelles, testées avec le compilateur

Interface TypeScript vs type, vérifiée avec le vrai compilateur : ce que les deux peuvent faire, ce qu'un seul peut faire, la fusion des déclaration…

Lire l'article →
Développement logiciel

Python *args et **kwargs expliqués : fonctions flexibles avec des exemples clairs

Python *args et **kwargs expliqués avec le code que nous avons exécuté : emballage et déballage, ordre des paramètres, arguments de mot-clé uniqueme…

Lire l'article →
Développement logiciel

Fonctions Python Lambda : syntaxe, utilisations réelles et quand ne pas les utiliser

Fonctions Python lambda expliquées avec le code que nous avons exécuté : syntaxe, tri avec clé, carte et filtre, fermetures, piège de liaison tardiv…

Lire l'article →
Intelligence artificielle

Que sont les agents IA ? Comment ils fonctionnent, avec une simple boucle d'agent que vous pouvez exécuter

Que sont les agents IA ? Un guide simple sur la boucle d'agent, les outils, la mémoire et les garde-fous, avec une petite boucle Python que nous avo…

Lire l'article →
DevOps

Surveillance vs observabilité : la vraie différence, avec les journaux, les métriques et les traces

Surveillance et observabilité expliquées : échecs connus et inconnus, journaux, métriques et traces, présentation pas à pas des incidents de paiemen…

Lire l'article →
DevOps

Volumes Docker vs montages Bind : conserver les données du conteneur de la bonne manière

Volumes Docker et montages de liaison expliqués : pourquoi les données du conteneur disparaissent, volumes nommés, montages de liaison, tmpfs, exemp…

Lire l'article →
Automatisation des tests

TDD vs BDD : principales différences, une fonctionnalité conçue dans les deux sens et quand les utiliser

TDD vs BDD expliqué avec une fonctionnalité de remise construite dans les deux sens : refactor rouge-vert avec le code que nous avons exécuté, scéna…

Lire l'article →
Tests logiciels

Tests d'acceptation utilisateur (UAT) : processus, liste de contrôle et exemples réels

Les tests d'acceptation des utilisateurs sont expliqués : qui les exécute, en quoi ils diffèrent du contrôle qualité, un processus en sept étapes, u…

Lire l'article →
Bases de données et SQL

Explication des valeurs SQL NULL : IS NULL, COALESCE, NULLIF et les pièges à éviter

Les valeurs SQL NULL expliquées avec les requêtes que nous avons exécutées : logique à trois valeurs, IS NULL, COALESCE, NULLIF, comment les agrégat…

Lire l'article →
Bases de données et SQL

Instruction SQL CASE WHEN : syntaxe, exemples réels et erreurs courantes

SQL CASE WHEN expliqué avec les requêtes que nous avons exécutées : formulaires simples et recherchés, ordre des conditions, pivots avec SUM, astuce…

Lire l'article →
Développement logiciel

Qu'est-ce que JWT ? Les jetons Web JSON expliqués avec un exemple fonctionnel

Qu’est-ce que JWT ? JSON Web Tokens expliqué : les trois parties, un jeton construit et falsifié dans le code que nous avons exécuté, JWT vs session…

Lire l'article →
Développement logiciel

Boucle d'événements JavaScript expliquée : pile d'appels, microtâches et minuteries avec des exemples

La boucle d'événements JavaScript expliquée avec le code que nous avons exécuté : pile d'appels, files d'attente de tâches et de microtâches, pourqu…

Lire l'article →
Développement logiciel

Générateurs Python et rendement expliqués : économisez de la mémoire avec des exemples réels

Les générateurs Python et le rendement expliqués avec le code que nous avons exécuté : comment ils s'arrêtent et reprennent, les économies de mémoir…

Lire l'article →
Intelligence artificielle

Que sont les intégrations ? Vecteurs et similarité cosinus expliqués simplement

Que sont les intégrations ? Un guide en langage simple sur les vecteurs, la similarité cosinus et la recherche sémantique, avec un petit exemple que…

Lire l'article →
DevOps

Déploiement Bleu-Vert vs Canary : différences, compromis et comment choisir

Explication du déploiement bleu-vert ou canari : comment chacun fonctionne, coût, risque et restauration, regroupement d'utilisateurs stable que nou…

Lire l'article →
Automatisation des tests

Tests instables : quelles sont leurs causes et comment les corriger définitivement

Des tests irréguliers expliqués avec des démos que nous avons exécutées : les principales causes, comment en confirmer et en diagnostiquer une, les …

Lire l'article →
Tests logiciels

Tests de charge vs tests de contrainte : différences, métriques et exemples k6

Explication des tests de charge et des tests de stress : ce que chacun prouve, les tests de pointe et de trempage, les métriques qui comptent, pourq…

Lire l'article →
Tests logiciels

Scénario de test et scénario de test : principales différences, exemples et quand les utiliser

Scénario de test et scénario de test expliqués : des définitions claires, un tableau côte à côte, une fonctionnalité de réinitialisation de mot de p…

Lire l'article →
Bases de données et SQL

Optimisation des requêtes SQL : lire les plans d'exécution et corriger les requêtes lentes, avec des délais

Optimisation des requêtes SQL testée sur un million de lignes : lire les plans d'exécution, ajouter les bons index, corriger les filtres non Sargabl…

Lire l'article →
Bases de données et SQL

SQL UNION vs UNION ALL : différences, exemples et performances testées

SQL UNION vs UNION ALL expliqué avec les requêtes que nous avons exécutées : des doublons, les règles suivent toutes les deux, un véritable bug de d…

Lire l'article →
Développement logiciel

Tutoriel API JavaScript Fetch : GET, POST, gestion des erreurs et délais d'attente

Un didacticiel de l'API JavaScript Fetch testé sur un serveur local : GET et POST, pourquoi 404 ne lance pas, un assistant réutilisable, des chaînes…

Lire l'article →
Développement logiciel

Gestion des fichiers Python : lecture, écriture, CSV, JSON et pathlib avec exemples

Gestion des fichiers Python expliquée avec le code que nous avons exécuté : modes ouverts, avec lecture de fichiers volumineux, CSV, JSON, pathlib, …

Lire l'article →
Développement logiciel

Classes et objets Python : didacticiel POO avec des exemples réels

Classes et objets Python expliqués avec le code que nous avons exécuté : __init__, méthodes, attributs de classe par rapport à l'instance, héritage,…

Lire l'article →
Intelligence artificielle

Qu'est-ce qu'un grand modèle de langage ? Comment fonctionnent les LLM, expliqués sans battage médiatique

Qu’est-ce qu’un grand modèle de langage ? Les LLM expliqués en langage simple : jetons, intégrations, attention, formation, fenêtres de température …

Lire l'article →
DevOps

Commandes Linux pour les débutants : le guide du terminal essentiel avec des exemples

Commandes Linux pour débutants, regroupées par tâche : navigation, fichiers, affichage des journaux, grep, tuyaux, autorisations, processus et archi…

Lire l'article →
Automatisation des tests

Selenium vs Playwright : principales différences, code comparé et lequel choisir

Comparatif Selenium vs Playwright : architecture, attente, support du navigateur et du langage, débogage, même test dans les deux outils, conseils d…

Lire l'article →
Tests logiciels

Partitionnement d'équivalence : technique de conception de tests expliquée avec des exemples concrets

Le partitionnement d'équivalence expliqué : comment trouver des partitions valides et invalides, des exemples concrets d'âges, de mots de passe et d…

Lire l'article →
Tests logiciels

Gravité vs priorité dans les tests logiciels : différences, matrice et exemples réels

Explication de la gravité et de la priorité dans les tests logiciels : des définitions claires, une matrice à quatre voies avec des exemples, des éc…

Lire l'article →
Bases de données et SQL

Tutoriel sur les sous-requêtes SQL : types, sous-requêtes corrélées et EXISTE avec des exemples

Un didacticiel sur les sous-requêtes SQL avec les requêtes que nous avons exécutées : les sous-requêtes scalaires, IN, FROM et SELECT, les sous-requ…

Lire l'article →
Bases de données et SQL

Transactions SQL et ACID expliquées : COMMIT, ROLLBACK et niveaux d'isolement

Transactions SQL et ACID expliquées avec un virement bancaire que nous avons effectué : COMMIT, ROLLBACK, points de sauvegarde, verrous, niveaux d'i…

Lire l'article →
Développement logiciel

Aide-mémoire sur les commandes Git : les commandes que vous utilisez réellement, avec des exemples

Une aide-mémoire sur les commandes Git regroupées par tâche : configuration, transfert, branches, télécommandes, cache, historique et annulation des…

Lire l'article →
Développement logiciel

Les promesses JavaScript expliquées : alors, catch, Promise.all et les erreurs courantes

Les promesses JavaScript expliquées avec le code que nous avons exécuté : les états, les chaînes then et catch, la gestion des erreurs, Promise.all,…

Lire l'article →
Développement logiciel

Tutoriel du dictionnaire Python : méthodes, exemples et modèles courants

Un didacticiel de dictionnaire Python avec du code que nous avons exécuté : créer, lire et mettre à jour des dictés, des méthodes clés, des fusions,…

Lire l'article →
Intelligence artificielle

Qu’est-ce que RAG ? La génération augmentée par récupération expliquée avec un exemple fonctionnel

Qu’est-ce que le RAG ? La génération augmentée par récupération expliquée étape par étape : indexation, segmentation, intégrations, récupération, un…

Lire l'article →
DevOps

Tutoriel Terraform pour les débutants : Infrastructure en tant que code du premier fichier aux modules

Un didacticiel Terraform pour les débutants : commencez sans compte cloud, apprenez l'initialisation, la planification et l'application, puis les va…

Lire l'article →
DevOps

Docker vs Kubernetes : principales différences, comment ils fonctionnent ensemble et ce dont vous avez besoin

Docker vs Kubernetes expliqué : ce que chacun fait, la même application s'exécute avec les deux, Docker Compose et Swarm comparés, les dockershim ch…

Lire l'article →
Automatisation des tests

Tutoriel Pytest pour les débutants : luminaires, paramétrage et exemples réels

Un tutoriel pytest pour les débutants avec des tests que nous avons exécutés sur pytest 9.2 : assertions, appareils, paramétrage, conftest, marqueur…

Lire l'article →
Tests logiciels

Cycle de vie des tests logiciels (STLC) : 6 phases, critères d'entrée et de sortie, exemple

Le cycle de vie des tests logiciels expliqué : six phases STLC avec des critères d'entrée et de sortie, des livrables, un exemple de fonctionnalité …

Lire l'article →
Développement logiciel

Git merge vs rebase : différences, exemples et quand utiliser chacun

Git merge vs rebase expliqué avec de vraies sorties de log, un tableau comparatif, la règle d'or du rebase et un flux de travail sûr pour les équipes.

Lire l'article →
Développement logiciel

List comprehension Python : syntaxe, exemples et cas à éviter

La list comprehension Python expliquée : syntaxe, filtres, if-else, boucles imbriquées, temps mesurés et cas où une boucle for classique est préféra…

Lire l'article →
Bases de données et SQL

Jointures SQL expliquées avec exemples (Inner, Left, Right, Full)

Comprenez les jointures SQL pas à pas avec des tables et requêtes d'exemple : INNER, LEFT, RIGHT, FULL, CROSS et SELF, plus erreurs courantes et con…

Lire l'article →