Des outils et manières de faire
Un serveur, comment ça marche ?
Les étapes représentées dans le schéma ci-dessus :
- Un utilisateur demande le site
https://www.drakona.fr. - La requête est transmise à un serveur DNS, qui va faire le lien entre le nom de domaine et une adresse IP.
- La requête est transmise à cette adresse IP, qui correspond à un serveur, sur lequel est installé un serveur Web (Nginx / Apache / Caddy / etc).
- Le serveur Web fait le lien entre l'url demandée et un ensemble de fichiers et ces fichiers sont interprétés / exécutés.
- Le serveur Web renvoie la réponse à l'utilisateur.
On pourrait ajouter d'autres étapes (ce qu'il se passe au sein du serveur), mais c'est une autre histoire 😉.
DevOps
La mise en place d'un processus de déploiement (un script pour l'automatiser) relève souvent du travail du DevOps.
DevOps est un ensemble de pratiques et d'outils, ainsi qu'une philosophie culturelle. Son but est d'automatiser et d'intégrer les processus entre les équipes de développement et informatiques. DevOps met l'accent sur l'autonomisation des équipes, la communication et la collaboration transverses ainsi que l'automatisation technologique.
-- Atlassian
On parle de DevOps pour désigner un ensemble de méthodes de travail, permettant de simplifier la communication et le travail des développeurs et des équipes opérationnelles (d'où DevOps). Le but est de "graisser les rouages" et de faciliter le travail des équipes, en général en automatisant certaines tâches (CI / CD, pipelines, Actions, etc.).

Environnements
Souvent, nos réalisations vont devoir être vérifiés par plusieurs personnes, pour vérifier la conformité avec la demande initiale :
- soit même : environnement de travail local, pour développer et voir le résultat de ce que l'on produit + tests unitaires et fonctionnels automatiques
- nos pairs / notre équipe : SIT ou Test d'intégration
- Vérification par le client : UAT ou Test de validation
Ensuite vient la mise en production, c'est-à-dire mettre la dernière version à disposition des clients finaux de l'application.
Toutes ces étapes nécessitent un déploiement sur un environnement différent, d'où la nécessité d'avoir un processus constant, incluant simplement les variations liées aux environnements.
De la même manière, ces différents environnements vont présenter exactement différents états (tickets, branches, versions, etc.) en même temps. Ce qui implique une méthodologie de travail plus générale, pour s'y retrouver.
Bien choisir son hébergement
Quels critères ?
- Espace disponible
- Hébergement spécialisé (Wordpress)
- Prise en compte des langages utilisés (Php / NodeJS)
- Base de données
- Accès en SSH ou non (automatisation / commandes)
- Couts ( ⚠️ parfois en fonction de la charge)
Exemples d'hébergeurs
Des hébergeurs que nous avons utilisés chez Drakona :
D'autres, renommés :
D'autres encore, plus spécialisés :
Vous trouverez même des listes pour classer les hébergeurs, mais j'ai beaucoup de mal à y faire confiance, principalement parce que les prix annoncés dans ces listes correspondent rarement à la réalité et que ce sont des tas de liens sponsorisés.
Outils de transfert de fichiers
FTP
Un moyen simple, basique, est de déplacer les fichiers sur le serveur, via une interface graphique, telle que FileZilla, ou en ligne de commande. Il sert également à récupérer des fichiers sur le même serveur, ce qui peut permettre de partager le travail entre plusieurs ordinateurs en utilisant le serveur comme "base".
Pour des sites composés uniquement de fichiers HTML, CSS et JavaScript, c'est une méthode simple et efficace !
Le FTP est un protocole de transfert de fichiers, permettant de se connecter à un serveur pour mettre en ligne des fichiers ou en récupérer depuis un serveur.
Pour déployer un site en FTP, nous avons besoin :
- de l'adresse du site (IP ou nom de domaine)
- d'un port à utiliser
- d'un identifiant et d'un mot de passe ou d'une clé SSH valide (ajoutée au serveur)
- de FileZilla ou d'un outil de FTP équivalent.
Quelques exemples de déploiement par FTP sont disponibles dans la page suivante.
Avantages de FTP
- Très rapide à prendre en main
- Les hébergements les moins chers le permettent toujours
- Rien de plus efficace pour des sites simples (HTML, CSS, JS et même PHP)
Inconvénients de FTP
- Pose des problèmes pour la gestion de version (et le travail collaboratif)
- Plus difficilement automatisable (mais loin d'être infaisable, des outils existent)
- Pas ou peu utilisable avec des frameworks comme Symfony ou Angular (besoin de lancer des commandes)
- La complexité du déploiement augmente avec la quantité de dossiers / fichiers
SSH
Secure Shell (SSH) est un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite, tous les segments TCP sont authentifiés et chiffrés.
-- Wikipedia
On parle souvent de connexion SSH pour l'établissement d'une connexion avec un serveur distant (en général, une machine Linux). Cette connexion permet d'interagir avec cette machine via son terminal.
Pour établir la connexion, des échanges de clés SSH et/ou de mots de passe ont lieu pour valider l'identité de la personne qui se connecte et du serveur.
Exemple de clé publique qui est envoyée :
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDIZSiXTcNWfFcq1vTzhvBylpaVOjNStXHb0lNSZ2zoXrDDHvHpMUuulsLJl4gpYJzqC2eCRigl9tGDdz25/RRZtzU5TJfw90bVl5cB5SxImNWZdE7g78PhoO+niEj1vcgkmh27805BvdBeSE1yVVdIt0ZexwwiKqdZmLNs66DRVC/YE9LP0CBaWmNANx1FZAoAvU1U1AJhPL9sax5xPg4hHNdAjGXusTQRyew67GcLL/ACqyX4Q81tm9QphJipfD4n7Ska318dj8ARhRTge/M4n2eIcI1RRkkDbuklMCM3mZ10oGD+Pc8gRl+RLafHL27JEWK4Ty4T7ArE0mOgsFoxZWQCcWrp08eMhviMKzNQQnuHawjpKhDGA8HbC/GfSoldOprORmp6lqbLJ32qqU0kuVhmjLdb0qH3XXfK97yHqm8G92gA1f6ACE4rsbJ5XtMbZO/7Yr6oJykJ4LYuk7NqRmhF4bRVKwL/MbOS8egIEq8xBcgGC+SSD8m54u8vWAk= remi@XXXX
Avantages
- Possibilité de lancer des commandes (donc plus de possibilités)
- Très automatisable
- En général, plus sécurisé (gestion des accès par clé SSH)
Inconvénients
- Tous les hébergements ne le permettent pas
- Gestion des accès plus ou moins aisée
SCP / RSync / SFTP
Ces outils permettant de communiquer avec un serveur via SSH et de transmettre des fichiers.
SCP permet de copier des fichiers / dossiers (dans un sens ou dans l'autre), alors que RSync permet de Synchroniser des dossiers (transferts dans les deux sens simultanément).
SFTP, quant à lui, est identique à FTP, mais utiliser un tunnel sécurisé (d'où le S). C'est en général le protocole à utiliser quand on utilise FTP (avec FileZilla, par exemple).
Quelques avis personnels
Il est important de choisir un hébergement adapté à vos besoins, non seulement au moment où vous souscrivez le contrat, mais aussi pour l'avenir et les objectifs du site que vous voulez déployer.
Certaines offres de cloud peuvent être tentantes pour gérer le futur, et il faut simplement toujours avoir leurs contraintes en tête (coûts dépendant du traffic, de l'espace utilisé, etc.).
Pensez également à la charge de travail que représente le fait d'avoir un hébergement (la même chose que pour votre application). Que faut-il faire pour s'assurer qu'il reste à jour ? Quel temps cela occupe-t-il par mois ? Pouvez-vous vous le permettre ? Si ça n'est pas le cas, il faut prévoir soit un autre hébergement, soit de déléguer (faisable quand on est une entreprise 😉 ).
Mettre en ligne un site en utilisant le protocole FTP ou l'outil SCP ne me semble pas viable sur le long terme. Passer un peu de temps à prévoir l'automatisation peut vous faire gagner un temps précieux (et c'est parfois simple à mettre en place) !
C'est pour ça qu'on utilise des outils comme :
- Deployer pour nos sites (surtout PHP/Symfony)
- GitHub Pages pour les documentations
- des outils de CI/CD (Github Actions par exemple) pour vérifier notre code et le mettre en ligne.
Nous avons utilisé pas mal d'autres outils par le passé et avons beaucoup auto-hébergé (avec des serveurs dédiés ou VPS) des sites comme celui que vous consultez actuellement, mais le temps passé en vaut-il le coût ?
