1 GÉNÉRALITÉS

1.1 But du cours

Vous faire déployer une application complexe en utilisant les outils offerts par un cloud provider :

  • Se familiariser avec le cloud computing
  • Produire une application non monolithique
  • Déployer une architecture via un outil Infrastructure as Code

1.2 Le programme

  1. Les bases du Cloud Computing
  2. L’Infrastructure as Code avec Terraform
  3. Function as a Service avec AWS Lambda
  4. Event processing avec AWS SQS
  5. Stockage NoSQL avec DynamoDB
  6. Stockage objet avec Amazon S3
  7. Un TP noté final sur plusieurs séances

1.3 Les outils

  • Ordinateur fourni par Centrale Marseille sous Ubuntu (vous pouvez utiliser le vôtre, mais à vous d’installer les outils)
  • Console AWS
  • Terraform / Terraform CDK
  • git et python

2 LE CLOUD COMPUTING C’EST QUOI ?

2.1 Histoire de l’IT en entreprise

2.1.1 1940 - milieu 1970 : Mainframe

  • Ce n’est pas un super calculateur
  • Très grand nombre d’opérations par seconde
  • Seules les grandes entreprises peuvent en avoir
  • Cas d’utilisation : opérations bancaires/boursières, réservation de vol, etc.
  • Spécialisé pour traiter beaucoup de requêtes simples en parallèle

2.1.2 1970 - milieu 1990 : Les clients lourds

  • La micro-informatique devient accessible, on équipe les personnes en ordinateur personnel
  • On stocke les données dans des bases/systèmes de fichiers et on fait les calculs en local (Microsoft Excel, SAS)
  • Plus de flexibilité car les clients ne sont pas dépendants
  • Principe : Chacun fait ses traitements sur son poste

2.1.3 Milieu 1990 - 2010 : Data center on-premises

  • Démocratisation d’Internet, débit en augmentation (ADSL)
  • Centralisation stockage et calcul dans des data centers
  • Ordinateurs personnels pour tâche du quotidien et prototypage
  • Impact : Investissement des entreprises dans des équipements coûteux

2.1.4 2005 - ? : Cloud Computing

Des gros acteurs louent leurs infrastructures pour des entreprises :

  • 2002 : Amazon Web Service
  • 2006 : Amazon Elastic Compute Cloud (EC2)
  • 2008 : Google App Engine (now Google Cloud Platform)
  • 2008 : Analysts at Gartner claim the rise of cloud-computing
  • 2010 : Microsoft Azure
  • Cloud compute revenue in 2018 : 182,4 G$
  • Cloud compute revenue in 2024 : 670 G$

Grosse révolution mais demande des compétences encore rares


2.1.5 ? - ? : Edge/Mist/Fog computing

Rapprocher les unités de calculs au plus près des utilisateurs :

  • 2015 : Azure Stack
  • 2016 : W. Shi et al., “Edge Computing: Vision and Challenges,” IEEE Internet of Things Journal
  • 2017 : M. Satyanarayanan, “The emergence of edge computing”
  • 2019 : AWS Outpost, Google Anthos
  • 2020 : Fog computing for arcade gaming (Kotaku)

Les plateformes de cloud proposent des services edge computing de plus en plus.


2.2 Vieux paradigme IT

2.2.1 1 machine physique = 1 fonction

  • serveur SMTP (mail)
  • serveur DNS
  • serveur web
  • base de données

Avantage : sécurité, isolation, pas de middleware
Désavantage : coût, surdimensionnement


2.3 Virtualisation

2.3.1 1 machine physique = plusieurs machines virtuelles

  • Les VMs sont isolées les unes des autres
  • Elles peuvent avoir leur propre OS
  • Elles ne savent pas qu’elles sont des VM
  • Elles ont leurs propres ressources
  • On va installer sur chaque VM un service particulier

2.3.2 Avantages et inconvénients

Avantages :

  • Meilleure utilisation des ressources
  • Plusieurs OS peuvent coexister
  • Facile à migrer, déployer, monitorer avec les solutions type VMware, HyperV

Inconvénients :

  • Si une machine physique tombe, plusieurs services tombent
  • Il y a des risques de failles de sécurité

2.4 Cloud Computing - Définition

Cloud computing is Internet-based computing, whereby shared resources, softwares, and information are provided to computers and other devices on demand, like the electricity grid. Cloud computing is a style of computing in which dynamically scalable and often virtualized resources are provided as a service over the Internet.


2.5 En résumé

  • Mutualisation des ressources
  • Accès via Internet
  • Modèle pay as you go
  • Services déjà packagés
  • Ou briques pour reconstruire son infra IT

2.6 Intérêt pour les entreprises

✅ Moins d’investissement en amont
✅ Plus facile de passer à l’échelle
✅ Flexibilité et favorise l’innovation
✅ Maintenance et sécurité du hardware à la charge du cloud provider
✅ Mises à jour régulières et nouveaux services ajoutés continuellement


2.7 Limitations

⚠️ La facture peut vite exploser
⚠️ Dépendances aux services d’un cloud provider
⚠️ Les architectures cloud peuvent vite devenir une assiette de spaghetti
⚠️ Trop de services disponibles
⚠️ Pas de magie, il faut comprendre les outils utilisés


3 LES TYPES DE SERVICES

3.1 Les trois modèles

3.1.1 IaaS (Infrastructure as a Service)

Fournit les briques élémentaires (réseau, VM, stockage, etc.). Il faut tout construire par-dessus.
🧱 Ce sont les Legos du cloud

3.1.2 PaaS (Platform as a Service)

Fournit une plateforme déjà packagée prête à être utilisée. Souvent il n’y a pas d’interface, et l’utilisation se limite à des commandes bas niveau.
🏗️ Ce sont les Playmobiles du cloud

3.1.3 SaaS (Software as a Service)

Fournit un service prêt à l’emploi. Pas besoin de savoir comment ça marche, vous êtes juste l’utilisateur final.
🎁 Ce sont les Funko Pop du cloud


3.2 Comparaison visuelle

Comparaison des types de services Cloud
Modèle Description Gestion Analogie
IaaS Briques élémentaires Vous gérez tout sauf le hardware Legos 🧱
PaaS Plateforme packagée Vous gérez l’application Playmobiles 🏗️
SaaS Service prêt à l’emploi Tout est géré Funko Pop 🎁

4 QUELQUES CLOUD PROVIDERS

4.1 Les généralistes (IaaS)

  • Amazon Web Service
  • Google Cloud Platform
  • Microsoft Azure
  • OVH Cloud

4.2 Les spécialisés (PaaS)

  • Heroku : déploiement d’appli web
  • Dataiku : analyse de données
  • Databricks : analyse de données avec Spark
  • pythonanywhere : pour exécution code Python
  • Clever Cloud : déploiement d’application

5 LES SERVICES CLOUD IAAS

5.1 Services de base

Services IaaS par cloud provider
Service AWS GCP Azure
VM EC2 Compute Engine Virtual Machines
Network VPC, subnet, pare-feu, gateway VPC Virtual Network
Disk Storage Block Store Persistent Disk Managed Disks
Object Storage S3 Cloud Storage Blob Storage
Gestion des droits IAM IAM Active Directory

Avec ces briques de base vous pouvez tout faire (si vous avez du temps ⏰)


6 AWS EC2 - LE SERVICE DE BASE POUR FAIRE DU CALCUL

6.1 Qu’est-ce qu’AWS EC2 ?

  • Une simple VM = IaaS
  • Beaucoup de services AWS fonctionnent sur une instance EC2
  • Peut théoriquement tout faire : serveur web, base de données, cluster Spark, cluster Kafka, etc.
  • Mais il existe des services packagés pour gagner du temps (PaaS)

6.2 Les services connexes

Services connexes AWS EC2
Service Nom_AWS Fonction
Stockage disque Elastic Block Store Stockage de données sur disque
Distribution du trafic Elastic Load Balancer Distribution du trafic entre machines
Gestion de flotte Auto-Scaling Group Gestion automatique d’instances
Pare-feu Security Group Filtre des connexions

6.3 Configuration d’une instance EC2

6.3.1 Paramètres principaux

  • OS : Linux, Windows, macOS
  • Type d’instance : ratio CPU/RAM
  • Taille d’instance : puissance finale
  • Taille du/des disques : EBS, instance store
  • Configuration réseau : accessible publiquement ? Nombre de cartes réseau
  • Pare-feu avec les Security Groups
  • Script de lancement

6.4 Security Groups

6.4.1 Principe

  • Filtre les connexions entrantes/sortantes
  • Si ce n’est pas autorisé, c’est interdit
  • Stateful (autorise automatiquement le trajet retour)
  • Triplet : protocole, port, plage d’IP

6.4.2 Règle d’or

Least privilege : ne permettre que ce qui est nécessaire


7 AWS EC2 : TP 1 - MES PREMIÈRES INSTANCES

7.1 Ce que vous allez faire

  1. Lancer votre première instance EC2
  2. Vous y connecter en SSH
  3. Cloner un dépôt git, installer les dépendances et lancer le code du webservice
  4. Accéder à la page du webservice
  5. Stop/start/terminate votre instance
  6. Lancer une instance avec un script de lancement

8 RÉCAPITULATIF

8.1 Architecture Cloud typique

             +---------------------+
             |  Load Balancer      |
             +----------+----------+
                        |
        +---------------+---------------+
        |                               |
+-------v-------+               +-------v-------+
|  EC2 Instance |               |  EC2 Instance |
|  (Web Server) |               |  (Web Server) |
+---------------+               +---------------+
        |                               |
        +---------------+---------------+
                        |
             +----------v----------+
             |    Database (RDS)   |
             |     or DynamoDB     |
             +---------------------+
                        |
             +----------v----------+
             |   Object Storage    |
             |      (S3)           |
             +---------------------+

8.2 Points clés à retenir

  1. Cloud Computing = ressources IT à la demande via Internet
  2. IaaS, PaaS, SaaS = niveaux d’abstraction croissants
  3. EC2 = machine virtuelle de base sur AWS
  4. Security Groups = pare-feu stateful pour EC2
  5. Pay as you go = vous ne payez que ce que vous utilisez

10 PROCHAIN COURS

CM2 : L’Infrastructure as Code avec Terraform

  • Principe de l’Infrastructure as Code
  • Terraform : syntaxe et concepts
  • Déploiement automatisé d’infrastructure
  • TP : Déployer une infrastructure complète avec Terraform
   +--------------------+
   |  À bientôt ! 👋    |
   +--------------------+