116px-gartoon-gedit-icon11.png Dans l’article précédent nous nous demandions quelle est la meilleure configuration pour un serveur web hébergé chez OVH sur un serveur Kimsufi ? C’est une question que l’on peut rencontrer souvent sur les forums d’OVH (entre autre). webofmars vous propose une série d’articles pour y répondre. Cet article se veut collaboratif, postez vos commentaires et idées dans les commentaires ci-dessous, nous les intégrerons et proposeront à la fin une configuration globale (sur github par exemple) pour pouvoir déployer un serveur rapidement. La question ce pose en terme de solutions mais aussi en terme de fichiers de configuration. L’OS de référence est une debian wheezy (7.0) mais le contenu est surement adaptable à une autre distribution assez facilement. Les bases étant maintenant posées, il est temps de retrousser les manches et les ourlets de pantalons nous attaquer de pleins pieds au sujet ! Aujourd’hui intéressons nous à docker !  

Les solutions logicielles sur un kimsufi (partie 6)

Le cas des containers

Très à la mode en ce moment, les containers et leurs système d’abstraction sont un moyen d’utiliser votre serveur pour héberger différentes applications sans vous soucier des différences de configuration ou de dépendances de ces applications. On peut faire l’analogie avec la virtualisation, bien que l’overhead induit est bien plus faible car l’OS n’est pas dupliqué en entier mais seulement les couches qui différent. On parle alors de para-virtualisation. Le démarrage est beaucoup plus rapide mais l’isolation entre les différents processus beaucoup moins grande. Un autre avantage est aussi que cela vous donne une indépendance totale vis à vis du serveur physique et permet de redéployer des applications de manière assez facile en cas d’évolution de votre plateforme ou de migration. L’exemple le plus connu est certainement Docker bien qu’il en existe quelques autres (Kubernetes par Google notamment) sur lesquels je ne m’étendrai pas içi. Docker est très en vogue en ce moment et en passe de devenir un standard de ce type de solutions.

Quels avantages ?

Les avantages sont nombreux :

  • Indépendance vis à vis de la plateforme sur laquelle vous tournez. Vous pouvez migrer directement votre hébergement OVH chez un autre hébergeur sans avoir tout à réinstaller et configurer, voire prendre plusieurs serveurs si votre activité s’étend par la suite.
  • Isolation : au lieu de tout faire tourner sur la même machine vous lancez plusieurs “serveurs” différents (en fait un processus unique) qui ne se connaissent pas entre eux. Résultat: votre blog ne sait même pas que votre CV en ligne existe et les configurations spécifiques faites pour l’un n’affécte pas le 2ème. Une attaque sur l’un ne ciblera pas le second.
  • Vous pouvez décrire une infrastructure sous la forme d’un trés léger dockerfile qui sera livré avec le code de votre application. Sensiblement comme vous le faite avec un fichier vagrant par exemple. Pour un admin système, il comprendra tout de suite les implications entre les différentes machines aussi clairement que sur un schéma.

Des inconvénients ?

Si docker présente de nombreux avantages, il existe bien sûr quelques inconvénients. Pour commencer il va vous falloir apprendre une nouvelle technique avec son jargon, ses spécificités, ses bugs etc … Ensuite comme je l’ai mentionné plus haut, l’isolation est plus forte avec une solution de virtualisation. Dans notre cas nous passons d’un serveur “fourre tout” où toute sortes de solutions sont installés dessus à un serveur dockerisé. L’isolation s’en trouve donc amélioré et nous n’avons pas de secrets niveau défense nationale (si c’est le cas svp ne suivez pas mon tutoriel). C’est donc un inconvénient mineur, voir un raccourci vers une meilleure sécurité.

Conclusion sur les containers

Mon conseil dans le cadre qui nous occupe est de rester cohérent et organiser. Non vous ne voulez pas migrer de suiute tous vos sites & apps sous docker. Si vous commencez un nouveau projet avec un nouveau serveur mettez le directement sur docker et travaillez sur cet axe. Sinon planifiez votre migration, commencez à installer docker puis aller y site par site si les avantages vous sembles utiles pour vous et que vous êtes prêt à sauter le pas.   Dans le prochain article nous allons mettre tout cela en bon et attendu code au sein d’un repo github !