[Devoxx FR 2012] – Continuous deployement : Rackspace, Chef et capistrano en action
Bertrand Paquet nous a présenté les outils qu’ils utilisent chez Fasterize.
Fasterize est un service permettant d’accélérer le chargement d’un site sans avoir à modifier celui-ci. Fasterize applique diverses optimisations sur les pages comme par exemple l’agrégation et la réduction des CSS.
Pour gérer leur infrastructure, ils ont développé des outils autour de Chef, Capistrano et Fog.
Fog est une gem ruby permettant de contrôler différents services cloud (Amazon EC2, Rackspace Servers, Terremark vCloud, Slicehost…). Elle permet de créer très facilement de nouveaux serveurs quelque soit le service que l’on utilise. On peut ainsi rajouter un serveur à la demande.
Une fois le nouveau serveur créé, il faut y installer tout ce dont on a besoin et le configurer. C’est là qu’intervient Chef. Chef permet de gérer un ensemble de serveurs à l’aide de recettes et de rôles.
Une recette correspond à un ensemble de ressources que l’on souhaite avoir sur le serveur. De nombreuses recettes sont disponibles. Il y a par exemple des recettes pour apache, mysql, tomcat… . On peut les utiliser, les modifier ou créer ses propres recettes si besoin est.
Un rôle est un ensemble de recettes. Cela permet d’installer des recettes sur un serveur sans avoir à les y ajouter une à une. De plus, en modifiant un rôle, on modifie tous les serveurs ayant ce rôle.
Grâce à Chef, notre nouveau serveur est installé et configuré. Mais il n’est pas encore utilisé dans notre infrastructure (le répartiteur de charge ne le connait pas et ne lui envoie donc pas de trafic). Il faut donc effectuer différentes opérations pour intégrer ce serveur. Pour cela, Fasterize utilise Capistrano.
Capistrano permet d’exécuter des commandes sur un ou plusieurs serveurs simultanément. Fasterize a donc écrit des tâches Capistrano pour, entre autres, créer et intégrer un nouveau serveur dans leur infrastructure. En une seule commande, Capistrano exécutera un ensemble de tâches pour:
- créer un nouveau serveur dans le cloud
- installer Chef
- configurer le serveur avec Chef
- ajouter le nouveau serveur dans le DNS
- déclarer le nouveau serveur sur le répartiteur de charge.
La gestion de leur infrastructure est ainsi entièrement automatisée. En quelques commandes, l’infrastructure est entièrement déployée.
Leur infrastructure est surveillée grâce à Monit. Fasterize peut ainsi voir l’état de leur infrastructure via l’interface web de Monit ou via la commande Capistrano qu’ils ont écrite. Afin de ne pas avoir de fausse alertes, les commandes Capistrano désactivent au préalable la surveillance avant d’exécuter les tâches agissants sur les serveurs.
Fasterize utilise également Jenkins pour faire un déploiement complet toutes les nuits.
Grâce à cette automatisation , Fasterize peut faire évoluer plus facilement son infrastructure et réagir rapidement en cas de forte charge. Il n’y a donc plus besoin de faire d’intervention manuelle sur les serveurs.