Les conteneurs dévorent le monde. Si vous avez construit et déployé une application en production au cours des dernières années, il y a de fortes chances que vous ayez déployé votre code dans des conteneurs. Vous avez peut-être créé et déployé des conteneurs individuels (Docker, Linux LXC, etc.) directement au début, mais vous êtes rapidement passé à une technologie d'orchestration de conteneurs telle que Kubernetes (K8s) ou Swarm lorsque vous deviez coordonner des déploiements multi-nœuds et une haute disponibilité. (HA). Dans ce monde axé sur les conteneurs, à quoi ressemblera l'avenir de la pile d'applications ? Commençons par ce dont nous avons besoin de cette "future" pile d'applications.
De quoi avons-nous besoin de cette future pile d'applications ?
-
Indépendant du cloud
Nous voulons être agnostiques au cloud avec la possibilité de déployer sur n'importe quel cloud de notre choix. Idéalement, nous pouvons même combiner plusieurs fournisseurs dans un même déploiement.
-
Sur site
Nous devons être en mesure d'exécuter notre pile d'applications sur site avec notre propre matériel personnalisé, notre cloud privé et nos centres de données gérés en interne.
-
Indépendant de la langue
Cela va presque de soi, mais je vais l'ajouter pour être complet. La future pile ouverte doit prendre en charge tous les langages de programmation courants.
La future pile d'applications
La future pile d'applications sera composée d'une triade de technologies :K8, Platform-as-a-Service (PaaS) et Database-as-a-Service (DBaaS) :
K8s
Kubernetes est une plate-forme open source portable et extensible pour la gestion des charges de travail et des services conteneurisés, et vous pouvez déployer vos applications directement dans les conteneurs K8s. Pour les clients disposant d'applications existantes, il est tout à fait logique de regrouper et de déployer directement vos applications existantes sur les K8.
L'avenir de la pile d'applications :K8, PaaS et DBaaSCliquez pour tweeter
Tous les fournisseurs de cloud public offrent une prise en charge native solide des K8, et vous pouvez également exécuter votre propre cluster K8 sur site. Docker a également sauté dans le train K8s - vous avez donc une flexibilité totale. Il ne fait aucun doute que K8s est le roi de la colline aujourd'hui. Dans quelques années, elle pourrait être dépassée par une autre solution, mais la technologie d'orchestration de conteneurs est là pour rester.
Solutions PaaS
Si vous créez une nouvelle application à partir de zéro, les solutions de plate-forme en tant que service telles que Cloud Foundry et OpenShift offrent des avantages convaincants que vous pouvez exploiter pour accélérer le développement de votre application. cycle de vie. Un PaaS est-il indispensable ? Certainement pas, mais je pense que cela vaut la peine d'être considéré si vous créez une nouvelle application.
Dans certains cas, les solutions PaaS peuvent fonctionner sur des K8 ou s'asseoir à côté ; du point de vue de l'application, cela n'a pas d'importance. Si votre organisation informatique déploie la solution PaaS, elle appréciera peut-être qu'elle s'exécute uniquement sur ses clusters K8 existants. Les solutions PaaS mentionnées ci-dessus sont également disponibles sur tous les clouds publics. Encore une fois, vous disposez de toute la flexibilité dont vous avez besoin de votre plate-forme.
Solutions DBaaS
L'exécution et la gestion d'un système de base de données de production ne sont pas pour les âmes sensibles. Si vous pensez que vous allez installer votre base de données de production sur trois conteneurs et qu'elle fonctionnera bien pour toujours, vous avez autre chose à venir. En utilisant une solution de base de données en tant que service, ils géreront tous les aspects opérationnels de la gestion de votre base de données afin que vous soyez prêt à faire face à tous les imprévus.
Votre DBaaS peut ou non fonctionner sur K8. Peut-être que certaines parties du DBaaS fonctionnent sur des K8, mais il y a de fortes chances que ce ne soit pas le cas. Pourquoi est-ce ?
- En dehors des clouds publics populaires, il n'existe pas de solution idéale pour le stockage/les volumes qui sont jusqu'à la qualité EC2 Elastic Block Storage (EBS). Des fournisseurs comme PortWorx et OpenEBS y travaillent, mais ce n'est pas encore là. Sans une bonne solution de stockage, il est pratiquement impossible de placer des données dans vos conteneurs.
- Si vous utilisez un grand serveur de base de données de production de plusieurs To, cela n'a aucun sens de l'exécuter dans des conteneurs :vous allez avoir de grandes machines dédiées avec des SSD sophistiqués. .
- Trop de dynamisme - oui, vous pouvez avoir trop d'une bonne chose. Parfois, lorsque les choses échouent, vous voulez qu'elles restent en échec afin que vous puissiez jeter un coup d'œil et voir ce qui se passe. Les StatefulSets dans Kubernetes sont un grand pas dans la bonne direction pour résoudre ce problème.
Chez ScaleGrid, notre vision est de livrer la partie DBaaS de cette future pile d'applications. Nous sommes aujourd'hui multi-cloud et pouvons également fonctionner sur site ou dans votre propre centre de données privé. De plus, notre plate-forme est un système polyglotte qui prend en charge plusieurs bases de données, notamment MongoDB®, Redis™*, MySQL et PostgreSQL.
Par souci de simplicité, j'ai exclu certaines autres parties des piles d'applications comme le stockage d'objets, le stockage du système de fichiers, etc. En principe, je m'attends à ces composants seront similaires au composant DBaaS. Ce billet de blog a été inspiré par une réunion PostgreSQL de la Silicon Valley à laquelle j'ai assisté il y a quelques semaines, et je remercie Dave Nielsen (@davenielsen) de RedisLabs pour avoir lancé la discussion sur ce sujet.