Qu'est-ce que le cloud, et quel est le rapport avec le big data et le calcul distribué ? En 2005, quand le cloud est apparu, le terme est instantanément devenu un buzzword apparaissant sur les couvertures de magazines généralistes, causant ainsi mécaniquement le rejet de la part de nombre d'administrateurs systèmes. Aujourd'hui encore, certains trouvent que le cloud c'est un concept "un peu nébuleux" (véridique).
Fondamentalement, le cloud consiste à louer à des tiers des ressources matérielles pour une durée déterminées. Pour faire simple, ces ressources fournissent de la capacité de calcul (des serveurs) et de stockage (de l'espace disque). Les fournisseurs de cloud sont des hébergeurs professionnels qui se chargent de la mise en place, de l'entretien et du renouvellement du matériel.
On pourrait être tentés de penser : très bien, rien de nouveau, il s'agit juste de déléguer l'administration de ses serveurs à un tiers. Et c'est assez juste. Comme le dit la Free Software Foundation : "Il n'y a pas de nuage, juste les ordinateurs des autres".
Mais le cloud change radicalement la manière dont les architectures informatiques sont conçues, puisqu'il permet la notion d'élasticité. L'élasticité est la possibilité d'agrandir ou de diminuer sa capacité pour des durées variables et pouvant être très courtes (quelques minutes, voire quelques secondes). Cette élasticité peut se faire de manière manuelle ou automatique, et elle permet à des services de supporter des pics de charge temporaires. C'est une innovation par rapport au modèle d'administration de serveurs traditionnels, qui consistait à acheter ou à louer à l'année des machines physiques.
Par exemple, imaginons que nous ayons besoin de réaliser un calcul quotidien nécessitant 1000 CPU pendant une heure. Si l'achat d'un CPU coûte 100€, nous devons faire l'acquisition pour 10⁵€ de matériels. Et si nous ne disposons que de 1000€, alors notre calcul mettra 100h à se terminer au lieu d'une heure. Nous ne recevrons alors pas les résultats dans la journée.
Grâce au cloud, la location de 1000 CPU pendant une heure revient à environ 20€, ce qui met le big data à la portée de n'importe quelle startup. D'une certaine manière, c'est donc le cloud qui a permis la popularisation du big data.
Aujourd'hui, les fournisseurs principaux de cloud sont Amazon, Google et Microsoft. Le problème de ces fournisseurs est qu'ils ne partagent pas un unique standard de cloud. Les services proposés ne sont pas les mêmes, et les API qu'ils proposent sont toutes très différentes. Il est donc compliqué d'utiliser plusieurs fournisseurs différents en même temps, ou de passer d'un fournisseur à un autre. Openstack est une solution libre de Infrastructure as a Service (IaaS) qui cherche à proposer un standard de cloud adopté par tous les fournisseurs de cloud. Malheureusement il n'existe pas (encore ?) de fournisseur de cloud basé sur Openstack ayant acquis une position de leader du marché, et les implémentations actuelles restent peu fiables.
Dans ce cours, nous allons apprendre à utiliser Amazon Web Services (AWS), la solution de cloud fournie par Amazon, le leader du marché. Amazon est par ailleurs l'inventeur du cloud, puisque c'est cette entreprise qui, la première, a lancé en 2005 une offre de location de serveurs et d'espace de stockage pour des courtes durées. Ce produit a originellement vu le jour pour servir l'entreprise de vente à distance qui devait régulièrement mettre en place des solutions de calcul en interne.
Nous allons en particulier nous intéresser aux solutions de lancement de serveurs, de clusters de calcul et de stockage qui sont respectivement Elastic Compute Cloud (EC2), Elastic Map Reduce (EMR) et Simple Storage Service (S3).
Inscription à AWS
Commençons par créer un compte sur AWS et récupérer des jetons (tokens) d'identification. Peut-être avez-vous déjà un compte sur AWS ? Vous pourrez alors l'utiliser dans ce cours. Visitez la page principale d'AWS et cliquez sur "Sign Up" en haut à gauche. Je vous laisse faire la suite, je pense que vous pouvez trouver tout seul Notez que vous aurez besoin de fournir un numéro de carte de crédit pour couvrir les frais de lancement de serveurs, mais que vous n'en aurez pas besoin si vous restez dans les limites du free tier offert par Amazon. Vous aurez également besoin d'avoir votre téléphone à proximité pour prouver votre identité. Il ne sera pas nécessaire de choisir un Support Plan payant, la version Basic suffira.
Quelques minutes après votre inscription, vous recevrez normalement un e-mail vous notifiant de votre bonne inscription et vous pourrez vous connecter à la console AWS.
Obtenir des tokens d'identification
Nous allons interagir avec l'API d'AWS pour lancer des serveurs et stocker des données sur S3. Nous aurons besoin pour cela d'une clé d'authentification. Vous allez devoir générer une Clé d'accès. Consultez la page concernant vos informations d'identification de sécurité que vous trouverez en cliquant sur votre nom (en haut à droite) puis "Mes informations d'identification de sécurité".
Cliquez sur "Clés d'accès" puis "Créer une clé d'accès". Vous pouvez alors télécharger un fichier contenant l'ID de votre clé d'accès ainsi que votre clé d'accès secrète. Je vous conseille de télécharger ce fichier car AWS ne vous fournira pas à nouveau votre clé secrète ; si vous la perdez, vous devrez alors en créer une nouvelle.
Installation et configuration deawscli
Installons maintenantawscli
qui est un outil en ligne de commande permettant d'interagir avec l'API d'AWS :
pip install awscli
Vous pouvez vérifier queawscli
est bien installé en trouvant l'emplacement de la commandeaws
:
which aws
Nous allons indiquer àawscli
notre clé d'accès :
aws configure
Selon votre localisation géographique, choisissezeu-west-1
(Europe ou Afrique),us-east-1
,us-west-1
ouap-southeast-1
comme nom de région. Utilisezjson
comme "Default output format", ce qui indique que vous souhaitez obtenir des réponses de l'API au format JSON.
Vous pouvez vérifier queawscli
est bien configuré en exécutantaws s3 ls
qui devrait répondre... rien du tout ! (pas de message d'erreur en tout cas)
Ok, vous êtes équipés pour commencer à stocker des données sur AWS. C'est parti !