Comment AWS veut supporter de mieux en mieux Docker

Comment AWS veut supporter de mieux en mieux Docker Le cloud d'Amazon commercialise une offre de Container as a Service depuis 2014. De plus en plus automatisée, elle prend désormais en charge l'orchestrateur Kubernetes.

Amazon Web Services (AWS) a été l'un des tous premiers géants du cloud à proposer une offre de Container as a Service (CaaS). La filiale d'Amazon commercialise sa solution dès 2014. Du côté des clouds de Google et Microsoft, il faudra attendre 2015 et 2016 pour voir apparaître des produits équivalents en version finale. Baptisée Amazon EC2 Container Service (Amazon ECS), la technologie d'AWS gère le déploiement et l'exécution d'applications dockérisées et clustérisées. "En amont, il suffit de renseigner l'architecture de containers à mettre en œuvre, les capacités IT dont elle a besoin, et les volumes de données partagés", explique-t-on chez Amazon. Pour fonctionner, ECS implique néanmoins de configurer l'infrastructure d'instances EC2 et de stockage EBS qui supportera le tout. Les containers ne s'exécutent pas nativement.

"Nous comptons désormais plus de 100 000 clusters ECS actifs mis en place par nos clients, et des centaines de millions de nouveaux containers démarrés sur EC2 chaque semaine. Ce qui représente une progression de 400% depuis 2016", souligne Andy Jassy, PDG d'AWS.

Un CaaS de plus en plus automatisé

Le principal point fort d'ECS ? Son intégration avec les autres services AWS. ECS peut notamment tirer profit de Service Auto Scaling pour dimensionner automatiquement l'infrastructure EC2 en fonction du trafic, ou encore d'Application Load Balancing pour gérer l'équilibrage de charge entre containers en fonction de leur contenu (composants applicatifs, microservices). Supportant aussi bien les containers Linux que Windows, ECS s'intègre par ailleurs aux outils de pilotage d'AWS (CI/CD Pipeline pour le déploiement et l'intégration continu, CloudWatch pour le monitoring, Blox pour l'ordonnancement des tâches, etc.).

"63% des workloads Kubernetes tournent sur AWS"

AWS met en avant plusieurs clients ayant recours à Amazon ECS parmi lesquels Capital One, Expedia, McDonald's ou Gopro. "ECS est disponible sans frais supplémentaires. Vous payez les instances EC2 ou EBS que vous créez pour stocker et exécuter votre application", précise AWS sur la page d'accueil d'Amazon ECS.

Lors de son dernier événement mondial re:Invent fin novembre, AWS ajoutait une nouvelle brique à l'édifice : un service Kubernetes (qui est pour l'heure en préversion). Objectif affiché : faciliter la configuration, le provisionning et l'exécution sur AWS de clusters de containers pilotés par l'orchestrateur open source. Baptisée Amazon Elastic Container Service for Kubernetes (ou Amazon EKS), "cette offre automatise le déploiement des masters Kubernetes sur plusieurs zones de disponibilité AWS, les paramètres pour qu'ils dialoguent entre eux, tout en assurant ensuite l'équilibrage de charge et la tolérance de panne", explique Andy Jassy. Là encore Amazon EKS peut tirer parti de plusieurs outils AWS tiers (Elastic Load Balancing, Amazon VPC, AWS PrivateLink...), mais nécessite lui-aussi de disposer d'une infrastructure EC2 et EBS pré configurée.

"Avec EKS, nous répondons à une demande forte de nos clients. D'après la Cloud Native Computing Foundation, 63% des workloads Kubernetes tournent sur AWS", insiste Andy Jassy, avant de préciser : "EKS est basé sur la version standard de Kubernetes. Ce qui doit faciliter la migration de systèmes Kubernetes  existants hébergés ailleurs vers le cloud d'Amazon."  

Toujours des VM en dessous

Ce n'est pas tout. Toujours lors son événement re:Invent 2017, AWS a donné le coup d'envoi d'un autre service orienté Docker. Baptisé Fargate, il est conçu pour mettre en œuvre une architecture de containers sans avoir à se soucier de l'infrastructure sous-jacente. "C'est très simple à utiliser. Cette fois, vous n'avez plus besoin de provisionner d'instances EC2. Vous packagez votre application en fonction des tâches à accomplir. Vous spécifiez le volume de CPU et de stockage nécessaire. Vous définissez la capacité réseau et la gestion des accès. Une fois l'ensemble de ces éléments chargés, Fargate déploie les workloads pour vous, automatise leur installation sur plusieurs zones de disponibilité AWS, et peut gérer automatiquement le dimensionnement des ressources serveur en fonction du trafic", détaille Andy Jassy. En tâche de fonds, Fargate se charge de paramétrer toute l'infrastructure sous le capot : provisionning serveurs, clusters... (voir l'infographie ci-dessous).

Précisons que Fargate se limite à la gestion de la couche applicative des systèmes, et n'est pas conçu pour prendre en charge les bases de données. Pour ce type de besoins, AWS renvoie à ses services ad hoc dans ce domaine (type Aurora).

Fargate semble bel et bien s’adosser à des machines virtuelles EC2 dont il automatise le provisioning et le management. C’est ce que tend à prouver un slide projeté par AWS lors de son dernier événement mondial. © AWS

D'ores et déjà disponible pour ECS, Fargate sera porté sur EKS en 2018. La solution est tarifée 0,0506 dollar le vCPU par heure et 0,0127 dollar le Go de mémoire par heure. Le client a le choix entre une cinquantaine de combinaisons possibles de capacités mémoire et vCPU.

Les containers mis en musique par Fargate s'adossent-ils directement à des serveurs physiques ? Ou la solution met-elle en œuvre toujours une couche de virtualisation intermédiaire ? "Fargate repose sur le même modèle de sécurité et de performance qu'EC2", assure Stephan Hadinger, manager senior des solutions d'architecture chez AWS. Sur ce point, la documentation technique d'Amazon est assez claire : Fargate est basé sur des workloads ECS (voir la slide ci-dessus), et "les containers ECS tournent eux-mêmes chacun sur une instance EC2".

S'adosser à du "bare metal" (avec éventuellement une deuxième couche de containers pour isoler chaque client) serait certes plus efficient pour AWS. Cette approche lui permettrait en effet d'optimiser la consommation de ressources CPU (en éliminant l'hyperviseur), et ainsi encore améliorer les performances et in fine baisser les prix de son CaaS. "Nous sommes configurés pour optimiser au maximum les perf. Sur EC2, nous avons déployé des accélérateurs matériels qui nous permettent de réduire les surcharges", indique Stephan Hadinger. Du côté des clouds de Microsoft, Google ou IBM, les offres de CaaS demeurent toutes elles aussi basées sur une couche de virtualisation, notamment pour des raisons de sécurité.

Certains acteurs plus émergeants tentent de se démarquer en proposant justement des environnements 100% Docker allégés de l'hyperviseur, et présentés comme tels. C'est le cas d'Alter Way en France (avec son service Public CaaS Platform) ou encore de Packet aux Etats-Unis (via son projet Container Workloads). Mais ces offres n'atteignent pas la richesse fonctionnelle d'un AWS.

L'offre de CaaS d'Amazon en bref

Points forts

Points faibles

- Intégration complète à l'univers d'AWS
- Tarifs simples et clairs
- Service Kubernetes et abstraction de la couche d'infrastructure
- Densité et complexité de l'offre et des services sous-jacents
- Un support des containers via EC2