Master 1 — Semestre 2

Infrastructure · Systèmes distribués

Cloud
Computing

L'informatique en nuage fournit à la demande, via Internet, des ressources de calcul, de stockage et de réseau évolutives, sans gestion d'infrastructure physique — un paradigme qui redéfinit l'architecture des systèmes modernes.

--
Marché mondial 2024
--
Entreprises utilisant le cloud
--
Data centers dans le monde
--
Part de marché AWS (2024)
☁️
01

Introduction au Cloud Computing

Le cloud computing désigne la livraison à la demande de ressources informatiques — serveurs, stockage, bases de données, réseaux, logiciels — via Internet, selon un modèle de tarification à l'usage (pay-as-you-go).

📌 Définition NIST (SP 800-145)

Le cloud computing est un modèle permettant un accès réseau ubiquitaire, pratique et à la demande à un pool partagé de ressources informatiques configurables pouvant être provisionnées et libérées rapidement avec un minimum d'effort de gestion ou d'interaction avec le fournisseur de services.

Les cinq caractéristiques essentielles selon le NIST :

Caractéristique 1

Self-service à la demande

L'utilisateur peut provisionner des ressources (stockage, VM) de manière autonome, sans interaction humaine avec le fournisseur.

Caractéristique 2

Accès réseau ubiquitaire

Ressources accessibles depuis n'importe quel appareil (PC, mobile, tablette) via des interfaces standardisées.

Caractéristique 3

Mutualisation des ressources

Multi-tenancy : ressources physiques partagées entre plusieurs clients, avec isolation logique. Localisation transparente.

Caractéristique 4

Élasticité rapide

Mise à l'échelle automatique et quasi-instantanée selon la charge. Pour l'utilisateur, les ressources semblent illimitées.

Caractéristique 5

Service mesuré

Facturation à l'usage réel (CPU-heures, GB, requêtes). Transparence totale pour le fournisseur et l'utilisateur.

🧱
02

Modèles de service

Les trois modèles de service définissent le niveau de responsabilité partagée entre le client et le fournisseur cloud.

SaaS

Software as a Service — Logiciel en tant que service

L'application est entièrement gérée par le fournisseur. L'utilisateur n'accède qu'à l'interface. Aucune gestion d'infrastructure, de runtime ou de middleware.

Gmail Salesforce Microsoft 365 Slack Dropbox Zoom
PaaS

Platform as a Service — Plateforme en tant que service

Le fournisseur gère l'OS, le runtime, les middleware et la virtualisation. Le développeur déploie son code et ses données sans s'occuper de l'infrastructure sous-jacente.

Heroku Google App Engine AWS Elastic Beanstalk Azure App Service Render
IaaS

Infrastructure as a Service — Infrastructure en tant que service

Mise à disposition de ressources brutes : VMs, stockage, réseau, pare-feu. Le client installe et gère tout ce qui se trouve au-dessus (OS, middleware, applications).

AWS EC2 Azure VMs Google Compute Engine OVHcloud Scaleway
🔑 Modèles émergents

FaaS (Function as a Service / Serverless) — AWS Lambda, Google Cloud Functions, Azure Functions. Le code s'exécute à la demande, facturation à la milliseconde. Pas de serveur à gérer. CaaS (Container as a Service) — Google GKE, Amazon EKS. Gestion d'orchestrateurs de conteneurs. DaaS (Desktop as a Service) — Amazon WorkSpaces, Azure Virtual Desktop.

🌐
03

Modèles de déploiement

Public Cloud

Nuage public

Infrastructure détenue et exploitée par un fournisseur tiers (AWS, Azure, GCP). Mutualisée entre de nombreux clients. Coût faible, scalabilité maximale, démarrage immédiat. Moins de contrôle sur la localisation des données.

Private Cloud

Nuage privé

Infrastructure dédiée à une seule organisation, hébergée on-premise ou chez un fournisseur. OpenStack, VMware vSphere. Contrôle et sécurité maximaux. Adapté aux données sensibles (santé, finance, défense).

Hybrid Cloud

Nuage hybride

Combinaison d'un cloud privé et public reliés par des technologies standardisées. Cloud bursting : débordement vers le public lors des pics de charge. Azure Arc, AWS Outposts.

Multi-Cloud

Multi-Cloud

Utilisation simultanée de plusieurs fournisseurs publics. Évite le vendor lock-in, optimise les coûts et la résilience. Complexité opérationnelle accrue. Terraform facilite le déploiement multi-cloud.

Community Cloud

Nuage communautaire

Infrastructure partagée entre plusieurs organisations ayant des préoccupations communes (conformité réglementaire, sécurité). Ex : cloud interministériel, RENATER pour la recherche.

Edge Cloud

Edge Computing

Traitement des données au plus près de la source (IoT, 5G) pour réduire la latence. AWS Greengrass, Azure IoT Edge, CloudFlare Workers. Complémentaire au cloud centralisé.

💻
04

Virtualisation

La virtualisation est le fondement technique du cloud. Elle permet d'abstraire les ressources matérielles pour créer plusieurs environnements logiques sur un même hôte physique.

Aspect Hyperviseur Type 1 (bare metal) Hyperviseur Type 2 (hébergé) Conteneurs
Exemples VMware ESXi, KVM, Hyper-V, Xen VirtualBox, VMware Workstation Docker, Podman, containerd
Isolation Kernel isolé par VM Kernel isolé par VM Partage le kernel hôte
Performance Très élevée (~5 % overhead) Moyenne (OS hôte en plus) Native (quasi-zéro overhead)
Démarrage 30 s – 2 min 1 – 5 min < 1 seconde
Empreinte GB (image OS complète) GB MB (couches partagées)
Usages cloud IaaS, datacenters, prod Dev local, tests Microservices, CI/CD, serverless
Réseau

Virtual Network (VNet / VPC)

Réseau privé virtuel isolant les ressources cloud. Sous-réseaux, tables de routage, security groups, VPN Gateway. AWS VPC, Azure VNet, GCP VPC.

Stockage

Stockage virtualisé

Block storage (EBS), Object storage (S3, Blob), File storage (EFS, Azure Files). Réplication, snapshots, chiffrement au repos transparents.

Réseau défini par logiciel

SDN & NFV

Software-Defined Networking : découplage du plan de contrôle et du plan de données. Network Function Virtualization : pare-feu, load balancers virtuels. OpenFlow, OpenDaylight.

📦
05

Conteneurs & Orchestration

Docker (2013) et Kubernetes (2014) ont transformé le déploiement applicatif en standardisant l'empaquetage et l'orchestration des conteneurs à grande échelle.

Dockerfile — Application Node.js
# Étape 1 : Build
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

# Étape 2 : Image finale allégée
FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY . .

ENV NODE_ENV=production
EXPOSE 3000
USER node
CMD ["node", "server.js"]
Kubernetes — Deployment + Service YAML
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    spec:
      containers:
      - name: web
        image: myregistry/web-app:v2.1
        ports:
        - containerPort: 3000
        resources:
          limits:   { cpu: "500m", memory: "256Mi" }
          requests: { cpu: "100m", memory: "128Mi" }
        readinessProbe:
          httpGet: { path: /health, port: 3000 }
---
apiVersion: v1
kind: Service
metadata:
  name: web-service
spec:
  type: LoadBalancer
  selector:
    app: web
  ports:
  - port: 80
    targetPort: 3000
Orchestration

Kubernetes (K8s)

Orchestrateur open source (Google, 2014). Gestion du cycle de vie des pods, auto-scaling (HPA/VPA), self-healing, rolling updates, gestion des secrets et ConfigMaps.

Service Mesh

Istio / Linkerd

Couche réseau dédiée aux microservices : mTLS, circuit breaking, traffic shaping, observabilité (traces distribuées, métriques). Sidecar pattern (Envoy proxy).

Registry

Container Registry

Docker Hub, Amazon ECR, Google Container Registry, GitHub Container Registry. Stockage et distribution des images. Scanning de vulnérabilités intégré.

🏗️
06

Architectures modernes

Microservices

Décomposition d'une application en petits services indépendants, déployables séparément, communiquant via API REST ou messagerie asynchrone (Kafka, RabbitMQ).

📱
Client

Web / Mobile / API

🚪
API Gateway

Routage, auth, rate limiting

🔧
Services

Users, Orders, Catalog…

📨
Message Bus

Kafka, RabbitMQ, SQS

🗃️
Données

DB par service (polyglot)

Serverless

FaaS — Fonctions sans serveur

Exécution de code event-driven sans gestion de serveur. AWS Lambda (jusqu'à 15 min), facturation à la milliseconde. Idéal pour les traitements asynchrones et les APIs légères.

Event-Driven

Architecture événementielle

Les services communiquent via des événements plutôt que des appels synchrones. Apache Kafka, AWS EventBridge, Azure Event Hubs. Découplage et résilience accrus.

Patterns

Patterns de résilience

Circuit Breaker (Hystrix, Resilience4j), Retry with exponential backoff, Bulkhead isolation, Saga pattern pour les transactions distribuées, CQRS + Event Sourcing.

🔐
07

Sécurité Cloud

⚠️ Modèle de responsabilité partagée

Le fournisseur cloud est responsable de la sécurité du cloud (infrastructure physique, hyperviseur, réseau global). Le client est responsable de la sécurité dans le cloud (données, identités, configurations OS, accès réseau).

🪪

IAM — Gestion des identités et accès

Principe du moindre privilège. Rôles, politiques, MFA obligatoire. AWS IAM, Azure Active Directory, Google IAM. Rotation automatique des clés d'accès. Interdiction des credentials en dur dans le code.

🔑

Chiffrement

En transit : TLS 1.3 obligatoire. Au repos : AES-256 par défaut sur les volumes et buckets. Gestion des clés via KMS (Key Management Service). HSM (Hardware Security Module) pour les cas critiques.

🛡️

Sécurité réseau

Security Groups (stateful firewall), Network ACLs (stateless), WAF (Web Application Firewall), DDoS protection (AWS Shield, Azure DDoS Protection). Segmentation réseau par VPC/VNet.

👁️

Observabilité & Audit

Logs centralisés (CloudTrail, Azure Monitor, Cloud Logging), SIEM intégré, détection d'anomalies par ML. AWS GuardDuty, Azure Defender, Google Security Command Center.

📋

Conformité & Réglementation

RGPD (localisation des données en UE), ISO 27001, SOC 2, PCI-DSS, HIPAA. Souveraineté numérique : Cloud de confiance ANSSi, SecNumCloud, EU Data Act.

🔒

Zero Trust Architecture

Principe « ne jamais faire confiance, toujours vérifier ». Authentification continue, micro-segmentation, inspection du trafic Est-Ouest. BeyondCorp (Google), ZTNA vs VPN.

🏢
08

Principaux fournisseurs

Amazon Web Services
--
Part de marché
EC2S3Lambda RDSEKSSageMaker CloudFrontDynamoDB
Microsoft Azure
--
Part de marché
VMsAKSFunctions Cosmos DBEntra IDAzure AI Blob StorageDevOps
Google Cloud Platform
--
Part de marché
GCEGKECloud Run BigQueryVertex AISpanner Pub/SubFirestore

Acteurs européens et souverains

France

OVHcloud

1er hébergeur européen. Certifié SecNumCloud (ANSSI). Centres de données en France, Allemagne, Pologne, Canada. Garantie de souveraineté des données pour les administrations françaises.

France

Scaleway

Cloud souverain français (groupe Iliad). Serverless, GPU pour l'IA, Object Storage S3-compatible. Engagements forts sur la transition énergétique (refroidissement adiabatique).

Europe

GAIA-X

Initiative européenne (2020) visant à créer un écosystème de données interopérable et souverain. Federated Catalogue, Self-Descriptions, Dataspace Connector basé sur des standards ouverts.

⚙️
09

Outils & DevOps

Le cloud natif s'accompagne d'une culture DevOps et d'un outillage couvrant l'ensemble du cycle de vie applicatif.

Infrastructure as Code (IaC)

Terraform / OpenTofu AWS CloudFormation Pulumi Ansible Chef / Puppet

CI/CD

GitHub Actions GitLab CI Jenkins ArgoCD Flux CD CircleCI

Monitoring & Observabilité

Prometheus + Grafana Datadog ELK Stack OpenTelemetry Jaeger / Zipkin Loki

Base de données cloud-native

Amazon Aurora Google Spanner CockroachDB MongoDB Atlas PlanetScale Supabase
GitHub Actions — Pipeline CI/CD complet
name: CI/CD Pipeline
on:
  push:
    branches: [main, develop]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Tests unitaires
        run: npm ci && npm test -- --coverage

  build-push:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: docker/login-action@v3
        with:
          registry: ghcr.io
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
      - name: Build & Push image Docker
        run: |
          docker build -t ghcr.io/${{ github.repository }}:${{ github.sha }} .
          docker push ghcr.io/${{ github.repository }}:${{ github.sha }}

  deploy:
    needs: build-push
    environment: production
    runs-on: ubuntu-latest
    steps:
      - name: Deploy sur Kubernetes
        run: |
          kubectl set image deployment/web-app \
            web=ghcr.io/${{ github.repository }}:${{ github.sha }}