Il y a essentiellement deux raisons pour tester les conteneurs :
- Faciliter la réplication locale de l'environnement distant. Je suis sur une vieille CentOS 6 sur le VPS, et j'ai au moins 3 ou 4 versions de pgsql qui sont installées, avec des fichiers de configuration un peu partout pour "basculer" de l'un à l'autre, etc. et ça devient un peu chiant de se souvenir qu'est-ce qui est utile ou pas
Avec des conteneurs, j'ai essentiellement besoin de Vagrant, Ansible et le reste devrait être "pratiquement automatique" pour tester localement et avoir localement le même environnement que l'environnement de prod.
- La seconde, c'est de faciliter la mise à jour des composants individuels. Par exemple, je suis toujours coincé avec Python 3.4 sur le serveur, ce qui m'empêche de migrer vers une version plus récente de Django. Sachant que les versions plus récentes de Django nécessitent aussi une version plus récente de Postgresql, je suis un peu "coincé" pour l'instant, et j'ai vraiment la flemme d'essayer d'upgrader "manuellement" tout ça, sans savoir si ça va encore marcher sans que j'y perde la moitié de la journée.
Si je peux répliquer localement l'environnement, les tests sont plus simples à effectuer, et essentiellement, je dois juste re-créer l'image distante "clone" de l'image locale, et le tour est "joué" (je suis sûr que ça ne marchera pas aussi bien, mais bon
).
Après, il y a aussi le coté "fun" et aussi l'aspect professionnel : je milite depuis longtemps pour que la recherche scientifique soit "réplicable" quand elle fait appel à du code. Actuellement, vu que 99% de mon code est en Python, je fournis juste de quoi répliquer l'environnement logiciel Python. Mais de plus en plus, j'ai besoin de "petites choses" en dehors de Python, et ça faciliterait les choses si je pouvais juste fournir un Vagrantfile pour recréer l'environnement de réplication de mes analyses (accessoirement, il devrait m'être possible de faire l'un ou l'autre papier afin de présenter un workflow "garantissant" la réplication des analyses) !
La solution à base d'Ansible uniquement est pas mal pour le déploiement (et je peux "cloner" ce déploiement localement dans un conteneur ou un VM au besoin), mais y a toujours un moment où sur le serveur, tu lances une commande et tu oublies de la rajouter dans le provisionning
Un autre aspect intéressant des conteneurs ici est que je peux quasiment installer "tout" dans des conteneurs individuels, sans me soucier de la configuration ou de la sécurité (par ex, pas besoin de préciser un password pour pgsql si le conteneur n'est accessible que localement). Je me trompe peut-être, n'ayant pas beaucoup de connaissances dans ce domaine :)
Enfin, pour la question à proposer d'Amazon RDS ou du cloud en général, je préfère éviter "d'externaliser" des services (surtout quand on peut les héberger soi-même, c'est pas comme si Lexpage et le reste était gourmand en ressources). Ca me permet aussi de maintenir une certaine "veille technologique" que je n'aurai pas forcément si j'externalise les services (mais le coup des conteneurs me permettrait de facilement switcher d'un service interne à un externe, ou inversément, je pense ?).