ThoughtWorks a récemment rendu open source le code source de son outil de livraison continue (Continuous Delivery), appelé Go. Il tire ses origines de CruiseControl et permet de concevoir des pipelines de processus qui couvrent tout le processus de développement d’applications : intégration continue (CI), environnement de tests et déploiement.
Les sources de Go sont disponibles sur le compte github. Les développeurs peuvent également télécharger les binaires du serveur et de l’agent, qui sont disponibles pour mac OS X, Linux, Solaris ou comme un jar Java.
InfoQ a pu échanger avec Ken Mugrage, le Manager des programmes Open Source a ThoughtWorks Studios, afin qu’il explique un peu plus leur stratégie au sujet de Go.
InfoQ : Qu’est ce qui rend Go attractif ?
Go modélise un processus de build / test / déploiement dans un concept que l’on appelle pipeline. Comme Go a été construit pour être un outil de livraison continue, ce concept est le coeur du produit. Avoir le concept de pipeline comme unique point de modélisation et disposer d’un manager de dépendances qui fonctionne, permet de modéliser simplement les procédures (workflows) les plus complexes. De nombreux autres produits ont essayé d’offrir la même fonctionnalité mais c’est souvent un vernis ou un plugin qui permet d’avoir le concept de pipeline.
InfoQ : Dites-nous en un peu plus sur l’histoire de Go.
Go a été créé dans un premier temps en 2007, comme un produit commercial du nom de Cruise. L’équipe qui l’a créé a rapidement réalisé que l’architecture des solutions d’intégration continue déjà existantes ne permettaient pas d’implémenter, de la manière dont on le souhaitait, les procédures à travers un réseau de builds, tests et déploiements. Cela nous a amené à la décision de créer un produit commercial entièrement nouveau. Au fur et à mesure des livraisons, le produit a grossi en matière de fonctionnalités mais aussi par son habilité à supporter le démarrage d’une large suite de tests d’acceptance à travers tout un réseau, et ce, en laissant la capacité de voire quels tests échouaient et depuis quelle version du code (check-in) ils cassaient. Go est pour l’instant le seul produit à avoir cette capacité.
InfoQ : pourquoi avez-vous rendu le code de Go open source ?
En un mot, nous sommes arrivés à la conclusion que c’était la bonne chose à faire. Un des principaux rôles de ThoughtWorks est de promouvoir des pratiques techniques solides. En effet une de nos trois lignes directrices (que nous appelons piliers) est « Représenter l’excellence du logiciel et révolutionner l’industrie de l’IT ». Rendre Go open source est un moyen de promouvoir de solides pratiques de livraison continue.
De plus en plus, l’industrie attend que tout logiciel qui fait partie d’une plateforme ou d’une infrastructure soit OSS. Il y a différentes raisons, des attentes de haute sécurité et de robustesse, l’habilité à pouvoir y contribuer, élargir la communauté de Go, et, franchement, le prix joue.
Go est une grosse partie du centre de données de nos clients, ainsi de nombreuses personnes le considèrent comme un élément d’infrastructure. En effet, nos clients utilisent Go pour orchestrer tous leurs builds et le cycle de vie de déploiement de toutes leurs applications.
InfoQ : Quels autres outils ont besoin d’être intégrés à Go pour avoir un pipeline de déploiement, complet et automatisé ?
C’est une question un peu difficile. Go lui-même n’a besoin d’aucun autre outil pour fonctionner, cela dépend uniquement des cycles de build, et des déploiements de l’utilisateur. Go orchestre les multiples parties impliquées dans la promotion de logiciel, de la composition du code à l’environnement de production. Go surveille les changements d’un système de contrôle de version ou d’un gestionnaire de paquets. Quand il observe des changements, il lance les outils requis par votre cycle de build, test et déploiement. Cela inclut les outils de management de build comme Apache Ant, Apache maven ou MSBuild de Microsoft ; les outils de tests automatisés comme Selenium, Twist, Cucumber ; les outils de management d’infrastructure comme Chef et Puppet, et bien d’autres outils encore. Go peut exécuter n’importe quel outil que vous utilisez depuis un terminal.
InfoQ : Allez-vous continuer de développer une version commerciale de Go ? Allez-vous continuer de fournir du support ?
Il y aura des ajouts commerciaux et du support professionnel pour Go. Les ajouts seront déterminés en fonction de la demande. En tout cas, nous avons déjà prévu d’offrir la capacité à se connecter à une base de données externe pour les très larges déploiements, ce qui permettra de gagner en performance. J’ai eu le plaisir de discuter avec la plupart de nos clients au sujet de notre nouveau modèle, et je suis heureux de vous dire que, sans exception, ils en sont très contents.
Alors que Go est un outil de livraison continue qui peut être installé en local ou dans le cloud, ThoughtWorks offre une autre solution de livraison continue appelée Snap, une solution hébergée. Tandis que Go peut être déployé pour automatiser les processus de livraison continue sur plusieurs centaines de machines, Snap a été conçu comme un outil plus léger qui correspond « à des applications avec un besoin de déploiements plus simples » nous a dit Badrinath Janakiraman, Product Owner de Snap. Il a ajouté que cela ne voulait pas dire « une application plus simple, mais un modèle de test et de déploiement plus simple ».
Snap permet l’intégration continue pour des projets en Java, Ruby, Python, Javascript & Node.js. Il supporte de nombreuses bases de données comme Sqlite3, PostgreSQL, MySQL, Redis, CouchDB et MongoDB ; permet de faire des tests grâce à Capybara, Selenium, PhantomJS et est capable de déployer sur Heroku ou AWS. D’autres configurations de build, tests et déploiement peuvent être supportées sur demande.