Article écrit par Nicolas Mérouze
Nous vous proposons de découvrir les avantages et inconvénients des offres d’hébergement d’applications web : on-premise location de serveurs dédiés IaaS CaaS PaaS serverless etc.
Avec l’arrivée du Cloud les solutions se sont multipliées et il peut être complexe de les différencier.
Malgré tout de réelles avancées ont été faites pour rendre l’hébergement plus facile à configurer et à moindre coût.
À tel point que dans certaines situations on peut se passer d’infogérance ou d’administrateur système.
L’émergence du DevOps
Le DevOps est un ensemble de pratiques qui permet d’associer développement et opérations.
Avec un besoin de mises à jour fréquentes pour rester innovant, le modèle traditionnel du développement d’applications avec des mises à jour espacées de plusieurs mois ou même années n’est plus possible.
Pour pouvoir mettre en production régulièrement, être agile n’est qu’une partie de l’équation. Le DevOps est là pour accélérer le processus grâce à une meilleure synergie entre les développeurs, les testeurs, les chefs de projets et les clients.
Cela passe par l’utilisation d’outils pour le contrôle du code l’exécution des tests automatisés à chaque changement de code le monitoring l’automatisation de la gestion de l’infrastructure etc.
Néanmoins l’impact est important sur l’hébergement de vos applications web.
Les contraintes du on-premise
Parlons d’abord du on-premise (auto-hébergement en français). Dans ce cas, vous achetez et utilisez vos propres serveurs. Le seul avantage désormais pour cette solution est de pouvoir avoir un contrôle total si des lois vous y obligent ou si c’est un avantage concurrentiel pour votre entreprise. Dans tous les autres cas, le Cloud est à privilégier.
En effet, l’on-premise a beaucoup de contraintes. Tout d’abord, le coût initial d’achat des serveurs est important. Le délai de livraison de ces serveurs peut être de plusieurs semaines et il est difficile d’estimer correctement le nombre de serveurs nécessaires sur le moyen et long terme. De plus, les pannes peuvent vous coûter cher si vous n’avez pas la pièce de rechange disponible ou pire s’il faut remplacer un ou plusieurs serveurs en même temps.
Et c’est sans parler des problématiques réseaux de monitoring et plus encore.
Location de serveurs dédiés
Comme le coût initial du on-premise est trop important, une alternative peut être la location de serveurs dédiés.
Dans ce cas, l’hébergeur va vous louer un de leurs serveurs dans leur data center. Vous y avez accès rapidement mais le choix peut être limité, certains serveurs peuvent ne plus être en stock.
Néanmoins, la montée en charge n’est pas simple. Plus vous aurez de serveurs, plus vous aurez de composants à configurer : stockage et base de données partagées réseau privé redondance etc.
Les différentes offres du Cloud
Le Cloud n’a pas tous ces problèmes. Il n’y a pas de coûts initiaux, vos serveurs sont disponibles en quelques secondes et les pannes ont un impact souvent négligeable sur votre activité.
Les incidents existent bien sûr. Récemment Google Cloud a été victime d’un problème de réseau mais c’est très rare. De nombreux sites et applications comme Youtube Gmail Snapchat et Shopify ont été indisponibles. Mais le problème a été résolu rapidement.
Cependant, le nombre de solutions qui s’ouvrent à vous est dense et peut faire peur. Voici un guide qui vous permettra d’y voir plus clair.
Infrastructure-as-a-Service (IaaS)
Les solutions IaaS permettent d’utiliser l’infrastructure (réseau serveurs stockage etc) d’un tiers. Tout est virtualisé et la création des ressources demandées se fait très rapidement.
De plus la configuration et la gestion des services utilisés peuvent se faire avec une API ce qui a ouvert la voie à la création de nombreux outils pour automatiser de nombreuses tâches.
Enfin la facturation se fait à la seconde. C’est-à-dire que vous ne payez que ce que vous utilisez. Vous pouvez utiliser une machine virtuelle pendant 5 minutes pour un test de charge ou une tâche particulière par exemple et vous ne paierez que 5 minutes de consommation.
L’expertise à votre service
La gestion de l’infrastructure par des experts permet d’avoir une grande fiabilité ainsi qu’un monitoring 24/7/365 ce qui vous coûtera une somme très importante si vous le faisiez en interne avec du on-premise.
La majorité du marché IaaS est détenue par Amazon AWS (EC2) Google Cloud Platform (CE) et Microsoft Azure (VM). De nombreuses sociétés ont fait un choix 100% Cloud.
Avec une croissance rapide, Netflix représente aujourd’hui 15% du trafic internet et utilise Amazon AWS. Il leur était impossible de faire la montée en charge de leur propre infrastructure avec une telle croissance et ont donc décidé d’utiliser une solution IaaS.
Containers-as-a-Service (CaaS)
L’origine des conteneurs
Malgré l’automatisation de la gestion de l’infrastructure, la configuration des machines virtuelles pour l’exécution d’applications web reste imparfaite.
Des outils existent pour l’automatiser, par exemple Ansible mais une partie de la configuration est spécifique au système d’exploitation utilisé. Une mise à jour de l’OS ou un changement d’infrastructure demandera un changement de la configuration.
Les conteneurs sont la solution à ce problème. Ils offrent un moyen standard de joindre le code, les configurations et les dépendances de votre application dans un seul objet, le conteneur. Cet objet est ensuite déployable partout.
Avantages des solutions CaaS
En s’appuyant sur une solution IaaS un CaaS vous permet d’y inclure la gestion des conteneurs à l’aide d’une API. Comme pour les APIs des solutions IaaS de nombreux outils se sont créés pour automatiser la gestion des conteneurs.
De plus, de nombreuses images de conteneurs sont publiques, réduisant encore plus le travail pour le DevOps.
Une solution CaaS apporte donc de nombreuses automatisations comparées à un IaaS. Vous perdez un peu de contrôle sur la configuration des machines virtuelles mais vous gagnez une stabilité et flexibilité accrue.
Et avec la standardisation des conteneurs, il est désormais possible de migrer d’un prestataire à un autre avec une période d’indisponibilité minimale voire nulle. Vous pouvez donc migrer d’Amazon AWS (EKS) vers Google Container Engine (GKE) ou Microsoft Azure (AKS) ou alors en utiliser plusieurs dans un souci de redondance.
Plateform-as-a-Service (PaaS)
Avec un PaaS presque rien n’a besoin d’être configuré. Une seule commande et votre application est en production. Aucun pré-requis en amont ou presque.
Certaines de ces solutions utilisent le terme NoOps en contraste avec DevOps. Les opérations sont réduites au minimum mais il peut cependant rester des pratiques DevOps à mettre en place.
C’est la solution idéale si personne en interne n’a de compétences DevOps. Mais le contrôle est moins grand qu’avec une solution CaaS ou IaaS et vous ne trouverez peut-être pas un PaaS compatible avec votre application.
Heroku filiale de Salesforce est le PaaS le plus populaire mais il n’y a pas de serveurs en France contrairement à un PaaS français comme Scalingo.
Serverless
Comme pour le PaaS le serverless peut être considéré comme une solution NoOps. Mais contrairement à une solution PaaS avec le serverless les ressources s’ajustent automatiquement. De ce fait, quand aucune ressource n’est utilisée, rien n’est facturé.
Malgré le nom il y a bien des serveurs mais sa gestion est totalement abstraite. Les outils sous-jacents vont donc gérer le nombre de serveurs nécessaires en fonction de la charge et s’il n’y a aucune charge, aucun serveur ne sera utilisé.
C’est impossible avec d’autres solutions car le temps de démarrage d’un serveur est trop long, les serveurs sont donc toujours allumés. Une solution serverless permet donc réellement de ne payer que ce que l’on consomme.
Cependant l’architecture du code d’une application web avec le serverless sera très différente. Chaque fonction de l’application va être exécutée séparément des autres. Une application existante ne peut donc pas utiliser une solution serverless sans modification.
Hébergement statique
Une dernière chose à noter. Comme vu dans notre article sur l’architecture des applications web le code du backend est de plus en plus séparé du frontend. Dans ce cas les deux peuvent être hébergés indépendamment.
Mais le frontend n’étant constitué que de fichiers statiques, pas besoin de sortir l’armada. Des solutions peu onéreuses existent pour l’hébergement statique par exemple Netlify ou Firebase (Google).
Conclusion
Utiliser le Cloud pour héberger votre application vous apporter de nombreux avantages. Il y a des solutions adaptées à chaque type d’entreprise et de projets. À vous de choisir la bonne en fonction de votre équipe ou votre prestataire externe et de vos besoins.
Pour les organisations qui utilisent le DevOps les principaux bénéfices cités sont : la rapidité de mise sur le marché (mentionnée par 70% du panel) la productivité (67%) la pertinence pour le client (67%) l’innovation (66%) et la qualité des produits/services (64%).
Les entreprises utilisant le DevOps en sont globalement satisfaites. Il peut y avoir des obstacles dans votre entreprise comme des technologies héritées.
Le mieux dans ce cas est de trouver un petit projet sur lequel mettre en place les pratiques DevOps pour prouver que c’est bénéfique et pour ensuite petit à petit migrer le reste du système d’information.