DEPLOIEMENT Flashcards
Qu’est-ce que le DNS et quel est son rôle dans le déploiement d’une application web ?
Le DNS (Domain Name System) est un système qui associe des noms de domaine à des adresses IP. Son rôle est d’orienter les requêtes des utilisateurs jusqu’au serveur hébergeant l’application, rendant les sites accessibles via des noms faciles à mémoriser plutôt que des adresses IP numériques.
Expliquez la structure d’un nom de domaine avec un exemple.
Un nom de domaine se compose de trois parties : le sous-domaine (facultatif), le domaine principal et le TLD (Top Level Domain). Par exemple, dans “odyssey.wildcodeschool.fr”, “odyssey” est le sous-domaine, “wildcodeschool” est le domaine et “.fr” est le TLD.
Quelles sont les différences principales entre un serveur VPS et un serveur mutualisé ?
Un VPS offre un contrôle total sur une machine virtuelle dédiée avec un accès root, adaptable à divers langages et frameworks. Un serveur mutualisé est préconfiguré, moins cher, mais limité dans les technologies (souvent PHP, MySQL) et sans accès complet au système, généralement avec accès FTP limité à un dossier utilisateur.
Comment établir une connexion sécurisée à un serveur distant ?
On utilise SSH (Secure Shell), un protocole sécurisé qui nécessite un échange de clés en début de connexion. La commande est de type ssh utilisateur@adresse_ip_ou_domaine. Pour transférer des fichiers de manière sécurisée, on peut utiliser SCP (basé sur SSH) ou SFTP.
Qu’est-ce que le déploiement continu (CD) et quels outils peut-on utiliser ?
Le déploiement continu est une pratique qui automatise la mise en production des applications après validation des tests. Les outils courants incluent GitHub Actions, Jenkins, Caprover et Ansible. Ces outils simplifient les étapes de déploiement et réduisent les erreurs humaines.
Quelles différences importantes doit-on configurer entre un environnement de développement et un environnement de production ?
En production, on configure APP_ENV=prod, on n’installe pas les composants de développement (fixtures, tests, maker), on désactive les messages d’erreur en configurant des pages d’erreur dédiées (401, 404, 500), on active le cache pour les performances et on utilise des versions optimisées du code (minification avec npm run build).
Comment préparer un serveur pour le déploiement d’une application web moderne ?
Il faut installer les mêmes outils que dans l’environnement de développement : Node.js, un SGBDR (MySQL, PostgreSQL…), un serveur web (NGinx, Apache, Caddy), NPM/Yarn et Git. Selon les besoins, on peut aussi configurer Docker pour la conteneurisation.
Expliquez le fonctionnement de SCP et donnez un exemple de commande.
SCP (Secure Copy) permet le transfert sécurisé de fichiers entre machines via le protocole SSH. Exemple de commande : scp fichier.txt utilisateur@54.83.12.233:/var/www/ où on envoie le fichier local “fichier.txt” vers le dossier “/var/www/” du serveur distant.
Quels sont les avantages du cloud pour l’hébergement d’applications ?
Le cloud offre souplesse (ressources ajustables), paiement à la consommation réelle, puissance évolutive selon les besoins, et des options de stockage flexibles. Il permet de répondre facilement aux pics de trafic et facilite la création d’environnements de test.
Décrivez les étapes typiques d’un script de déploiement automatisé.
Un script de déploiement automatisé inclut généralement : 1) Récupération du code depuis le dépôt Git, 2) Installation des dépendances, 3) Construction des assets (npm run build), 4) Configuration pour l’environnement de production, 5) Migration de la base de données si nécessaire, 6) Redémarrage des services, 7) Tests de vérification post-déploiement.
Comment sécuriser un déploiement d’application web ?
Pour sécuriser un déploiement, il faut : utiliser des connexions chiffrées (SSH/SFTP), configurer correctement les droits d’accès aux fichiers, utiliser des variables d’environnement pour les informations sensibles, mettre à jour régulièrement les composants, activer HTTPS, et mettre en place des sauvegardes automatiques.
Pourquoi utiliser Docker dans un processus de déploiement ?
Docker permet de conteneuriser l’application avec toutes ses dépendances, garantissant qu’elle fonctionnera de manière identique dans tous les environnements. Cela facilite la gestion des versions, l’isolation des applications, le scaling horizontal et simplifie grandement le processus de déploiement.
Comment documenter efficacement une procédure de déploiement ?
Une documentation efficace doit inclure : les prérequis système, la liste des dépendances avec leurs versions, les étapes détaillées d’installation et de configuration, les variables d’environnement nécessaires, les procédures de mise à jour et rollback, et les tests de vérification post-déploiement.
Qu’est-ce que l’intégration continue et comment s’articule-t-elle avec le déploiement continu ?
L’intégration continue (CI) est la pratique d’intégrer fréquemment le code dans un dépôt partagé, avec des tests automatiques pour valider chaque intégration. Le déploiement continu (CD) prolonge ce processus en automatisant la mise en production. Ensemble, CI/CD forme un pipeline complet de la modification du code jusqu’à sa mise en production.
Quelles considérations spécifiques faut-il prendre en compte pour le déploiement d’applications web mobiles ?
Pour les applications web mobiles, il faut s’assurer de la compatibilité avec différents navigateurs mobiles, optimiser les performances (temps de chargement, taille des ressources), implémenter le responsive design, configurer correctement les caches pour l’usage hors-ligne, et adapter les stratégies de test pour divers appareils et tailles d’écran.