Archives mensuelles : mai 2017

Contrôle budgétaire dans Azure

Lors de mes formations sur Azure, il y a un sujet qui revient régulièrement : Est-on capable de répondre aux exigences d’un DAF qui demande un contrôle budgétaire stricte. Autant vous dire qu’essayer d’argumenter avec de la technique. Genre : Maintenant dans Azure on peut envoyer la facture au DAF par mail, ça ne va pas le faire du tout, …

clip_image001

 

Sans contrôle, le Cloud ne sera qu’une promesse non tenue. Problème, le DAF détient les cordons de la bourse. Si nous ne sommes pas capables de répondre à cette simple question, l’expérimentation Cloud va tourner court. Histoire de poser le décor, voilà une liste des risques auxquels nous devons répondre :

  • Comment limiter la consommation pour une population donnée ?
  • Pouvons-nous accorder un crédit à une population donnée ?
  • Comment suivre facilement l’évolution de la consommation ?

 

Malheureusement, il n’y a que dans le cadre d’une souscription de type Enterprise Agreement qu’on est capable de répondre à ces problématiques :

  • La segmentation en départements avec un budget permet de répartir le crédit Azure
  • Chaque département se voit affecté un crédit qu’il est libre de consommer, charge à l’administrateur de le suivre
  • Le suivi de la consommation est réalisable via l’intégration de Power BI : Microsoft Azure Enterprise content pack for Power BI

 

Voilà pour les grandes lignes d’une souscription de type Enterprise Agreement. Maintenant voyons les moyens dont on dispose pour tous les types de souscription.

Azure Spending Limit

Le premier et le plus ancien de tous est la fonctionnalité Azure Spending Limit. Pour les souscriptions autre que CSP & EA, la fonctionnalité est accessible via l’ancien portail https://account.windowsazure.com. Dans l’illustration ci-dessous, ma souscription « Pass Azure » disposait d’un crédit de 85€ de consommation. Arrivé à 0, la souscription sera automatiquement désactivée. C’est à moi, propriétaire de la souscription de venir supprimer la limite de consommation (et d’indiquer un moyen de paiement).

clip_image002

 

A noter que configurer un moyen de paiement n’est pas obligatoire pour les souscriptions de type « Pay-As you go ». Maintenant, charge au propriétaire de suivre sa consommation, … Pour une souscription de type CSP, c’est le partenaire qui propose ce service en configurant un indicateur qui va l’informer de la consommation de son client. Attention, c’est une limite soft, juste un avertissement.

clip_image003

 

Pour un Enterprise Agreement, c’est un suivi de l’administrateur du département. Une notification par mail lui est automatiquement envoyée chaque semaine.

clip_image004

 

Tagger les ressources

Le premier contact du DAF avec une facture Azure est plutôt violent. Sa première question, c’est comment effectuer un regroupement de ces coûts selon différents critères. Savoir qu’il a payé pour du compute c’est bien mais s’il est capable de le refacturer entre les équipes, on l’aide à définir quelle est la participation de chaque entité de l’entreprise pour le poste budgétaire de l’IT. Attention, on ne parle que de coût IT. Avec le IaaS, on peut assez facilement déduire le nombre d’exploitants nécessaires par rapport au nombre de machines virtuelles et l’utiliser comme clé de répartition pour les couts de personnel. Par contre, ce ne sera plus aussi vrai pour le PaaS, encore moins pour le SaaS.

clip_image005

 

Le simple fait de tagger les ressources ne permet pas de contrôler les coûts. Pour cela, il faut forcer l’usage des tags. C’est là que la fonctionnalité Azure Resource Policy. C’est un sujet que j’avais déjà abordé dans un précédent billet (Découverte d’Azure Resource Policy). Maintenant, la fonctionnalité est présente dans le portail au niveau de la souscription avec bonus en plus quelques policies « built-in » bien pensées :

  • Imposer l’utilisation de Tag (pas de tag, pas de déploiement)
  • Affecter un tag par défaut s’il n’est pas spécifié (Pas de code d’imputation comptable, alors c’est celui de l’IT qui sera utilisé, …)
  • Interdire le déploiement de ressources en dehors des régions Azure sélectionnées
  • Interdire l’usage de certains « Sku » de stockage / machines virtuelles

Après, rien ne vous interdit de développer vos propres policies.

clip_image006

 

Ce qui est bien, c’est que ces Policies peuvent être assignées aussi bien au niveau de la souscription que d’un groupe de ressources. Là on tient une fonctionnalité intéressante puisqu’on se positionne avant même de déployer les ressources. Si on a pensé à mettre en œuvre ce type de fonctionnalité avant même de déployer des ressources dans Azure, on a déjà fait un grand pas pour convaincre le DAF. Maintenant, il faut arriver à lui montrer qu’on est capable de réduire les coûts, …

 

Les Quotas

C’est un des premiers sujets qui remonte au près du support Microsoft, l’augmentation des quotas de votre souscription. Si on peut demander l’augmentation des quotas pour les ressources que nous consommons, nous pouvons aussi demander à en réduire la valeur en fonction de nos besoins.

clip_image007

 

Par contre, attention, c’est un type de contrôle « Soft ». Il suffit d’une demande au support pour faire relever la limite. Ce qui est bien, c’est que la demande est nécessairement tracée, on retrouve donc rapidement celui qui a formulé la demande.

 

La mesure des usages

Mettre en place des Azure Resource Policies ne nous protège pas de tout. En fait, à vouloir tout contrôler, on va perdre en agilité. En plus, on peut passer à côté du plus important : La ressource sera-elle décomptée sur ma consommation Azure ou considérée comme un achat externe ? Dans le portail Azure, lorsqu’on déploie une ressource, si on nous demande de valider un achat, c’est que c’est un achat externe, même si celui-ci coute 0€ comme pour Sendgrid :

clip_image008

J’ai bien pensé à utiliser les Azure Resources Policy pour bloquer les déploiements impliquant des achats externes mais j’ai vite trouvé cela très lourd à mettre en œuvre. Déployer des composants comme le système d’exploitation RedHat ou le composant SendGrid peuvent tout à fait être légitimes. Finalement, c’est en se reposant sur la mesure des usages qu’on sera capable d’adresser ce risque. La simple commande PowerShell ci-dessous nous remonte les déploiements de ressources impliquant une facturation tierce :

Get-AzureRMLog | Where {$_.OperationName -eq « Microsoft.Resources/marketplace/purchase/action »}

clip_image009

 

Avec un peu d’industrialisation avec Azure Automation, on devrait être capable d’envoyer un mail au DSI et agir en conséquence. S’il avait demandé à utiliser du Kemp et qu’il se retrouve avec du F5 à la place, il devrait agir rapidement. Le risque est ainsi mieux maitrisé. Si le sujet vous intéresse, je vous renvoie vers un de mes billets sur le sujet : Mais qui est le Dédé qui a fumé 3k dans ma souscription Azure ?

La fonctionnalité Devtest Labs

La fonctionnalité DevTest est vaste. Simplement, c’est un conteneur qu’on met à disposition des développeurs pour générer leurs environnements de dev/test. L’intérêt de la fonctionnalité est de pouvoir rendre le développeur autonome dans ses activités quotidiennes tout en étant assuré qu’on ne va pas exploser les budgets (tout du moins sans en être préalablement notifié). Globalement, cela passe par un certain nombre de fonctionnalités :

  • Limitation fine des machines virtuelles que le développeur peut déployer (limitation des SKU, limitation du nombre d’instance par développeur, …)
  • Capacité à limiter les choix du développeur pour le déploiement de ressources en provenance du Marketplace
  • Capacité à proposer une liste de Custom Images prêtes à être utilisées
  • Mise à disposition d’un coffre-fort numérique pour stocker les secrets utilisés dans l’environnement de développement.
  • Création de « formules de déploiement » pour faciliter la mise en place d’environnements de tests. Ces « formules » peuvent exploiter les secrets du développeur
  • Capacité à fixer une date d’expiration à une machine virtuelle
  • Capacité à réaliser un « auto-shutdown » (ainsi qu’un « auto-Start ») des ressources pour éviter de facturer du compute inutilement.
  • Capacité à limiter les Virtual Networks sur lequel les développeurs peuvent déployer

Ce qui nous intéresse dans la fonctionnalité DevTest, c’est la possibilité de sélectionner les SKU des machines virtuelles mais aussi le contenu issu du Marketplace, aussi bien dans la SKU sélectionnée que le nombre des instances. Un bon argument pour le contrôle budgétaire.

 

Voilà pour les fonctionnalités techniques, maintenant, celle qui trait à la maitrise de la facturation. Pour chaque instance du service DevTest que l’on met en place, on peut définir des seuils de consommation avec pour chaque seuil, la possibilité de notifier mais aussi de déclencher un WebHook.

clip_image010

 

Avec cela, on peut facilement déclencher des actions avec Azure Automation pour éviter les dépassements de consommation. Exemple, arrivé à 95% du montant fixé, on arrête toutes les ressources. Par contre attention, DevTest ne limite pas la consommation. Il se contente de nous indiquer notre consommation actuelle. La mise en place d’une limite de consommation nécessite déjà d’avoir une harmonisation des API de Facturation entre les différents types de souscription.

En jouant avec les fonctions « Auto-Shutdown » et « Auto-Start », on arrive à limiter la facturation des machines virtuelles. Les environnements de développement n’ont pas besoin de fonctionner pendant les week-ends et les nuits en semaine. On peut ainsi économiser jusqu’à 40% de la facture de compute par machine virtuelle.

clip_image011

 

Azure Advisor

Azure Advisor a pour objectif de nous faire des propositions pour optimiser notre usage d’Azure. Les recommandations peuvent porter sur la disponibilité des ressources, la sécurité, la performance ainsi que les coûts.

clip_image012

 

Si Azure Advisor identifie une ou plusieurs ressources (machines virtuelles par exemples) pour lesquelles notre consommation est bien en dessous des capacités mises à disposition, nous serons informés de la possibilité de revoir le sizing de l’instance de la ressource.

Azure Reserved Instances (Update décembre 2017)

La plateforme Azure évolue. Une de ces évolutions est la possibilité de se voir proposer des prix dégressifs pour les machines virtuelles selon une durée d’engagement de un à trois ans. Aucun DAF ne peut rester insensible à 44% de remise, … Azure Reserved Instances – La fonctionnalité la plus simple à expliquer

 

Azure Cost Management (Update décembre 2017)

Microsoft ayant racheté CloudDyn, c’est Maintenant Azure Cost Management et c’est gratuit. C’est donc criminel de s’en passer.

 

Les outils tiers

Plusieurs partenaires de Microsoft se sont positionnés sur le marché des outils de suivi budgétaire sur le Cloud. Dans la liste, on peut citer :

La solution proposée par Microsoft est disponible sur Github. Elle n’est pas aussi complète que les autres solutions qui sont-elles payantes mais elle a le mérite d’exister.

clip_image013

 

La solution Azure usage and Billing portal permet à un client de s’enregistrer auprès de la solution pour autoriser la collecte des données de facturation pour ensuite leur permettre d’y accéder via Power BI. A ce jour, le support des souscriptions de type CSP n’est pas encore généralisé chez tous les éditeurs. CSP utilise actuellement une API de facturation bien spécifique qui nécessite des développements additionnels.

 

Conclusion

Pour conclure, la maîtrise de la facturation passera aussi par la capacité à votre organisation d’adopter la plateforme Cloud de Microsoft. On peut continuer à déployer des machines virtuelles pour héberger des applications mais on ne tire pas pleinement des capacités de la plateforme Azure. C’est l’automatisation et l’utilisation des solutions PaaS et SaaS (plutôt que IaaS) qui feront que le coût de revient dans Azure baissera. L’exploitation implique des coûts humains incompressibles. Cela ne veut pas dire que dans un futur proche nous n’aurons plus d’IT-Pro pour gérer nos ressources dans Azure mais qu’ils deviendront plus efficaces dans la gestion d’un plus grand nombre de ressources.

BenoîtS – Simple and secure by design but Business compliant (with disruptive flag enabled)

Certification Azure 70-534 : Architecting Microsoft Azure Solutions

Après la certification 70-533, je suis passé à la certification 70-534 : Architecting Microsoft Azure Solutions, avec succès.

clip_image001

 

Ma préparation

Comme base de travail, j’ai utilisé le workshop MOC40442A-Architecting Microsoft Azure Solutions. Je devais donner le cours pour des clients, ça tombait très bien. Avec cette certification, l’objectif n’est pas de savoir mettre en œuvre telle ou telle fonctionnalité d’Azure mais bien de les assembler. Ca implique de se pencher sur les Cloud Design Patterns et comprendre les principales architectures de références. La bonne compréhension des Cloud Design Patterns est essentielle car de là découlent les principales architectures de référence. Il faut prendre un peu de recul par rapport à la technique pure. Rapidement, on va vite s’éloigner de sa zone de confort (la découverte de DocumentDB dans mon cas) et la liste s’allonge rapidement. Ci-dessous quelques sujets que j’ai étudiés et qui peuvent tomber à l’examen :

  • Azure Storage queue versus Service bus queue, lequel choisir ?
  • Service bus topic versus Service bus relay, lequel choisir ?
  • Scénarios autour de Mobile Services & Push Notification
  • Notification hub, quelles sont les limitations de chaque SKU pour bien choisir ?
  • Azure Batch versus Azure HPC, lequel choisir ?
  • Azure HPC : Quelles SKU pour du RDMA ?
  • Redis Cache dans quels scénarios l’utiliser ?
  • Availability Set : Comment assurer la disponibilité d’une application dans Azure (avec contraintes imposées)
  • Haute disponibilité des WebApp dans Azure
  • Une vision générale des limites de chaque service (VM, WebApp, SQL, Event-Hub, Service Bus) pour savoir quelle édition utiliser
  • Media services, comment encore des flux comment les uploader et les diffuser
  • Connaître ses commandes PowerShell voire un peu d’Azure CLI

 

Dans mes révisions j’avais fait le choix de faire l’impasse sur un certain nombre de sujets :

  • Machine Learning : Bonne pioche, je n »ai pas eu de question sur le sujet
  • HD Insight : Bonne pioche, je n’ai pas eu de question sur le sujet
  • Cloud Services : Mauvaise pioche, ça parle encore beaucoup de Cloud Services, donc ne pas le négliger
  • System Center : Mauvaise pioche, avec une unique question sur DPM

Enfin, pour préparer cet examen, j’ai fait le choix d’utiliser les outils de préparation de measureup.com et j’ai été très surpris. Le niveau des questions est très élevé. En fait, les questions du test de préparation de Measureup.com sont bien plus élevées que celles que j’ai eu à l’examen. C’est donc une excellente préparation. Pour information, aucune des questions de Measureup.com ne se retrouve dans l’examen officiel. Donc pour le bachotage, passez votre chemin.

L’examen en lui même

L’examen est organisé de la manière suivante :

  • Une série de questions individuelles (24 de mémoire), un peu comme pour 70-533
  • Trois ou quatre scénarios pour lesquels il faudra élaborer les réponses les plus adaptées en fonction des contraintes exprimées.

 

Pour les questions individuelles, il n’y a pas de mystère, c’est la pratique d’Azure qui fera la différence ainsi que votre logique. Il y a nécessairement des réponses illogiques, à vous de bien lire les questions.

Pour les scénarios, c’est avant tout beaucoup de lecture avant de se précipiter sur les questions, ça permet de bien cadrer le sujet et les contraintes imposées (Business & Sécurité). Point d’attention, les scénarios sont indépendants les uns des autres. Même si on peut marquer les questions pour revenir dessus ultérieurement, rappelez-vous qu’une fois un scénario clos, on ne peut plus revenir dessus.

 

Même si l’examen est aujourd’hui disponible en français, je le déconseille. Toute votre littérature de préparation est en langue anglaise, y compris les tests de préparation. En plus passer l’examen en langue anglaise vous crédite de 30 minutes de plus donc 180 minutes au total.

 

BenoîtS – Simple and secure by design but Business compliant (with disruptive flag enabled)

Azure – Découverte de l’API de Billing

Une habitude que j’ai prise avec Azure, c’est de décortiquer la Release note du module Azure PowerShell tous les mois. C’est le meilleur moyen de détecter les nouvelles fonctionnalités mises à disposition. Donc dans la livraison de Mars 2017, j’ai découvert le module AzureRM.Billing qui contient la commande Get-AzureRMBillingInvoice :

clip_image001

 

Ça vient compléter la capacité à envoyer la facture par mail mise à disposition en Janvier 2017. C’est le prémices d’une API nous permettant d’accéder à la facturation d’Azure. C’est un bon début car lorsqu’on creuse un peu la partie Billing d’Azure, on découvre que cela fonctionne bien différemment pour les souscriptions de type EA ou CSP. Si on tente d’utiliser la commande immédiatement, ça nous répond que nous ne sommes pas autorisés.

Get-AzureRMBillingInvoice -Latest

clip_image002

 

En fait, la fonctionnalité doit être activée au niveau de la souscription dans le nœud « Invoice ».

clip_image003

 

Dès lors que la fonctionnalité est activée et que nous disposons d’un niveau de privilège souscription, nous pouvons extraire les informations de la dernière facture.

Get-AzureRMBillingInvoice -Latest

clip_image004

 

Ceux qui lisent mon blog reconnaissent un Shared Access Signature dans l’URL de téléchargement. On note aussi la présence d’une date d’expiration fixée à une journée. Nous avons là un parfait exemple de mécanisme de type « Key Valet » qui a mis à disposition une clé d’accès pour chaque fichier PDF avec une durée de vie d’une journée. Le contenu de la facture contenant des informations personnelles, il est logique que la date d’expiration soit aussi courte. Pensez juste à préciser ce point à votre DAF lorsque vous lui communiquerez l’URL.

Pour finir, on constatera la présence du rôle Billing Reader qui autorise ceux qui y sont associés d’accéder à la facture. C’est très utile pour votre DAF.

clip_image005

 

Attention : Au moment où j’écris ce billet, la nouvelle API de facturation n’est pas encore utilisable dans tous les types de souscriptions. Techniquement, le rôle Billing Reader est bien disponible en EA/CSP, par contre, vu qu’il n’est pas possible d’activer la fonctionnalité dans le portail, la seule réponse que l’on obtient est Bad Request avec la commande PowerShell. C’est un sujet qui évoluera certainement dans le temps.

Maintenant le DAF n’a plus besoin d’être Owner de vos souscription pour accéder à la facture.

 

BenoîtS – Simple and secure by design but Business compliant (with disruptive flag enabled)