Comment Jamespot fait face à la montée en charge grâce à l’adoption du multi-cloud
La plateforme Jamespot a été développée sur une architecture monolithique reposant sur des VM. Apprenez comment ils ont migré sur une stratégie multi-cloud.
Avant de plonger dans le vif du sujet, il est intéressant de rappeler ce qu'est une solution SaaS :
SaaS signifie Software as a Service (logiciel en tant que service en français). Il s'agit d'une méthode de distribution d'un logiciel qui implique généralement un modèle d'abonnement pour accéder à un produit, un outil ou un service.
À quelques exceptions près, ces logiciels sont hébergés dans le cloud et sont accessibles directement depuis un navigateur ou un appareil mobile ce qui augmente grandement l'accessibilité de ces derniers.
D'un point de vue de l'évolution des usages, pour pouvoir utiliser une application ou un logiciel, il était traditionnellement nécessaire de l'installer sur ses serveurs applicatifs. Pour cela, il fallait avoir un ou plusieurs collaborateur(s) dans son entreprise capable(s) de gérer toutes les couches, de la mise en réseau au maintien de l'application elle-même. Mais surtout, il était bien souvent nécessaire de posséder les infrastructures.
Sont ensuite arrivés les concepts d'hébergement IaaS (Infrastructure as a Service) et, un peu plus tard, PaaS (Plateform as a Service). Ces nouveaux modes de consommation des ressources informatiques ont permis d'apporter une couche d'abstraction et de simplification pour déployer et installer nos logiciels ou ceux de nos clients. C'est donc dans cette lignée de nouvelles méthodes de consommation de commodités informatiques que les SaaS ont vu le jour.
La problématique est alors simple : Permettre à mon client d'utiliser simplement mon logiciel.
Plus besoin de devoir l'installer, de gérer les mises à jour ou de maintenir l'infrastructure.
Les solutions SaaS sont principalement construites sur deux types d'architectures :
Multi-instance d'un côté et multi-tenant de l'autre.
"Tenant" signifie locataire en anglais, c'est tout simplement l'équipe ou l'organisation de vos clients.
On ne les verra pas ici mais il existe aussi des architectures mono-instance, multi-instance avec base de données partagée ou encore flex tenancy qui sont un peu moins courantes.
L'objectif de cet article n'est pas de prendre le parti d'une architecture particulière car chaque architecture répond à des besoins différents. L'idée est donc de pouvoir comparer les deux types d'architecture pour vous permettre de choisir celle qui vous convient le mieux en fonction de vos problématiques et celles de vos clients.
À noter que le résultat ne sera pas très différent pour l'utilisateur final. En revanche, il variera grandement dans la conception de l'architecture du système, des données et de leurs accès ainsi que dans la configuration et la gestion des utilisateurs.
Penchons-nous donc sur les avantages et les inconvénients de chacune d'entre-elles en commençant par les architectures multi-instances :
Dans une architecture multi-instance, plusieurs entreprises exécuteront leur propre instance distincte de l'application, avec leur propre base de données. Chaque entreprise aura donc accès à ses données séparément d'une autre.
Ce type d'architecture permet d'apporter les avantages suivants :
En revanche, aucune architecture n'étant parfaite, nous noterons quand même les points négatifs suivants :
Regardons maintenant un autre type d'architecture, le multi-tenant. Ici plusieurs entreprises utiliseront une seule instance de l'application (qui pourra évidement être répliquée si besoin), avec une base de données unique. Cette architecture ne donne pas beaucoup de flexibilité mais simplifie le processus d'ajout de fonctionnalités et de correction des bugs de code.
Avantages majeurs :
Inconvénients :
Vous avez maintenant les cartes en mains pour comprendre les différences entre les deux types d'architectures.
Pour résumer, de mon côté, si j'avais une problématique de "fast time-to-market" et besoin de développer rapidement une solution SaaS, je me pencherais plutôt sur une architecture multi-tenant car plus simple à mettre en place. En revanche si j'avais besoin de développer une solution plus robuste et plus sécurisée, j'opterais plutôt pour une architecture multi-instance et bénéficierais d'une isolation totale des données.
Kubernetes a l'avantage de pouvoir vous permettre de batir aussi bien une architecture multi-instance que multi-tenant. Vous pourrez alors orchestrer plus facilement vos déploiements, vos mises à jour, répliquer ou même "auto-scaler" votre infrastructure. Chez Scaleway, nous avons développé une offre Kubernetes Managé: Kubernetes Kapsule.
Voyons quelques fonctionnalités incontournables :
kubectl autoscale deployment myapp --cpu-percent=70 --min=1 --max=10
myapp
pour qu'elle évolue jusqu'à 10 pods lorsque le pourcentage de CPU dépasse 70.Kubernetes Kapsule est donc un excellent outil pour gérer votre infrastructure cloud. Si vous rencontrez des difficultés pour mettre à l'échelle votre application, envisagez de passer à une architecture basée sur Kubernetes. Vous constaterez une forte augmentation de la productivité de vos DevOps en matière de déploiements, de clustering et de stabilité globale.
Cet article est tiré du Webinar "Découvrez les avantages de Kubernetes pour héberger une solution SaaS", n'hésitez pas à le revoir sur Youtube :
La plateforme Jamespot a été développée sur une architecture monolithique reposant sur des VM. Apprenez comment ils ont migré sur une stratégie multi-cloud.
Familink a récemment migré l’intégralité de son infrastructure d’AWS à Scaleway. Apprenez de leur retour d'expérience comment stocker vos données en Europe.
Dans cet article, nous allons distinguer les différentes méthodes d'autoscaling fournies par Kubernetes et comprendre les différences entre l'horizontal pod autoscaler et le vertical pod autoscaler.