VT2019 Microclimate Codewind

Microclimate (https://microclimate.dev/) est un environnement de développement dockerisé permettant la conception et le déploiement d'application de divers types en Java, Node.js et Swift.



L'évolution de Microclimate se nomme Codewind, fourni via le projet open source Eclipse Codewind (https://www.eclipse.org/codewind/).

Codewind regroupe les mêmes fonctionnalités que Microclimate mais au lieu d'utiliser un IDE web, Codewind se matérialise sous la forme d'une extension pour des IDE classiques (Eclipse, VSCode).



=Abstract= Microclimate is a fully dockerized web-based IDE. It allows users to develop applications using several languages (among Java, Node.js, Python, Go and Swift) while reducing the time between code and execution. It also manages end to end deployment and testing. Deployed applications performances are monitored and users can access them at any time along with the logs.

=Synthèse=

Microclimate
Microclimate est un outil de développement gratuit fourni par IBM facilitant la création, le déploiement, et le test d'applications de divers types.

Plusieurs fonctionnalités fournies par Microclimate font la spécificité de cet outil :


 * Complètement intégré dans un conteneur Docker
 * Support de plusieurs langages de programmation et leurs combinaisons
 * Choix de l'IDE
 * Dès la création de l'application, cette dernière tourne dans Docker
 * Rapide boucle de développement interne
 * Pipeline de déploiement intégré
 * Métriques de performances intégrées

Codewind
Codewind correspond à l'évolution de Microclimate fourni par le projet open source Eclipse Codewind.

Codewind intègre toutes les fonctionnalités précédemment citées pour Microclimate, la différence fondamentale se trouve dans le fait que Codewind se matérialise sous la forme d'une extension pour les IDE standards comme VSCode et Eclipse.

Microclimate
Pour créer un nouveau projet sur la page d'accueil de Microclimate il suffit de cliquer sur le bouton "New Project". Il faut ensuite sélectionner le langage du projet. Il est également possible de créer ce projet dans le même temps sous GitHub.



Cet outil est ensuite très bien documenté et propose de nombreux tutoriels pour démarrer un projet en utilisant toutes les fonctionnalités détaillées par la suite :

https://microclimate.dev/usingmicroclimate#doc

Codewind
De même que pour Microclimate, Codewind est très bien documenté et propose un tutoriel complet pour l'utilisation de Codewind pour Eclipse, VSCode ainsi que Eclipse Che :

https://www.eclipse.org/codewind/gettingstarted.html

Support et combinaison de plusieurs langages
Microclimate permet l'écriture de plusieurs micro services dans des langages différents en vue de les assembler pour former une seule application par la suite. Cela permet d'être très flexible et de choisir à chaque fois le langage adapté au micro service que l'on veut développer.

De plus, l'interface intègre une gestion des différents langages gérés (Java, Node, Swift, Go et Python) ainsi que des templates de codes pour chacun de ses langages, afin de fournir toutes les informations et l'assistance nécessaire au codage avec ces langages. La gestion simultanée des différents langages utilisés est gérée par LSP (Language Server Protocol), permettant l'auto-completion, l'accès aux définitions et références, etc... pour chaque langage.



Complètement intégré dans un conteneur Docker
Microclimate existe entièrement à l'intérieure d'une image Docker. Cela permet un développement polyglotte décris par la suite. En effet, lorsqu'un langage est sélectionné, il est directement téléchargé avec les paquets spécifiques à ce langage (Java JDK, Maven, par exemple). Cette fonctionnalité est supportée pour tous les langages précisés précédemment.

Choix de l'IDE
Microclimate fourni un IDE web basé sur le projet open-source Eclipse Theia, cet éditeur de code permet de directement modifier le code sur l'environnement web de Microclimate en intégrant toutes les fonctionnalités classiques d'un éditeur de code. Néanmoins, le code généré ou importé dans Microclimate est également accessible en dehors de Microclimate et peut être facilement importé dans l'éditeur de code voulu (Eclipse, VSCode, autre...), tout en bénéficiant tout de même des autres spécificités de Microclimate.



Application tournant dans Docker dès sa création
Lors de la création ou l'importation d'un projet, un Dockerfile est automatiquement créée et configuré pour ce projet en vue de gérer le cycle de vie de cette application. Cela permet de rendre la construction, l'exécution, et le déploiement de l'application le plus rapide possible.

Rapide boucle de développement interne
La boucle de développement interne correspond à l'enchaînement des quatres étapes suivantes : code, build, déploiement, exécution. Plus cette dernière est rapide, plus le développement d'une application sera productif. Sous Microclimate et Codewind, cette dernière a été pensée pour être le plus rapide possible afin d'éviter les temps d'attente importants que représentent généralement les étapes du build et du déploiement.

Pipeline de déploiement intégré
Microclimate intègre un pipeline de déploiement entre un micro service créée et le serveur Kubernetes IBM Cloud choisi, ce pipeline se base sur Jenkins (https://jenkins.io/doc/book/pipeline/) pour Microclimate et sur Tekton pour Codewind (https://tekton.dev/). Cela permet de facilement déployer notre application sur IBM Cloud, IBM Kubernetes Service ou encore OpenShift. Une fois ce déploiement réalisé, tous les commits réalisés sur le projet déclencheront un build qui sera ensuite conditionné dans une image Docker qui sera téléchargée sur le registre d'image Docker voulu. Il est possible de voir l'évolution de ces différentes étapes sur les interfaces utilisateurs d'IBM Cloud Private, d'IBM Kubernetes Service ou d'OpenShift comme nous pouvons voir ci-dessous.



Métriques de performances intégrées
Chaque application créée avec Microclimate dispose d'un suivi de performances qui inclut l'utilisation CPU, les informations sur les requêtes HTTP (nombre d'entrées, débit,...) ainsi que divers informations concernant la mémoire. Il y a également un détail pour chaque point de terminaison, et la possibilité de lancer des tests de performance personnalisés.



Outil OpenAPI
Codewind propose également une extension nommée "Codewind OpenAPI" qui permet d'utiliser un générateur OpenAPI pour créer des API clients, des server stubs, ainsi que de la documentation HTML pour ces API.

Microclimate

 * Microclimate est officiellement, depuis le 1er Décembre, obsolète. Il n'est donc plus mis à jour régulièrement. De plus, si vous tentez de créer une application avec Microclimate et de la déployer sur IBM Cloud, cela ne fonctionnera pas, le cloud IBM ne prend plus en compte les nouveaux projets Microclimate. Cependant les anciens projets fonctionneront toujours.


 * Même s'il est possible d'exporter le projet sous un autre IDE que l'IDE web fourni par Microclimate, cela nécessite plusieurs commandes dont un Docker bind mount. Cela nécessite donc une étape supplémentaire et peut être un obstacle pour certains utilisateurs.

Codewind & Microclimate

 * Lors du déploiement d'une application, il n'est possible de déployer que sur IBM Cloud (Microclimate & Codewind) et sur OpenShift (Codewind).
 * Ces deux outils ne proposent que 5 langages, même si ces-derniers sont les langages les plus utilisés, pour certains projet nécessitant un langage non pris en compte cela peut poser problème.

=Démonstration= [ Démonstration ]

=Sources=
 * : Description des spécificités de Microclimate.
 * : Site web officiel de Microclimate regroupant une rapide description ainsi que des tutoriels.
 * : Site web officiel de Codewind regroupant une rapide description ainsi que des tutoriels.
 * : Description d'un cycle de développement interne classique avec Docker.
 * : Description LSP

=Veille Technologique 2019=
 * Année : VT2019
 * Sujet : Microclimate, Codewind
 * Slides :
 * Démonstration : Démonstration
 * Auteurs : Loic Schanen,  Antoine Pelisson