Pourquoi utiliser Microsoft Azure ?
Avec Microsoft Azure, la plateforme de Cloud de Microsoft, les entreprises ont à leur disposition une solution complète pour gérer efficacement tout ou partie de leurs opérations informatiques : serveurs, stockage, bases de données, réseaux, statistiques et bien plus encore. Que ce soit pour la création, le déploiement ou la gestion d’applications, Azure offre une gamme étendue de services personnalisables qui permet aux entreprises de s’adapter à un environnement en constante évolution.
En effet, le développeur et l’architecte d’aujourd’hui doivent absolument penser leur code et architecture logicielle en intégrant une capacité à monter en charge, en tenant compte du fait que l’environnement d’exécution sera réparti, pourra être dynamique ou statique, et en intégrant souvent des concepts tels que le multi-tenant.
La gamme complète des services Microsoft Azure couvre, de fait, bien plus que la simple relocalisation de serveurs sur site vers le cloud.
Il est possible de sélectionner uniquement les services d’Azure nécessaires à vos activités commerciales, à savoir la création, le déploiement et la gestion d’applications.
La création d’applications dans Microsoft Azure
Pour créer ou utiliser un abonnement Azure, vous devez disposer d’un compte Azure c’est à dire une identité dans Azure AD ou dans un répertoire, telle qu’une organisation professionnelle approuvée par Azure AD.
Outre des identités de compte Azure individuelles ‘utilisateurs’, vous pouvez définir des groupes dans Azure AD. La création de groupes d’utilisateurs est un bon moyen de gérer l’accès aux ressources dans un abonnement à l’aide du contrôle d’accès en fonction de rôles (RBAC).
Azure Active Directory (Azure AD) est un service Microsoft multilocataire basé sur le cloud qui gère les identités et les accès. Vous pouvez :
- ajouter l’authentification unique (SSO) à vos applications en les intégrant à Azure AD
- accéder aux propriétés de l’annuaire à l’aide de l’API Microsoft Graph
- exploiter la prise en charge par Azure AD de l’infrastructure d’autorisation OAuth2.0 et la connexion OpenID Connect en utilisant ses points de terminaison HTTP/REST natifs et les bibliothèques d’authentification Azure AD multiplateformes..
En hébergeant vos applications dans Azure, vous pouvez commencer à petite échelle et faire évoluer aisément vos applications à mesure que la demande client augmente. Le portail Azure vous permet de gérer facilement tous vos services Azure. Vous pouvez également gérer vos services par programmation en utilisant des commandes en lignes (CLI) , des API et des SDKs spécifiques aux services.
Azure dispose d’une centaine de services composables qui permettent d’enrichir l’application ou de remplacer certaines briques logicielles de votre application.
Microsoft Azure IaaS
L’un des scénarios d’utilisation les plus basiques d’Azure IaaS est le remplacement d’un serveur physique par un serveur virtuel fonctionnant dans le datacenter d’Azure, éliminant ainsi le besoin de maintenance matérielle.
Comme le précise Maud, directrice technique de SoftFluent
En utilisant les service IaaS d’Azure, tels que les machines, les réseaux et disques virtuels, vous hébergez simplement vos données et applications sur un serveur dans le Cloud que vous pouvez intégralement contrôler. La maintenance du matériel physique n’est plus un problème car Microsoft s’occupe des serveurs physiques sous-jacents pour vous. Vous n’avez pas non plus à vous soucier des problèmes liés à la défaillance des disques durs. Vous devrez cependant surveiller et gérer les OS et applications installées sur vos machines virtuelles. En résumé, IaaS est le modèle de service cloud qui ressemble à une installation typique sur site tout en vous laissant la liberté d’exécuter les applications que vous souhaitez, et de redimensionner rapidement votre infrastructure si besoin.
Le PaaS inclut les services de l’IaaS mais va encore plus loin
Micsosoft Azure App Service
Azure App Service est une offre PaaS (platform as a service) complètement managée pour les développeurs professionnels.
Azure App Service est un service HTTP pour l’hébergement d’applications web, d’API REST et de backends pour applications mobiles. Vous pouvez développer dans votre langage préféré, par exemple .NET, .NET Core, Java, Ruby, Node.js, PHP ou Python. Les applications s’exécutent et sont mises à l’échelle facilement dans les environnements Windows ou Linux.
App Service ajoute la puissance de Microsoft Azure à votre application, notamment la sécurité, l’équilibrage de charge, la mise à l’échelle automatique et la gestion automatisée. Vous pouvez également bénéficier de ses fonctionnalités DevOps, notamment le déploiement continu depuis Azure DevOps, GitHub, Docker Hub et d’autres sources, la gestion des packages, les environnements intermédiaires, le domaine personnalisé et les certificats TLS/SSL.
Lorsque vous créez une Web Application sur Azure, vous disposez par défaut d’un « slot » de production.
Chaque fois que vous déployez votre application, cette dernière est déployée par défaut sur ce slot. Azure Web Apps vous offre cependant la possibilité de créer un autre emplacement de déploiement (staging). Lorsque la nouvelle version est prête à entrer en production, vous la déployez dans un premier temps sur le slot de staging. A partir du portail Azure, vous pouvez définir le pourcentage d’utilisateurs qui seront redirigés vers cette nouvelle version et effectuer vos tests de performance en production (A/B Testing). Une fois cette dernière prête à entrer en utilisation, en un clic, vous effectuez un swap entre les deux versions. La version sur le slot staging devient la version en production et celle qui était en production précédemment passe en staging. En cas d’un bogue important le retour à la version précédente est tout aussi simple
En plus d’App Service, Azure offre d’autres services qui peuvent être utilisés pour l’hébergement de sites et d’applications web. Pour la plupart des scénarios, App Service est le meilleur choix. Si vous avez besoin de contrôler davantage l’OS sur lequel votre code s’exécute, utilisez plutôt les Machines virtuelles Microsoft Azure. Si vous ciblez une architecture Microservices, plusieurs approches avec Azure existent :
- ServerLess
- Conteneurs
Approche ServerLess
Dans l’architecture Serverless, il n’y a plus de notion d’infrastructure en tant que telle. Tout est pris en charge par le fournisseur Cloud. Le Serverless s’affranchit donc des contraintes évoquées plus haut et de ces limites en décorrélant l’écriture (et le déploiement) du code de l’infrastructure sous-jacente. Concrètement, les développeurs conçoivent leur code sous forme de fonctions sans état, qui contiennent les informations nécessaires à leur exécution sans se soucier de leur hébergement. Voilà pourquoi on parle de Serverless.
Les Azures Functions sont étroitement liées à l’architecture Serverless. Dans une architecture de ce type, vous n’avez plus besoin de gérer les serveurs sous-jacents, c’est le fournisseur Cloud responsable de l’exécution du code hébergé qui s’en occupe. Cela implique de structurer votre application sous forme de fonctions exécutées à la demande. Les Azure Functions, c’est donc une implémentation de la notion de Serverless par Microsoft sur la plateforme Azure.
Azure Functions permet d’exécuter des petits bouts de code ‘fonctions’ sans se soucier de l’infrastructure de l’application : le fournisseur Cloud fournit toutes les ressources serveurs nécessaires pour que l’application s’exécute, même à grande échelle : Function as a Service (FaaS).
Plutôt que de vous soucier de la création et de la gestion d’une application entière ou de l’infrastructure pour exécuter votre code, et si vous pouviez écrire votre code et l’exécuter en réponse à des événements ou à une planification ? Azure Functions est une offre de type « sans serveur » qui vous permet d’écrire juste le code nécessaire. Avec Functions, vous pouvez déclencher l’exécution du code avec des requêtes HTTP, des webhooks, des événements de service cloud ou selon une planification. Vous pouvez écrire du code dans le langage de développement de votre choix, tel que C#, F#, Node.js, Python ou PHP. Avec une facturation basée sur la consommation, vous payez uniquement pour la durée pendant laquelle votre code s’exécute et Azure effectue la mise à l’échelle au besoin.
Microsoft Azure Spring Apps (développeurs Java – Spring Boot)
Azure Spring Apps est une plateforme d’applications Serverless qui permet de créer, déployer, mettre à l’échelle et superviser des applications Spring Boot dans le cloud. Spring Cloud permet également d’intégrer des services Azure aux applications Spring Boot, en éliminant le code qui serait nécessaire autrement pour créer rapidement des applications Java robustes
Approche conteneurs
Le développement d’applications modernes se focalise de plus en plus sur les conteneurs, qui peuvent être déployés plus rapidement et exécutés plus sobrement qu’avec des machines virtuelles. Le cloud permet le déploiement de conteneurs à grande échelle.
Les conteneurs Docker par exemple, forme de virtualisation du système d’exploitation, vous permettent de déployer des applications de manière plus efficace car les ressources sont plus mutualisées et les seules les dépendances techniques utiles sont déployées. Une application en conteneur fonctionne ainsi en production de la façon la plus similaire possible à son fonctionnement sur les systèmes de développement et de test.
La conteneurisation a déjà pris une grande part au sein des pratiques DevOps, mais elle ne peut que progresser encore. En effet, la conteneurisation apporte un nombre important d’avantages, parmi lesquels :
- La standardisation du packaging d’une application ou d’un service
- Une très grande stabilité de la description des pipelines (la gestion des dépendances, représentant une grande partie de la configuration, étant gérées au sein du conteneur lui-même)
- La possibilité d’exécuter sur le poste du développeur un environnement qui devient très proche de la production (il suffit d’installer un runtime Docker, par exemple Docker Desktop)
- La possibilité de tirer parti d’orchestrateurs tels que Kubernetes pour améliorer la disponibilité et la montée en charge de l’application, ainsi que son processus de déploiement (en évitant notamment les ruptures de service). Azure Kubernetes Service permet la création, la configuration et la gestion d’un cluster de machines virtuelles préconfigurées pour exécuter des applications en conteneur.
Azure Ressource Manager et Infrastructure as Code
Suivant les cas, l’exécution de votre application sur Azure implique vraisemblablement l’utilisation de plusieurs services Azure : Web apps, SQL Database, cache Azure pour Redis, Azure content Delivery Network….
Azure Resource Manager permet de définir toute l’infrastructure et les dépendances entre services dans un modèle unique déclaratif : soit un modèle ARM (json), soit via des outils et leurs modèles comme BICEP ou HashiCorp Terraform, sans se soucier des ressources individuellement. Le déploiement de l’application est alors reproductible.
explique Maud.
Supervision dans Microsoft Azure
Lorsque votre application est en cours d’exécution, vous devez surveiller les performances, déceler les problèmes éventuels et voir comment les clients utilisent votre application. Azure fournit plusieurs options de supervision.
Azure Monitor : ce service permet de visualiser, d’interroger, de router, d’archiver et de traiter les métriques et les journaux d’activité générés par les ressources Azure de votre infrastructure.
Ces informations aident à comprendre le fonctionnement des applications et à identifier, de façon proactive, les éventuels problèmes et les ressources dont elles dépendent. En fournissant les vues de données dans le portail Azure, Azure Monitor constitue une source unique pour la surveillance des ressources Azure.
Azure Application Insight : fonctionnalité d’Azure Monitor, App Insight est un service extensible de gestion des performances des applications (APM) pour superviser vos applications en temps réel. Ce service détecte automatiquement les anomalies de performances et intègre de puissants outils analytiques conçus pour vous aider à diagnostiquer les problèmes et à comprendre l’usage que les utilisateurs font de votre application. Les données fournies par App insights permettent d’améliorer en continu, les performances et la convivialité des applications.
Stockage hébergé et accès aux données
La plupart des applications doivent stocker des données. Par conséquent, quelle que soit la manière dont vous décidez d’héberger votre application dans Azure, il faut intégrer un ou plusieurs services de données.
Stockage Azure : hautement disponible pour les objets blob, les files d’attente, les fichiers et d’autres types de données non relationnelles
Azure SQL Database : version basée sur Azure du moteur Microsoft SQL Server pour le stockage des données tabulaires relationnelles dans le cloud.
Azure Cosmos DB : Service de base de données multi modèle distribué à l’échelle mondiale. Cette base de données vous permet de mettre à l’échelle de façon élastique le débit et le stockage pour le nombre de régions géographiques de votre choix.