Amazon Spot Instances : optimiser ses dépenses et booster son infrastructure

Amazon Spot Instances : optimiser ses dépenses et booster son infrastructure

On vous ressasse en permanence qu’un des avantages essentiel du Cloud est sa flexibilité ! Vous avez parfaitement compris qu’avec un tel système, vous pouvez vous autoriser une manière différente de consommer les ressources informatiques. Comme vous ne payez que ce que vous consommez, vous pouvez enfin envisager des infrastructures démesurées pour une courte période afin de répondre à un pic de charge, ou jouer un modèle de prédiction extrêmement gourmand. La bonne nouvelle : vous allez pouvoir approfondir ce concept, plus de puissance ou plus d’économie : vous décidez où placer le curseur.

Spot !

Aujourd’hui le service est offert par Amazon et plus précisément, à travers son offre nommée Amazon EC2 Spot Instances (instances ponctuelles en français). Celui-ci met à disposition les instances qu’il ne loue pas à un prix fluctuant dans le temps. Vous fixez un prix d’enchère pour l’instance. Tant que celui-ci est au dessus du cours alors vous pouvez exploiter l’instance. Si le cours passe au-dessus, alors vous perdez votre instance.

 AWS Spot Instance schematic (5)

Parfait, suis-je éligible ?

Si vous souhaitez savoir si votre architecture technique est éligible pour un tel système, il suffit de savoir si un certain concept DevOps est en oeuvre : “infrastructure as code”. Si l’exécution d’une ligne de commande ou l’appui sur un bouton dans un outil de supervision permet la construction de votre infrastructure alors vous pouvez être quasi sûr que le travail réalisé par votre équipe DevOps est de très bonne facture. En effet, cela sera signe que le provisioning des instances est automatisé. En général, la mise en oeuvre est réalisée grâce à l’emploi d’outils tels que Ansible, Chef, Puppet ou encore Amazon CloudFormation. Si vous avez entendu un de ces termes, alors il y a de bonnes chances que votre architecture soit éligible.

Et pour profiter pleinement de l’élasticité offerte par une infrastructure Cloud, l’architecture de vos applications ne sera pas monolithique mais bel et bien orientée microservices. Ainsi vous pourrez mieux cibler les composants que vous souhaitez “booster” par un scale up/out.

Et d’un point de vue métier, il est indispensable que les traitements concernés ne soient pas critiques. Si par exemple, il existe une “deadline” importante (traitements pour démarrer l’activité de la journée, clôture de fin de mois) à respecter alors vous devrez avoir une stratégie astucieuse, cf. ci-dessous. De manière générale, privilégier ce système pour des activités ne devant pas respecter un planning strict. Par exemple, pour les traitements de type “batchs”  qui ne sont pas critiques en production.

Bonnes pratiques

Vous savez maintenant que votre métier et votre technique vous autorisent l’utilisation des instances Spot. Afin de déployer une stratégie d’utilisation de ces instances à bas coûts, voici quelques conseils :

  1. Procédez à une analyse du marché. De manière assez simple : analysez visuellement le cours du prix de l’instance sur le site http://ec2price.com. Cela vous permettra de constater la fréquence de variation du prix ainsi que la moyenne. Par exemple, sur la période de la semaine dernière :

EC2 spot price graphs

Dans l’exemple précédent, le constat est saisissant, environ 40 centimes de l’heure quasi constant sur les 8 derniers jours au lieu de 3 dollars.  Cela sera aussi l’occasion de noter la fréquence de changement du prix sur une journée , par exemple :

EC2 spot price graphs (1)

  2. Fixer un prix prohibitif pourrait sembler être une astuce intéressante mais vous n’êtes malheureusement pas à l’abri d’une explosion du cours.  Un cas assez classique qui revient souvent fait état d’un prix à 999 dollars/heure …. https://gigaom.com/2011/12/27/how-to-deal-with-amazons-spot-server-price-spikes/

  1. L’API Amazon permet la récupération de l’historique du prix Spot. Vous pouvez très bien imaginer un système qui scanne ce prix pour déclencher un workflow de provisioning lorsque le prix descend sous un certain seuil.

  2. Les instances pouvant être terminées très rapidement, il faudra veiller à être complètement tolérant à l’arrêt d’un traitement qui n’aurait pas abouti. Se fixer l’objectif d’avoir des traitements plus nombreux mais plus simples donc potentiellement plus courts est une très bonne pratique de manière générale. Et qui plus est, dans le cas d’utilisation d’instance ponctuelle, vous serez plus facilement tolérant au phase de terminaison rapide, 2 minutes (https://aws.amazon.com/fr/blogs/aws/new-ec2-spot-instance-termination-notices/).

Une idée de stratégie

Une bonne stratégie pour récupérer les bénéfices de ce service est de le considérer comme un complément à une fondation solide basée sur des instances “on-demand” ou “reserved”. De même, vous pouvez très bien imaginer un système composé de 50% de on-demand, 30 % de spot à ¼ du prix puis 20% de spot à un dixième du prix standard. Vous effectuez ainsi un lissage des risques tout en conservant une partie attractive des prix compétitifs des instances spot.

Conclusion

Certes, l’idée n’est pas de rentrer dans toutes les possibilités, détails et spécificités de cette offre mais juste de prendre conscience qu’il existe des outils pour optimiser vos coûts et augmenter vos investissements en innovation et autres explorations. C’est aussi l’occasion de constater l’avance de certains fournisseurs Cloud de par la maîtrise qu’ils ont de leur infrastructure. Par exemple, Google a récemment présenté une offre qui va aussi dans ce sens c’est à dire d’instances aux prix extrêmement compétitifs mais possédant un caractère éphémère. Alors dès aujourd’hui, même si vous n’allez pas vers ce genre d’offres, commencez à vous poser les questions essentielles, vous permettant demain d’en profiter.

Références