Accueil Nos publications Blog Windows Azure : Un PaaS pour vos applications Java

Windows Azure : Un PaaS pour vos applications Java

windowsazure_logo

Soat étant une société de services à la fois orientée Java et .Net, comme on peut le voir sur le blog, je me suis dit que j’allais écrire un article, ou plutôt plusieurs, sur Windows Azure et les environnements non Microsoft. C’est donc tout naturellement que je commence par les outils pour le monde Java

Par ailleurs, sur Windows Azure, vous n’êtes pas limité à .Net ou Java comme technologies, c’est aussi possible de faire du PHP, du Ruby, du Python, et bien entendu du Node.js pour tout ce qui est en rapport avec le PaaS (Platform As A Service), mais même au niveau du IaaS (Infrastructure As A Service) on parle d’un environnement ouvert, c’est à dire qu’il est possible d’avoir du Linux, avec des versions “prépackagées” tel que Ubuntu, CentOS, OpenSuse. Je ne le dirais jamais assez, mais Windows Azure est le fer de lance de Microsoft pour tout ce qui concerne l’OpenSource.

Un petit peu d’histoire

La volonté de faire de Windows Azure une plateforme ouverte ne date pas d’hier chez Microsoft, depuis juin 2012 le slogan de la plateforme est “Flexible, Open, Rock Solid“. Cependant il existe un SDK pour Java depuis bien plus longtemps, je n’ai pas sa date précise de sortie, mais on en parlait déjà en novembre 2009 comme l’atteste un article de Thomas Conté, évangéliste Azure chez Microsoft. Donc, encore une fonctionnalité méconnue d’Azure, enfin plutôt une ouverture d’esprit qui peut ne pas paraître visible mais qui est pourtant largement mis en avant via les différentes actions de Microsoft que ce soit la tournée du Windows Azure Open Source Summit, de la présence de Windows Azure dans le dernier salon Linux, la contribution de Microsoft dans le noyau linux pour un meilleur support d’Hyper-V et pleins d’initiatives de ce genre qui ont entre autre pour but de ne pas enfermer Windows Azure dans un monde trop dotnetisé. Et plus récemment, Microsoft a annoncé un partenariat avec Oracle, pour que ces derniers valides le bon fonctionnement de leurs produits sur la plateforme Windows Azure, il sera donc sûrement bientôt possible de voir des VM IAAS avec du Oracle préinstallé comme c’est le cas pour SQL Server. Si vous avez raté la news, vous pouvez la retrouver ici

Des outils, à jour!

Bon, je dis à jour, mais bien entendu le SDK pour .Net sort toujours avant celui pour Java (;p), mais ce dernier est disponible par la suite dans un laps de temps tout à fait honorable. Toutefois, si vous voulez absolument utiliser les toutes dernières nouveautés, sachez que tout est disponible via des API REST.

Sur Windows, des outils pour Eclipse

Les outils Azure sur cet IDE ne sont compatibles que pour Windows puisqu’il se base sur le Windows Azure SDK pour .Net qui embarque les outils comme l’émulateur qui est utile pour travailler en mode PAAS en local. Pour les installer, il faut donc aller dans Eclipse > Help > Install New Software puis il faut ajouter l’url : https://dl.msopentech.com/eclipse afin de télécharger le SDK Azure, comme on peut le voir ci-dessous.

dl open tech

Après avoir installé ce SDK, et redémarré Eclipse, vous pouvez maintenant vous lancer dans Windows Azure, déjà avec un projet simple, “Hello Azure” pour faire dans l’originalité. Il vous faut donc créer un projet de type “Dynamic Web Project” et simplement créer une page jsp qui affiche “Hello from Azure”, le principe n’est pas de faire compliqué ici, mais de montrer qu’il est facilement possible de déployer cela sur la plateforme Cloud de Microsoft.

Maintenant que l’étape facile est réalisée, il vous faut créer un projet de déploiement pour votre solution, dans notre cas, il suffit de faire un clic droit sur notre Dynamic Web Project puis Windows Azure > Package for Windows Azure… ce qui parait logique, puisque nous voulons déployer notre application Java. Nous allons donc nommer notre projet, puis il faut renseigner le JDK et le Server à utiliser.

Nous allons donc commencer par le JDK, comme on peut le voir dans l’image ci-dessous, il y a plusieurs options possibles pour fournir ce dernier.

Eclipse-JDK-Azure-Deployment

Les deux options sont donc les suivantes :

  • Deploy my local JDK : cette option ajoute le JDK dans un blob sur Windows Azure, qui est comparable à un stockage de fichier, cela vous permet donc de l’upload une fois dans Windows Azure, et d’avoir un package assez light lorsque vous voulez le mettre à jour. Bien entendu attention à ne pas supprimer ce JDK de votre blob storage par la suite.
  • Deploy a JDK from the custom download location : cette option télécharge le JDK depuis une source externe, ce qui peut être pas mal si vous maintenez cette source.

Pour ma part, j’ai choisi la première option, puisque c’est la plus simple à mettre en place dans mon cas, et que je n’ai pas besoin d’un JDK spécifique.

Et maintenant, passons au Server, vous savez surement mieux que moi que pour une application Java, il existe plusieurs serveurs web disponibles, contrairement à la plateforme Microsoft, où on est limité à IIS.

Eclipse-Server-Azure-Deployment

Et cette fois-ci, on a aussi le choix, car il y a du Tomcat 6/7, du Glassfish, du JBoss 6/7, et du Jetty 7/8, pour ma part j’ai choisi Jetty, et nous retrouvons les mêmes options que pour la gestion du jdk.

Donc ça y est vous avez créé votre premier projet de déploiement pour Windows Azure, maintenant voyons ce qu’il comporte :

workerrole

    • Un worker role : il s’agit d’un des deux rôles disponibles pour le PAAS historique de Windows Azure, l’autre étant un Web Role, il contient IIS, or nous n’en avons pas besoin, puisque nous avons notre propre serveur Web.
  • Un fichier ServiceDefinition.csdef : Ce fichier existe dans tous les packages Azure, il donne la définition de votre package, il va donc lister tous les rôles présents, les différents modules qu’on importe dans la solution, les ports des machines qui sont ouverts, les tâches de démarrage de la machine virtuelle qui doivent être exécutées avant que celle ci ne soit mise dans la VIP. Et plein d’autres choses possibles, mais ce qu’il faut retenir c’est que c’est lui qui pilote le bon fonctionnement de votre service Cloud. A noter qu’il est possible de modifier ce fichier facilement via des interfaces en faisant un clic droit sur votre WorkerRole, puis WindowsAzure et choisir l’option que vous voulez mettre en place.
  • Un fichier ServiceConfiguration.cscfg qui va de pair avec le fichier ServiceDefinition, sauf que celui-ci configure vos différentes machines. Par exemple, si vous avez mis en place un module RemoteAccess dans votre fichier de définition, ici on retrouvera les paramètres associés comme le nom de l’utilisateur, le mot de passe encrypté, et la date d’expiration du compte.
  • Le fichier package.xml celui-ci comporte la définition de votre package qui sera généré par Eclipse avant qu’il ne soit publié, ainsi dedans vous allez retrouver toutes les informations que l’on a saisies précédemment. A noter que ce fichier est fortement commenté, ce n’est donc pas une boite noire, comme on pourrait s’y attendre.
  • Et dans le dossier approot, il y a plusieurs scripts que ce soit des bash Windows, des scripts vb, ou des librairies .Net qui sont utilisés pour la bonne génération du package. Par exemple la librairie Microsoft.WindowsAzure.Storage.dll permet d’uploader votre JDK et votre Server directement dans Azure si vous avez choisi les mêmes options que moi lors de votre configuration.

Ainsi, lorsque vous déployez que ce soit sur Azure, ou en local, il va vous générer un package, que vous pouvez retrouver dans le dossier deploy qui va contenir votre ServiceConfiguration.cscfg, et un WindowsAzurePackage.cspkg qui contient le package de déploiement à fournir à la plateforme.

Après la création de votre projet Azure, il est soit possible de le lancer en local avec l’émulateur du SDK .Net, soit il est possible de le publier sur Azure en faisant un clic droit sur votre CloudService, puis Deploy to Windows Azure Cloud

Les utilisateurs de cloudbees chez Soat auront noté quelques manques par rapport à leur PaaS préféré comme :

  • Pas de Jdk pré-installé
  • Tomcat et Jboss non disponible par défaut
  • Environnement Windows pour une émulation locale

Avec le récent partenariat historique entre Oracle et Microsoft et l’arrivé du français Patrick Chanezon dans les équipes Azure, il sera intéressant d’observer les nouvelles fonctionnalités d’Azure dédiées à l’écosystème Java. Dans le cadre de ce partenariat, nous avons déjà vu apparaître des nouveaux templates IaaS fournit par Oracle avec leurs outils préinstallés.

Sans oublié que OpenJDK sera bientôt supporté par Windows Azure (https://www.developpez.com/actu/58964/OpenJDK-bientot-present-sur-Windows-Azure-Microsoft-travaille-sur-une-implementation-open-source-de-Java-as-a-Service/)

En conclusion

Windows Azure est disponible pour Eclipse sous Windows, et il est assez simple à mettre en place, de plus les outils sont aussi complets que pour Visual Studio. Nous verrons aussi les outils plus orientés OpenSource qui gravitent autour de Windows Azure comme l’intégration de Git au sein de la plateforme, ou bien l’utilisation de langages autre que ceux de la plateforme .Net.

N’oubliez pas que vous pouvez suivre toute l’actualité de Windows Azure sur le blog de Soat, grâce à ce lien