A5Sys, l'ESN Nantaise | Retour d’expérience sur Microsoft Azure, le monde des micros-services
3411
post-template-default,single,single-post,postid-3411,single-format-standard,ajax_fade,page_not_loaded,,qode-child-theme-ver-1.0.0,qode-theme-ver-13.1.2,qode-theme-bridge,wpb-js-composer js-comp-ver-5.4.5,vc_responsive
 

Retour d’expérience sur Microsoft Azure, le monde des micros-services

Retour d’expérience sur Microsoft Azure, le monde des micros-services

Un nouveau projet démarre, le produit sera une application Web…

Front-end, Back-end, sécurité, stockage, les mots clés classiques reviennent.

Les démarches commencent :

  • Mail aux administrations du système d’information de l’entreprise pour obtenir les accès à une nouvelle machine virtuelle
  • Attente de de la mise à disposition du serveur
  • Installation d’un serveur Web Apache, IIS etc.
  • Mise place d’une base de données MySQL, MSSQL etc.
  • Installations, configurations, maintenances et l’histoire se répète.

 

Et si on changeait de méthode ?

Avec les offres Cloud de plus en plus riches avec les formules IaaS, Paas, Saas, la question se pose de plus en plus souvent : « Suis-je sur la meilleure formule ? »

Et si j’arrêtais de m’astreindre à mon hyperviseur et je passais sur de la virtualisation dans le Cloud.

Et pourquoi pas se passer de la gestion de VM et directement utiliser une plateforme proposant tous les services dont j’ai besoin ?

Et si tout simplement je souscrivais à une solution SaaS pour répondre à mon besoin.

A5sys a tenté l’expérience 100% Cloud. Les appétences de notre équipe étant orientées vers les technologies Microsoft, le choix s’est porté sur Microsoft Azure. L’idée n’est pas pour autant de flagorner Microsoft Azure ou de rudoyer les autres acteurs du milieu. Il s’agit ici de présenter notre retour sur le Cloud avec les bonnes facettes et les moins bonnes.

La promesse de Microsoft avec Azure, c’est de simplifier, de produire efficacement et intelligemment dans un environnement qui se veut souple / flexible / ouvert.

On peut faire du 100% Microsoft Azure ou utiliser uniquement un service ciblé tout en passant par l’hybride concept en vogue permettant de créer des canaux privilégiés entre des infrastructures locales et le Cloud.

Microsoft Azure permet aussi de profiter d’intégration aboutie avec d’autres offres Microsoft, à savoir Office 365, Dynamics, Team Foundation Services etc. Lorsque l’expression de besoin fait apparaître un besoin d’intégration dans ces outils, Microsoft Azure semble gagner en légitimité.

Nous avons choisi l’entrée-plat-dessert, Microsoft Azure à 100%. Afin de se soustraire aux problématiques de maintenance, nous avons opté pour le PaaS avec une plateforme mise à disposition sur laquelle on peut intégrer une myriade de micros-services avec Azure Active Directory en chef d’orchestre.

 

Comment passer sur Microsoft Azure ? 

Pour démarrer sur Microsoft Azure, il faut créer un compte utilisateur. Dès lors, il est possible de commencer à utiliser les services proposés par Microsoft Azure. Certains ont un coût à l’utilisation, d’autres ont un coût au mois, certains combinent les deux facturations.

En mode IaaS, l’utilisateur va pouvoir créer une machine virtuelle puis prendre totalement la main sur son environnement.

Dans le cas d’A5sys, nous avons opté pour la formule PaaS.

La première étape consiste à créer un « Plan App Service ». Ce « Plan App Service » permet de définir le volume de ressources qui pourra être alloué aux applications.

L’offre se présente sous deux axes :

  1. L’axe fonctionnel :

De base, le Plan App Service propose :

  • Les domaines personnalisables, sans quoi, l’url est de la forme *.Microsoft Azurewebsites.net
  • La prise en charge du SSL
  • La possibilité d’avoir plusieurs instances (3 maximum)

Avec l’offre la plus complète, le Plan App Service propose en plus :

  • Des emplacements d’application web intermédiaire. En d’autres termes, il s’agit de « sas de livraison » permettant de tester un livrable. Une fois validée, Microsoft Azure échange l’application web intermédiaire avec l’application web en production sans interruption de service
  • Traffic manager, un équilibreur de charge permettant de répartir le trafic entrant
  • La mise en place de plan de sauvegardes (jusqu’à 50 par jour)
  • Et des seuils de limitation bien plus élevés que dans les versions inférieures pour le nombre d’instances pouvant être mise en place

 

  1. L’axe performance :
  • Avec le choix dans le nombre de cœur CPU, de Go de Ram, d’espace de stockage et de performance de disque dur (dans les plus hautes gammes).

 

Quelle formule choisir sur Microsoft Azure ?

Il est pertinent de partir sur l’entrée de gamme en début de développement. À tout moment, il est possible de modifier les ressources et le nouveau de fonctionnalités souhaités. La mise en service du changement souhaitée est quasi instantanée.

Dès lors que le Plan App Service est en place, il devient possible de créer des applications Web qui utiliseront les ressources du plan pour fonctionner.

Les applications Web se présentent comme des services permettant d’héberger différentes technologies Web (php, .net, java…).

A travers l’interface, on retrouve les notions d’authentification, de sauvegarde, de certificats SSL, de tâches webs (job s’exécutant à intervalle régulier) etc. Ici le développeur ne soucie pas du paramétrage du conteneur (apache, IIS, kestrel, c’est l’affaire de Microsoft Azure), il se soucie uniquement du paramétrage de son application.

 

Et pour mes bases de données ?

Avec une application vient souvent le besoin de stockage de données. Là aussi, il va falloir créer un nouveau service. On retrouve ainsi les bases de données Microsoft Sql Server, MySql, Cosmos, PostreSQL. La démarche reste sensiblement la même. L’utilisateur définit le niveau de performance souhaité puis créé sa base de données. En quelques minutes, la base de données est prête à l’emploi.

Dans les options, il est possible de définir les IP autorisées à accéder aux données, de définir des instances, du chiffrement de données, des plans de sauvegardes… le tout en s’affranchissant de toute technique.

Pour le stockage des images, des vidéos et fichiers, pour le stockage de données en vrac dans des tables ou pour de la gestion de files d’attentes, Microsoft Azure propose le service « Compte de stockage ».

Celui-ci permet de créer des conteneurs pour des blobs, des fichiers, des tables, des files d’attentes. Ces conteneurs intègrent des fonctionnalités telles que le CDN, sécurisation, la recherche, le déclenchement d’évènements pour les files d’attentes…

  • Le CDN permet d’améliorer l’expérience utilisateur en optimisant l’utilisation de la bande passante et en automatisant certains traitements (réduction du poids des images, redimensionnement). Microsoft Azure s’appuie sur les fournisseurs Akamaï et Verizon.
  • Les données stockées peuvent être sécurisés via des token qui doivent être fournis lors de la requête.
  • La recherche permet d’indexer et de rechercher des fichiers. L’interface permet de mettre en place rapidement un indexeur, il faudra pour autant utiliser l’Api REST Microsoft Azure pour les paramétrages avancés. De même pour la restitution des résultats, on s’appuie aussi sur des appels REST pour requêter l’indexeur et retourner les résultats à l’utilisateur.

 

Comment gérer les utilisateurs de l’application ?

Les applications ont souvent besoin d’authentification. Avec l’Azure Active Directory, Microsoft Azure permet de gérer l’authentification, l’identité, les rôles, les informations des utilisateurs dans l’application. L’authentification repose sur le formulaire de connexion natif Microsoft Azure. Toutes les informations sont ensuite exploitables avec l’API REST Microsoft Graph. Azure A.D permet aussi de gérer les autorisations entre applications.

Ainsi dans le cas typique d’une application Web qui appelle une Api Web, Microsoft Azure permet de sécuriser les échanges et d’assurer à chaque partie l’identité de l’appelant.

Et pour aller plus loin, Microsoft Azure offre plus de 100 services dans son catalogue.

Parmi ceux-ci, nous pouvons citer :

  • Le coffre de clé. Toutes les données à caractère confidentiel ne doivent jamais être dans le code source. Pour autant, le développeur cède vite à la facilité face à peu d’alternatives qui s’offre à lui. Avec le coffre de clé, toutes les données sensibles sont centralisées et par le biais d’une ApiKey, le développeur va pouvoir requêter le coffre de clé pour récupérer son paramétrage. Cette centralisation permet aussi de partager les données entre les différents membres de l’équipe sans les exposer inutilement.
  • Le cache Redis. Sur Microsoft Azure, il est possible de créer des « relations » entre les applications Web. Lorsque je me connecte à mon site Web, celui-ci m’informe que pour fonctionner, il a besoin d’échanger avec une API tierce, avec Microsoft Graph. Le tout repose sur de échanges de token JWT et des protocoles comme Oauth2 ou Open ID Connect. Dans de tel contexte, il est nécessaire de mettre en place un système de cache afin de ne pas requêter de façon répétitive et inutile Microsoft Azure pour lui demander l’accès à une ressource.

Grâce à l’implémentation de Middleware s’appuyant sur le cache redis, ces appels vers Microsoft Azure sont limités et les temps de réponses entre les applications Web est amélioré tout en conservant une sécurité robuste.

  • Les Function App. Ce service permet de délocaliser un traitement dans une fonction et d’être en capacité de déclencher ce traitement via différents canaux. Ce service est particulièrement adapté pour des traitements réguliers, pour des purges de données, pour des webhooks d’API. Les langages actuellement supportées nativement sont le C#, le JavaScript, le F# et le Java.

L’utilisateur développe son traitement et le service Function App se charge de l’encapsuler en fournissant un minuteur, des déclencheurs, des url pour déclencher le traitement.

Récapitulons, voici à quoi pourrait ressembler une architecture standard utilisant les services décrits précédemment :

Comme mentionné en préambule, Microsoft Azure prend du sens lorsqu’il est couplé avec d’autres outils de l’écosystème Microsoft. C’est notamment le cas quand il est associé avec Team Foundation Service Online, le gestionnaire de code source.

En quelques clics, Microsoft Azure propose de faire de l’intégration continue du code source archivé sur TFS vers application Web. Ainsi, à chaque archivage sur la branche de développement, TFS compile et publie sur l’application Web Microsoft Azure les sources applicatives tout en gérant des tâches annexes tel que la gestion de dépendance avec Nuget, l’exécution de tests unitaires avec XUnit etc.

 

Conclusion

Microsoft Azure facilite vraiment la vie du développeur. La mise en place éclair des services est très appréciable. La documentation très complète et la communauté active sont aussi des points positifs. On ne peut pas pour autant omettre quelques regrets :

  • La facturation alias la grande nébuleuse. Même s’il existe des simulateurs, il n’est pas évident de se projeter et de prévoir les coûts réels en production. Lorsqu’on multiple les micros-services avec de la facturation à l’utilisation, deviner le coût final relève de la divination.
  • Les Api sont encore assez jeunes et les versions tendent à se multiplier.

« Breaking Change », fonctionnalités retirées, portail totalement remodelé, Microsoft Azure est en constante mutation. C’est louable et parfois salutaire tant les fonctionnalités annoncées semblent intéressantes mais ce n’est pas un gage de stabilité à tout épreuve pour les développeurs qui devront inlassablement s’adapter.

 

Être dépendant de la road map Microsoft et la politique tarifaire Microsoft Azure semblent être le prix à payer pour profiter d’un Cloud azuréen efficace.