La semaine dernière nous avons basculé l’ensemble du service chez Amazon Web Service (AWS), afin de mettre en place une solution entièrement redondante nous permettant de garantir une haute disponibilité du service.
Passer par AWS pour l’hébergement nous permet notamment:
- de pouvoir héberger différentes parties du service dans différents datacenters, complètement isolés les uns des autres, et ce afin de garantir qu’une panne majeure dans l’un des datacenters n’impacte pas durablement l’ensemble du service.
- de bénéficier d’outils avancés pour automatiser la gestion de l’ensemble des machines utilisées par le service.
Pour ceux d’entre vous qui s’intéressent à la technique, la nouvelle infrastructure est composée:
- d’une base de données MySQL, gérée via Amazon RDS, et configurée en mode “Multi AZ”: cela signifie que la base de données est répliquée automatiquement et en permanence sur un serveur secondaire situé dans un datacenter différent de celui ou se trouve la base principale. En cas de panne du serveur ou du datacenter hébergeant la base principale (i.e. le master), Amazon bascule automatiquement et rapidement sur la base secondaire (i.e. le slave) qui devient la nouvelle base principale. Ce changement prend entre 2 et 10 minutes d’après nos tests, temps pendant lequel notre service n’est pas accessible. Une fois la bascule terminée, tout continue à fonctionner normalement, sans aucune perte de données, et sans qu’aucune intervention humaine n’ait été nécessaire. Amazon se charge alors de remettre en service un nouveau serveur secondaire pour la base de données.
- de plusieurs machines EC2 qui servent de frontaux web et qui sont installées dans les 3 datacenters distincts d’Amazon Irelande. Ces serveurs sont ceux qui délivrent les pages web que vous affichez dans votre navigateur. Le trafic est réparti sur ces machines à l’aide du service d’équilibrage de charge ELB, qui est capable de detecter lorsqu’un serveur web est en panne et de rediriger automatiquement le trafic vers les serveurs opérationnels. Ces machines sont “jetables”, c’est à dire qu’elles ne contiennent aucune information autre que le code du site web, ce qui nous permet de remplacer très facilement et très rapidement n’importe lequel de ces serveurs en cas de panne.
- d’une machine EC2 dédiée aux traitement des taches de fond (envoi de mails, génération des factures et achats récurrents, consolidation des données, etc).
Enfin, tous les documents que vous transmettez sur nos serveurs sont stockés sur Amazon S3, un espace de stockage hautement redondant prévu pour garantir une durabilité des données de 99,999999999%.
Avec ce nouveau système, nous sommes donc en mesure de proposer un service hautement disponible, capable de continuer à fonctionner même en cas de panne d’une machine ou d’un datacenter complet. Avec un tel système, nous pouvons aussi faire nos maintenances (application des patchs de sécurité, redémarrage, etc) sans perturber le fonctionnement du service.
Dans les prochains mois nous allons continuer à travailler pour optimiser cette plateforme afin d’aboutir à un système entièrement automatisé, capable de s’auto-réparer sans aucune intervention humaine, mais aussi capable de croitre et décroitre automatiquement en fonction de la charge effective sur le service. Nous allons donc travailler sur les sujets suivants:
- utilisation des fonctionnalités du système OpsWorks d’Amazon pour automatiser entièrement la gestion du parc de machines.
- optimisation de la gestion des traitements en tache de fond, afin d’assurer la redondance de cette machine tout en garantissement que chaque tache est bien exécutée une et une seule fois. C’est surement le sujet le plus compliqué, car il n’existe pas actuellement de solution “universelle” pour gérer facilement la redondance des taches “cron”. Nous explorons différentes pistes, mais nous sommes preneur de toute expérience dans ce domaine que vous pourriez avoir: n’hésitez pas à nous donner votre avis dans les commentaires.
En resumé, cette nouvelle infrastructure nous permet de continuer à croitre sereinement, en vous garantissant une meilleur qualité de service, tout en continuant à maintenir notre politique de prix très bas sur les abonnements.