Bien que de plus en plus plébiscitées par les entreprises, les architectures hybrides soulèvent encore des problématiques complexes, auxquelles la combinaison de ces trois technologies pourrait bien répondre.

Selon une étude publiée par Synergy Research Group, le marché du cloud totaliserait un chiffre d’affaires de 146 milliards de dollars en 2016, en hausse de 25% par rapport à 2015. L’IaaS (Infrastructure As a Service) et le PaaS (Platform As A Service) enregistreraient à eux seuls une croissance cumulée de 53% sur l’année.

OpenStack : l’IaaS qui monte…

L’un des grands gagnants de cette évolution est sans aucun doute OpenStack, un système d’exploitation open source, qui permet aux entreprises de déployer une infrastructure cloud privée robuste, sécurisée et flexible. OpenStack entend ainsi fournir une alternative à la fois gratuite et performante aux géants du cloud comme AWS, Google Cloud, Microsoft Azure ou Digital Ocean.

Contrairement à ces derniers, qui ont une API propriétaire, OpenStack est une solution ouverte permettant aux entreprises de s’affranchir des problématiques de propriété ou de dépendance commerciale, tout en offrant un maximum de flexibilité dans le cloud. OpenStack garantit ainsi une protection renforcée des données sensibles, qui sont systématiquement sécurisées dans le data center on premise des clients, donc sans risque de verrouillage ou d’inaccessibilité.

Pour les entreprises qui sollicitent de plus en plus de flexibilité, de sécurité et de fiabilité, OpenStack semble donc constituer une solution optimale. Mais les entreprises sont également de plus en plus nombreuses à s’intéresser de près au cloud hybride, cherchant à tirer parti du meilleur des deux mondes : la simplicité de déploiement des environnements publics, et la sécurité et le contrôle des environnements privés. Or, à l’instar de la plupart des infrastructures cloud, OpenStack n’a pas été conçu pour permettre une migration aisée de charge d’un environnement à un autre. Les architectures hybrides s’avèrent plus complexes à mettre en œuvre qu’il n’y paraît.

Containeriser les applications dans OpenStack avec Docker

Les containers ont commencé à faire parler d’eux dès le début des années 2000, mais le concept n’a réellement décollé que vers 2014, avec la sortie de Docker 1.0 – un buzz, devenu depuis un véritable phénomène.

Les containers sont une architecture permettant aux développeurs de faire tourner les process applicatifs dans des environnements d’exécution hermétiques. Ce choix s’avère particulièrement efficace dans un contexte de micro-services qui peuvent être déployés, testés et mis à jour indépendamment les uns des autres. Ils permettent également de créer rapidement des environnements de développement isolés des autres composants systèmes ou applicatifs. Les développeurs peuvent ainsi, en quelques commandes, packager des applications et les exécuter de manière transparente sur n’importe quel cloud privé ou public.

L’une des forces de Docker est donc d’offrir le socle d’exécution sur lequel OpenStack va s’appuyer, et éventuellement de containeriser les services OpenStack eux-mêmes. Les clients d’OpenStack peuvent choisir l’environnement, public ou privé, sur lequel ils souhaitent exécuter une application donnée ou certains services particuliers.

Mais aussi utiles que puissent être les containers, seul un système d’orchestration approprié permet d’en tirer tous les bénéfices. C’est là qu’intervient Kubernetes.

Kubernetes : une gestion automatisée des containers

Imaginez que vous ayez une application critique qui s’exécute sur une multitude de nœuds, avec des centaines de containers : sans Kubernetes, il vous faudrait gérer la mise à jour de ces centaines de containers à chaque nouvelle release. Avec le temps conséquent et surtout le risque d’erreurs que cela représente.

Kubernetes est une plateforme open source conçue pour automatiser le déploiement, la mise à l’échelle et l’exploitation des containers Docker. Il catégorise en quelque sorte les containers applicatifs en groupes fonctionnels (les « pods ») pour en faciliter la découverte, la gestion et la planification des évènements associés. Kubernetes permet ainsi aux développeurs de se concentrer sur leurs applications sans avoir à se soucier des infrastructures sous-jacentes.

La force de Kubernetes, c’est sa capacité à s’exécuter sur n’importe quelle infrastructure cloud, privée ou publique, et … gratuitement ! Cela vous permet de tirer pleinement partie de la puissance, de la scalabilité et des avantages liés à la sécurité d’une infrastructure hybride. Kubernetes offre en outre le choix du système d’exploitation, du moteur de stockage ou encore de l’architecture de processeurs les plus adaptés. Kubernetes est par ailleurs capable de s’auto-monitorer sur la couche système et hard et ainsi de remédier à certains problèmes, protégeant ainsi les applications containerisées de tout incident de disponibilité.

La combinaison gagnante ?

OpenStack n’a jamais été réputé pour son interopérabilité. En y ajoutant des containers et Kubernetes, les utilisateurs retrouvent la liberté de choisir le meilleur environnement cloud pour exécuter n’importe laquelle de leurs applications, ou parties d’application, tout en bénéficiant de scalabilité, de contrôle et de sécurité.

Kubernetes apporte ainsi un nouveau souffle à OpenStack : il permet de planifier automatiquement l’exécution des mises à jour, la livraison de nouvelles versions et de leurs composants, ainsi que de fonctionnalités OpenStack. La gestion du cycle de vie dans son ensemble s’en trouve très fortement optimisée. Les utilisateurs d’OpenStack bénéficient en outre d’une infrastructure capable de remédiation, ce qui rend OpenStack plus sûr et plus performant. D’un autre côté, les utilisateurs de Kubernetes accèdent à un framework solide de déploiement de leurs applications.

OpenStack et Kubernetes permettent finalement de résoudre des problèmes similaires, mais à des niveaux différents : ils constituent à ce titre une combinaison très efficace, permettant aux équipes DevOps de gagner en agilité, en liberté et en rapidité dans la création d’applications cloud-native innovantes.

Reste que dans des environnements aussi complexes, la question d’un monitoring applicatif adapté s’impose. La visibilité sur son système d’information en temps réel ainsi que l’isolation rapide des problèmes applicatifs n’ont jamais été aussi indispensables que dans ces architectures orchestrées, orientées services et hébergées dans des containers.

 

 

________
Rafaël Portolano est Consultant expert en Performance Applicative chez Dynatrace