Comparatif outils de monitoring (métrologie et supervision) (2/2) : Zabbix, Centreon, Nagios, Cacti et Munin

Voici la suite de l’article présentant les hypothèses de notre comparatif ainsi qu’un bref descriptif de chacun des outils comparés. Je vais maintenant établir une matrice contenant les éléments principaux de décision, selon mon expérience, afin de comparer les outils proposés et d’évaluer la réponse qu’ils apportent sur chacun de ces critères. Pour rappel, les candidats sont des outils opensource gratuits : ZabbixCentreonNagiosCacti et Munin.

Fromage ou Dessert ?
Métrologie ou Supervision ? C’est la grande question. Il faut bien évidemment que les 2 composants du monitoring soient présents pour assurer le bien-être de votre infrastructure. Cependant, il n’est pas toujours évident de savoir dans quel domaine l’outil assure le service ou bien si il assure les 2. Le schéma ci-dessous indique à quel(s) groupe(s) appartiennent les outils étudiés.

Supervision ou/et Métrologie ?

Supervision ou/et Métrologie ?

La Matrice… Enfin ! :o)
La réponse n’est pas 42, rassurez-vous. Vous trouverez-ci dessous les éléments de décision qui permettront de choisir tel ou tel outil pour votre infrastructure.

Matrice - Outils Monitoring

Matrice – Outils Monitoring

Les + / –
Si je devais retenir un point positif et un axe d’amélioration pour chaque outil qui me feraient pencher pour son utilisation ou non en production, ce seraient ceux là :

Munin
+ : Sa configuration très simple sous forme de fichiers de configuration et de liens symboliques, en font un candidat idéal pour un gestionnaire de configuration centralisé comme Puppet et pour de l’automatisation.
– : L’absence actuelle sur ses graphiques d’une fonctionnalité de zoom et de time frame glissante rend son utilisation très difficile pour de la production.

Nagios
+ : Sa configuration sous forme de fichiers, qui peut être assez vite repoussante, en fait cependant un candidat idéal à la « pupettisation » et à l’automatisation. Au delà de cela, c’est, on peut le dire, un outil complet qui a fait ses preuves.
– : L’IHM… Il ne faut pas négliger cet aspect, car une information mise en forme « avec goût » aide aussi à sa compréhension et son interprétation. La forme est importante au delà de la pertinence de l’information.

Cacti
+ : Un outil de métrologie complet avec pas mal de fonctionnalités (Thold, Weathermap, …) apportées au travers de sa Plugin Architecture. La variété et les possibilités de ses tempates complexes sont aussi un atout non négligeable.
– : La création de ses templates peut s’avérer un peu complexe au premier abord avec les différentes couches (Data Queries, Data Input Method, Data Templates, Graph Templates, Host Templates, …). Un autre point quelque peu embêtant est le manque d’homogénéité dans la configuration de ses templates (casse-tête pour l’automatisation).

Centreon
+ : Une IHM agréable et intuitive. Les notions proposées permettent une prise en main intuitive et les templates (hosts, services, commandes, …) sont pratiques et simples à mettre en place.
– : Les graphiques se contentent de tracer les données de performance remontées par Nagios sans offrir la possibilité de les mettre en relation et de les travailler afin d’obtenir des graphes orientés « logiciel/métier » comme des graphes résumant l’utilisation d’un Apache ou d’un MySQL (par exemple).

Zabbix
+ : Un outil complet autant au niveau de la métrologie que de la supervision qui se suffit à lui-même pour monitorer de manière exhaustive une infrastructure. Les fonctionnalités très avancées permettent de gérer pratiquement tous les cas.
– : Un manque de lisibilité de certains écrans (comme celui des déclencheurs par exemple) et de leurs enchaînements et des notions qui manquent parfois de prise en main intuitive. L’interface Web fait également un peu « vieillote ».

Conclusion
Il n’y a pas de mauvaise solution, certaines seront simplement plus adaptées à ce que vous voulez en faire. Voici quelques possibilités afin d’obtenir un monitoring complet de votre infrastructure :

  • Si vous voulez privilégier l’automatisation et la gestion centralisée des configurations de votre infrastructure (Cf. Puppet), pensez Munin-Nagios (vous aurez alors accès dans ce cas à 2 IHMs Web pour monitorer votre infrastructure), the « Double tap », the « Buddy system » du monitoring ! :o) Pas besoin d’accéder à des APIs plus ou moins avancées (comme pour leur camarades) pour ajouter/supprimer un host et associer les services à monitorer, tout est sous forme de fichiers de configuration et de symlinks. A noter que Munin n’exploitera pas les données de performances de Nagios mais celles de ses propres sondes et que la grosse lacune de Munin est l’absence actuelle sur ses graphiques d’une fonctionnalité de zoom et de time frame glissante qui rend son utilisation très difficile pour de la production.
  • Si vous privilégiez une métrologie avancée donnant accès à des possibilités de supervision, pensez Cacti avec sa Plugin Architecture (assortie avec Thold par exemple). Prenez un peu de temps pour comprendre les notions utilisées pour créer les templates de graphes et créez vos propres graphes complexes ! Vous pourrez ensuite utilisez leurs métriques et la connaissance que vous aurez acquis dessus pour lever des alertes via Thold.
  • Si vous privilégiez une supervision complète avec des possibilités de métrologie simple, Centreon est fait pour vous ! Surcouche de Nagios proposant un générateur de configuration, l’exploitation des données de performances de Nagios via RRDTool, du reporting agréable sur le statut de votre infrastructure, la possibilité de gérer une architecture distribuée de Nagios via son daemon CentCore qui se connecte sur les Nagios remote en SSH, … Centreon propose un pilotage de Nagios via une interface Web agréable et intuitive et une gestion de templates de hosts, services, commandes, … très pratique.
  • Si vous êtes sans concessions, Zabbix vous offre une interface unifiée vous proposant aussi bien de superviser votre infrastructure avec des notions très avancées (mesures, déclencheurs, actions conditionnelles complexes, escalade, scénarii HTTP, …) que de travailler la partie métrologie avec la possibilité de créer des graphes complexes avec les mesures récupérées. A noter qu’au delà de l’aspect séduisant du « No Compromis », la prise en main est moins intuitive qu’un Centreon, par exemple, avec une IHM moins agréable et proposant parfois des enchaînements d’écrans un peu confus à mon sens.

Comme précisé dans la première partie de cet article, il est important de noter que je n’ai pas bien sûr pu tester les dernières versions de chaque outil, puisqu’il s’agit de retours d’expérience (sur plus de 2 ans) sur des environnements de production et qu’on n’en met pas un en place toutes les semaines ! ;ob Je suis donc ouvert à vos remarques sur les évolutions que vous aurez constatées sur vos outils favoris ou bien sur les éléments de décision que vous mettriez en plus dans la balance pour effectuer votre choix.

Frédéric FAURE @Twitter @Ysance

Comparatif outils de monitoring (métrologie et supervision) (1/2) : Zabbix, Centreon, Nagios, Cacti et Munin

Cet article a pour objectif de comparer quelques solutions de monitoring (métrologie et supervision) que j’ai eues l’occasion d’intégrer dans des infrastructures de production. Les candidats sont des outils opensource gratuits et de grands classiques : ZabbixCentreon, NagiosCacti et Munin. Le but n’est pas de mettre en avant un produit en particulier, car il n’y a pas de mauvais choix dans la liste précitée, mais plutôt de vous fournir les éléments pour choisir celui qui vous conviendra le mieux dans votre cas d’utilisation. Le sujet sera en fait constitué de 2 articles : un premier va poser les hypothèses de cette comparaison et expliquer le fonctionnement de ces outils ou simplement les présenter afin de vous permettre de mieux aborder le comparatif. Le second article va synthétiser les éléments principaux de décision, selon mon expérience, dans un tableau afin de comparer les outils proposés et d’évaluer la réponse qu’ils apportent sur chacun de ces critères.

Monitoring = Métrologie + Supervision
Tout d’abord, un éclaircissement sur la sémantique utilisée est nécessaire afin que nous parlions bien tous de la même chose. Le monitoring est le terme global que l’on emploie afin de désigner le ou les outils qui vont nous permettre de suivre (monitorer) la vie de notre infrastructure. Le monitoring se décompose ensuite en 2 disciplines toutes aussi importantes l’une que l’autre et qu’il faut identifier :

  • La supervision vérifie l’état d’un hôte ou d’un service et remonte une alerte sur la détection d’un comportement anormal (temps de réponse trop long, statut NOK, …) et implique une action immédiate de la part des interlocuteurs concernés. Une alerte doit signifier que l’hôte ou le service est inutilisable (critical) ou risque de l’être (warning) et ne pas renvoyer de « simples informations » qui pollueraient la visibilité des réels incidents.
  • La métrologie permet d’historiser les données, éventuellement d’appliquer un traitement ou filtre dessus, avant de les présenter sous forme de graphiques ou de reporting. Ces données permettent d’apporter un correctif à postériori au niveau développement ou paramétrage des services afin d’apporter une optimisation desdits services et également de définir les ressources à attribuer aux services au plus juste. Cet aspect du monitoring est tout aussi important car il va permettre d’améliorer le service et donc le rendu des utilisateurs (internes ou clients finaux) et également de lisser les coûts. Les résultats issus de la métrologie doivent mettre aisément en valeur les améliorations à apporter en corrélant les valeurs récupérées.

Maintenant que cette hypothèse sémantique est posée nous allons pouvoir utiliser ces termes dans la suite de l’article.

De l’évolution des outils
Il est important de préciser que je n’ai pas bien sûr pu tester les dernières versions de chaque outil, puisqu’il s’agit de retours d’expérience sur des environnements de production et qu’on n’en met pas un en place toutes les semaines ! ;ob Je n’ai pas non plus testé tous les plugins additionnels (par exemple ceux de Cacti) qui permettent d’ajouter des fonctionnalités à l’outil. C’est un retour d’expérience sur plus de 2 ans et, pour donner un ordre d’idée, les outils sur lesquels j’ai travaillé le moins récemment sont Cacti et Nagios, il y a environ 1 an.

Il y aura donc peut-être eu des mises à jours par rapports aux éléments que je cite, donc n’hésitez pas à me faire un retour sur le sujet via les commentaires si j’ai omis un nouvelle fonctionnalité importante qui est apparue récemment.

Centreon, une interface à Nagios
Avant d’entamer le coeur du sujet, à savoir le comparatif des outils, il est nécessaire de donner une explication sur le fonctionnement de Centreon et de son rapport à Nagios car, ne soyez pas choqués, le coeur de Centreon est basé sur Nagios. Oh le fourbe ! :o)

Nagios est un ordonnanceur qui va organiser (ordonnancer) les tests de supervision, appelés contrôles, sur les différents hosts et services cibles et agréger les résultats pour les mettre à disposition via une interface web en lecture seule. Nagios permet aussi de remonter des données de performance (via ses plugins) qu’il stocke dans un énorme fichier plat et qui est, par conséquent, inexploitable en l’état. Pour préciser la remontée de ces informations, chaque résultat de contrôle renvoyé par un plugin peut être suffixé d’un | (pipe) derrière lequel les données de performances dans un format « clé=valeur » sont ajoutées. Les données « post pipe » sont simplement extraites et stockées dans ledit fichier. Voici un exemple de données de performance issues d’un plugin (en rouge) :

PING ok – Packet loss = 0%, RTA = 0.80 ms | percent_packet_loss=0, rta=0.80

De plus, toute la configuration de Nagios s’effectue directement dans les fichiers de configuration « à la main », ce qui peut devenir un peu complexe sur des infrastructures de taille respectable.

C’est sur ce constat que vient se greffer Centreon en proposant une interface web différente de celle de Nagios et ajoute ainsi les fonctionnalités suivantes :

  • Génération via IHM de la configuration potentiellement complexe de Nagios en mettant notamment à disposition des notions de templates d’hosts, de services, de commandes, … avec des possibilités d’héritages multiples.
  • Stockage et exploitation (graphique) des données de performance (métrologie) de Nagios via l’outil open source RRDtool.
  • Reporting plus lisible sur l’état des hosts et des services de l’infrastructure sur différentes périodes : pratique pour avoir une visibilité globale de la qualité de son infrastructure dans le temps et pratique pour fournir des rapports visuels dans le cadre de SLAs.
  • Une interface ergonomique de visualisation de l’état des hosts et des services (je la trouve plus agréable que celle de Nagios qui fournit de base cette fonctionnalité sur sa propre IHM web).
  • La possibilité de piloter plusieurs Nagios distribués et d’agréger leurs données : cela peut être utile sur de grosses infrastructures segmentées. Il est donc à noter qu’il est possible d’installer des Nagios autonomes sur des machines différentes de celle du Centreon qui collectera les données (via CentCore).

Voici quelques captures d’écran de Centreon :

Centreon - Configuration - Nagios - nagios.cfg

Centreon – Configuration – Nagios – nagios.cfg

Centreon - Monitoring - Services - AllServices

Centreon – Monitoring – Services – AllServices

Centreon - Reporting - Dashboard

Centreon – Reporting – Dashboard

Centreon - Views - Graphs

Centreon – Views – Graphs

Et comme un schéma vaut mieux qu’un long discours, en voici un expliquant la relation entre les deux outils :

Architecture Centreon-Nagios

Architecture Centreon-Nagios

Je considère Centreon comme un outil à part entière, même si il utilise Nagios comme ordonnanceur, le coeur de la fonctionnalité de supervision.

Pour résumer, Centreon est un outil complet qui vous permettra d’ajouter une composante métrologique à un solide outil de supervision. Pratique donc pour unifier dans un même outil, une même interface, tout ce qui est nécessaire aux équipes d’exploitation pour surveiller l’infrastructure. A noter cependant que l’exploitation des données de performances ne vous permet pas de mettre en place des graphes aussi complexes que ceux que l’on peut produire avec des outils de métrologie plus avancés. Par exemple, on ne pourra pas remonter des informations plus orientées services comme celle d’un serveur Web ou d’une base de donnée et les mettre en corrélation, comme on peut le voir dans des graphes Cacti, Munin ou Zabbix.

Le Corbeau et le Cactus
Cela aurait pu être une fable mettant en scène un corbeau malhabile laissant des plumes sur le végétal facétieux. Mais il n’en n’est rien, il s’agit de 2 outils de métrologie.

Munin est un outil très simple basé sur RRDtool qui propose une interface simpliste sans beaucoup de fonctionnalités. Les visualisations sur plusieurs échelles de temps (jour, semaine, mois et année) ne proposent pas de zoom ou de scroll, ce qui est limitant pour une production, c’est d’ailleurs à mon sens LE gros manque. Car outre cette limitation, il remplit les fonctionnalités essentielles d’un outil de métrologie pure et chaque graphique correspond à un unique script qui gère aussi bien la récupération des informations que leur mise en forme via RRDtool selon un template très bien pensé. Munin utilisant un agent sur la cible, il suffit de déployer l’agent avec la liste des graphiques de notre infrastructure et de n’activer que ceux que nous souhaitons voir pour la cible via lien symbolique (comme les sites-enabled et les sites-available sous Apache par exemple). L’architecture est très pratique et la combo est très performante en utilisant Puppet (gestionnaire de configuration centralisé) pour les déploiements automatisés de machine et conserver homogènes les configurations de vos pools de machines. Cette combo m’a vraiment séduit. Surtout qu’elle fonctionne très bien en corrélation avec un Nagios pur qui fonctionne également sur une configuration purement sous forme de fichiers. The « Double tap » ! C’est un peu le « Buddy system » du monitoring ! :o)

Si vous voulez en savoir plus sur les possibilités offertes par Puppet dans ce cadre, vous pouvez lire cet article si vous voulez en savoir plus sur un cas d’utilisation de Puppet ou bien celui-ci pour regarder une vidéo expliquant plus le fonctionnement interne de l’outil et sa configuration. Pour finir, cette citation :

En ce qui concerne la gestion et le suivi de la ferme web de FarmVille, nous exploitons quelques outils de gestion et de monitoring Open Source. Nous utilisons Nagios pour les alertes (supervision), Munin pour le monitoring et Puppet pour la configuration.

(précision sémantique Munin => métrologie) tirée d’une interview de Luke Rajlich (FarmVille). Pour l’interview complète, lisez Comment FarmVille scale pour récolter 75 millions de joueurs par mois si vous voulez vous convaincre de l’intérêt de cette solution. :o)

Voici quelques images de l’interface Munin pour vous faire une idée :

Munin - Overview

Munin – Overview

Munin - Overview Machine

Munin – Overview Machine

Munin - CPU by day

Munin – CPU by day

Munin - Mysql Queries by day

Munin – Mysql Queries by day

Cacti est lui aussi un outil de métrologie, plus complet que le précédent, et qui a la particularité d’avoir une « Plugin Architecture » qui va permettre de lui ajouter pas mal de fonctionnalités en important des plugins et en les configurant via l’interface web. On note parmi les plugins disponibles Thold, qui permet de mettre en place un système de remontée d’alertes mail sur des évènements liés aux graphes mis en place, comme sur le dépassement d’une valeur absolue, sur un pourcentage d’augmentation/diminution, … Cela permet de capitaliser sur l’expérience tirée de l’analyse des graphes de son infrastructure et de prévenir en cas de fonctionnement anormal. Cependant, l’aspect supervision proposé ici ne sera pas aussi développé que ceux que l’on peut trouver sur des outils plus spécialisés et gérant des escalades, un panel de mesures/déclencheurs/actions extrêmement fins et modulables, des plages horaires et des groupes d’utilisateurs, … Tout ce qui fait un outil de supervision complet. Donc Cacti est avant tout un outil de métrologie avec pas mal de plugins intéressants et avec la possibilité de mettre à disposition une supervision simple qui peut convenir dans certains cas… simples. ;ob

Le point fort de Cacti réside dans les possibilités de customisation des graphes que l’on crée ou bien que l’on importe depuis les templates variés mis à disposition par la communauté. Il est parfois un peu compliqué, je trouve, de créer ses graphes : il faut bien comprendre le mécanisme ! Rien d’insurmontable en tout cas.

Voici quelques captures d’écran, afin de vous donner une idée de l’outil :

Cacti - Settings (from www.cacti.net)

Cacti – Settings (from http://www.cacti.net)

Cacti - Tree View (from www.cacti.net)

Cacti – Tree View (from http://www.cacti.net)

Cacti - Apache Statistics - Thread scoreboard

Cacti – Apache Statistics – Thread scoreboard

Il est à noter que Cacti, contrairement aux autres outils présentés ici, ne fonctionne pas avec un système d’agents mais attaque directement un serveur SNMP sur la cible pour récupérer les informations système et, de la même manière, impose que les services monitorés (Apache, MySQL, …) laisse Cacti les interroger via le réseau. C’est une autre façon de concevoir les choses. Au choix.

Zabbix
Zabbix est un outil de supervision qui propose un palette de fonctionnalités complète de métrologie. Cela en fait un outil qui peut à lui seul monitorer une infrastructure sans faire de concession. C’est un point très important quand on veut unifier les différents aspects du monitoring (métrologie et supervision) de son infrastructure dans un même outil, une même interface, à disposition de ses équipes d’exploitation.

C’est un outils complet qui permet de gérer toutes les notions relatives à la supervision (escalade, alerting, plages horaires, mesures/déclencheurs/actions sur conditions, …) et également un outil de métrologie complet permettant de tracer des graphes mettant en corrélation toutes les mesures que l’on remonte. Il est à noter que contrairement aux autres outils mettant à disposition des fonctionnalités de métrologie, il est le seul à ne pas utiliser RRDtool, mais une base de données. Aucune contre-indication, c’est à titre informatif.

Il utilise un agent comme la plupart de ses camarades afin de monitorer les machines cibles (agent qui peut fonctionner en mode passif ou bien actif, genre j’attends que le serveur me demande ou bien je suis autonome et je lui envoie directement). Il est également possible pour les métriques non système d’utiliser des connexions directes : l’intérêt est d’utiliser la fonction zabbix_sender qui va remonter un ensemble de métriques en une seule fois. Explications : par défaut, Zabbix va établir autant de connexions que de couples « clé-valeur » à remonter… Pourquoi pas, mais quand je veux monitorer des services un peu complexes ou quand je veux récupérer beaucoup de métriques, ça devient un peu consommateur. Il est alors possible de positionner des scripts (comme les plugins Nagios, Cacti, Munin, …), dans la crontab du serveur Zabbix, qui vont récupérer une liste de couples « clé-valeur » (en se connectant directement via le réseau sur les services distants et sans passer par l’agent Zabbix), les stocker dans un fichier (temporaire) sur le serveur Zabbix lui-même et les envoyer en une seule fois à Zabbix via la commande… zabbix_sender !

A noter également la possibilité de construire des écrans, à partir de multiples éléments, qu’il en ensuite possible de faire défiler… sur un grand écran plat pour votre équipe d’exploitation préférée (ceci n’est pas un message personnel ;ob). Il y a également la possibilité de définir des cartes (dans le style de celles que l’on trouve dans Nagios ou bien dans le plugin Weathermap de Cacti) afin de visualiser l’état macro de votre système.

Voici quelques quelques captures d’écran de Zabbix :

Zabbix - Dashboard (from www.zabbix.com)

Zabbix – Dashboard (from http://www.zabbix.com)

Zabbix - Apache - Thread Scoreboard (from www.zabbix.com)

Zabbix – Apache – Thread Scoreboard (from http://www.zabbix.com)

Zabbix - Ecrans (from www.zabbix.com)

Zabbix – Ecrans (from http://www.zabbix.com)

Zabbix - Graphes - Zoom In (from www.zabbix.com)

Zabbix – Graphes – Zoom In (from http://www.zabbix.com)

La suite…
Voilà pour la présentation des différents outils et la pose des hypothèses à partir desquelles je vais établir un comparatif entre ces différents outils. Le second article va synthétiser les éléments principaux de décision dans une matrice afin de comparer les outils proposés et d’évaluer leur correspondance sur chacun de ces critères.

Frédéric FAURE @Twitter @Ysance

Scaling an AWS infrastructure 1/2 : the tools

Logo AWS

How do you scale an AWS (Amazon Web Services) infrastructure? This article will give you a detailed reply in two parts: the tools you can use to make the most of Amazon’s dynamic approach, and the architectural model you should adopt for a scalable infrastructure. I base my report on my experience gained in several AWS production projects in casual gaming (Facebook), e-commerce infrastructures and within the mainstream GIS (Geographic Information System). It’s true that my experience in gaming (IsCool, The Game) is currently the most representative in terms of scalability, due to the number of users (over 800 thousand DAU – daily active users – at peak usage and over 20 million page views every day), however my experiences in e-commerce and GIS (currently underway :o)) provide a different view of scalability, taking into account the various problems of availability and data management. I will therefore attempt to provide a detailed overview of the factors to take into account in order to optimise the dynamic nature of an infrastructure constructed in a Cloud Computing environment, and in this case, in the AWS environment.

The tools
I will provide examples of tools I used in my various production experiments and which won me over with their efficiency. However, it’s not so much the tools themselves which are emphasised, rather the underlying features that must be installed to fully exploit the AWS.

What is the difference between an AWS and a standard infrastructure?
There are two replies:

  • Firstly, the AWS enable the Hardware and Infrastructure components to be handled via the code (through the APIs): this gives them momentum which needs to be intensified by correctly selecting your tools. Amazon also offers a certain number of technical guarantees with their services, which should be used to full advantage in order to concentrate on what is essential.
  • The second answer should be: ‘None!’ However, it must be acknowledged that often the cosy aspects of ‘home’-hosted infrastructure can lead to a certain lack of rigor on many issues. The fact that Amazon, with its AWS, offers a dynamic and volatile solution for the EC2s, compels you to install mechanisms which should be standard.

Centralised configuration management
In order to instantiate multiple servers (EC2) on the fly to counter a load peak or perform occasional procedures, we have to use a centralised configuration management tool. This has multiple uses:

  • Rapid instantiation of a machine corresponding to a pre-defined type: Web server, cache server, etc.
  • Ensuring uniform configuration of the entire set of instances of the same type at all times.
  • Capitalising on the expertise: packages, configurations, services etc. for each type of instance are contained within a descriptor. This enables new users (and others) to learn the composition of the servers simply by reading the associated descriptor(s.)

Logo Puppet - Reductive Labs

Puppet is a very attractive solution for this task. Puppet architecture comprises:

  • A Puppet Master, guardian of configurations. It contains the descriptors of the packages to be installed, configuration files to be pushed and services to be started up for a new EC2 instance in order to prepare it according to the type of node or nodes with which you have associated it, or simply to keep an existing instance updated.
  • Multiple Puppet clients installed on EC2 instances. The client regularly polls the master to check that his configuration is up to date. It is also possible to trigger the clients from the master to initiate an urgent update.

It is thus very simple to mount a new instance of a given type, and to be sure that from one server to another, the configuration is identical in every way. It should be noted that the Puppet Master descriptors run on a node system, and a server may reference more than one node. You will therefore obtain a very modular configuration.

Puppet Module Descriptor

Puppet Module Descriptor

The centralised configuration manager is indispensable on a scalable infrastructure, which can have a large number of instances, some of which should be mounted rapidly, in order to reply to user requests during load peak.

‘But’, you may say, ‘you do have to install the client on the new instance, don’t you?’ Oh yes, all the more so as there is a system of certificate request/acceptation between the client and the master, so that not just anybody can access the configurations. ‘There’s nothing simpler!’ I reply. Instead of using an HMI (Human Machine Interface) such as ElasticFox to connect to the Amazon services APIs, you need simply to connect with command lines via a script which instantiates an EC2, creates if necessary an EBS volume and associates it, connects with SSH on the new instance and installs the client, connects on the master and accepts the certificate request, reboots the client and ‘Bingo!’ The instance installs and configures itself. In general, the reactive and dynamic capacities inherent in EC2 and AWS require it, otherwise it would be an under-exploitation, or even a misuse of the tool.

And what about the AMIs (instance-store root devices) or the EBS root devices (note that for the latter there is not yet a great choice of templates)? It is however possible to build an AMI or even an EBS root device with the Puppet client installed on it (and to use, if necessary, the user-data at the launch of the instance in order to set the parameters if a ‘static’ configuration on the AMI is not sufficient). However, in a production environment, the AMI and the EBS root device do not allow you to replace a Puppet: if you have to modify the AMI every time you change the parameters and redeploy the EC2… you’ll never finish. The AMI is a good tool for instantiating a basic template, but not for maintaining a production infrastructure in good working order.

To sum up, it is even possible to envisage auto-scalability (a more complete service than the one offered by Amazon’s Auto Scaling, based on CloudWatch), which would amount to starting up this script when a value on a monitoring graph (metrology) exceeds a threshold, thereby instantiating a new instance to weather the peak period, an instance which would be ‘terminated’ after dipping below another threshold on the aforementioned graph. The possibilities are enormous. However, the cost of the final elements to be installed on a large production infrastructure to access the auto-scalability function is considerable (exponential complexity). If you get the chance, it’s an excellent handiwork, otherwise you’ll have to ‘settle’ for an easily scalable solution whereby you simply launch a script manually (or else at a fixed time based on the study of the metrics produced by the metrology, which is a satisfactory alternative). If necessary, manually adding one or two references in a file is a perfectly reasonable alternative.

Execution of automated tasks in parallel
Because of the variation in the number of instances according to the load of a scalable infrastructure, and particularly in the potentially large number of these instances, you cannot envisage carrying out maintenance and deployment operations on an individual basis for each machine (or manually, which is even worse!). This would not only be too time-consuming, but would also lead to errors. It is therefore essential to use tools specialising in automation and parallel task execution, such as Capistrano, which has numerous advantages:

  • Scripting a certain number of tasks, whether complex or not (deliveries, backups, site publication/maintenance, etc.) executing them rapidly in parallel on X instances with a single command.
  • Ensuring the reproducibility of a task.
  • Capitalise on know-how (Cf. Puppet).
Capistrano Task Descriptor

Capistrano Task Descriptor

Logo Capistrano

This tool is very practical and easy to use. It executes tasks in parallel (by connecting with SSH – don’t use the ‘root’ key of your EC2 instances in the tool, it’s classier to use a dedicated key…) on one or a group of servers defined by roles.

This tool should be used as a supplement to Puppet and not a replacement, as they do not have the same targets:

Objective
Puppet – Uniform configuration of the server pool.
Capistrano – Task reproducibility and in-parallel execution.

Operating mode
Puppet – Regular pull requests by clients (or even push from the master).
Capistrano – Occasional tasks (manual request or by cron).

Orientation
Puppet – Pre-defined objects / notions such as ‘Package’, ‘Service’, ‘File’, etc.
Capistrano – Generic commands such as ‘upload’, ‘download’, ‘system’, ‘run’, etc.

Target
Puppet – Infrastructure and services.
Capistrano – Services and applications.

Note that Webistrano is an HMI enabling access to the Capistrano features and introducing the notion of project management by managing access to the tasks according to profile, to trace who deployed what on which server and to send email signals in response to certain actions. I find this joint operation with project management very interesting.

Monitoring
This is one of the crucial elements of a scalable architecture, if not the main one. It is essential to have the metrics to hand, precisely so you know when to scale. This enables you to identify the clogged points of the infrastructure, to analyse your site traffic and to make deductions about user behaviour. It also enables signals to be triggered.

The provision of metrics is more representative of metrology than of supervision. We will see that, in the context of an AWS infrastructure, metrology has greater added value than supervision (even if the latter remains indispensable). Speaking of which, there follows a clarification of the two monitoring disciplines that you need to recognise:

  • Supervision verifies the state of a host or a service and sends out an alarm upon detecting any abnormal behaviour (over-long response time, status NOK, etc.) and requires immediate action on the part of the interface partner concerned. An alarm must signify that the host or the service is unusable (critical) or may soon be (warning) and must not send back ‘simple information’ which would obstruct the visibility of real incidents.
  • Metrology enables data to be archived, and if necessary, processed or filtered, before it is presented in the form of graphs or reports. This data enables corrections to service development or configuration to be carried out after the event, in order to optimise the aforementioned services, and equally to define the resources to be attributed to them in the most effective way. This aspect of monitoring is just as important, for it will enable the service to be improved (and thereby the users feedback) and also to reduce costs. The metrology results should clearly highlight the improvements to be made by correlating the values recovered.

Quite a number of monitoring tools are available on the market, each with its pros and cons, some more supervision-oriented, others more towards metrology. Among them: Centreon/Nagios, Zabbix, Cacti and Munin. Personally I use Centreon/Nagios mainly for supervision and Cacti for software-oriented metrology with pre-packaged graphs such as for Apache, MySQL, Memcached, etc. I tried Munin, it lacks some of the useful features of Cacti but it is really easy to use and it matchs very well with Puppet (configuration based on descriptors and symlinks). I’ve also heard many good things about Zabbix (comprehensive range of features).

Thread Scoreboard Apache - Yearly - 1 Day Average

Thread Scoreboard Apache - Yearly - 1 Day Average

It should be noted that these tools operate mostly (Centreon, Cacti and Munin) on RRDtool (Round-Robin Database), a database management tool which also enables a graphic representation of the data contained in the base. The big advantage stems from the fact that the stored data volume is minimal, whether for storage of several months, or even years. This is made possible by calculating the averages of the time periods (from 1 minute to 1 day): the recent data is exact, whereas the older data is approximate.  This is very practical, as you have both the recent exact metrics and you keep the historic, a representation of the evolution of your architecture.  This is excellent for visualising the evolution of the key metrics and understanding the impact of the evolution of the components of the aforementioned infrastructure, or the applications supported as and when the different releases are delivered.

As for Cloud Computing-type infrastructures, metrology is the discipline with the highest added value, as it will enable feedback to your automation tools.

Keep in mind also that it’s interesting to be able to integrate dynamically the new instances installed and configured by Puppet in the monitoring tool. Give priority therefore to monitoring tools with modular configuration or simple access via APIs.

Managing centralised logs
It’s undeniable: the more instances you have, the more scattered logs there’ll be on the various instances. Moreover, sending all the logs to the syslog daemon becomes difficult, as the infrastructure components do not necessarily manage it very well (redirection, respecting the syslog protocol, etc.), not to mention the application(s) / functional block(s) which can log in the various files on the server.

Logo Syslog-NG

Consider trying a tool such as Syslog-NG: it comprises a server and several clients, in fact it’s the same tool but with different configurations. What’s more, it is capable of regularly checking the log files (of business applications for example) and transmitting only the differential, even if it doesn’t respect the syslog protocol:

  • The client recovers the files/pipe/unix-dgram/etc. logs and sends the information to the network (TCP/UDP).
  • The server recovers the information from the network (TCP/UDP) and registers it in files, databases, etc.
Syslog-NG Architecture

Syslog-NG Architecture

We’re talking about only minimal differences in terms of configuration. The component can also act as a relay on more complex infrastructures by receiving the network logs from diverse clients and sending them back to the network for a server.

It is possible to apply filters before sending the logs to the network in order to send only the essential ones. Next, filters can also be applied at the server level in order to manage differently the logs coming from clients, according to their urgency, sender program, source host, etc.

It’s a simple and non-intrusive tool able to take into account the logs of scattered applications on a server (even if these logs do not respect the syslog protocol format – there is however an advantage to respecting this protocol: greater accuracy of the facilities and priorities).

Keep in mind, the same as for monitoring, that it is interesting to be able to integrate (and withdraw) dynamically the new instances to be managed at the logs system level.

Conclusion
Over and above the tools presented here, it is the underlying functions and capacities which are important. What stands out are the following:

  • Tools such as centralised configuration managers, tools for the execution in parallel of automated tasks and also log managers, will become even more important. Working without them on such infrastructures is no longer conceivable.
  • Monitoring is still and will remain a key value, but metrology allows you, with the analysis of key defined metrics in your infrastructure, to sustain the automation tools.
  • Automation is indeed the key word promoted by AWS: the accessibility of the Hardware and Infrastructure resources via code allows us to move towards ever more autonomous architectures. However you must always position the cursor correctly, in the knowledge that the final stages of complete automation are the most expensive.

I hope that this technical feedback will interest you as much as I enjoyed working on these infrastructures. I will continue in the second part of this article: Choosing the correct architecture model for scalable infrastructures.

Frédéric FAURE @Twitter @Ysance

Scaler une infrastructure AWS 1/2 : les outils

Logo AWS

Comment scaler une infrastructure AWS (Amazon Web Services) ? C’est une réponse détaillée que va apporter cet article en 2 parties : les outils à utiliser pour tirer parti du dynamisme des services Amazon et le modèle d’architecture à adopter pour une infrastructure scalable. Je me base sur mes expériences tirées de plusieurs projets de production sur les AWS, à la fois dans le domaine du casual gaming (sur Facebook), dans celui des infrastructures e-commerce ou bien encore dans le cadre du SIG (Système d’Information Géographique) grand public. Il est vrai que l’expérience dans le domaine du jeu est celle qui est actuellement la plus représentative en termes de scalabilité, du fait du nombre d’utilisateurs (> 800K DAU – Daily Active User – et plus de 20M de pages vues par jour), cependant les expériences dans le e-commerce et le SIG (expérience en cours :o)) offrent également une autre vision de la scalabilité, prenant en compte des problématiques différentes de disponibilité et de gestion des données. Je vais donc tenter de brosser un tableau exhaustif des éléments à prendre en compte afin d’optimiser le dynamisme d’une infrastructure montée dans un environnement de Cloud Computing et en l’occurrence dans celui des AWS.

Les outils
Je propose des exemples d’outils que j’ai utilisés dans mes différentes expériences de production et qui m’ont convaincu par leur efficacité. Cependant, ce n’est pas tant l’outil qui est mis en valeur que la fonctionnalité sous-jacente qu’il va falloir implémenter pour tirer parti au mieux des AWS.

Différence entre une infra AWS et une infra standard
Il y a 2 éléments de réponse :

  • Tout d’abord, les AWS permettent de manipuler les composants Hardware et d’Infrastructure via la code (en passant par des APIs), cela permet un dynamisme qu’il va falloir exacerber en sélectionnant convenablement ses outils. Amazon propose de plus un certain nombre de garanties techniques sur leurs services, il conviendra d’en tirer parti afin de se concentrer sur l’essentiel.
  • Ensuite, une seconde partie de la réponse devrait être : « aucune ! ». Cependant, force est de constater que bien souvent le côté plus douillet de l’infrastructure hébergée « à la maison » pousse à une certaine forme de laxisme sur un certain nombre de points. Le fait que Amazon, avec ses AWS, propose une solution volatile, au niveau des EC2 notamment, oblige à mettre en place des mécanismes qui devraient être standards.

Gestion de configuration centralisée
La possibilité d’instancier de multiples serveurs (EC2) à la volée pour répondre à un pic de charge ou des traitements ponctuels, nous oblige à utiliser un outil de gestion de configuration centralisée. L’utilité est multiple :

  • Instancier rapidement une machine correspondant à un type prédéfini : serveur Web, serveur de cache, …
  • Assurer l’homogénéité de la configuration de l’ensemble des instances d’un même type à tout instant.
  • Capitaliser un savoir faire : les packages, configurations, services, … de chaque type d’instance est contenu dans un descripteur. Cela permet aux nouveaux venus (et aux autres) de connaitre la composition des serveurs sur la simple lecture du ou des descripteurs associés.

Logo Puppet - Reductive Labs

Puppet est une solution très intéressante pour cette tâche. L’architecture Puppet est constituée de:

  • Un Puppet Master, gardien des configurations, il contient les descripteurs des packages à installer, fichiers de configuration à déposer et services à démarrer pour une nouvelle instance EC2 afin de la préparer suivant le type du ou des nœuds auxquels on l’a associée ou tout simplement pour maintenir à jour une instance existante.
  • De multiples clients Puppet installés sur les instances EC2. Régulièrement, le client poll (interroge) le master afin de vérifier que sa configuration est à jour. Il est également possible de faire du push sur les clients à partir du master pour déclencher une mise à jour urgente.

Il est ainsi très simple de monter une nouvelle instance d’un type donné et d’être sûr que, d’un serveur à un autre, la configuration est complètement identique. Il est à noter que les descripteurs du Puppet Master fonctionnent sur un système de nœuds et un serveur peut faire référence à plusieurs nœuds. On obtient donc une configuration très modulaire.

Descripteur Module Puppet

Descripteur Module Puppet

Le gestionnaire de configuration centralisée est indispensable sur une infrastructure scalable qui est amenée à avoir un grand nombre d’instances dont certaines devront être montées rapidement afin de répondre aux sollicitations des utilisateurs lors des pics de charge.

« Mais… », me direz-vous, « il faut bien installer le client sur la nouvelle machine ? ». Et oui, d’autant plus qu’il y a un système de requête/acceptation de certificat entre le client et le master afin que n’importe qui ne puisse accéder aux configurations. « Très simple ! », vous répondrais-je, au lieu d’utiliser une IHM, comme Elastic Fox, afin de se connecter aux APIs des services Amazon, il suffit de s’y connecter en lignes de commande via un script qui instancie un EC2, éventuellement crée un volume EBS et l’associe, se connecte en SSH sur la nouvelle machine et installe le client, se connecte sur le master et accepte la requête de certificat, redémarre le client et « hop ! ». L’instance s’installe et se configure toute seule. Les possibilités de réactivité et de dynamisme inhérentes aux EC2 et aux AWS de manière générale nous impose cela, sinon ce serait sous exploiter l’outil, voire le més-exploiter.

Et les AMIs (instance-store root devices) ou les EBS root devices (à noter que pour ces dernier, il n’y a pas encore beaucoup de choix en termes de templates) ? Il est cependant possible de se constituer une AMI ou bien un EBS root device avec le client Puppet installé dessus (et d’utiliser éventuellement les user-data au lancement de l’instance afin de le paramétrer si une configuration « statique » sur l’AMI n’est pas suffisante). Cependant, dans un environnement de production, l’AMI ou l’EBS root device ne permettent pas de remplacer un Puppet : si il faut modifier l’AMI à chaque modification de paramétrage et redéployer les EC2… On n’a pas fini. L’AMI est un bon outil pour instancier un template de base (au sens basique), pas pour conserver une infrastructure de production en bon ordre de fonctionnement.

Pour conclure, il est même possible d’envisager une auto-scalabilité (plus complète que celle proposée par le service Auto Scaling d’Amazon basé sur CloudWatch) qui reviendrait à déclencher ce script sur le dépassement d’une valeur d’un graphe de monitoring (métrologie), instanciant donc une nouvelle machine pour supporter la période de pic, instance qui serait « terminée » suite au passage en dessous d’un autre seuil sur ledit graphe. Les possibilités sont énormes. Cependant, le coût des derniers éléments à mettre en place sur une infrastructure importante de production pour accéder à l’auto-scalabilité est conséquent (complexité exponentielle). Si on a l’opportunité, c’est un bel ouvrage, sinon se « contenter » d’une solution aisément scalable où il suffit de lancer un script manuellement (ou bien à heure fixe basé sur l’étude des métriques remontés par la métrologie, ce qui est une bonne alternative) et éventuellement d’ajouter manuellement une ou deux références dans un fichier est une alternative tout à fait respectable.

Exécution de tâches automatisées en parallèle
Du fait de la variation du nombre d’instances en fonction de la charge d’une infrastructure scalable et surtout du nombre potentiellement important desdites instances, il n’est pas envisageable d’effectuer les opérations de maintenance et de déploiement unitairement sur chaque machine (et encore pire à la main !), ce qui non seulement serait chronophage, mais de surcroît source d’erreurs. Il est alors indispensable d’utiliser des outils spécialisés dans l’automatisation et l’exécution parallèle de tâches, tel que Capistrano, dont les bénéfices sont multiples :

  • Scripter un certain nombre de tâches, complexes ou non, (livraisons, backups, publication/maintenance du site, …) et de les exécuter rapidement en parallèle sur X machines en une seule commande.
  • Assurer la reproductibilité d’une tâche.
  • Capitaliser un savoir faire (Cf. Puppet).
Descripteur Tache Capistrano

Descripteur Tache Capistrano

Logo Capistrano

Cet outil est très simple d’utilisation et très pratique. Il exécute des tâches en parallèle (en se connectant en SSH – n’utilisez pas la clé « root » de vos instances EC2 dans l’outil, mais une autre dédiée, c’est plus classe…) sur un ou des groupes de serveurs définis par des rôles.

C’est un complément à Puppet et non un doublon car ils n’ont pas la même cible :

Objectif
Puppet – Homogénéité de la configuration du parc de serveurs.
Capistrano – Reproductibilité des tâches et exécution en parallèle.

Mode de fonctionnement
Puppet – Pull régulier des clients (voire push du master).
Capistrano – Tâches ponctuelles (appel manuel ou par cron).

Orientation
Puppet – Objets / notions prédéfinis tels que « Package », « Service », « File », …
Capistrano – Des commandes génériques comme « upload », « download », « system », « run », …

Cible
Puppet – Infrastructure et services.
Capistrano – Services et applicatif.

A noter, Webistrano est une IHM permettant d’accéder aux fonctionnalités de Capistrano et introduisant une notion de gestion de projet par la possibilité de gérer les accès aux tâches en fonction de son profil, de tracer qui a déployé quoi sur quel serveur et d’envoyer des alertes mails sur certaines actions. Je trouve cette jointure avec la gestion de projet intéressante.

Monitoring
C’est un des éléments cruciaux d’une architecture scalable, si ce n’est le principal. Il est indispensable d’avoir à disposition des métriques afin de savoir justement quand scaler. Il permet d’identifier les points d’engorgement de l’infrastructure, d’analyser l’évolution du trafic sur votre site et d’en déduire les comportements des utilisateurs et permet également de déclencher des alertes.

Cet apport de métriques est plus représentatif de la métrologie que de la supervision. On verra que, dans le cadre d’une infrastructure sur AWS, la métrologie a une valeur ajoutée plus importante que celle de la supervision (même si cette dernière reste indispensable). A ce propos, voici un éclaircissement sur les 2 disciplines du monitoring qu’il faut identifier :

  • La supervision vérifie l’état d’un hôte ou d’un service et remonte une alerte sur la détection d’un comportement anormal (temps de réponse trop long, statut NOK, …) et implique une action immédiate de la part des interlocuteurs concernés. Une alerte doit signifier que l’hôte ou le service est inutilisable (critical) ou risque de l’être (warning) et ne pas renvoyer de « simples informations » qui pollueraient la visibilité des réels incidents.
  • La métrologie permet d’historiser les données, éventuellement d’appliquer un traitement ou filtre dessus, avant de les présenter sous forme de graphiques ou de reporting. Ces données permettent d’apporter un correctif à postériori au niveau développement ou paramétrage des services afin d’apporter une optimisation desdits services et également de définir les ressources à attribuer aux services au plus juste. Cet aspect du monitoring est tout aussi important car il va permettre d’améliorer le service et donc le rendu des utilisateurs (internes ou clients finaux) et également de lisser les coûts. Les résultats issus de la métrologie doivent mettre aisément en valeur les améliorations à apporter en corrélant les valeurs récupérées.

Un certain nombre existent sur le marché avec leurs avantages et inconvénients, certains plus orientés supervision, d’autres plus métrologie. On citera Centreon/Nagios, Zabbix, Cacti ou encore Munin. Personnellement, j’utilise Centreon/Nagios essentiellement pour la supervision et Cacti pour la métrologie orientée logicielle avec des graphes pré-packagés comme pour Apache, MySQL, Memcached, … Mais j’ai eu de nombreux bons écho sur Zabbix pour son exhaustivité de fonctionnalités et Munin pour sa simplicité d’utilisation.

Thread Scoreboard Apache - Yearly - 1 Day Average

Thread Scoreboard Apache - Yearly - 1 Day Average

Il est à noter que ces outils fonctionnent pour la plupart (Centreon, Cacti et Munin) sur RRDtool (Round-Robin Database), un outil de gestion de base de données permettant également de représenter graphiquement les données contenues dans la base. Le gros avantage tient dans le fait que le volume de données stockées est minimal même pour la conservation de plusieurs mois, voire années de données. Cela est rendu possible par le calcul de moyennes sur des périodes (de 1 minute à 1 jour) : les données récentes sont exactes, alors que les plus anciennes sont approximées. Très pratique car nous avons à la fois des métriques récentes exactes et conservons un historique, une représentation de l’évolution de notre architecture, ce qui est capital afin de visualiser l’évolution des métriques clés et de comprendre les impacts de l’évolution des composants de ladite infrastructure ou bien des applications supportées au fur et à mesure des livraisons des différentes releases.

Concernant les infrastructures de type Cloud Computing, la discipline ayant la plus forte valeur ajoutée est la métrologie, car c’est elle qui va permettre d’apporter un feed back à vos outils d’automatisation.

Gardez à l’esprit également qu’il est intéressant de pouvoir intégrer dynamiquement les nouvelles machines installées et configurées par Puppet dans l’outil de monitoring. Privilégiez donc les outils de monitoring avec une configuration modulaire, ou simple d’accès via APIs.

Gestion des logs centralisée
C’est indéniable, plus vous aurez d’instances, plus vous aurez de logs éparses sur les diverses instances. De plus, diriger tous les logs vers le daemon syslog devient problématique car tous les composants de l’infrastructure ne gèrent pas forcément bien cela (redirection, respect du protocole syslog, …), sans parler de la ou des applications/briques fonctionnelles qui peuvent loguer dans des fichiers disparates sur le serveur.

Logo Syslog-NG

Pensez à des outils comme Syslog-NG : il est composé d’un serveur et de plusieurs clients, en fait le même outil mais avec des configurations différentes. En plus, il est capable de vérifier régulièrement des fichiers de logs (d’applications métier par exemple) et de transmettre uniquement le différentiel, même si celui-ci ne respecte pas le protocole syslog :

  • Le client récupère les logs de files(fichiers)/pipe/unix-dgram/… et envoie les infos sur le réseau (tcp/udp).
  • Le serveur récupère les infos du réseau (tcp/udp) et les enregistre dans des fichiers, bases de données, …
Architecture Syslog-NG

Architecture Syslog-NG

Il s’agit juste de différences minimes en termes de configuration. Le composant peut également servir de relai sur des infrastructures plus complexes en recevant les logs du réseau à partir de divers clients et en les envoyant à nouveau sur le réseau à destination d’un serveur.

Il est possible d’appliquer des filtres avant d’envoyer les logs sur le réseau pour ne faire transiter que le nécessaire et ensuite il est également possible d’en appliquer au niveau du serveur pour gérer différemment les logs en provenance des clients en fonction de leur criticité, programme émetteur, hôte d’origine, …

C’est un outil simple et non intrusif pouvant prendre en compte les logs des applications éparses sur un serveur (même si ces logs ne respectent pas le format du protocole « syslog » – il y a cependant un plus à respecter ce protocole pour avoir une meilleure précision au niveau des « facilities » et « priorities »).

De même que pour le monitoring, gardez à l’esprit qu’il est intéressant de pouvoir intégrer (et retirer) dynamiquement les nouvelles instances à gérer au niveau du système de logs.

Conclusion
Au delà des outils présentés, ce sont les fonctionnalités sous-jacentes qui sont importantes. Ce qu’il en ressort, c’est :

  • Les outils comme les gestionnaires de configuration centralisée, les outils d’exécution de tâches automatisées en parallèle ou bien les gestionnaires de logs vont prendre encore plus d’importance. Il n’est plus envisageable de travailler sans sur de telles infrastructures.
  • Le monitoring est toujours une valeur clé et le restera, mais la métrologie permet avec l’analyse des métriques clés définis dans son infrastructure d’alimenter les outils d’automatisation.
  • L’automatisation est bien le mot clé mis en avant par les AWS : l’accessibilité des ressources Hardware ou d’Infrastructure via du code permet d’aller vers des architectures de plus en plus autonomes. Il faut cependant positionner le curseur convenablement, sachant que les dernières étapes d’une automatisation complète seront les plus coûteuses.

J’espère que ce retour d’expérience vous aura intéressé autant que j’ai eu de plaisir à travailler sur ces infrastructures. Je continuerai cet article dans une deuxième partie consacrée au modèle d’architecture à appliquer pour des infrastructures scalables.

Frédéric FAURE @Twitter @Ysance