Des attentes fonctionnelles et un niveau d’exigence qui augmentent, la complexification des langages et plateformes, l’avènement du Cloud, l’architecture des données et leurs volumes… …Le déploiement d’applications stratégiques est un exercice de plus en plus difficile, avec de vrais enjeux de compétences et de coûts. Pour faciliter la gestion de cette complexité, découvrez Microsoft Azure Well-Architected Framework qui propose un ensemble de bonnes pratiques et de principes.
Le Well-Architected Framework se compose de 5 piliers de l’excellence en terme d’architecture azure cloud.
Well-Architected Framework : Fiabilité
La fiabilité est un concept subjectif qui dépend énormément des exigences métier de l’application et du prix à payer pour atteindre une haute disponibilité. Il faut donc bien étudier les besoins pour savoir où placer le curseur et concevoir l’application en fonction.
Anticiper les défaillances potentielles : En effet, plutôt que de corriger les problèmes de sécurité à posteriori, l’idée est d’identifier les vulnérabilités, d’anticiper les potentielles défaillances et d’intégrer la sécurité en amont, très tôt dans le cycle avec l’approche ‘Security by Design’.
Observer : le monitoring permet, grâce à des capteurs sur le logiciel en fonctionnement, de signaler les éventuels problèmes lorsqu’ils se produisent afin de prendre des mesures correctives rapidement.
Encourager l’automatisation : Les bénéfices liés l’automatisation des développements et des processus associés sont multiples. On pense bien évidemment à la réduction des temps de déploiement et donc des coûts des projets de développement. L’enjeu est également de réduire l’intervention humaine sur les tâches répétitives, de limiter les risques d’erreurs et les configurations incorrectes. Dans le cadre de l’intégration continue, les modifications à fusionner sont automatiquement testées pour détecter le moindre conflit entre le code existant et le nouveau (et ce à tous les niveaux, classes, fonctions, modules…).
Intégrer la réparation spontanée : il s’agit d’un concept avancé qui, grâce aux protocoles de correction prédéfinis (on enregistre et analyse les défaillances afin de bénéficier d’informations exploitables), permet de concevoir votre application de sorte qu’elle se répare automatiquement en cas de défaillances.
Prévoir le scale out : les unités d’échelle (unités de ressources) permettent de gérer automatiquement les pics de trafic, qu’ils soient prévus ou non, afin d’éviter les interruptions de services. La mise à l’échelle automatique permet d’exécuter la quantité nécessaire de ressources et d’en ajouter pour gérer les pics de charge de sorte de ne payer que les ressources actives.
Well-Architected Framework : sécurité
Gestion des identités : Azure Active Directory (Azure AD) permet de gérer les identités et les accès grâce à l’authentification des utilisateurs et l’attribution des autorisations en fonction de leur rôle. Vous pouvez l’utiliser dans Azure, ou l’intégrer à vos Active Directory locaux.
Protection de votre infrastructure : contrôler l’accès aux ressources Azure que vous déployez, accorder l’accès en assignant des rôles Azure, mettre en place des contrôles en continu et d’autres en mode “spot check”, et automatiser la surveillance, la remontée des alertes et, lorsque c’est pertinent, la remédiation.
Sécurité des applications : Conserver les secrets utilisés par les machines et les personnes dans un coffre-fort sécurisé et hautement disponible, en dehors du code source et en dehors des ordinateurs des développeurs et des systèmes de stockage accessibles par les utilisateurs. Renouveler régulièrement les secrets pour réduire l’exposition. Microsoft propose des solutions comme Azure Key Vault permettant de sécuriser le stockage de vos identifiants, mots de passe, certificats, Clés API, tokens et autres secrets mais aussi :
- Utilisez SSL/TLS qui permet l’authentification mutuelle du serveur et du client, le chiffrement et la vérification de l’intégrité des connexions
- Méfiez-vous de l’injection de code malveillant
Chiffrement et souveraineté des données : Avoir une politique de chiffrement adaptée dans laquelle tout doit être chiffré… ou presque : bases de données, S3, communications entre instances, notamment les remontées de logs, dont les informations pourraient être exploitées si interceptées. De nombreux services de stockage et de base de données Azure prennent en charge le chiffrement des données :
- Stockage Azure
- Azure SQL Database
- Azure Synapse Analytics
- Cosmos DB
Well-Architected Framework : optimisation des couts
Il est important de se concentrer sur la valeur incrémentielle en appliquant les principes Build Measure Learn pour accélérer la mise sur le marché en évitant les solutions trop coûteuses afin d’optimiser la valeur délivrée.
Des outils existent pour vous aider dans cette démarche
- principes des coûts
- Développer un modèle de coût
- budgets et alertes
- check-list d’optimisation des coûts
Well-Architected Framework : excellence opérationnelle
Il s’agit pour ce pilier d’optimiser les opérations et processus qui permettent d’exécuter une application en production
DevOps Pattern : implémentation de pratiques DevOps
L’intégration continue (CI) permet aux développeurs de fusionner plus fréquemment leurs modifications de code dans une « branche » partagée, souvent critique et qui doit être protégée. Les opérations réalisées par l’intégration continue doivent garantir cette protection.
Après l’automatisation des tests unitaires dans le cadre de l’intégration continue, la distribution continue automatise la publication du code validé dans un référentiel. La distribution continue permet de disposer d’une base de code toujours prête à être déployée dans un environnement de production.
Modèles de déploiements : automatisation des déploiements
L’étape finale d’un pipeline CI/CD mature est le déploiement continu. En complément du processus de distribution continue, qui automatise la publication d’une version prête pour la production dans un référentiel, le déploiement continu automatise l’exécution d’une nouvelle version d’une application dans un environnement de production.
Surveillance et diagnostics
La supervision dans le cadre d’une démarche DevOps concerne non seulement le système, les services, les applications (logs) mais aussi la chaine d’automatisation DevOps, sans oublier l’UX ; la complémentarité et la centralisation des informations étant primordiales.
Well-Architected Framework : efficacité des performances
Il s’agit notamment de s’adapter à la demande des utilisateurs en intégrant, par exemple, les offres PaaS.
Le PaaS inclut les services de l’IaaS mais va encore plus loin : outre les serveurs, le stockage et les réseaux, le prestataire fournit également l’ensemble des applications middleware : système d’exploitation, base de données, serveur web… Vous payez uniquement les services cloud que vous utilisez et bénéficiez d’une flexibilité et d’une mise à l’échelle qui vous permet d’adapter l’utilisation des services en fonction des besoins de votre entreprise
Le PaaS permet de gagner du temps dans le développement de nouvelles applications grâce aux composants pré-codés intégrés à la plateforme : workflow, services de répertoire, fonctions de sécurité, fonctions de recherche, etc.
Parmi les meilleures pratiques, on peut retenir :
- Mise à l’échelle automatique : verticale, horizontale
- Travaux en arrière-plan, workflows incluant Azure functions
- Mise en cache (Redis Azure)
- CDN (réseaux de distribution de contenu)
- Partitionnement des données
Pour compléter cette présentation, vous pouvez également prendre connaissance des points suivants qui vont vous permettre d’enrichir votre approche :
Azure well-architected Review vous permettra d’évaluer l’excellence de votre architecture sur les 5 critères vus précédemment.
Azure Advisor est un outil qui permet d’analyser votre configuration Azure.
Nous recommandons également d’effectuer le parcours d’apprentissage Microsoft pour la solution Well-Architected Framework.
Enfin, au niveau référentiel documentation, vous pouvez vous appuyer sur les ressources de la documentation, des architectures de référence, des modèles de conception ainsi que des principes de conception.
Comme décrit dans les paragraphes précédents, lors de la construction d’une architecture Azure, de nombreux points sont à prendre en compte : la sécurité, la disponibilité, l’élasticité ainsi que la capacité de récupération. Pour rendre cela possible, vous devez faire des arbitrages qui seront guidés par des considérations stratégiques, d’analyse du risque et également des coûts.
L’objectif du Microsoft Azure Well-Architected Framework est de vous aider dans cette démarche grâce aux principes et bonnes pratiques décrits dans la méthode. Vous pourrez ainsi apprendre puis construire, pour ensuite mesurer et améliorer en continu l’architecture Azure que vous allez mettre en œuvre.