Skip to content

Hébergement digital

Lorsqu'on me demande de prendre en charge la gestion d'une application web (ou d'un site web - il y a de moins en moins de différence), je trouve souvent difficile d'expliquer brièvement tous les points auxquels il faut être attentif pour héberger celle-ci.

C'est vrai : ce n'est pas toujours facile d'y voir clair entre les options disponibles présentées par les fournisseurs d'hébergement comme Amazon Web Services, Microsoft Azure, GoDaddy, Digital Ocean, 1&1 ou OVH

Mais que ces fonctionnalités apportent-elles et lesquelles sont-elles vraiment importantes pour un business ?

Sur cette page, je reprends donc chaque aspect individuellement, en présentant son importance, les avantage qu'il procure à une application ou à un site web, et la manière dont je le met en œuvre.

Anti-DDoS

Une attaque par déni de service (DoS - Denial of Service) consiste à inonder de requêtes le serveur qui héberge votre application.

Lorsqu'une telle attaque est menée à partir d'un seul ordinateur, il est assez facile de bloquer les requêtes issues de l'adresse IP correspondante. Mais lorsqu'une attaque de ce genre est menée par des centaines, voire des milliers d'ordinateurs (souvent des machines infectées, faisant partie d'un botnet), il devient difficile d'y faire face. On parle alors d'attaque distribuée (DDoS - Distributed Denial of Service).

La protection contre ce genre d'attaques est très coûteuse et difficile à mettre en œuvre. C'est donc un service qui doit faire partie des fonctionnalités proposées par le fournisseur de service lorsque je considère un hébergement.

En savoir plus

Disk Mirroring

Les données sont presque toujours stockées sur des disques durs. Et quelle que soit la technologie utilisée, le risque qu'un disque dur tombe en panne ne peut jamais être écarté.

Ceci dit, il est assez rare que 2 disques durs tombent en panne en même temps. C'est le principe des installation de disques en batterie ou RAID (Redundant Array of Independent Disks).

Les serveurs que j'utilise disposent au minimum de deux disques SSD (disques les plus rapides actuellement) et configurés de manière à ce que les données soient répliquées en temps réel sur chacun d'eux (RAID-1).

En savoir plus

Certificat SSL

Lorsqu'une connexion est établie entre deux ordinateurs, il est possible pour toute machine faisant partie du même réseau de lire les informations échangées entre ceux-ci.

Pour pouvoir garantir la confidentialité des informations échangées, il est nécessaire de les crypter avec une paire de clés connue seulement des ordinateurs concernés.

Les clés utilisées sont de longues chaines de caractères basées sur la multiplication de grands nombres premiers. Elles servent à crypter et décrypter les données en amont et en aval du protocole de communication utilisé : on parle de couche de sécurité (SSL - Secure Sockets Layer).

Pour garantir la confidentialité, ces clés doivent avoir une durée de vie courte et être fournies par une entité dont il est possible de garantir l'identité. Et à l'inverse, il doit être possible de garantir qu'une clé est bien utilisée par l'ordinateur auquel elle a été attribuée. C'est là qu'interviennent les certificats.

Les certificats SSL permettent donc d'établir une connexion sécurisée entre le serveur hébergeant l'application et l'ordinateur ou appareil mobile y accédant.

Sur le web, lorsque la connexion est sécurisée, on parle de connexion HTTP sécurisée ou HTTPS.

Il existe trois types de certificats SSL :

Le coût d'un certificat dépend de la complexité de la procédure de validation de l'identité des parties; de sa durée de vie; et de la garantie financière offerte par l'entité émettrice.

Les nouvelles législations font porter la responsabilité de la sécurité des données par les entreprises qui sollicitent et utilise celles-ci. Par ailleurs, la plupart des moteurs de recherche privilégient les sites sécurisés.

Les serveurs que je configure utilisent des certificats SSL DV gratuits renouvelés automatiquement tous les 3 mois.

En savoir plus

Versioning

Lors des manipulations courantes de mises à jour du contenu du site, il peut arriver que des fichiers soient accidentellement modifiés de manière erronée. Lors d'attaques ou de tentatives mal-intentionnées au site, il est également possible que certains fichiers soient ajoutés ou modifiés à des fin de piratage.

En utilisant un outil permettant de conserver toutes les versions des fichiers constituant le contenu et la configuration du site, il est possible à tout moment de restaurer les fichiers à leur état normal.

Monitoring interne

Pour connaitre l'usage des ressources (bande passante, processeur, mémoire vive et espace disque),

Le monitoring des instances est réalisé avec netdata et permet de voir l'usage des ressources en temps réel: une page de statut interactive détaille l'état courant du serveur.

Monitoring externe

Le principe du monitoring externe est de s'assurer que l'application ou le site reste accessible en permanence et est vu correctement pour tous les appareils.

Le suivi en temps réel du statut et de la performance du serveur (délai de connexion, réponse HTTP 200 ) ainsi que la validité des certificats SSL est assuré par le service updown.io : en cas de dysfonctionnement d'un service, j'en suis immédiatement informé.

Backups

La sauvegarde d'une application est une mesure de précaution essentielle pour récupérer les données en cas de problème.

En fait, il y a 4 types de données qui sont nécessaires au fonctionnement d'une application:

  1. la configuration de l'environnement (pile logicielle)
  2. le code source
  3. les données stockées sous la forme de fichiers
  4. les données stockées en base de données

En utilisant la technologie de containerisation Docker, la description de la pile logicielle utilisée est conservée en permanence sous la forme d'un unique fichier de configuration (docker-compose.yml).

La stratégie que j'utilise consiste en des backups quotidiens complets (code source, données FS, données DB), sauvegardés sur un serveur distinct, et conservés jusqu'à 8 semaines selon la stratégie suivante :

  • 1 backup quotidien conservé pour les 7 derniers jours (7 backups)
  • 1 backup hebdomadaire conservé pour les 4 dernières semaines (4 backups)
  • 1 backup mensuel conservé pour les 2 derniers mois (8 backups)

En savoir plus

Preview mode

Dans certains cas (comme par exemple lors d'une phase de développement) il est important à la fois que l'application soit en ligne (pour pouvoir la tester en conditions réelles) et que des utilisateurs qui n'y sont pas explicitement autorisés ne puissent y accéder (ou que des moteurs de recherche n'indexent un contenu ou des URL non validés, ce qui peut impacter négativement la qualité du référencement).

Sur les instances que je mets en place, une fonctionnalité permet de facilement ajouter et retirer une demande d'identification lors de l'accès à l'application. Celle-ci utilise le mécanisme natif HTTP basic-auth via un fichier .htaccessgénéré automatiquement.

En savoir plus

Maintenance mode

Occasionnellement, il peut arriver qu'un changement important soit requis par l'application ou le site web. Dans de tel cas, il est important à la fois de le communiquer avec les utilisateurs mais également avec les moteurs de recherche en utilisant un code HTTP approprié (typiquement HTTP 503).

La configuration que je mets en place définit un interrupteur logiciel d'état qui commande directement le service web (reverse proxy), ce qui permet garantir que toutes les pages soient instantanément placées en maintenance.

Mirroring hot swap

Il n'est pas rare que certaines applications soient critiques dans le fonctionnement d'une infrastructure ou tout simplement qu'un service doivent être disponible en permanence pour des clients ou des utilisateurs.

Dans ce cas, la durée de non disponibilité devient cruciale et le temps nécessaire à restaurer l'application depuis le dernier backup n'est souvent pas acceptable.

Pour ce genre de situation, je propose la mise en place d'un mécanisme de redondance: la réplication en temps réel de l'environnement de production sur une infrastructure miroir distincte, couplée à une adresse IP spécifique dite "fail-over". Un routeur permet de fonctionner comme un aiguillage électronique et de choisir hôte vers lequel acheminer les requêtes adressées à l'adresse IP. Ainsi, en cas de problème sur l'instance principale, il suffit de quelques secondes pour basculer d'une instance à l'autre.

En savoir plus