applications cloud

Meilleures pratiques pour déployer vos applications dans le cloud

Mis à jours 27 avril 2020

Déterminer le meilleur déploiement pour vos applications cloud sur une infrastructure cloud

En tant que développeur, vous entendez sans doute beaucoup parler de nouvelles technologies. Elles promettent d’augmenter la vitesse à laquelle vous pouvez développer des logiciels et peuvent augmenter la résilience de vos applications une fois déployées. Votre challenge est de parcourir ces technologies émergentes et de déterminer celles qui sont réellement prometteuses pour les projets sur lesquels vous travaillez actuellement.

Vous savez sans aucun doute que le cloud computing est très prometteur pour les développeurs. Cependant, vous ne connaissez peut-être pas les domaines dans lesquels cette technologie peut apporter de la valeur à vous et à vos projets.

Vous ne connaissez peut-être pas non plus les bonnes pratiques à appliquer lors de la mise en œuvre d’un projet dans le cloud.

Cet article explore les types de systèmes de cloud computing disponibles et fournit des directives qui peuvent vous aider avec les déploiements d’applications réelles sur une infrastructure cloud.

Choisissez entre IaaS, PaaS et SaaS

IaaS, PaaS et SaaS

Lorsque les gens commencent à discuter du cloud computing, ils parlent en principe de l’un des trois choix de déploiement possibles pour le code d’application :

  1. l’infrastructure en tant que service (IaaS),
  2. la plateforme en tant que service PaaS) ou
  3. le logiciel en tant que service (SaaS).

Celui qui convient à votre projet dépend de vos besoins spécifiques pour la base de code sur laquelle vous travaillez.

Examinons chacun de ces choix de cloud.

Infrastructure en tant que service (IaaS)

Le IaaS est une plateforme où une infrastructure est mise à votre disposition.

En un clic, vous pouvez faire tourner des machines virtuelles hébergées par un fournisseur avec le système d’exploitation de votre choix.

Le fournisseur qui fournit la machine est responsable de la connectivité et de l’approvisionnement initial du système, et vous êtes en charge de tout le reste.

Le fournisseur fournit une machine et un système d’exploitation, mais vous devez installer tous les packages logiciels, les runtimes/serveurs d’application et les bases de données dont votre application a besoin.

En général, IaaS nécessite que vous disposiez d’une équipe d’administrateurs système pour gérer le système et appliquer fréquemment les règles de pare-feu, les correctifs et les errata de sécurité.

Avantages :

  • Vous avez un contrôle total sur tous les aspects du système.

Inconvénients:

  • Vous avez besoin de connaissances en administration système ou d’une équipe d’administrateurs système pour maintenir les systèmes, car vous êtes responsable de leur disponibilité et de leur sécurité.

Plateforme en tant que service (PaaS)

PaaS est une pile technologique relativement nouvelle qui fonctionne sur IaaS. Elle a été créée pour le développeur.

Avec la plateforme PaaS, tout est fourni sauf le code d’application, les utilisateurs et les données.

Lors de l’utilisation d’un PaaS, le fournisseur gère en général le serveur d’applications, les bases de données et tous les composants du système d’exploitation nécessaires. Cela vous donne le temps de vous concentrer sur le code de l’application.

Étant donné que le fournisseur gère cette plateforme pour vous, il est souvent difficile d’ouvrir des ports qui ne sont pas spécifiquement appelés pour le serveur d’applications, le runtime ou la base de données utilisée.

PaaS fournit également des fonctionnalités spécifiquement destinées aux applications. Elles permettent notamment de mettre à niveau l’application en fonction de la requête des utilisateurs de l’application. Dans la plupart des plateformes, cela se produit avec peu ou pas d’interaction du développeur.

Avantages :

  • PaaS fournit un environnement complet géré activement. Cela vous permet de vous concentrer sur le code de votre application.

Inconvénients:

  • Les développeurs sont souvent limités à certaines versions majeures/mineures des packages disponibles sur le système pour permettre au fournisseur de gérer la plateforme efficacement.

Logiciel en tant que service (SaaS)

Avec la plateforme SaaS, tout est mis à votre disposition à l’exception des utilisateurs et des données d’application.

Le fournisseur fournit le code d’application et le développeur a un accès limité pour modifier le logiciel utilisé.

En général, ce n’est pas le bon choix pour déployer des applications personnalisées, car le fournisseur fournit la pile logicielle complète. Les clients de messagerie Web hébergés et les logiciels d’automatisation des ventes hébergés sont deux bons exemples d’utilisation du SaaS.

Avantages :

  • L’intégralité de la pile est fournie par le fournisseur, à l’exception des utilisateurs de l’application et des données associées.

Inconvénients:

  • Vous avez un contrôle limité sur l’application hébergée et il est souvent difficile d’intégrer des flux de travail externes dans le système.

Lequel choisir ?

En tant que développeur d’applications, vous devez choisir PaaS, car l’infrastructure est gérée pour vous, afin que vous puissiez vous concentrer sur le code de votre application.

Mise à l’échelle de votre application

Mise à l'échelle d'application mobile cloud

Comme mentionné précédemment, PaaS fournit une mise à l’échelle prête à l’emploi pour la plupart des langages et des runtimes. Cependant, en tant que développeur, vous devez être conscient des types de mise à l’échelle offerts et à quel moment il serait approprié de mettre à l’échelle horizontalement ou verticalement.

1. Mise à l’échelle verticale

La mise à l’échelle verticale était le choix par défaut depuis des décennies.

Ce type de mise à l’échelle consiste à utiliser simplement des systèmes plus grands pour gérer la charge. C’est l’une des raisons pour lesquelles il existe aujourd’hui des serveurs avec un téraoctet de RAM et un nombre énorme de CPU et de cores pour servir une seule application Java®.

Lors de l’utilisation de la mise à l’échelle verticale, un seul grand système est généralement utilisé pour gérer la plupart ou la totalité des requêtes d’application des utilisateurs.

2. Mise à l’échelle horizontale

Avec la mise à l’échelle horizontale, la charge et les requêtes d’application sont réparties sur un groupe de serveurs plus petits qui se trouvent généralement derrière un équilibreur de charge.

Lorsqu’une requête d’un utilisateur est effectuée, l’équilibreur de charge envoie la requête à un serveur, puis gère l’état de la session sur le cluster de serveurs.

En général, il existe deux types de mise à l’échelle horizontale à utiliser pour garantir la meilleure expérience possible aux utilisateurs de votre application : mise à l’échelle manuelle et automatique.

Mise à l’échelle manuelle

Avec la mise à l’échelle manuelle, vous spécifiez que vous voulez que l’application soit mise à l’échelle pour gérer l’augmentation du trafic lorsque vous savez que vous avez un événement à venir qui augmentera la requête de l’application.

Par exemple, si vous savez que vous allez lancer une campagne marketing pour attirer davantage d’utilisateurs vers votre application, vous devriez peut-être ajouter proactivement des serveurs supplémentaires à votre cluster.

La plupart des fournisseurs PaaS vous permettent d’accomplir cette tâche avec une simple commande.

Mise à l’échelle automatique

Avec la mise à l’échelle automatique, vous spécifiez les conditions dans lesquelles votre application sera automatiquement mise à l’échelle sans aucune interaction humaine.

Cette condition peut être basée sur des éléments tels que le nombre de requêtes HTTP simultanées que votre application reçoit ou la quantité de CPU que votre application utilise.

Cela permet au développeur d’ajouter automatiquement de nouveaux serveurs à l’équilibreur de charge lorsque la requête de l’application est élevée.

La mise à l’échelle automatique offre une approche vraiment évolutive de la mise à l’échelle tout en garantissant que la requête des utilisateurs est satisfaite en temps opportun. La mise à l’échelle automatique est cruciale lorsque vous avez une utilisation imprévue de votre application en raison de certaines circonstances.

Par exemple, vous pouvez mettre votre application mobile en vedette sur un magasin d’applications pendant une courte période lorsque vos services back-end résident dans le cloud.

Quel type de mise à l’échelle d’application devriez-vous choisir ?

En tant que développeur, vous devez choisir une plateforme qui permet une mise à l’échelle horizontale manuelle et automatique de votre application.

Prenez compte de l’état de l’application

état de l'application mobile cloud

La plupart des fournisseurs cloud qui fournissent une PaaS souhaitent que vous commenciez par le développement « greenfield ».

Cela signifie que les projets ne sont pas affectés par les contraintes des travaux antérieurs. Le portage d’applications existantes ou héritées vers la plateforme peut être un défi.

En effet, les systèmes de fichiers en place sont principalement de nature éphémère et ne permettent pas d’enregistrer l’état ou les ressources de l’application sur le système de fichiers.

Cette restriction est la raison pour laquelle vous pourriez entendre que vous devez considérer les futures applications comme étant sans état.

Pour bénéficier des avantages d’une infrastructure résidant dans le cloud, vous devez utiliser le design d’applications sans état dans vos projets. Pour y parvenir, tenez compte des pratiques suivantes pour les nouvelles applications cloud :

  • Autorisez le serveur d’applications ou le conteneur à maintenir l’état de session de l’utilisateur sur le cluster au lieu de s’appuyer sur le système de fichiers.
  • Ne stockez pas de fichiers ou de ressources utilisateur sur le système de fichiers physique du serveur sur lequel votre code est déployé. Pensez plutôt à utiliser un service de stockage basé sur le cloud et à fournir des actifs via l’API REST fournie pour le service de stockage.
  • Utilisez une base de données pour stocker des actifs liés à un utilisateur si vous n’avez pas accès à une API de stockage cloud.

Quel état d’application devez-vous choisir ?

Pour les applications « greenfield », vous devez concevoir des applications sans état.

Cela signifie qu’elles ne stockent pas les actifs ou les ressources utilisateur sur le système de fichiers. Pour les applications anciennes ou existantes, choisissez un fournisseur PaaS qui prend en charge les applications avec et sans état.

Choisissez une base de données pour les applications compatibles avec le cloud

Base de données pour les applications cloud

Presque toutes les applications créées aujourd’hui reposent sur une base de données d’un certain type sur le back-end pour stocker et récupérer des informations à présenter à l’utilisateur.

Lors du développement d’applications pour le cloud, vous devez aussi tenir compte des bases de données que vous utiliserez ainsi que de leur emplacement.

La base de données doit-elle être hébergée sur les mêmes serveurs que l’application, ou vaut-il mieux l’héberger sur un serveur ou un conteneur distinct ?

Dans la plupart des cas, une application s’appuie sur des informations stockées dans une base de données située derrière un pare-feu d’entreprise, tandis que le front-end de l’application est déployé sur le cloud public.

Dans ce cas, vous avez deux options pour accéder efficacement aux informations que vous devrez présenter à l’utilisateur sur le front-end.

Option 1

Choisissez un fournisseur qui vous permet d’ouvrir une connexion VPC distante à votre base de données.

Option 2

Communiquez avec la base de données via un ensemble de services REST authentifiés déployés sur l’infrastructure et qui ont accès aux données.

Ces deux options présentent des risques de sécurité inhérents que vous devez prendre en compte lors de la connexion à une base de données derrière un pare-feu d’entreprise à partir d’une application cloud externe. Dans ce cas, votre meilleure option consiste à sélectionner un fournisseur cloud PaaS qui vous permet de déployer vos applications sur un environnement non multi-locataire.

Si votre code d’application n’a pas besoin de se connecter à une base de données d’entreprise existante, alors plusieurs options s’offrent à vous.

Je vous suggère de déployer votre base de données dans la même zone géographique/centre de données /région que votre code d’application, mais sur des conteneurs ou serveurs différents de votre code d’application front-end.

Utilisez cette option pour mettre à l’échelle la base de données indépendamment du niveau Web. Veillez également à choisir une base de données qui évolue rapidement et facilement, qu’il s’agisse d’une base de données SQL ou NOSQL.

Pensez à plusieurs zones géographiques

zones géographiques

L’un des grands avantages du cloud computing est que vous pouvez déployer votre infrastructure d’application dans le monde entier avec un coût initial faible voire nul.

Par exemple, déployer une application qui possède des serveurs en Amérique du Nord et dans la région EMEA a traditionnellement engendré un énorme coût initial pour l’achat et la fourniture de matériel et de centres de données.

Avec une infrastructure qui réside dans le cloud, vous pouvez facilement déployer votre application sur autant de zones géographiques que votre fournisseur prend en charge.

Pour les applications simples ayant un nombre limité d’utilisateurs, cette option n’est pas obligatoire. Cependant, avoir accès au déploiement de code dans plusieurs zones géographiques est important pour gagner la satisfaction clientèle en localisant le code d’application aussi près que possible de votre public cible.

Vous aurez la possibilité de mettre à l’échelle manuellement ou automatiquement votre application sur différentes zones géographiques. Puis, vous aurez une proposition de valeur très intéressante en encourant un coût inférieur à celui du déploiement d’une infrastructure informatique traditionnelle.

Quel hébergeur cloud devriez-vous choisir pour plusieurs zones géographiques ?

Choisissez un fournisseur cloud qui vous permet à la fois de déployer et de faire évoluer votre infrastructure d’application sur plusieurs zones géographiques à travers le monde. Cela garantit à votre audience une expérience rapide et réactive lors de l’utilisation de votre application.

Créez et utilisez des services Web basés sur REST

Design du REST-API

Comme vous pouvez le voir, le déploiement de votre code d’application dans le cloud offre de nombreux avantages.

Un avantage crucial pour les applications à forte demande est la possibilité de mettre à l’échelle indépendamment les niveaux Web et base de données.

Cela dit, il est aussi recommandé de séparer votre logique métier en services Web que votre code front-end peut consommer. Utilisez cette pratique pour mettre à l’échelle le niveau des services Web indépendamment de la base de données et du code front-end.

La séparation de votre logique d’application du niveau de présentation ouvre de nouvelles portes pour des technologies que vous n’avez peut-être pas envisagées dans le passé, telles que la création d’une application web à page unique (monopage) en utilisant un langage tel que Node.

Mettez en œuvre une livraison et une intégration continues

livraison et intégration continues

DevOps semble être le dernier mot à la mode qui attire les entreprises.

Pour avancer, vous devriez sans doute commencer à examiner et à mettre en œuvre à la fois l’intégration et la livraison continues sur votre prochain projet logiciel.

Lorsque vous déployez des applications dans une infrastructure cloud, assurez-vous que des flux de travail sont en place sur votre système de build existant.

Cela permet au code d’être déployé dans les différents environnements. Heureusement, la plupart des systèmes de build les plus populaires fournissent des plugins pour certains fournisseurs cloud principaux d’aujourd’hui.

Ce qui facilite la configuration de vos règles de déploiement en fonction des autorisations correctes de qui a accès pour déployer le code dans chaque environnement. Si vous n’utilisez pas un système de build actuellement pour votre équipe de développement, commencez à en utiliser un maintenant !

Quel fournisseur cloud devriez-vous choisir pour une intégration et une livraison continues ?

Choisissez un fournisseur cloud qui répond à toutes les exigences ci-dessus avec la fonctionnalité supplémentaire des outils intégrés d’intégration continue et de livraison continue (CI/CD) sur la plateforme. Ce fournisseur doit vous permettre de déployer votre propre système de build ou de vous intégrer facilement aux systèmes existants qui résident en dehors de la plateforme cloud.

Évitez le blocage des fournisseurs

évitez le blocage des certains fournisseurs cloud

Si vous retirez quelque chose de cet article, j’en serai ravi. Alors que de nombreux fournisseurs cloud fournissent de superbes API propriétaires qui réduisent la quantité de code ou de travail que vous avez à faire, vous devez les éviter à tout prix.

Ce n’est rien de plus qu’un simple stratagème pour vous enfermer dans leur écosystème. Ce qui rend extrêmement difficile le transfert de votre application vers un autre fournisseur ou vers votre propre centre de données en interne.

Pour éviter ces API personnalisées, respectez les piles de technologies éprouvées dans votre application, dont le niveau de base de données, le niveau de stockage et tous les points de terminaison de microservice que vous voulez créer.

Bien que l’investissement initial peut être un peu plus élevé que l’utilisation d’une solution propriétaire prête à l’emploi, votre dette technique est considérablement réduite. Cela peut vous faire économiser du temps et de l’argent à long terme.

Développer localement ou dans le cloud

Développer localement ou dans le cloud

En tant que développeurs, nous codons souvent des applications sur notre système local. Puis, lorsque le travail a franchi une étape importante, nous déplaçons notre code dans l’environnement de développement de l’équipe.

La plupart des développeurs souhaitent pouvoir développer au quotidien avec une infrastructure qui ressemble le plus possible à la production. Cet objectif peut souvent être difficile en raison des frais généraux d’administration du système encourus pour fournir à chaque développeur un cluster de machines.

Maintenant que PaaS est disponible, tous les développeurs devraient commencer à développer et à déployer leur code dans le cloud. La plupart des environnements de développement intégrés (IDE) fournissent des plugins pour rationaliser le processus et permettent de se sentir aussi proche que possible du développement local.

Quel IDE choisir ?

Choisissez un IDE qui fournit un plugin pour le fournisseur cloud de votre choix. Puis, optez pour un fournisseur qui vous permet de déployer à chaud le code d’application et d’activer le débogage à distance de votre code source.

Une fois que vous avez sélectionné un fournisseur qui offre ces deux choses, vous pouvez continuer à définir des points d’arrêt dans votre IDE et parcourir le code comme si vous déployiez localement. Cela vous permet de détecter plus rapidement les bogues qui n’apparaissent que lors du passage à un environnement en cluster.

Que rechercher dans les années à venir auprès des fournisseurs cloud ?

Cet article s’est concentré sur l’état actuel des applications déployées dans le cloud. Ce qu’il faut rechercher et considérer dans les prochaines années est le basculement de nombreuses industries vers des déploiements basés sur des conteneurs.

Vous avez sans doute déjà entendu parler de Docker et de conteneurs rocket. Lors de la sélection d’un fournisseur cloud, assurez-vous que la feuille de route pour la migration des applications vers des déploiements basés sur des conteneurs est clairement indiquée avec une timeline qui définit clairement votre chemin de migration.

Soyez également à l’affût des fournisseurs qui s’en tiennent aux solutions standard de l’industrie autour des conteneurs et de l’orchestration, au lieu de créer des solutions propriétaires.

Conclusion

Le cloud computing présente de nombreux avantages dont vous devriez tirer parti dans votre développement et déploiement quotidien de logiciels. Cela peut rendre votre logiciel plus stable, évolutif et sécurisé. Lorsque vous déplacez des applications vers le cloud, tenez compte des conseils suivants :

  1. Pour le développement d’applications, choisissez PaaS. L’infrastructure est gérée par un fournisseur. Cela vous donne plus de temps pour vous concentrer sur le code de votre application.
  2. Pour le développement d’applications, choisissez une plateforme qui permet une mise à l’échelle horizontale manuelle et automatique de votre application.
  3. Pour les applications « greenfield », concevez des applications sans état.
  4. Pour les applications anciennes ou existantes, choisissez un fournisseur PaaS qui prend en charge les applications avec et sans état.
  5. Choisissez une base de données évolutive et située sur un serveur ou un conteneur différent de votre code d’application. Vous pouvez ensuite mettre à l’échelle la base de données indépendamment.
  6. Choisissez un fournisseur cloud qui vous permet à la fois de déployer et de mettre à l’échelle votre infrastructure d’application sur plusieurs zones géographiques à travers le monde.
  7. Développez en utilisant des services Web basés sur REST.
  8. Choisissez un fournisseur cloud qui répond à toutes les exigences précédentes avec la fonctionnalité supplémentaire d’intégrations continues et d’outils de livraison continue intégrés dans la plateforme.
  9. Évitez d’être bloqué par un fournisseur.

Aina Strauss

À lire aussi

equilibreur charge gcp

Équilibreur de charge sur Google Cloud Platform

Table de matièreChoisissez entre IaaS, PaaS et SaaSInfrastructure en tant que service (IaaS)Plateforme en tant …