Après plusieurs mois d’utilisation et nos premiers portages, l’offre Web Services de la société AMAZON nous apparait comme une offre techniquement prometteuse dans le domaine des IaaS (Infrastructure As A Service). Pour rappel les IaaS consistent à Déployer vos applications existantes sur le Cloud (c-à-d sans les modifier). L’approche Infrastructure se différencie de l’approche Plateforme (PaaS). En effet dans les PaaS, il est nécessaire d’adapter fortement vos développements ou applications. En route pour l’offre IaaS d’AMAZON …

Introduction à Amazon Web Services (AWS)

Apparue en 2006, AWS est une plateforme d’hébergement de services d’infrastructure pour le Web, dans le cloud. AWS propose des capacités de traitement CPU, de stockage, de Load Balancing, Firewalling, distribution de contenu. Comme toute véritable offre IaaS, AWS vous permet d’augmenter mais aussi de de diminuer la puissance des services contractés. Il n’existe pas de durée minimum pour posséder un serveur ou un espace de stockage : Disposer de 10 serveurs le matin et d’ 1 seul l’après-midi est un usage tout à fait réaliste (pic de charge, passage des batch, forts travaux d’indexation ou de calcul, …). AWS offre une flexibilité vous permettant de choisir les plateformes et infrastructures les plus adaptées à votre besoin. Le mode de facturation est bien évidement celui de la consommation de ressources et il n’existe pas de frais d’installation ni de frais de sortie.

Pour exemple le très illustre Washington Post s’est doté de 200 serveurs pendant 9 heures chez Amazon pour indexer du contenu et a ensuite « rendu » toute cette puissance une fois son ouvrage terminé. Cout de l’opération 144.62 $ (1)

L’offre “Amazon Web Services” est principalement constituée des services suivants:

  • EC2 « Elastic Compute Cloud »
  • Load Balancing/Elastic IP / Auto Scaling
  • EBS « Elastic Block Store »
  • S3 « Simple Storage Service »
  • Une base de données : SimpleDB
  • Une base de données relationnelles MySQL : Amazon Relational Database Service (RDS)
  • Un Middleware Orienté Messages : Simple Queue Service (SQS)
  • Solution pour construire des cloud Privés virtuels : Virtual Private Cloud (VPC)
  • Solution pour gérer un réseau de Cache de contenu (Content Delivery Network) : Cloud Front

EC2 – Elastic Compute Cloud

Description

EC2 est le cœur de l’infrastructure AWS, il permet de créer et gérer des machines virtuelles. EC2 est principalement basée sur la technologie de virtualisation Xen.

EC2 fournit un moyen simple et rapide, via une API Services Web ou une console d’administration Web, de créer une machine virtuelle qui peut démarrer en quelques minutes. Votre machine virtuelle (VM) ou plutôt Instance est créée à partir d’une AMI « AMazon Image » stockées sur support Amazon appelé S3 (cf Description S3). Une fois l’instance démarrée, vous disposez après quelques secondes d’une adresse publique DNSée pour vous connecter via ssh ou TS : votre serveur est alors prêt. Le choix d’images disponibles (les AMI) est très important (surtout pour la localisation US et moins nombreuses pour une localisation Europe).Ces AMI sont créées par Amazon ou par des tiers. Parmi ces partenaires fournisseurs d’AMI, on trouve des sociétés très spécialisées (Bitnami, JumpBox, …) mais également des éditeurs comme IBM et SUN. En effet, IBM propose dorénavant plusieurs de ses produits sous forme d’AMI sur Amazon Web Services. C’est ainsi, qu’il est possible d’acquérir des droits d’utilisation facturés à l’usage (Pay as you Go) sur des produits comme DB2, Informix Server et WebSphere Portal. Notons que l’offre se limite pour le moment aux environnements de développement-tests et que l’offre pour des licences de production devrait être lancée ce trimestre.

Par ailleurs EC2 propose un choix très important d’Images (les AMI) basées sur un système d’exploitation *nix : CentOS, Fedora, Ubuntu, OpenSolaris … et d’images basées sur Microsoft Windows : Serveur 2003, 2008 … Il existe aussi des images avec des piles logicielles déjà installées, Mysql, Apache, Tomcat, Ruby On Rails, ou encore SQL Server, IIS, …

EC2 permet de créer vos propres images. Il est même possible de mettre en place une scalabilité automatique via le service Auto Scalling d’AWS, vous permettant de manière automatique de démarrer/arrêter des instances en fonction des besoins de vos applications. Vous précisez alors par des Triggers les évènements qui déclencheront l’ajout ou la suppression de puissance sur votre infrastructure (ex: Moyen CPU, Nbre de connexions, …) : Vous en rêviez ? 😉

Le disque de stockage d’une instance est lié à sa durée de vie, une fois l’instance arrêtée (normalement ou suite à un crash) le stockage interne à l’instance est détruit. Nous attirons vivement votre attention sur ce fait : Amazon considère que les données doivent être sécurisées en étant stockées sur des zone dédiées au stockage et non sur des instances dédiées à l’exécution. Ceci est d’ailleurs l’un des paradigmes des opérateurs de cloud : le serveur est une denrée banale et doit pouvoir défaillir sans conséquence. C’est pourquoi afin de faire persister les données au delà de l’instance il faudra penser à utiliser les services de stockage d’Amazon tel que les EBS, les S3, voire les SGDB d’Amazon (RDS et SimpleDB).

Il existe trois types de capacité serveur : petit, grand, très grand. Chacun de ces types propose une quantité différente d’espace disque, CPU et mémoire. Chaque type de capacité possède un tarif proportionnel avec les ressources mises à disposition.

La tarification

« Pay as you Go » : Vous ne payez que ce que vous avez utilisé. Il n’y a aucun frais d’installation ou d’utilisation minimale. Vous avez la possibilité d’estimer votre facture mensuelle en utilisant « AWS Simple Monthly Calculator ». Les prix dépendent de la région choisie (US – N. Virginia, US – N. California, et EU – Ireland) pour héberger vos instances.

Les tarifs dépendent aussi du type d’instance : instances à la demande, instances réservées ou encore instances Spot (dont le prix est alors fixé par un marché et fluctue quotidiennement en fonction de l’offre et de la demande).

Exemples de tarif pour les instances à la demande :

EBS – Elastic Block Store

Amazon Elastic Block Store (EBS) offre un stockage persistant pour les instances EC2 d’Amazon. Les volumes EBS fournissent un stockage indépendant des instances qui persistent au-delà de leur durée de vie. Les volumes EBS sont hautement disponibles et hautement fiables. Ces volumes peuvent être utilisés comme partition de démarrage d’une instance EC2 d’Amazon (depuis décembre 2009) ou être attachés à une instance en cours d’exécution Amazon EC2 comme un périphérique en mode bloc standard (RAW device). Un volume ne peut être attaché qu’à une instance de la même zone de disponibilité. Lorsque le volume EBS est utilisé comme une partition de démarrage, l’instance EC2 peut être arrêtée, puis redémarrée, vous permettant de payer uniquement pour les ressources de stockage utilisées tout en maintenant l’état de votre instance.

Les volumes EBS offrent une fiabilité largement supérieure à celle des volumes de stockage de l’instance. En effet, les volumes EBS sont automatiquement répliqués dans la même zone de disponibilité. Pour ceux qui cherchent encore plus de fiabilité, Amazon EBS offre la possibilité de créer des copies instantanées (snapshot) de vos volumes, qui seront ensuite stockées dans Amazon S3, et automatiquement répliquées à travers des zones de disponibilité multiples. Ces snapshot peuvent être utilisés comme point de départ pour de nouveaux volumes EBS, et peuvent protéger vos données pour une longue durée. Vous pouvez également partager facilement ces clichés.

Notons par ailleurs, un nouveau service proposé par Amazon qui permet d’envoyer physiquement vos périphériques de masse (ex: par Fedex) et recevoir quelques jours plus tard ce même périphérique avec vos données. Ainsi votre Direction pourra mettre au coffre les données de l’entreprise tout en bénéficiant des avantages du Cloud Computing : de la clés USB à la cassette de plusieurs Tera (2 To maximum)

D’après la documentation Amazon, les performances d’accès aux volumes EBS doivent être supérieures à celles des volumes de stockage des instances. Néanmoins, lors de nos premiers tests nous avons constaté les résultats l’inverse pour des opérations de lecture aléatoire sans cache. Nous publierons bientôt nos résultats chiffrés sur cet aspect des performances selon les types de stockages Amazon.

La tarification

Avec Amazon EBS, vous ne payez que ce que vous utilisez. Un volume de stockage EBS est facturé en fonction de la taille que vous avez allouée, le tarif est de l’ordre de 0.11 USD par Go alloué par mois, Amazon facture aussi 0.11 USD pour 1 million de requêtes d’E / S lors de l’utilisation de votre volume.

ELB – Elastic Load Balancing

Amazon ELB (Elastic Load Balancing) permet de distribuer automatiquement le trafic entrant vers les applications sur de multiples instances Amazon EC2. Il vous permet d’accroître encore plus la tolérance de panne de vos applications, en fournissant de manière transparente l’équilibrage de charge nécessaire pour répondre à la demande du trafic entrant. Amazon ELB détecte les instances hors services et redirige automatiquement le trafic uniquement vers les instances en fonctionnement jusqu’à ce que les instances hors service soient disponibles à nouveau. Les clients peuvent activer Amazon ELB au sein d’une zone de disponibilité unique ou au sein de plusieurs zones afin d’obtenir des performances optimales sur plusieurs plaques géographiques.

La tarification

Le prix actuel de l’ ELB est de 0.025 $ par heure pour chaque ELB, ainsi que 0,008 $ par Go de données transférées à travers un ELB.

Elastic IP

Les « Amazon Elastic IP » sont des adresses IP statiques conçues pour donner une grande liberté dans la gestion des instances. Une adresse IP élastique est associée à votre compte et non à une instance particulière, vous disposez du contrôle de cette adresse jusqu’à sa libération explicite.

Contrairement à une adresse IP statique classique (c-à-d associée statiquement à une Instance d’AMI), une adresse IP élastique peut donc être associée à l’instance de votre choix et ce, de manière illimitée et instantanée. Ce type d’adresse IP Amazon permet notamment de réaliser des mises en production (avec plan de retour-arrière simple et rapide) sans manipuler vos DNS et souffrir de leurs temps de propagation.

La tarification

Aucun frais pour les adresses IP élastiques tant qu’elles sont utilisées.

  • $0.01 pour une adresse ip élastique attachée à aucune instance.
  • Gratuit pour les 100 premières assignation d’un Elastic IP (sur une période d’un mois)
  • $0.10 pour 100 assignations mensuelles supplémentaires

CloudWatch : le CACTI du Cloud Amazon

Amazon CloudWatch est un service web qui permet la surveillance des ressources du cloud Amazon. Il offre aux clients une vue sur l’utilisation des ressources, la performance opérationnelle, et de la demande globale, y compris des indicateurs tels que l’utilisation du processeur, entrée/sortie disque, et le trafic réseau. Pour utiliser Amazon CloudWatch, il suffit de sélectionner l’instance Amazon EC2 que vous souhaitez surveiller; quelques minutes plus tard, Amazon CloudWatch commencera l’agrégation et le stockage des données de surveillance qui peuvent être consultés à l’aide de l’AWS Management Console, API de services Web ou les outils de ligne de commande.

La tarification

$0.015 par heure pour chaque instance Amazon EC2 surveillée par CloudWatch.

Auto Scaling

Auto Scaling permet d’augmenter ou diminuer automatiquement votre capacité Amazon EC2 en fonction des conditions que vous définissez. Avec Auto Scaling, vous pouvez vous assurer que le nombre d’instances Amazon EC2 que vous utilisez sera revu à la hausse lors de pics de charge afin de maintenir le niveau de performance souhaité, et revue à la baisse pendant les périodes creuses afin de réduire vos coûts. Auto Scaling est particulièrement bien adapté aux applications qui subissent des variations d’utilisation horaire, journalière ou hebdomadaire. Auto Scaling est activée par Amazon CloudWatch et disponible sans frais supplémentaires hormis les frais liés à CloudWatch.

La tarification

  • Compris dans le prix de CloudWatch.

Conclusion (1 ère partie)

L’offre IaaS d’Amazon est très prometteuse : on y retrouve les briques de base d’une infrastructure pour héberger et monitorer des environnements WEB. L’agilité en terme de scalabilité est impressionnante : une utilisation intelligente du Load Balancing + IP Elastique et d’auto-scalling viendra à bout de bon nombre de saisonnalités de charge (y compris sur une échelle de la journée). Nous avons constaté ces derniers mois une stabilité totale de la plateforme. Les temps de latence ont néanmoins augmenté ces dernières semaines (merci à cloudkick), puis sont revenus à la normale ces derniers jours.

Le fait qu’IBM, SUN et MICROSOFT (sur les OS) proposent leurs produits sur la plateforme d’Amazon renforce la crédibilité du modèle IaaS.

En revanche, il est nécéssaire qu’Amazon fasse évoluer sa console Web de gestion afin de la rendre plus adaptée aux besoins des administrateurs de production. En effet, cette dernière manque parfois d’ergonomie et la gestion de plusieurs dizaines d’instances s’en trouve complexifiée. Nous avons observé qu’Amazon faisait d’abord évoluer ses API AWS et que implémentation de ces fonctionnalités était ensuite répercutée dans la console. C’est pourquoi nous sommes confiants sur le fait que nous pourrons bientôt :

  • Ajouter et modifier des libellés aux instances dans la console
  • Disposer de fonctionnalités de manipulation des données stockées sur S3
  • Gérer une Elastic IP sur plusieurs comptes Amazon (pour des raisons de sécurité, nous avons privilégié de séparer les environnements de Prod et de tests par des comptes Amazon distincts). Or, il n’est aujourd’hui pas encore possible de transférer une Elastic IP à travers un autre compte.

En attendant 2 plugins Firefox (ElastiFox fourni par Amazon) et S3 (fourni par une équipe du MIT) permettent de compléter correctement la console Web d’AWS.

A venir :

Dans notre prochain billet, nous vous présenterons l’offre Amazon Web Services en matière de stockage complémentaire aux EBS :

  • S3
  • SimpleDB
  • Amazon Relational Database Service (RDS)

Pour appronfondir :


  1. Le cas d’utilisation d’Amazon par le Washington Post