C11 Production
C11 Production
C11 Production
WEB
Mise en production
11 avril 2023
Gilles Chagnon
Risques de la mise en production Hébergement Outils et pratiques de développement et de mise en production
Plan
Pour le moment. . .
Environnement de développement
→ http ://localhost :3000
→ Accessible uniquement en local
→ Sur le port 3000
→ Pas de chiffrement
→ Sur votre machine
→ Recharge automatiquement les sources
Objectifs
→ Écoute sur http(s) ://monapp.example.com
→ Ports normaux : 80 et 443
→ Sur un serveur dans un datacenter
→ Déployer le code
→ Chiffrement https : certificats
Risques
→ Erreurs humaines : programmation, configuration
→ Panne accidentelle
→ Piratage
Haute disponibilité
Redondances
→ Multiplier les systèmes
→ Matériel : alimentationS, câbleS
→ ServeurS web, bases de données
→ LienS Internet, DNS, etc
Si vous avez de la chance, cela ne suffira pas. Et ne permet pas de gérer les
baisses de charge : il faut une infrastructure dynamique.
Cloud computing
Fournisseurs
→ International : Google, Amazon (AWS, Microsoft (Azure))
→ France : Gandi, OVHCloud
Containers
Pour simplifier l’administration
Outils de virtualisation
Virtualisation complète
→ Un OS complet
→ N’importe quel OS avec n’importe quel OS
→ Vmware, Xen, Virtualbox, KVM. . .
Outils cloud
→ Gestion des virtualiseurs
→ Création, lancement, arrêt des machines virtuelles
→ Migrations d’un serveur physique à un autre
Virtualisation légère
→ Pas un OS complet
→ Linux hôte : que des Linux virtuels, avec le même noyau
Containers
Virtualisation complète
→ Pas de noyau
→ Mais une distribution Linux complète
→ Besoin d’administration et de mises à jour
Container
→ Juste le nécessaire (pas d’OS)
→ Des images jetables
→ Image pré-construites
→ Pas de mise à jour : on reconstruit l’image
Docker
Système de containers
→ Basé sur les namespaces et les capabilities de Linux en étendant LXC
→ Isolation entre containers : système de fichiers, utilisateurs, réseau
Environnement
→ Construction des images
→ Publication et distribution des images
Définition
→ Automatisation des tâches de build
→ Automatisation des tests
→ À chaque commit
Objectif
Détecter au plus tôt les problèmes
En pratique
→ Il faut lancer du code. . .
→ Besoin d’isolation : utilisation intensive des containers
Outils
→ Travis
→ Propriétaire, lié à Github (mais utilisable ailleurs)
→ https://docs.travis-ci.com/user/tutorial/
→ Gitlab
→ CI intégrée avec la gestion des dépôts git
→ À peu près libre
→ https://docs.gitlab.com/ee/ci/quick_start/
→ Woodpecker
→ - Libre
→ Grosse utilisation des containers
→ https://woodpecker-ci.org/docs/usage/intro
→ Jenkins
→ ne se limite pas à l’IC
→ basé sur java
→ https://www.jenkins.io/doc/pipeline/tour/getting-started/
Construction d’artefacts
→ Binaires, installeurs, paquets
→ Images docker (envoyées ensuite sur un registry)
→ Sites web (pages github par exemple)
→ Déploiement des sources (git pull)
Objectifs
→ Accélérer la mise en production
→ Réduction des risques : mise à jour incrémentale
→ Plus d’interactions entre client et développeur (méthodes agiles)
Webpack + ancien, Vite plus récent (créé en 2020 par le créateur de VueJS) et
plus rapide pour l’intégration de nombreux fichiers JS volumineux.
Difficultés
→ Passage à l’échelle
→ Tolérances aux pannes
→ Robustesse
Outils
→ Cloud
→ Isolation et containerisation : Docker
→ Continuous integration/delivery