Considérations sur la conception d’applications hybridesHybrid app design considerations

Microsoft Azure est le seul cloud hybride cohérent.Microsoft Azure is the only consistent hybrid cloud. Il vous permet de réutiliser vos investissements en développement et de disposer d’applications couvrant le cloud Azure mondial, les clouds Azure souverains et Azure Stack, qui est une extension d’Azure dans votre centre de données.It allows you to reuse your development investments and enables apps that can span global Azure, the sovereign Azure clouds, and Azure Stack, which is an extension of Azure in your datacenter. Les applications qui s’étendent sur des clouds sont également appelées applications hybrides.Apps that span clouds are also referred to as hybrid apps.

Le Guide de l’architecture des applications Azure décrit une approche structurée pour concevoir des applications scalables, résilientes et hautement disponibles.The Azure Application Architecture Guide describes a structured approach for designing apps that are scalable, resilient, and highly available. Les considérations décrites dans le Guide de l’architecture des applications Azure s’appliquent également aux applications conçues pour un seul cloud et aux applications couvrant plusieurs clouds.The considerations described in the Azure Application Architecture Guide equally apply to apps that are designed for a single cloud and for apps that span clouds.

Cet article complète les piliers de la qualité logicielle décrits dans le Guide de l’architecture des applications Azure, en se concentrant spécifiquement sur la conception d’applications hybrides.This article augments the Pillars of software quality discussed in the Azure Application Architecture Guide, focusing specifically on designing hybrid apps. De plus, nous ajoutons un pilier de placement, car les applications hybrides ne sont pas exclusives à un seul cloud ou à un seul centre de données local.In addition, we add a placement pillar as hybrid apps aren't exclusive to one cloud or one on-premises datacenter.

Les scénarios hybrides varient considérablement avec les ressources qui sont disponibles pour le développement et englobent des considérations telles que la géographie, la sécurité, l’accès à Internet et bien d’autres.Hybrid scenarios vary greatly with the resources that are available for development, and span considerations such as geography, security, internet access, and other considerations. Ce guide ne peut certes pas énumérer vos considérations spécifiques, mais il peut fournir des recommandations clés et des bonnes pratiques à suivre.Although this guide can't enumerate your specific considerations, it can provide some key guidelines and best practices for you to follow. La réussite de la conception, de la configuration, du déploiement et de la maintenance d’une architecture d’application hybride implique de nombreuses considérations de conception qui vous sont probablement inconnues.Successfully designing, configuring, deploying, and maintaining a hybrid app architecture involves many design considerations that might not be inherently known to you.

Ce document a pour but d’agréger les éventuelles questions qui peuvent survenir durant l’implémentation d’applications hybrides. Il propose des considérations (piliers) et les bonnes pratiques liées à leur utilisation.This document aims to aggregate the possible questions that might arise when implementing hybrid apps and provides considerations (these pillars) and best practices to work with them. En répondant à ces questions durant la phase de conception, vous éviterez les problèmes qu’elles peuvent provoquer en production.By addressing these questions during the design phase, you'll avoid the issues they could cause in production.

Pour l’essentiel, il s’agit de questions que vous devez prendre en compte avant de créer une application hybride.Essentially, these are questions you need to think about before creating a hybrid app. Pour commencer, vous devez effectuer les opérations suivantes :To get started, you need to do the following things:

  • Identifier et évaluer les composants d’applicationIdentify and evaluate the app components.
  • Évaluer les composants d’application par rapport aux piliersEvaluate app components against the pillars.

Évaluer les composants d’applicationEvaluate the app components

Chaque composant d’une application a son propre rôle à l’échelle de l’application. Vous devez l’examiner en tenant compte de toutes les considérations relatives à la conception.Each component of an app has its own specific role within the larger app and should be reviewed with all design considerations. Les exigences et les fonctionnalités de chaque composant doivent correspondre à ces considérations, ce qui permet de déterminer l’architecture de l’application.Each component's requirements and features should map to these considerations to help determine the app architecture.

Décomposez votre application en composants, en étudiant son architecture et en déterminant son contenu.Decompose your app into its components by studying your app's architecture and determining what it consists of. Les composants peuvent également inclure d’autres applications avec lesquelles votre application interagit.Components can also include other apps that your app interacts with. Au fur et à mesure que vous identifiez les composants, évaluez les opérations hybrides envisagées en fonction de leurs caractéristiques en vous posant les questions suivantes :As you identify the components, evaluate your intended hybrid operations according to their characteristics by asking these questions:

  • Quelle est la finalité du composant ?What is the purpose of the component?
  • Quelles sont les interdépendances entre les composants ?What are the interdependencies between the components?

Par exemple, une application peut avoir deux composants : un composant front-end et un composant back-end.For example, an app can have a front end and back end defined as two components. Dans un scénario hybride, le composant front-end se trouve dans un cloud et le composant back-end se trouve dans l’autre.In a hybrid scenario, the front end is in one cloud and the back end is in the other. L’application fournit des canaux de communication non seulement entre le composant front-end et l’utilisateur mais également entre le composant front-end et le composant back-end.The app provides communication channels between the front end and the user, and also between the front end and the back end.

Un composant d’application est défini par de nombreuses formes et de nombreux scénarios.An app component is defined by many forms and scenarios. La tâche la plus importante consiste à les identifier, et à identifier leur emplacement dans le cloud ou leur emplacement local.The most important task is identifying them and their cloud or on-premises location.

Les composants d’application usuels à inclure dans votre inventaire sont listés dans le tableau 1.The common app components to include in your inventory are listed in Table 1.

Tableau 1.Table 1. Composants d’application usuelsCommon app components

ComposantComponent Aide relative aux applications hybridesHybrid app guidance
Connexions clientesClient connections Votre application (quel que soit l’appareil) est accessible aux utilisateurs de différentes manières, à partir d’un seul point d’entrée, notamment des manières suivantes :Your app (on any device) can access users in various ways, from a single-entry point, including the following ways:
- Un modèle client-serveur dans lequel l’utilisateur doit installer un client pour le faire fonctionner avec l’application.- A client-server model that requires the user to have a client installed to work with the app. Une application serveur accessible à partir d’un navigateur.A server-based app that's accessed from a browser.
- Les connexions clientes peuvent inclure des notifications quand la connexion est interrompue, ou des alertes quand des frais d’itinérance peuvent s’appliquer.- Client connections can include notifications when the connection is broken or alerts when roaming charges may apply.
AuthentificationAuthentication Une authentification peut être obligatoire pour un utilisateur qui se connecte à l’application, ou pour un composant qui se connecte à un autre.Authentication can be required for a user connecting to the app, or from one component connecting to another.
APIAPIs Vous pouvez fournir aux développeurs un accès programmatique à votre application avec des ensembles d’API et des bibliothèques de classes. De plus, vous pouvez proposer une interface de connexion basée sur les normes Internet.You can provide developers with programmatic access to your app with API sets and class libraries and provide a connection interface based on internet standards. Vous pouvez également utiliser des API pour décomposer une application en unités logiques de fonctionnement indépendantes.You can also use APIs to decompose an app into independently operating logical units.
ServicesServices Vous pouvez utiliser des services succincts pour fournir les fonctionnalités d’une application.You can employ succinct services to provide the features for an app. Un service peut être le moteur sur lequel l’application s’exécute.A service can be the engine that the app runs on.
Files d’attenteQueues Vous pouvez utiliser des files d’attente pour organiser le statut des cycles de vie et des états des composants de votre application.You can use queues to organize the status of the life cycles and states of your app's components. Ces files d’attente peuvent fournir des fonctionnalités de messagerie, de notification et de mise en mémoire tampon aux parties abonnées.These queues can provide messaging, notifications, and buffering capabilities to subscribing parties.
Stockage des donnéesData storage Une application peut être sans état ou avec état.An app can be stateless or stateful. Les applications avec état ont besoin d’un stockage de données pouvant correspondre à de nombreux formats et volumes.Stateful apps need data storage that can be met by numerous formats and volumes.
Mise en cache des donnéesData caching Un composant de mise en cache des données dans votre conception peut résoudre les problèmes de latence de manière stratégique, et jouer un rôle dans le déclenchement du mode rafale du cloud.A data caching component in your design can strategically address latency issues and play a role in triggering cloud bursting.
Ingestion de donnéesData ingestion Les données peuvent être envoyées à une application de plusieurs manières : cela va des valeurs envoyées par l’utilisateur dans un formulaire web aux flux de données volumineux et continus.Data can be submitted to an app in many ways, ranging from user-submitted values in a web form to continuously high-volume data flow.
Traitement des donnéesData processing Vos tâches de traitement de données (par exemple les rapports, les analyses, les exportations par lot et la transformation de données) peuvent être effectuées à la source ou déchargées sur un composant distinct à l’aide d’une copie des données.Your data processing tasks (such as reports, analytics, batch exports, and data transformation) can either be processed at the source or offloaded on a separate component using a copy of the data.

Évaluer les composants d’application par rapport aux piliersAssess app components for pillars

À chaque composant, évaluez ses caractéristiques pour chaque pilier.For each component, evaluate its characteristics for each pillar. Au fur et à mesure que vous évaluez chaque composant avec tous les piliers, vous pouvez découvrir des aspects que vous n’avez peut-être pas pris en compte et qui affectent la conception de l’application hybride.As you evaluate each component with all of the pillars, questions you might not have considered may become known to you that affect the design of the hybrid app. Le fait de prendre en compte ces considérations peut apporter une valeur ajoutée à l’optimisation de votre application.Acting on these considerations could add value in optimizing your app. Le tableau 2 fournit une description de chaque pilier en ce qui concerne les applications hybrides.Table 2 provides a description of each pillar as it relates to hybrid apps.

Tableau 2.Table 2. PiliersPillars

PilierPillar DescriptionDescription
PlacementPlacement Positionnement stratégique des composants dans les applications hybrides.The strategic positioning of components in hybrid apps.
ExtensibilitéScalability Capacité d’un système à traiter une charge accrue.The ability of a system to handle increased load.
DisponibilitéAvailability Durée pendant laquelle une application hybride est fonctionnelle et opérationnelle.The proportion of time that a hybrid app is functional and working.
RésilienceResiliency Capacité de récupération d’une application hybride.The ability for a hybrid app to recover.
Simplicité de gestionManageability Processus d’opérations assurant l’exécution d’un système en production.Operations processes that keep a system running in production.
SécuritéSecurity Protection des applications hybrides et des données contre les menaces.Protecting hybrid apps and data from threats.

PlacementPlacement

Le placement, par exemple le choix du centre de données, est au cœur des considérations à prendre concernant une application hybride.A hybrid app inherently has a placement consideration, like for the datacenter.

Le placement est une tâche importante qui consiste à positionner les composants pour qu’ils puissent servir au mieux une application hybride.Placement is the important task of positioning components so that they can best service a hybrid app. Par définition, les applications hybrides couvrent plusieurs emplacements allant du local au cloud et incluant différents clouds.By definition, hybrid apps span locations, like from on-premises to the cloud and among different clouds. Vous pouvez placer les composants de l’application dans des clouds de deux façons :You can place components of the app on clouds in two ways:

  • Applications hybrides verticalesVertical hybrid apps
    Les composants d’application sont répartis entre différents emplacements.App components are distributed across locations. Chaque composant individuel peut avoir plusieurs instances situées à un seul emplacement.Each individual component can have multiple instances located only in a single location.

  • Applications hybrides horizontalesHorizontal hybrid apps
    Les composants d’application sont répartis entre différents emplacements.App components are distributed across locations. Chaque composant individuel peut avoir plusieurs instances couvrant plusieurs emplacements.Each individual component can have multiple instances spanning multiple locations.

    Certains composants peuvent connaître leur emplacement, tandis que d’autres ignorent leur emplacement et leur placement.Some components can be aware of their location while others don't have any knowledge of their location and placement. Cela est rendu possible grâce à une couche d’abstraction.This virtuousness can be achieved with an abstraction layer. Cette couche, avec un framework d’application moderne tel que celui des microservices, peut définir la manière dont l’application est servie par le placement des composants d’application fonctionnant sur les nœuds de différents clouds.This layer, with a modern app framework like microservices, can define how the app is serviced by the placement of app components operating on nodes across clouds.

Liste de contrôle de placementPlacement checklist

Vérifier les emplacements nécessaires.Verify required locations. Vérifiez que l’application, ou l’un de ses composants, fonctionne dans un cloud spécifique ou nécessite une certification pour ce dernier.Make sure the app or any of its components are required to operate in, or require certification for, a specific cloud. Cela peut inclure des exigences de souveraineté de la part de votre entreprise ou dictées par des obligations légales.This can include sovereignty requirements from your company or dictated by law. Déterminez également si des opérations locales sont nécessaires pour un emplacement ou des paramètres régionaux particuliers.Also, determine if any on-premises operations are required for a particular location or locale.

Déterminer les dépendances de connectivité.Ascertain connectivity dependencies. Les emplacements imposés et d’autres facteurs peuvent dicter les dépendances de connectivité entre vos composants.Required locations and other factors can dictate the connectivity dependencies among your components. Quand vous placez les composants, déterminez la connectivité et la sécurité optimales pour leur communication entre eux.As you place the components, determine the optimal connectivity and security for communication among them. Les choix possibles sont les suivants : VPN, ExpressRoute et Connexions hybrides.Choices include VPN, ExpressRoute, and Hybrid Connections.

Évaluer les fonctionnalités de la plateforme.Evaluate platform capabilities. Pour chaque composant d’application, vérifiez si le fournisseur de ressources nécessaire au composant d’application concerné est disponible dans le cloud, et si la bande passante peut prendre en charge les exigences de débit et de latence attendues.For each app component, see if the required resource provider for the app component is available on the cloud and if the bandwidth can accommodate the expected throughput and latency requirements.

Planifier la portabilité.Plan for portability. Utilisez des frameworks d’application modernes, par exemple des conteneurs ou des microservices, pour planifier les opérations de déplacement et éviter les dépendances de services.Use modern app frameworks, like containers or microservices, to plan for moving operations and to prevent service dependencies.

Déterminer les exigences de souveraineté des données.Determine data sovereignty requirements. Les applications hybrides sont conçues pour prendre en charge l’isolement des données, par exemple dans un centre de données local.Hybrid apps are geared for accommodating data isolation, such as on a local datacenter. Passez en revue le placement de vos ressources pour optimiser la réussite de cette exigence.Review the placement of your resources to optimize the success for accommodating this requirement.

Planifier la latence.Plan for latency. Les opérations entre différents cloud peuvent introduire une distance physique entre les composants d’application.Inter-cloud operations can introduce physical distance between the app components. Déterminez les exigences nécessaires à la prise en charge de la latence.Ascertain the requirements to accommodate any latency.

Contrôler les flux de trafic.Control traffic flows. Gérez les pics d’utilisation et les communications appropriées et sécurisées pour les données relatives aux informations personnelles identifiables, quand le composant front-end y accède dans un cloud public.Handle peak usage and the appropriate and secured communications for personal identifiable information data when accessed by the front end in a public cloud.

ExtensibilitéScalability

La scalabilité est la capacité d’un système à gérer une charge accrue sur une application, ce qui peut varier au fil du temps, car d’autres facteurs et d’autres forces affectent la taille de l’audience ainsi que la taille et l’étendue de l’application.Scalability is the ability of a system to handle increased load on an app, which can vary over time as other factors and forces affect the audience size, in addition to the size and scope of the app.

Pour plus d’informations sur ce pilier, consultez Scalabilité dans la description des cinq piliers de l’excellence architecturale.For the core discussion of this pillar, see Scalability in the five pillars of architecture excellence.

Une approche basée sur une mise à l’échelle horizontale pour les applications hybrides permet d’ajouter plus d’instances afin de répondre à la demande, puis de les désactiver pendant les périodes plus calmes.A horizontal scaling approach for hybrid apps allows for adding more instances to meet demand and then disabling them during quieter periods.

Dans les scénarios hybrides, le scale-out des composants individuels nécessite une attention supplémentaire quand ces composants sont répartis sur différents clouds.In hybrid scenarios, scaling out individual components requires additional consideration when components are spread across clouds. La mise à l’échelle d’une partie de l’application peut nécessiter la mise à l’échelle d’une autre partie.Scaling one part of the app can require the scaling of another. Par exemple, si le nombre de connexions clientes augmente mais que les services web de l’application ne font pas l’objet d’un scale out approprié, la charge de la base de données peut saturer l’application.For example, if the number of client connections increases but the app's web services aren't scaled out appropriately, the load on the database might saturate the app.

Certains composants d’application peuvent faire l’objet d’un scale-out de manière linéaire, tandis que d’autres ont des dépendances de mise à l’échelle et peuvent être limités par l’étendue de ce dernier.Some app components can scale out linearly, while others have scaling dependencies and might be limited to what extent they're able to scale. Par exemple, un tunnel VPN fournissant une connectivité hybride pour les emplacements des composants d’application a une limite de scalabilité en ce qui concerne la bande passante et la latence.For example, a VPN tunnel providing hybrid connectivity for the app components locations has a limit to the bandwidth and latency it can be scaled to. Comment est effectuée la mise à l’échelle des composants de l’application pour garantir le respect de ces exigences ?How are components of the app scaled to ensure these requirements are met?

Liste de contrôle de l’extensibilitéScalability checklist

Déterminer les seuils de mise à l’échelle.Ascertain scaling thresholds. Pour gérer les diverses dépendances de votre application, déterminez dans quelle mesure les composants d’application situés dans les différents clouds peuvent faire l’objet d’une mise à l’échelle indépendamment les uns des autres, tout en répondant aux exigences d’exécution de l’application.To handle the various dependencies in your app, determine the extent to which app components in different clouds can scale independently of each other, while still meeting the requirements to run the app. Les applications hybrides doivent souvent appliquer une mise à l’échelle à des zones particulières de l’application pour gérer une fonctionnalité qui interagit et affecte le reste de l’application.Hybrid apps often need to scale particular areas in the app to handle a feature as it interacts and affects the rest of the app. Par exemple, le dépassement d’un certain nombre d’instances front-end peut nécessiter une mise à l’échelle de l’instance back-end.For example, exceeding a number of front-end instances may require scaling the back end.

Définir des planifications de mise à l’échelle.Define scale schedules. Dans la mesure où la plupart des applications ont des pics d’activité, vous devez agréger leurs heures de pointe dans des planifications pour coordonner une mise à l’échelle optimale.Most apps have busy periods, so you need to aggregate their peak times into schedules to coordinate optimal scaling.

Utiliser un système de supervision centralisé.Use a centralized monitoring system. Les fonctionnalités de supervision de plateforme peuvent fournir une mise à l’échelle automatique. Toutefois, les applications hybrides ont besoin d’un système de supervision centralisé qui agrège l’intégrité et la charge du système.Platform monitoring capabilities can provide autoscaling, but hybrid apps need a centralized monitoring system that aggregates system health and load. Un système de supervision centralisé peut lancer la mise à l’échelle d’une ressource à un emplacement et la mise à l’échelle d’une ressource dépendante à un autre emplacement.A centralized monitoring system can initiate scaling a resource in one location and scaling depending on resource in another location. De plus, un système de supervision central peut suivre les clouds qui effectuent une mise à l’échelle automatique des ressources et les clouds qui n’en font pas.Additionally, a central monitoring system can track which clouds autoscale resources and which clouds don't.

Exploiter les fonctionnalités de mise à l’échelle automatique (en fonction des disponibilités).Leverage autoscaling capabilities (as available). Si les fonctionnalités de mise à l’échelle automatique font partie de votre architecture, vous implémentez la mise à l’échelle automatique en configurant des seuils qui définissent le moment où un composant d’application doit faire l’objet d’un scale-up, d’un scale-out, d’un scale-down ou d’un scale-in.If autoscaling capabilities are part of your architecture, you implement autoscaling by setting thresholds that define when an app component needs to be scaled up, out, down, or in. Voici un exemple de mise à l’échelle automatique : une connexion cliente fait l’objet d’une mise à l’échelle automatique dans un cloud pour permettre la gestion d’un accroissement de capacité. Toutefois, cela entraîne également la mise à l’échelle d’autres dépendances de l’application, réparties sur différents clouds.An example of autoscaling is a client connection that's autoscaled in one cloud to handle increased capacity, but causes other dependencies of the app, spread across different clouds, to also be scaled. Les fonctionnalités de mise à l’échelle automatique de ces composants dépendants doivent être vérifiées.The autoscaling capabilities of these dependent components must be ascertained.

Si la mise à l’échelle automatique n’est pas disponible, implémentez des scripts et d’autres ressources pour permettre une mise à l’échelle manuelle, déclenchée par les seuils définis dans le système de supervision centralisé.If autoscaling isn't available, consider implementing scripts and other resources to accommodate manual scaling, triggered by thresholds in the centralized monitoring system.

Déterminer la charge attendue en fonction de l’emplacement.Determine expected load by location. Il arrive que les applications hybrides qui gèrent les requêtes des clients reposent principalement sur un seul emplacement.Hybrid apps that handle client requests might primarily rely on a single location. Quand la charge des requêtes des clients dépasse un seuil, vous pouvez ajouter des ressources supplémentaires à un autre emplacement pour répartir la charge des requêtes entrantes.When the load of client requests exceeds a threshold, additional resources can be added in a different location to distribute the load of inbound requests. Vérifiez que les connexions clientes peuvent gérer les charges accrues, et déterminez également des procédures automatisées pour permettre aux connexions clientes de gérer la charge.Make sure that the client connections can handle the increased loads and also determine any automated procedures for the client connections to handle the load.

DisponibilitéAvailability

La disponibilité est la durée pendant laquelle un système est fonctionnel et opérationnel.Availability is the time that a system is functional and working. La disponibilité est mesurée en pourcentage de la durée de fonctionnement.Availability is measured as a percentage of uptime. Les erreurs d’application, les problèmes d’infrastructure et la charge système peuvent réduire la disponibilité.App errors, infrastructure problems, and system load can all reduce availability.

Pour plus d’informations sur ce pilier, consultez Disponibilité dans la description des cinq piliers de l’excellence architecturale.For the core discussion of this pillar, see Availability in the five pillars of architecture excellence.

Liste de contrôle de disponibilitéAvailability checklist

Fournir une redondance pour la connectivité.Provide redundancy for connectivity. Les applications hybrides nécessitent une connectivité entre les clouds parmi lesquels elles sont réparties.Hybrid apps require connectivity among the clouds that the app is spread across. Vous avez le choix entre différentes technologies pour la connectivité hybride. Ainsi, en plus de la technologie principale choisie, vous pouvez utiliser une autre technologie pour fournir une redondance avec des fonctionnalités de basculement automatique en cas de défaillance de la technologie principale.You have a choice of technologies for hybrid connectivity, so in addition to your primary technology choice, use another technology to provide redundancy with automated failover capabilities should the primary technology fail.

Classifier les domaines d’erreur.Classify fault domains. Les applications à tolérance de panne nécessitent plusieurs domaines d’erreur.Fault-tolerant apps require multiple fault domains. Les domaines d’erreur permettent d’isoler le point de défaillance, par exemple en cas de problème d’un seul disque dur local, d’un commutateur ToR (Top-of-Rack) ou de l’ensemble du centre de données.Fault domains help isolate the point of failure, such as if a single hard disk fails on premises, if a top-of-rack switch goes down, or if the full datacenter is unavailable. Dans une application hybride, un emplacement peut être classifié en tant que domaine d’erreur.In a hybrid app, a location can be classified as a fault domain. Plus il existe d’exigences relatives à la disponibilité, plus vous devez évaluer la façon dont un seul domaine d’erreur doit être classifié.With more availability requirements, the more you need to evaluate how a single fault domain should be classified.

Classifier les domaines de mise à niveau.Classify upgrade domains. Les domaines de mise à niveau permettent de garantir la disponibilité des instances de composants d’application, tandis que d’autres instances du même composant sont servies par des mises à jour ou des mises à niveau de fonctionnalités.Upgrade domains are used to ensure that instances of app components are available, while other instances of the same component are being serviced with updates or feature upgrades. Comme pour les domaines d’erreur, les domaines de mise à niveau peuvent être classifiés en fonction de leurs différents emplacements.As with fault domains, upgrade domains can be classified by their placement across locations. Vous devez déterminer si un composant d’application peut être mis à niveau à un emplacement avant d’être mis à niveau à un autre emplacement, ou si d’autres configurations de domaine sont nécessaires.You must determine if an app component can accommodate getting upgraded in one location before it's upgraded in another location, or if other domain configurations are required. Un seul emplacement peut avoir plusieurs domaines de mise à niveau.A single location itself can have multiple upgrade domains.

Suivre les instances et la disponibilité.Track instances and availability. Les composants d’application hautement disponibles peuvent être disponibles via l’équilibrage de charge et la réplication de données synchrone.Highly available app components can be available through load balancing and synchronous data replication. Vous devez déterminer le nombre d’instances qui peuvent être hors connexion avant que le service ne soit interrompu.You must determine how many instances can be offline before the service is interrupted.

Implémenter l’auto-adaptation.Implement self-healing. Au cas où un problème entraînerait une interruption de la disponibilité de l’application, une détection par un système de supervision peut lancer des activités d’auto-adaptation pour l’application, par exemple le vidage de l’instance défaillante et son redéploiement.In the event an issue causes an interruption to the app availability, a detection by a monitoring system could initiate self-healing activities to the app, such as draining the failed instance and redeploying it. Cela nécessite probablement une solution de supervision centrale, intégrée à un pipeline CI/CD (intégration continue/livraison continue) hybride.Most likely this requires a central monitoring solution, integrated with a hybrid Continuous Integration, and Continuous Delivery (CI/CD) pipeline. L’application est intégrée à un système de supervision pour identifier les problèmes qui peuvent nécessiter le redéploiement d’un composant d’application.The app is integrated with a monitoring system to identify issues that could require redeployment of an app component. Le système de supervision peut également déclencher un pipeline CI/CD hybride pour redéployer le composant d’application et éventuellement tout autre composant dépendant au même emplacement ou à d’autres emplacements.The monitoring system can also trigger hybrid CI/CD to redeploy the app component and potentially any other dependent components in the same or other locations.

Gérer les contrats SLA.Maintain service-level agreements (SLAs). La disponibilité est essentielle pour tous les contrats afin de maintenir la connectivité des services et applications que vous avez avec vos clients.Availability is critical for any agreements to maintain connectivity to the services and apps that you have with your customers. Chaque emplacement sur lequel repose votre application hybride peut avoir son propre contrat SLA.Each location that your hybrid app relies on might have its own SLA. Ces différents contrats SLA peuvent affecter le contrat SLA global de votre application hybride.These different SLAs can affect the overall SLA of your hybrid app.

RésilienceResiliency

La résilience est la capacité d’un système et d’une application hybrides à effectuer une reprise d’activité et à continuer de fonctionner.Resiliency is the ability for a hybrid app and system to recover from failures and continue to function. L’objectif de la résilience est que l’application retrouve un état entièrement fonctionnel suite à une défaillance.The goal of resiliency is to return the app to a fully functioning state after a failure occurs. Les stratégies de résilience incluent des solutions telles que la sauvegarde, la réplication et la reprise d’activité après sinistre.Resiliency strategies include solutions like backup, replication, and disaster recovery.

Pour plus d’informations sur ce pilier, consultez Résilience dans la description des cinq piliers de l’excellence architecturale.For the core discussion of this pillar, see Resiliency in the five pillars of architecture excellence.

Liste de vérification de résilienceResiliency checklist

Découvrir les dépendances de reprise après sinistre.Uncover disaster-recovery dependencies. La reprise d’activité après sinistre dans un cloud peut nécessiter l’apport de changements aux composants d’application situés dans un autre cloud.Disaster recovery in one cloud might require changes to app components in another cloud. Si un ou plusieurs composants d’un cloud font l’objet d’un basculement vers un autre emplacement, dans le même cloud ou dans un autre cloud, les composants dépendants doivent être informés de ces changements.If one or multiple components from one cloud are failed-over to another location, either within the same cloud or to another cloud, the dependent components need to be made aware of these changes. Cela inclut également les dépendances de connectivité.This also includes the connectivity dependencies. La résilience nécessite un plan de récupération d’application entièrement testé pour chaque cloud.Resiliency requires a fully tested app recovery plan for each cloud.

Établir un flux de récupération.Establish recovery flow. Une conception efficace du flux de récupération évalue la capacité des composants d’application à prendre en charge les mémoires tampons, les nouvelles tentatives, les échecs de tentatives de transfert de données et, si nécessaire, le repli vers un service ou un workflow de secours.An effective recovery flow design has evaluated app components for their ability to accommodate buffers, retries, retrying failed data transfer, and, if necessary, fall back to a different service or workflow. Vous devez déterminer le mécanisme de sauvegarde à utiliser, sa procédure de restauration ainsi que sa fréquence de test.You must determine what back-up mechanism to use, what its restore procedure involves, and how often it's tested. Vous devez également déterminer la fréquence des sauvegardes incrémentielles et complètes.You should also determine the frequency for both incremental and full backups.

Tester les récupérations partielles.Test partial recoveries. Une récupération partielle d’une partie de l’application permet de garantir aux utilisateurs que tout n’est pas perdu.A partial recovery for part of the app can provide reassurance to users that all isn't unavailable. Cette partie du plan doit garantir qu’une restauration partielle n’a aucun effet secondaire, par exemple dans le cas d’un service de sauvegarde et de restauration qui interagit avec l’application pour l’arrêter de manière appropriée avant l’exécution de la sauvegarde.This part of the plan should ensure that a partial restore doesn't have any side effects, such as a backup and restore service that interacts with the app to gracefully shut it down before the backup is made.

Définir les instigateurs d’une reprise d’activité après sinistre et affecter une responsabilité.Determine disaster-recovery instigators and assign responsibility. Un plan de récupération doit décrire les personnes et les rôles qui peuvent lancer des actions de sauvegarde et de récupération, en plus du contenu à sauvegarder et restaurer.A recovery plan should describe who, and what roles, can initiate backup and recovery actions in addition to what can be backed up and restored.

Comparer les seuils d’auto-adaptation à la reprise d’activité après sinistre.Compare self-healing thresholds with disaster recovery. Déterminez les capacités d’auto-adaptation d’une application pour le lancement de la récupération automatique ainsi que le délai nécessaire avant de considérer l’auto-adaptation comme un échec ou une réussite.Determine an app's self-healing capabilities for automatic recovery initiation and the time required for an app's self- healing to be considered a failure or success. Déterminez les seuils pour chaque cloud.Determine the thresholds for each cloud.

Vérifier la disponibilité des fonctionnalités de résilience.Verify availability of resiliency features. Déterminez la disponibilité des fonctionnalités et des capacités de résilience pour chaque emplacement.Determine the availability of resiliency features and capabilities for each location. Si un emplacement ne fournit pas les fonctionnalités nécessaires, intégrez-le à un service centralisé offrant les fonctionnalités de résilience appropriées.If a location doesn't provide the required capabilities, consider integrating that location into a centralized service that provides the resiliency features.

Déterminer les temps d’arrêt.Determine downtimes. Déterminez le temps d’arrêt prévu pour la maintenance de l’application dans son ensemble et des composants d’application.Determine the expected downtime due to maintenance for the app as a whole and as app components.

Documenter les procédures de résolution des problèmes.Document troubleshooting procedures. Définissez les procédures de résolution des problèmes pour le redéploiement des ressources et des composants d’application.Define troubleshooting procedures for redeploying resources and app components.

Simplicité de gestionManageability

Les considérations relatives à la gestion de vos applications hybrides sont essentielles pour la conception de votre architecture.The considerations for how you manage your hybrid apps are critical in designing your architecture. Une application hybride correctement managée fournit une infrastructure sous forme de code qui permet l’intégration d’un code d’application cohérent dans un pipeline de développement commun.A well-managed hybrid app provides an infrastructure as code that enables the integration of consistent app code in a common development pipeline. En implémentant des tests cohérents, que ce soit à l’échelle du système ou au niveau individuel, pour les changements apportés à l’infrastructure, vous pouvez garantir un déploiement intégré si ces changements passent les tests avec succès. Ainsi, ils pourront être fusionnés dans le code source.By implementing consistent system-wide and individual testing of changes to the infrastructure, you can ensure an integrated deployment if the changes pass the tests, allowing them to be merged into the source code.

Pour plus d’informations sur ce pilier, consultez DevOps dans la description des cinq piliers de l’excellence architecturale.For the core discussion of this pillar, see DevOps in the five pillars of architecture excellence.

Liste de contrôle de gestionManageability checklist

Implémenter la supervision.Implement monitoring. Utilisez un système de supervision centralisé des composants d’application répartis parmi les clouds pour fournir une vue agrégée de leur intégrité et de leur niveau de performance.Use a centralized monitoring system of app components spread across clouds to provide an aggregated view of their health and performance. Ce système comprend la supervision des composants d’application et des fonctionnalités de plateforme associées.This system includes monitoring both the app components and related platform capabilities.

Déterminez les parties de l’application à superviser.Determine the parts of the app that require monitoring.

Coordonner les stratégies.Coordinate policies. Chaque emplacement couvert par une application hybride peut avoir sa propre stratégie, qui s’applique aux types de ressource, conventions de nommage, étiquettes et autres critères autorisés.Each location that a hybrid app spans can have its own policy that covers allowed resource types, naming conventions, tags, and other criteria.

Définir et utiliser les rôles.Define and use roles. En tant qu’administrateur de base de données, vous devez déterminer les autorisations nécessaires en fonction des différentes personnes (par exemple un propriétaire d’application, un administrateur de base de données et un utilisateur final) qui doivent accéder aux ressources de l’application.As a database admin, you need to determine the permissions required for different personas (like an app owner, a database admin, and an end user) that need to access app resources. Vous devez configurer ces autorisations sur les ressources et au sein de l’application.These permissions need to be configured on the resources and inside the app. Un système de contrôle d’accès en fonction du rôle (RBAC) vous permet de définir ces autorisations sur les ressources de l’application.A role-based access control (RBAC) system allows you to set these permissions on the app resources. La définition de ces droits d’accès peut s’avérer difficile quand toutes les ressources sont déployées dans un seul cloud, mais elle nécessite encore plus d’attention quand les ressources sont réparties entre plusieurs clouds.These access rights are challenging when all resources are deployed in a single cloud but require even more attention when the resources are spread across clouds. Les autorisations des ressources définies dans un cloud ne s’appliquent pas aux ressources définies dans un autre cloud.Permissions on resources set in one cloud don't apply to resources set in another cloud.

Utiliser des pipelines CI/CD.Use CI/CD pipelines. Un pipeline CI/CD (intégration continue/déploiement continu) permet de fournir un processus cohérent pour la création et le déploiement d’applications qui couvrent plusieurs clouds. Il permet également de fournir une assurance qualité aux niveaux de l’infrastructure et de l’application.A Continuous Integration and Continuous Development (CI/CD) pipeline can provide a consistent process for authoring and deploying apps that span across clouds, and to provide quality assurance for their infrastructure and app. Ce pipeline permet de tester l’infrastructure et l’application dans un cloud, et de les déployer sur un autre cloud.This pipeline enables the infrastructure and app to be tested on one cloud and deployed on another cloud. Le pipeline vous permet même de déployer certains composants de votre application hybride sur un cloud et d’autres composants sur un autre cloud, ce qui constitue principalement la base du déploiement d’applications hybrides.The pipeline even allows you to deploy certain components of your hybrid app to one cloud and other components to another cloud, essentially forming the foundation for hybrid app deployment. Un système CI/CD est essentiel pour la gestion des dépendances entre les composants d’application durant l’installation, par exemple, dans le cas d’une application web qui nécessite une chaîne de connexion à la base de données.A CI/CD system is critical for handling the dependencies app components have for each other during installation, such as the web app needing a connection string to the database.

Gérer le cycle de vie.Manage the life cycle. Dans la mesure où les ressources d’une application hybride peuvent s’étendre sur plusieurs emplacements, la capacité de gestion du cycle de vie de chaque emplacement doit être agrégée en une seule unité de gestion du cycle de vie.Because resources of a hybrid app can span locations, each single location's life-cycle management capability needs to be aggregated into a single life-cycle management unit. Réfléchissez à leur mode de création, de mise à jour et de suppression.Consider how they're created, updated, and deleted.

Examiner les stratégies de résolution des problèmes.Examine troubleshooting strategies. La résolution des problèmes liés à une application hybride implique un plus grand nombre de composants d’application que ceux de l’application qui s’exécute dans un seul cloud.Troubleshooting a hybrid app involves more app components than the same app that's running in a single cloud. En plus de la connectivité entre les clouds, l’application s’exécute sur deux plateformes au lieu d’une.Besides the connectivity between the clouds, the app is running on two platforms instead of one. L’une des tâches importantes dans la résolution des problèmes liés aux applications hybrides consiste à examiner les données agrégées de supervision de l’intégrité et du niveau de performance des composants d’application.An important task in troubleshooting hybrid apps is to examine the aggregated health and performance monitoring of the app components.

SécuritéSecurity

La sécurité est l’une des principales préoccupations de toute application cloud. Elle l’est encore plus pour les applications cloud hybrides.Security is one of the primary considerations for any cloud app and it becomes even more critical for hybrid cloud apps.

Pour plus d’informations sur ce pilier, consultez Sécurité dans la description des cinq piliers de l’excellence architecturale.For the core discussion of this pillar, see Security in the five pillars of architecture excellence.

Liste de contrôle de sécuritéSecurity checklist

Envisager les violations de sécurité.Assume breach. Si une partie de l’application est compromise, vérifiez que des solutions sont en place pour réduire la propagation de la violation de sécurité, non seulement à l’emplacement concerné mais également parmi les autres emplacements.If one part of the app is compromised, ensure there are solutions in place to minimize the spread of the breach, not only within the same location but also across locations.

Superviser les accès réseau autorisés.Monitor allowed network access. Déterminez les stratégies d’accès réseau de l’application. Par exemple, accédez uniquement à l’application à partir d’un sous-réseau spécifique et n’autorisez que le nombre minimal de ports et de protocoles entre les composants pour le bon fonctionnement de l’application.Determine the network access policies for the app, such as only accessing the app from a specific subnet and only allow the minimum ports and protocols between the components required for the app to function properly.

Utiliser une authentification robuste.Employ robust authentication. Un schéma d’authentification robuste est essentiel pour la sécurité de votre application.A robust authentication scheme is critical for the security of your app. Utilisez un fournisseur d’identité fédérée offrant des fonctionnalités de connexion à authentification unique et utilisant un ou plusieurs des schémas suivants : connexion avec nom d’utilisateur et mot de passe, clés publique et privée, authentification à deux facteurs ou multifacteur, et groupes de sécurité approuvés.Consider using a federated identity provider that provides single sign-on capabilities and employs one or more of the following schemes: username and password sign-on, public and private keys, two-factor or multi-factor authentication, and trusted security groups. Déterminez les ressources appropriées au stockage des données sensibles et autres secrets pour l’authentification de l’application, en plus des types de certificat et de leurs exigences.Determine the appropriate resources to store sensitive data and other secrets for app authentication in addition to certificate types and their requirements.

Utiliser le chiffrement.Use encryption. Identifiez les zones de l’application qui utilisent le chiffrement, par exemple pour le stockage de données ou la communication et l’accès des clients.Identify which areas of the app use encryption, such as for data storage or client communication and access.

Utiliser des canaux sécurisés.Use secure channels. L’utilisation d’un canal sécurisé parmi les clouds est essentielle pour assurer les contrôles de sécurité et d’authentification, une protection en temps réel, la mise en quarantaine ainsi que d’autres services liés aux clouds.A secure channel across the clouds is critical for providing security and authentication checks, real-time protection, quarantine, and other services across clouds.

Définir et utiliser les rôles.Define and use roles. Implémentez des rôles pour les configurations de ressources et l’accès via une seule identité parmi les différents clouds.Implement roles for resource configurations and single-identity access across clouds. Déterminez les exigences du contrôle d’accès en fonction du rôle (RBAC) pour l’application et ses ressources de plateforme.Determine the role-based access control (RBAC) requirements for the app and its platform resources.

Auditer votre système.Audit your system. La supervision du système peut journaliser et agréger des données à partir des composants d’application et des opérations de plateforme cloud associées.System monitoring can log and aggregate data from both the app components and the related cloud platform operations.

RésuméSummary

Cet article fournit une liste de contrôle des éléments importants à prendre en compte durant la création et la conception de vos applications hybrides.This article provides a checklist of items that are important to consider during the authoring and designing of your hybrid apps. Passez en revue ces piliers avant de déployer votre application. Ainsi, vous pourrez éviter les problèmes évoqués en cas d’interruption de production, et vous n’aurez pas à revoir éventuellement votre conception.Reviewing these pillars before you deploy your app prevents you from running into these questions in production outages and potentially requiring you to revisit your design.

Cela peut sembler une tâche laborieuse au premier abord, mais vous obtiendrez facilement un retour sur investissement si vous concevez votre application en fonction de ces piliers.It can seem like a time-consuming task beforehand, but you easily get your return on investment if you design your app based on these pillars.

Étapes suivantesNext steps

Pour plus d’informations, consultez les ressources suivantes :For more information, see the following resources: