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 l’ensemble du service.
- de bénéficier d’outils avancés pour automatiser la gestion de l’ensemble des machines utilisées par notre service.
Pour ceux d’entre vous qui s’intéressent à la technique, la nouvelle infrastructure est composée:
- d’une base de donnée MySQL, gérée via Amazon RDS, et configurée en mode “Multi AZ”: cela signifie que la base de donnée 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 hébergeant la base principale (i.e. le master), Amazon bascule automatiquement et de manière transparente sur la base secondaire (i.e. le slave) qui devient la nouvelle base principale, permettant au service de continuer à fonctionner normalement. Amazon se charge ensuite de réparer et remettre en service le serveur en panne.
- 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 est en panne et de rediriger automatiquement le trafic vers les serveurs opérationnels. Ces machines sont “jettables” 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 l’ajout ou la suppression de nouvelles 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 le prix très bas de nos abonnements.