Débuter un projet en 2017 : Infrastructure

04 Jul 2017

Infrastructure

Vous avez maintenant de quoi monitorer vos plateformes, stocker votre code source et construire vos livrables. Il ne reste plus qu’à avoir une (ou des) plateformes pour déployer vos petits livrables fait avec ❤️.

Pour cela une règle simple:

Rien ne doit être fait à la main en ce qui concerne l’infrastructure, cela servira à nouveau plus tard.

Que vous soyez sur un petit ou un gros projet tout le code et les scripts nécessaires à la construction d’une plateforme seront à nouveau utilisés plus tard que ça soit pour créer une nouvelle plateforme ou reconstruire la plateforme existante.

De plus les configurations réalisées à la main sur les plateformes sont une source inépuisable d’anomalies qui vous prendront de nombreuses heures (cette petite règle iptables perdue lors du reboot de la machine hante encore mes nuits 😭). Donc prenez un peu plus de temps mais faîtes les choses bien, votre futur vous vous remerciera !

Au niveau de l’outillage nécessaire on en distingue trois différents:

  1. Un premier pour décrire votre infrastructure (combien de VM, combien de CPU, de RAM, quel réseau etc.). Pour ce besoin l’outil de référence est Terraform par HashiCorp qui possède un grand nombre de plugin pour tous les providers (AWS, GCE, Azure, VSphere,…)
  2. Si la VM décrite dans Terraform n’existe pas alors celui-ci va la créer et pour créer cette VM un template sera nécessaire. Afin de créer facilement ce template un outil tel Packer (toujours chez HashiCorp) fonctionnera à merveille
  3. Une fois la VM instancié il faudra déployer vos logiciels dessus (un JDK, Tomcat, NodeJs,…), installer votre application et configurer le tout. Pour cela partez sur un outil d’infrastructure as Code à la Puppet ou Ansible. Prenez celui que vous connaissez le mieux, il fera parfaitement l’affaire
  4. Il reste encore la question de « comment livrer mon code source » ? De notre côté nous sommes partis sur le système de package de notre OS (RPM en l’occurence) car c’est une solution standard, éprouvée, qui fonctionne peu importe le langage utilisé et qui est très bien supporté par Ansible ou Puppet

Ou si vous êtes du type aventurier vous pouvez remplacer tout cela par le couple Kubernetes / Docker:

Bien entendu cette solution vient également avec ses challenges comme la supervision des conteneurs, la centralisation des logs, le service discovery. Bref peu importe la solution choisie il y aura du travail !

Trucs et astuces:

A l’issue de cet article nous avons maintenant une plateforme complète : entièrement automatisée, supervisée et dont tout le code source est disponible dans un dépôt sauvegardé. On peut enfin passer à d’autres sujets ! Voici ce qui arrive prochainement :

Stay tuned and See ya !