Comprendre l'Iaas en 257 secondes

Rappel des articles précédents

La dernière fois on a eu un aperçu de ce qu'est un Cloud Public :

Comprendre le Cloud public en 211 secondes
Vous entendez parler de Cloud, mais ça reste un peu nuageux pour vous. Vous n’êtes pas seul(e) ! 💡Première confusion possible, ici on parle de Cloud public, qu’il ne faut pas confondre avec certains logiciels de partage de fichiers qu’on peut aussi appeler cloud, comme NextCloud ou Dropbox. J…

Puis un aperçu de ce qu'est une API :

Comprendre ce qu’est une API en 109 secondes
En résumé : c’est une interface où l’utilisateur est un autre logiciel. Voyons d’abord le cas de l’interface utilisateur classique. Interface utilisateur classique Ce sont tous les éléments graphiques visibles actionnables avec le doigt ou la souris : des fenêtres, du texte, des boutons, des…

Désolé d'utiliser ces nombres abscons. Je vous livre le secret : 253, 211 et 109 sont des nombres premiers et j'adore les nombre premiers...

Couches virtuelles

Fort de ces connaissances, on peut maintenant rentrer de plain pied dans l'Iaas.

Souvenez-vous des couches inférieures du Cloud qu'on peut représenter de cette façon :

C'est une couche matérielle, sur laquelle les fournisseurs de Cloud construisent une nouvelle couche similaire, mais virtuelle, qui sert à fournir des services d'infrastructure logicielle :

  • Les serveurs virtuels : un hyperviseur sur lequel on peut faire fonctionner des machines virtuelles. Les machines virtuelles, ou VM, sont des sortes d'ordinateurs virtuels, qui s'appuient sur les capacités matérielles, mais qui sont isolées les unes des autres. De cette façon, un seul serveur matériel peut faire fonctionner de nombreuses machines virtuelles indépendantes.
  • Du stockage virtuel : les nombreux disques durs (ou SSD) situés sur les serveurs physiques peuvent être mis en commun pour offrir des espaces de stockages unifiés, redondants et qui peuvent passer à l'échelle. C'est par exemple le cas de GlusterFS ou Ceph, ou des solutions propriétaires de type EFS ou S3 chez AWS.
  • Du réseau virtuel : cette fonctionnalité est offerte par les systèmes d'exploitation comme Linux, ou par les routeurs matériels. En poussant un peu plus loin la virtualisation, on peut aboutir à des architectures réseau entièrement virtuelles. C'est ce qui est à la base des VPC (Virtual Private Cloud) chez les fournisseurs de Cloud public.

On ajoute donc une deuxième couche virtuelle à la première couche physique :

L'intérêt de la couche violette, c'est qu'elle est entièrement logicielle. On ne gère plus des machines physiques mais uniquement du logiciel. Le fournisseur Cloud s'occupe de gérer le matériel physique, de le changer lorsqu'il est déficient. Ces changements sont la plupart du temps transparents.

La redondance matérielle permet d'en faire abstraction à la couche supérieure. Donc de votre côté vous ne gérez que des services logiciels. C'est cette particularité qui offre une souplesse dans la gestion des ressources et qui permet au fournisseur de Cloud de vous offrir une infrastructure (virtuelle) comme si c'était un simple service. Nous y voici : c'est ça qu'on appelle l'Iaas : Infrastructure as a service.

Élasticité

Vous créez un compte, vous fournissez un simple moyen de paiement, puis vous pouvez en quelques minutes assembler les services Cloud pour des usages aussi variés qu'un petit serveur privé pour un blog personnel jusqu'à un cluster de milliers de machines pour faire du calcul scientifique distribué à fort volume de stockage. Vous n'avez pas besoin de savoir à l'avance de quoi vous avez besoin : vous démarrez petit, puis vous montez en puissance progressivement. Sans surinvestir au début. Vous pouvez même élargir et réduire la taille de vos services périodiquement, selon les besoin en terme de charge. Cette capacité est appelé « élasticité ». Chez AWS de nombreux services sont nommés de cette façon :

  • EFS : Elastic File System
  • EC2 : Elastic Compute Cloud
  • Elastic IP Address

On retrouve ce terme chez d'autres fournisseurs comme Scaleway avec Elastic Metal.

Iac : Infrastructure as Code

Une particularité du logiciel est qu'il se base sur la notion de code source. Un code source est un simple texte qui sera lu par l'ordinateur puis compilé ou interprété et enfin exécuté. Le fait qu'un code source soit un texte est d'ailleurs à la base de sa protection intellectuelle, au moins en France : il est protégé par les droits d'auteur, comme une poésie.

Si une infrastructure est 100% logicielle, peut-on écrire du code source pour la gérer ?

Oui, et mieux que ça, on peut décrire l'infrastructure sous forme de code. C'est ce qu'on appelle l'infrastructure as code, ou Iac.

Si vous avez suivi l'actualité de cette fin d'été, vous avez appris le changement de licence de Terraform, qui a fait grand bruit dans le milieu du Cloud, car on passe d'une licence purement open-source à une licence qui contient des restrictions d'usage, donc qui n'est plus open-source.

Qu'est-ce que Terraform ?

C'est un outil qui permet de mettre en oeuvre le principe d'Iac : vous écrivez du code qui décrit l'infrastructure dont vous avez besoin, puis d'une simple commande terraform apply, si tenté que vous ayez créé un compte de service Cloud puis configuré les accès dans la configuration de Terraform, vos services sont prêts en quelques minutes. Terraform communique avec le service Cloud par l'intermédiaire d'une API.

Voici l'exemple fourni par Scaleway dans sa documentation. Ce morceau de code permet de déployer un serveur de type DEV1-L accompagné d'un volume de stockage de 30Go et d'une adresse IP :

  terraform {
    required_providers {
      scaleway = {
        source = "scaleway/scaleway"
      }
    }
    required_version = ">= 0.13"
  }
  provider "scaleway" {
    access_key      = "<SCW_ACCESS_KEY>"
    secret_key      = "<SCW_SECRET_KEY>"
    project_id	    = "<SCW_DEFAULT_PROJECT_ID>"
    zone            = "fr-par-1"
    region          = "fr-par"
  }
  resource "scaleway_instance_ip" "public_ip" {}
  resource "scaleway_instance_volume" "data" {
    size_in_gb = 30
    type = "l_ssd"
  }
  resource "scaleway_instance_server" "my-instance" {
    type  = "DEV1-L"
    image = "ubuntu_focal"
    tags = [ "terraform instance", "my-instance" ]
    ip_id = scaleway_instance_ip.public_ip.id
    additional_volume_ids = [ scaleway_instance_volume.data.id ]
    root_volume {
      # The local storage of a DEV1-L Instance is 80 GB, subtract 30 GB from the additional l_ssd volume, then the root volume needs to be 50 GB.
      size_in_gb = 50
    }
  }

Des pratiques logicielles pour le Cloud

Une fois que vous avez cette capacité, vous allez gérer votre infrastructure Cloud avec les mêmes pratiques que le développement logiciel : avec une forge de code (par exemple Gitlab ou Gitea), du versionnement, des tests, et donc avec la même qualité, la même réactivité, la même flexibilité qu'un développement logiciel.

Est-ce que tout est si simple ? En fait non, car c'est un métier à part entière, comme celui de développeur. Vous pouvez passer un temps infini à jouer et assembler des éléments de Cloud avec Terraform, sans forcément obtenir ce dont vous avez besoin. Une IA sera capable d'écrire un code Terraform, mais ce qu'elle sera incapable de faire est de comprendre ce dont vous avez besoin, de vous questionner à ce sujet, d'identifier les meilleures solutions. Pour ça il faut faire appel à des experts de l'Iaas.

AnyOps est une exemple de solution utilisant l'Iaas, qui permet à de multiples équipes de développeurs de réserver les ressources Cloud dont ils ont besoin de manière autonome, puis pousser le code de leurs applications directement sur l'infrastructure. Si ça vous parle, allez voir ce qu'il font car c'est à la pointe des techniques Cloud actuelles. C'est ce genre de solution qu'utilisent les entreprises de logiciel les plus efficaces du monde :
Solution DevOps / Cloud privé hébergé
Le Cloud Privé Hébergé qui vous appartient, rend vos équipes autonomes et accélère vos déploiements.
💡
Inscrivez-vous pour recevoir les prochains articles.
Choisissez Cloud/Web lors de l'inscription car ce blog traite de trois sujets.