L’innovation par les données – Cycle de vie applicatif, Infrastructure de données et applicative

Cet article a pour objectif de décrire les bénéfices apportés aux entreprises par les architectures et les services basés sur le Cloud, ainsi que la méthodologie DevOps. Nous allons prendre en exemple, les besoins et contraintes d’une entreprise de commerce électronique au niveau de son IT de par sa présence et son développement à l’international.

Besoins

  • Agilité de l'infrastructure

  • Elasticité de l'infrastructure : évolution à la demande

  • Stockage et sécurisation de données

  • Réduire la complexité de gestion de l'IT

  • Réduction des coûts CAPEX et OPEX

  • Déploiement rapide des applications

  • Présence internationale

 

Problématiques

  • Performance de l'infrastructure

  • Cycle de développement

  • Temps de mise à disposition des infrastructures

  • Utilisation ponctuelle -> coût immobilisation

  • Réduction du "Time to market"

  • Gestion des données de tests, anonymisation

  • Volume de données

 

 Les activités de commerce en ligne ont la particularité de devoir s’adapter très rapidement à ce marché très concurrentiel. L’entreprise doit réagir en temps réel face à son environnement et aux besoins de ses clients afin d’ajuster une stratégie, maximiser sa réactivité, minimiser le « Time to market » en étant au plus près de ses clients quel que soit le continent.

 

Une distribution internationale des infrastructures est nécessaire afin de conquérir de nouveaux marchés et d’être au plus près des clients pour des raisons d’optimisation des performances notamment les latences réseaux.

Le cycle de vie d’une application nécessite la mise en place de nombreux moyens afin de répondre aux multiples exigences et réussir : moyens humains, moyens matériels, moyens collaboratifs, pilotage, ….

Les pratiques « DevOps » et le cloud Azure sont les moyens de cette réussite.

 

Ces pratiques, méthodologies peuvent s’appuyer sur les différentes briques de l’écosystème Microsoft afin de délivrer une solution transverse et complète répondant aux contraintes.

Par ailleurs, l'adoption d’une démarche « DevOps » ne se fait pas nécessairement en une seule fois, elle peut être progressive en fonction des priorités de chaque entreprise. La progressivité dans l’adoption des différentes pratiques permet aussi l’établissement d’une culture de collaboration entre les « Devs » et les « Ops ».

La première étape est un état des lieux de la situation, puis de construire une feuille de route contextualisée permettant une adoption progressive des capacités DevOps.

 

 

Voici quelques exemples de packages qui font partie des scénarios de transformation DevOps : 

 
 Nous allons nous focaliser sur certaines briques de la démarche. 

 

Les briques clés avec l'écosystème Microsoft

Les différentes briques nécessaires au développement, test, support d’une application avec les produits, les technologies facilitatrices.

 

Le cycle de vie d’une application est complexe et nécessite de nombreux environnements qui peuvent être couteux de par leur immobilisation et administration :

 Afin d’orchestrer les différents étapes d’un processus de release, Team Foundation Server propose aussi un outil de gestion de releases (Release Management) qui permet la gestion du déploiement au travers des différents environnements.

 

L'infrastructure nécessaire

La mise à disposition des différents environnements et des services nécessite généralement plusieurs semaines et ce avec des coûts de maintenance, d’investissements. Afin d’augmenter la réactivité et limiter les coûts le cloud Azure est la solution :

  • Libre-service, à la demande
  • Ubiquité : accès au cloud depuis n’importe où
  • Facturation à la consommation
  • Mise à disposition de plateforme en quelques heures
  • Mise à disposition à la demande de service SaaS accessible de partout : réactivité

Visual Studio Online peut être pris en exemple: le projet dispose alors d’un service de source control ainsi que l’ensemble des outils ALM (gestion du cycle de vie des applications) sans aucune gestion de l’infrastructure

  • Evolution d’un profil de dépense d’investissement CAPEX vers un profil de dépense de fonctionnement OPEX

Windows Azure permet d’accélérer cette transition en proposant les modèles suivants : IaaS (Infrastructure as a Service), PaaS (Plateforme as a Service), Saas (Software as a Service) qui permettent un investissement décroissant.

 

Une infrastructure applicative se compose généralement de plusieurs serveurs afin de répartir les différents rôles : serveurs applicatifs, serveurs de données, serveurs d’annuaires avec des contraintes de haute disponibilité.

Voici une architecture applicative classique :

L’objectif est de simplifier le déploiement et la configuration de ce type de plateforme en utilisant les fonctionnalités de Microsoft Azure, ainsi que les dernières technologies. 

 

Automatisation : Déploiement et configuration d'une infrastructure

Les outils, technologies à disposition :

Azure Ressource Management (ARM)

Habituellement les applications sont constituées de plusieurs composants, ressources : applications web, bases de données, serveurs de bases de données, stockage, services tiers, … Ils sont interdépendants.

Azure Resource Manager vous permet de travailler avec les ressources de votre application en tant que groupe afin de pouvoir les déployer, mettre à jour au sein d’une opération unique et coordonnée.

Un modèle de déploiement décrivant tous les composants, ressources, ainsi que leurs dépendances pourra être utilisé pour fonctionner avec l’ensemble des environnements : développement, recette,… et production.

Ce modèle se décrit sous la forme d’un document au format Json définissant l’ensemble des ressources. Le modèle se personnalisera avec des paramètres d’entrées afin de s’adapter aux différents environnements.

 

Afin de couvrir les besoins d'opérations supplémentaires, comme l’installation et la configuration d’un logiciel spécifique, des extensions peuvent être utilisées pour accéder à des services de configuration tels que Powershell DSC, Chef ou Puppet.

Powershell Desired State Configuration (DSC)

Windows PowerShell Desired State Configuration (DSC) est un système de gestion inclus dans Windows PowerShell qui permet le déploiement et la gestion des données de configuration.

L’objectif est de définir une configuration cible et ainsi d’atteindre un état désiré sans se soucier de l’état initial. Il s’agit d’un besoin indispensable notamment lors de « déploiements en continue », on doit pouvoir exécuter plusieurs fois le même script de configuration.

L'évolution est donc la suivante afin d’éviter toute erreur et d’automatiser la procédure de déploiement:

Procédure de déploiement habituelle et manuelle

Procédure de déploiement avec Powershell DSC

   

 

Evolutivité de l'infrastructure : Ressources systèmes, Stockage, ...

Un des premiers besoins est de permettre l’évolutivité d’une infrastructure pour des besoins ponctuels ou permanents avec des délais de mise à disposition très courts:

  • Besoins de ressources systèmes supplémentaires : Processeurs, Mémoire, Capacité IOPS, …

Les ressources peuvent être affectées, désaffectées en quelques minutes. Les configurations de serveurs virtuels vont d’une configuration minimale avec 0,25 cœur – 750 Mo RAM à 32 cœurs – 448 Go RAM – 64 disques SSD avec du stockage Premium.

  • Besoins de stockage

Il est très rapide de provisionner du stockage, pour le stockage standard que le volume réellement utilisé est facturé : jusqu’à 1 To par disque -> 500 To par Compte de stockage (Défaut) -> 100 Storage Account par Abonnement (Défaut)

Pour des besoins spécifiques de type base de données notamment avec SQL Server, la performance du sous-système disque est vitale et souvent la cause de la dégradation des temps de réponses sur les environnements de développement et de tests de charge qui ne sont pas à la hauteur de l’environnement de production.

On pourra donc homogénéiser les performances de chaque environnement à moindre coût, ponctuellement en utilisant les ressources Azure.

Les performances du sous-système disque sont en corrélation avec la puissance de la machine allouée, ainsi que du type de stockage choisi :

    • Stockage Standard

Par disque : 500 IOPS max, débit 60 Mo/s max, taille jusqu’à 1 To

Par machine virtuelle : de 1 à 32 disques possibles

    • Stockage Premium

Il se décline sous 3 types de disque

Par machine virtuelle : de 1 à 32 disques possibles

Afin de simplifier la configuration et de bénéficier du maximum d’IOPS, l’agrégation de plusieurs disques Azure est souhaitable. Grâce à la fonctionnalité Storage Pool de Windows Server 2012, la création d’un seul disque logique s’appuyant sur l’ensemble des disques disponibles permettra d’obtenir le maximum des performances et de simplifier l’administration.

Cette configuration permettra d’avoir un socle générique par exemple pour SQL Server qu’il faudra ensuite adapter en fonction des spécificités. 

 

 Exemple de configuration avec 16 disques Azure standards:

En agrégeant 16 disques, nous pouvons obtenir jusqu’à 8000 IOPS

Quelques résultats de tests montrant les performances de ce type de configuration:

 Si ce niveau de performance est insuffisant, il suffira de provisionner plus de disques avec une machine virtuelle de gamme supérieure et / ou passer en Storage Premium afin de pouvoir atteindre jusqu’à 50 000 IOPS. Cette flexibilité permettra d’évaluer à moindre coût la configuration de la plateforme cible.

 

Administration, Gestion d'infrastructure

Une fois la plateforme configurée, il est indispensable de l’administrer et de la maintenir avec une infrastructure de supervision. Elle permettra de consolider l’ensemble des évènements : Journaux d’évènements, compteurs de performance, définition d’alertes, …

Ces besoins apparaissent dès le début du projet où les efforts sont généralement mis sur les développements en délaissant la supervision. Pour cela, Azure met nativement à disposition des agents de supervision, ainsi que les services Operational Insights et Application Insights afin de piloter votre infrastructure et votre application.

De nombreuses fonctionnalités:

  • Surveillance de l’usage coté client
  • Capacity planning
  • Consolidation d’évènements
  • Mise en place d’alertes
  • Validation de configuration « Assessment » en fonction de bonnes pratiques
  • Mise à disposition de tableaux de bord

 

 

Synthèse

La plateforme Cloud de Microsoft, Windows Azure met à disposition les services et les infrastructures indispensables pour répondre aux contraintes actuelles du marché et accompagner les entreprises dans leur transformation : réduction des couts, amélioration de la réactivité (Time to market), proximité des clients, …

L’ensemble des produits et services Azure sont concernés :

  • Microsoft Azure
  • Microsoft Azure IaaS
  • Visual Studio Online
  • Operational Insight,s Application Insights

 

Des solutions innovantes avec Microsoft Consulting Services

Les architectes et consultants MCS sont formés sur l’ensemble de l’offre applicative et infrastructure de Microsoft, afin de proposer à leurs clients des solutions innovantes permettant de répondre à leurs enjeux opérationnels, et de s’engager dans une démarche de transformation numérique.

Pour plus d’informations sur les offres packagées Microsoft Consulting Services, rendez-vous sur https://www.microsoft.com/france/services. Nous vous invitons à y consulter notamment les diverses offres CRM et Business Analytics proposées.

Pour plus d’informations sur les blogs « L’innovation par les données », rendez-vous sur L’innovation par les données .

Richard Prade, Consultante CRM, Microsoft Consulting Services

Après plusieurs années passées au support technique, j’interviens en mission de conseil auprès des grands comptes sur des projets à haute criticité s’appuyant sur la suite SQL Server : architecture, gestion de cycle de vie applicatif, optimisations, …

 

João Bôrras, Consultant Senior, Microsoft Consulting Services

Je suis consultant chez Microsoft Consulting Services depuis plusieurs années et je suis spécialisé dans le développement d’applications en particulier dans le domaine de la finance. Plus récemment j’accompagne les clients dans la transformation de leurs solutions vers des architectures cloud et la gestion du cycle de vie des applications (ALM/DevOps)