Cours connexes :


Cloud & Edge Computing - Semestre 9

Annee academique : 2024-2025
Enseignant : Sami Yangui
Categorie : Cloud, Virtualisation, Edge Computing


PART A - Presentation Generale

Vue d'ensemble

Le cours de Cloud & Edge Computing presente les systemes cloud centralises et les solutions edge decentralisees, preparant a repondre aux defis technologiques modernes. Enseigne par Sami Yangui, ce cours explore les technologies de virtualisation, les services cloud et les infrastructures edge. Il met l'accent sur la conception, le deploiement et la gestion d'architectures qui combinent les avantages de faible latence du edge computing avec la scalabilite des environnements cloud.

Cette formation est particulierement pertinente dans le contexte actuel, ou la montee de l'IoT, des applications temps reel et des reseaux necessite une expertise dans ces domaines.

Objectifs pedagogiques :

  • Comprendre les fondamentaux de la virtualisation (hyperviseurs Type 1 et Type 2, paravirtualisation)
  • Maitriser la conteneurisation avec Docker et l'orchestration avec Kubernetes
  • Apprehender les modeles de service cloud (IaaS, PaaS, SaaS)
  • Deployer et configurer des environnements OpenStack
  • Comprendre le paradigme Edge Computing, Fog Computing et MEC (Multi-access Edge Computing)
  • Concevoir des architectures cloud-edge integrees

Position dans le cursus

Ce module s'appuie sur les bases acquises precedemment :

  • Interconnexion Reseau (S8) : fondamentaux TCP/IP, routage, VLAN
  • Systemes d'Exploitation (S5) : gestion des processus, systemes Unix
  • Architecture Materielle (S6) : couche physique, materiels serveurs

Il se connecte directement aux autres cours du semestre :

  • Emerging Network Technologies (S9) : SDN et virtualisation reseau
  • Middleware for IoT (S9) : protocoles de communication IoT deployes sur le cloud/edge
  • Service Oriented Architecture (S9) : architectures de services cloud

PART B - Experience et Contexte

Organisation et ressources

Le module combinait theorie et pratique intensive :

Cours magistraux :

  • Introduction au Cloud Computing et ses caracteristiques essentielles
  • Technologies de virtualisation (hyperviseurs, conteneurs)
  • Modeles de service cloud (IaaS, PaaS, SaaS) et modeles de deploiement
  • Architecture OpenStack et ses composants
  • Edge Computing, Fog Computing et MEC
  • Continuum Cloud-Edge et orchestration

Travaux pratiques :

  • TP1 : Configuration de reseaux virtuels avec VirtualBox, routage inter-VM
  • TP2 : Creation et gestion de conteneurs Docker, Dockerfiles, volumes
  • TP3 : Deploiement d'une infrastructure OpenStack (Nova, Neutron, Glance, Keystone)
  • TP4 : Orchestration de conteneurs avec Kubernetes, deploiement de services

Outils utilises :

  • VirtualBox : virtualisation de type 2 pour les TPs
  • Docker : conteneurisation d'applications
  • Kubernetes : orchestration de conteneurs
  • OpenStack : plateforme cloud open-source (Nova, Neutron, Glance, Keystone, Horizon)
  • Linux (Ubuntu) : systeme hote pour les environnements virtualises

Mon role

Dans le cadre de ce cours, j'etais responsable de :

  • Apprendre et pratiquer les techniques de virtualisation (VMs et conteneurs)
  • Concevoir, deployer et gerer des architectures hybrides combinant cloud et edge computing
  • Acquerir des competences avec des outils comme Kubernetes, Docker et VirtualBox
  • Rediger un rapport technique complet sur les travaux pratiques realises

Difficultes rencontrees

Configuration reseau VirtualBox :
La mise en place des reseaux virtuels (NAT, bridge, host-only) et la comprehension de leur interaction a necessite du temps et de la methodologie.

Deploiement OpenStack :
OpenStack est une plateforme complexe avec de nombreux composants interdependants. La configuration initiale et la resolution de problemes de connectivite entre services ont ete des defis formateurs.

Kubernetes en temps limite :
La session sur Kubernetes a ete realisee rapidement avec mon binome. Nous avons du executer les commandes sans toujours avoir le temps de comprendre chaque etape en profondeur. Le rapport redige a posteriori nous a permis de mieux assimiler les concepts.


PART C - Aspects Techniques Detailles

1. Fondamentaux de la virtualisation

Sans virtualisation :

Dans un environnement sans virtualisation, une seule application s'execute directement sur le systeme d'exploitation hote qui gere le materiel physique. Cette approche presente des limitations en termes d'isolation, de scalabilite et d'utilisation des ressources.

Figure : Architecture sans virtualisation - une seule application sur l'OS hote

Avec virtualisation :

La virtualisation permet d'executer plusieurs systemes d'exploitation et applications sur un meme materiel physique grace a un hyperviseur. Chaque machine virtuelle (VM) dispose de ses propres ressources virtualisees (CPU, RAM, stockage, reseau).

Figure : Architecture avec virtualisation - plusieurs VMs sur un meme hote physique via un hyperviseur

Avantages de la virtualisation :

  • Consolidation de serveurs : reduire le nombre de machines physiques
  • Isolation : chaque VM est independante (panne d'une VM ne touche pas les autres)
  • Flexibilite : deploiement rapide de nouveaux environnements
  • Snapshots et migration : sauvegarde d'etat et migration a chaud
  • Optimisation des ressources : meilleure utilisation du materiel

2. Hyperviseurs Type 1 et Type 2

L'hyperviseur est le composant logiciel qui permet la virtualisation. Il existe deux types principaux :

Hyperviseur de Type 1 (Bare Metal) :

L'hyperviseur s'execute directement sur le materiel physique, sans systeme d'exploitation hote intermediaire. Il offre de meilleures performances et une securite accrue car il a un acces direct au materiel.

Exemples : VMware ESXi, Microsoft Hyper-V, Citrix XenServer, KVM

Caracteristiques :

  • Performances proches du natif
  • Gestion directe des ressources materielles
  • Utilise en production dans les datacenters
  • Securite renforcee (surface d'attaque reduite)

Hyperviseur de Type 2 (Hosted) :

L'hyperviseur s'execute comme une application sur un systeme d'exploitation hote existant. Il est plus simple a installer et a utiliser mais offre des performances legerement inferieures.

Exemples : Oracle VirtualBox, VMware Workstation, Parallels Desktop

Caracteristiques :

  • Facile a installer sur un poste de travail
  • Ideal pour le developpement et les tests
  • Performances reduites (couche OS intermediaire)
  • Utilise principalement en environnement desktop

Figure : Hyperviseur Type 1 (Bare Metal)

Figure : Hyperviseur Type 2 (Hosted)

CritereType 1 (Bare Metal)Type 2 (Hosted)
InstallationDirectement sur le materielSur un OS existant
PerformanceEleveeModeree
Usage principalDatacenters, productionDeveloppement, tests
SecuriteForte (acces direct)Dependante de l'OS hote
ExemplesESXi, KVM, Hyper-VVirtualBox, VMware Workstation

3. Paravirtualisation

La paravirtualisation est une technique ou le systeme d'exploitation invite est modifie pour communiquer directement avec l'hyperviseur via des "hypercalls", au lieu de simuler completement le materiel. Cela ameliore les performances par rapport a la virtualisation complete, car les appels systeme sont optimises pour l'environnement virtualise.

Figure : Solutions de paravirtualisation - OpenNebula, OpenStack, Proxmox

Avantages de la paravirtualisation :

  • Performances ameliorees par rapport a la virtualisation complete
  • Meilleure gestion des E/S (entrees/sorties)
  • Overhead reduit

Inconvenients :

  • Necessite la modification du systeme d'exploitation invite
  • Compatibilite limitee aux OS modifies

4. Conteneurs vs Machines Virtuelles

Les conteneurs representent une evolution majeure par rapport aux machines virtuelles traditionnelles. Contrairement aux VMs qui virtualisent le materiel complet, les conteneurs partagent le noyau du systeme d'exploitation hote et n'embarquent que les bibliotheques et dependances necessaires a l'application.

Figure : Ecosysteme conteneur - Container Linux, Solaris, Docker

CritereMachine VirtuelleConteneur
IsolationComplete (OS separe)Au niveau processus
TailleGo (OS complet)Mo (bibliotheques seulement)
DemarrageMinutesSecondes
PerformanceOverhead (hyperviseur)Proche du natif
PortabiliteLimiteeExcellente
Densite~10-20 VMs par serveur~100+ conteneurs par serveur
SecuriteForte (isolation materielle)Moderee (noyau partage)

Cas d'utilisation des VMs :

  • Isolation forte necessaire (multi-tenant, securite)
  • OS differents sur un meme hote
  • Applications legacy

Cas d'utilisation des conteneurs :

  • Microservices
  • CI/CD (integration et deploiement continus)
  • Applications cloud-native
  • Environnements de developpement reproductibles

5. Docker et conteneurisation

Docker est la plateforme de conteneurisation la plus populaire. Elle permet de creer, deployer et gerer des conteneurs de maniere efficace. Lors des travaux pratiques, j'ai appris a utiliser Docker pour virtualiser des applications dans des environnements isoles.

Figure : Logo Docker

Architecture Docker :

  • Docker Engine : le daemon qui gere les conteneurs
  • Docker Image : template read-only contenant l'application et ses dependances
  • Docker Container : instance d'execution d'une image
  • Dockerfile : fichier de configuration pour construire une image
  • Docker Hub : registre public d'images Docker
  • Docker Compose : outil pour definir des applications multi-conteneurs

Commandes principales utilisees en TP :

# Telecharger une image depuis Docker Hub
docker pull ubuntu:20.04

# Lancer un conteneur en mode interactif
docker run -it --name mon_conteneur ubuntu:20.04 /bin/bash

# Lister les conteneurs actifs
docker ps

# Lister tous les conteneurs (actifs et arretes)
docker ps -a

# Construire une image a partir d'un Dockerfile
docker build -t mon_image .

# Exposer un port et lancer un conteneur en arriere-plan
docker run -d -p 8080:80 --name serveur_web nginx

# Gerer les volumes pour la persistance
docker run -v /host/data:/container/data mon_image

Exemple de Dockerfile :

FROM ubuntu:20.04
RUN apt-get update && apt-get install -y python3 pip
COPY app.py /app/
WORKDIR /app
EXPOSE 5000
CMD ["python3", "app.py"]

Avantages de Docker :

  • Portabilite ("Build once, run anywhere")
  • Reproductibilite des environnements
  • Isolation des applications
  • Demarrage rapide (secondes)
  • Ecosysteme riche (Docker Hub, Docker Compose)

6. Modeles de service Cloud : IaaS, PaaS, SaaS

Le Cloud Computing propose differents niveaux d'abstraction pour les services, representes par trois modeles principaux :

Figure : Modeles de service Cloud - IaaS, SaaS, PaaS et leurs niveaux d'abstraction

IaaS (Infrastructure as a Service) :

Fournit les ressources d'infrastructure virtualisees (serveurs, stockage, reseau). L'utilisateur gere l'OS, les middlewares et les applications.

  • Exemples : AWS EC2, Google Compute Engine, Azure Virtual Machines, OpenStack
  • Responsabilite utilisateur : OS, runtime, applications, donnees
  • Responsabilite fournisseur : materiel, virtualisation, reseau
  • Flexibilite : maximale (controle total sur l'infrastructure)

PaaS (Platform as a Service) :

Fournit une plateforme de developpement et de deploiement. L'utilisateur se concentre sur le code applicatif sans gerer l'infrastructure sous-jacente.

  • Exemples : Google App Engine, Heroku, Azure App Service, Cloud Foundry
  • Responsabilite utilisateur : applications et donnees
  • Responsabilite fournisseur : OS, runtime, middleware, infrastructure
  • Flexibilite : moderee (contraintes de la plateforme)

SaaS (Software as a Service) :

Applications logicielles accessibles via le navigateur, entierement gerees par le fournisseur.

  • Exemples : Google Workspace, Microsoft 365, Salesforce, Dropbox
  • Responsabilite utilisateur : donnees et parametres
  • Responsabilite fournisseur : tout le reste
  • Flexibilite : limitee (configuration seulement)
AspectIaaSPaaSSaaS
ControleTotalPartielMinimal
ComplexiteEleveeMoyenneFaible
ScalabiliteManuelle/Semi-autoAutomatiqueAutomatique
CoutPay-per-usePay-per-useAbonnement
Public cibleAdmins systemeDeveloppeursUtilisateurs finaux

Caracteristiques essentielles du Cloud (NIST) :

Figure : Les caracteristiques essentielles du Cloud Computing selon le NIST

Les cinq caracteristiques essentielles definies par le NIST :

  • On-demand self-service : provisionnement automatique sans intervention humaine
  • Broad network access : acces via des mecanismes standards (HTTP, API)
  • Resource pooling : ressources mutualisees pour plusieurs clients (multi-tenant)
  • Rapid elasticity : scalabilite automatique selon la demande
  • Measured service : facturation a l'usage (pay-per-use)

Modeles de deploiement Cloud :

  • Cloud Public : infrastructure partagee, accessible a tous (AWS, Azure, GCP)
  • Cloud Prive : infrastructure dediee a une organisation (OpenStack on-premise)
  • Cloud Hybride : combinaison de cloud public et prive
  • Cloud Communautaire : partage entre organisations ayant des besoins similaires

7. OpenStack - Plateforme Cloud Open-Source

OpenStack est une plateforme open-source de cloud computing, principalement deployee comme IaaS. Elle permet la gestion de grands pools de ressources de calcul, de stockage et de reseau, le tout administrable via un tableau de bord (Horizon) ou via l'API OpenStack.

Figure : Architecture d'OpenStack et ses composants principaux

Composants principaux d'OpenStack :

ComposantNom du projetFonction
ComputeNovaGestion des instances de machines virtuelles
NetworkingNeutronReseaux virtuels, sous-reseaux, routeurs, firewalls
ImageGlanceStockage et gestion des images de VMs
IdentityKeystoneAuthentification, autorisation, catalogue de services
DashboardHorizonInterface web d'administration
Block StorageCinderVolumes de stockage persistants
Object StorageSwiftStockage objet distribue
OrchestrationHeatTemplates d'infrastructure (Infrastructure as Code)

Architecture OpenStack :

L'architecture OpenStack suit un modele de services distribues communiquant via des APIs REST. Keystone fournit l'authentification centralisee. Nova gere le cycle de vie des VMs en s'appuyant sur Glance pour les images, Neutron pour le reseau et Cinder pour le stockage.

Manipulations realisees en TP :

  • Creation de reseaux virtuels et sous-reseaux avec Neutron
  • Deploiement d'instances VM avec Nova
  • Configuration de regles de securite (security groups)
  • Utilisation du dashboard Horizon pour l'administration visuelle
  • Gestion des images avec Glance

8. Configuration reseau avec VirtualBox

Les travaux pratiques m'ont permis de configurer des reseaux virtuels avec VirtualBox. J'ai appris a creer et configurer des machines virtuelles, tester leur connectivite, et mettre en place des regles de redirection de ports pour permettre la communication entre les VMs et l'hote.

Figure : Configuration reseau avec VirtualBox

Types de reseau VirtualBox configures :

Mode reseauAcces InternetCommunication inter-VMAcces depuis l'hote
NATOuiNonVia port forwarding
BridgedOuiOuiOui
Host-OnlyNonOuiOui
InternalNonOui (meme reseau)Non

Manipulations realisees :

  • Configuration de reseaux prives et routeurs pour la communication entre differentes VMs
  • Mise en place de regles de port forwarding pour l'acces SSH
  • Tests de connectivite (ping, traceroute) entre VMs
  • Configuration de sous-reseaux isoles

9. Paradigme Edge Computing

Le Edge Computing est un paradigme qui consiste a traiter les donnees au plus pres de leur source de generation, plutot que de les envoyer systematiquement vers un datacenter cloud centralise. Ce concept est fondamental pour les applications necessitant une faible latence, une bande passante reduite ou une souverainete des donnees.

Motivations du Edge Computing :

  • Latence : les applications temps reel (vehicules autonomes, realite augmentee) ne peuvent pas tolerer les delais aller-retour vers le cloud
  • Bande passante : les volumes de donnees generes par l'IoT saturent les liens reseau
  • Souverainete des donnees : certaines reglementations imposent le traitement local des donnees
  • Fiabilite : le fonctionnement doit continuer meme en cas de perte de connexion au cloud

Caracteristiques cles :

  • Traitement local des donnees au plus pres des utilisateurs/capteurs
  • Reduction de la latence (de ~100ms a <10ms)
  • Filtrage et aggregation des donnees avant envoi au cloud
  • Fonctionnement en mode deconnecte possible

10. Fog Computing

Le Fog Computing, introduit par Cisco, est une extension du cloud computing qui rapproche les services de calcul, de stockage et de reseau des peripheriques edge. Il se situe comme une couche intermediaire entre les dispositifs IoT (edge) et le cloud centralise.

Differences Fog vs Edge :

AspectEdge ComputingFog Computing
LocalisationSur le dispositif ou tres procheEntre edge et cloud
Capacite de calculLimiteeModeree
LatenceTres faibleFaible
ExemplesCapteurs, gateways IoTServeurs locaux, routeurs intelligents
ScopeTraitement immediatAggregation, pre-traitement

Architecture Fog Computing :

  1. Couche Edge : capteurs et actionneurs (collecte de donnees brutes)
  2. Couche Fog : passerelles, serveurs locaux (pre-traitement, filtrage, decisions rapides)
  3. Couche Cloud : datacenters (analyse approfondie, stockage long terme, machine learning)

11. MEC - Multi-access Edge Computing

Le MEC (Multi-access Edge Computing), standardise par l'ETSI, est un concept qui integre les capacites de calcul au niveau de l'infrastructure des operateurs de telecommunications, typiquement dans les stations de base ou les points d'acces du reseau.

Caracteristiques du MEC :

  • Integration avec l'infrastructure reseau des operateurs (4G/5G)
  • APIs standardisees pour l'acces aux informations reseau (localisation, QoS)
  • Hebergement d'applications tierces au plus pres du reseau d'acces
  • Faible latence garantie par la proximite avec les antennes

Cas d'utilisation MEC :

  • Vehicules connectes (V2X) : communication ultra-fiable et faible latence
  • Realite augmentee/virtuelle : rendu en temps reel
  • Gaming cloud : streaming de jeux avec latence minimale
  • Video analytics : analyse de flux video en temps reel
  • IoT industriel : controle de processus industriels

12. Continuum Cloud-Edge

Le continuum cloud-edge represente une vision unifiee ou les ressources de calcul sont distribuees de maniere continue depuis les dispositifs edge jusqu'au cloud centralise. L'objectif est d'offrir une orchestration transparente qui place automatiquement les traitements la ou ils sont le plus pertinents.

Principes du continuum :

  • Placement dynamique : les applications migrent entre edge, fog et cloud selon les besoins (latence, charge, cout)
  • Orchestration unifiee : un plan de controle unique gere l'ensemble des ressources
  • Heterogeneite : integration de ressources diverses (x86, ARM, GPU, FPGA)
  • Elasticite : scalabilite horizontale et verticale a tous les niveaux

Gestion autonomique :

Figure : Boucle autonomique MAPE-K (Monitor, Analyze, Plan, Execute) pour la gestion du continuum cloud-edge

Le modele MAPE-K (Monitor, Analyze, Plan, Execute - Knowledge) permet une gestion autonomique des ressources du continuum :

  • Monitor : collecte des metriques (latence, charge CPU, bande passante)
  • Analyze : detection d'anomalies et tendances
  • Plan : decision de placement, migration, scaling
  • Execute : application des decisions (deploiement, migration de conteneurs)
  • Knowledge : base de connaissances partagee alimentant la boucle

13. Orchestration de conteneurs avec Kubernetes

Kubernetes (K8s) est la plateforme standard pour l'orchestration de conteneurs a grande echelle. Elle automatise le deploiement, la mise a l'echelle et la gestion des applications conteneurisees.

Architecture Kubernetes :

Plan de controle (Control Plane) :

  • kube-apiserver : point d'entree pour toutes les operations (API REST)
  • etcd : base de donnees cle-valeur distribuee (etat du cluster)
  • kube-scheduler : placement des pods sur les noeuds
  • kube-controller-manager : controleurs qui maintiennent l'etat desire

Noeuds Worker :

  • kubelet : agent sur chaque noeud qui gere les pods
  • kube-proxy : gestion du reseau et du load balancing
  • Container Runtime : Docker, containerd ou CRI-O

Concepts fondamentaux :

ConceptDescription
PodUnite de deploiement minimale (1+ conteneurs)
DeploymentGestion declarative des pods (replicas, mises a jour)
ServiceExposition reseau stable pour un ensemble de pods
NamespaceIsolation logique au sein d'un cluster
ConfigMap/SecretConfiguration et donnees sensibles
PersistentVolumeStockage persistant pour les pods

Exemple de deploiement YAML utilise en TP :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer

Commandes Kubernetes utilisees en TP :

# Deployer une application
kubectl apply -f deployment.yaml

# Voir les pods en cours d'execution
kubectl get pods

# Voir les services
kubectl get services

# Mettre a l'echelle un deploiement
kubectl scale deployment nginx-deployment --replicas=5

# Voir les logs d'un pod
kubectl logs <nom-du-pod>

# Description detaillee d'un pod
kubectl describe pod <nom-du-pod>

PART D - Analyse et Reflexion

Competences acquises

Virtualisation et conteneurisation :
Maitrise des differences fondamentales entre VMs et conteneurs, des hyperviseurs Type 1 et Type 2, et des outils Docker et VirtualBox. Capacite a choisir la technologie adaptee selon le cas d'usage.

Cloud Computing :
Comprehension des modeles de service (IaaS, PaaS, SaaS) et de deploiement (public, prive, hybride). Experience pratique avec OpenStack pour le deploiement d'une infrastructure cloud.

Edge Computing :
Apprehension du paradigme edge et de ses variantes (Fog Computing, MEC). Comprehension du continuum cloud-edge et des enjeux d'orchestration dans un environnement distribue.

Orchestration :
Competence initiale avec Kubernetes pour le deploiement et la gestion de services conteneurises. Comprehension de l'architecture cluster et des fichiers de configuration YAML.

Points cles a retenir

1. La virtualisation est le socle du cloud :
Sans virtualisation (VMs ou conteneurs), le cloud computing n'existerait pas. Comprendre ces mecanismes est fondamental pour tout ingenieur cloud.

2. Conteneurs et VMs sont complementaires :
Les conteneurs ne remplacent pas les VMs. Chaque technologie a ses cas d'usage. En production, on utilise souvent des conteneurs deployes sur des VMs pour combiner les avantages des deux.

3. Le edge computing repond a des besoins reels :
L'IoT, la 5G et les applications temps reel rendent le edge computing indispensable. Le cloud seul ne suffit plus pour toutes les charges de travail.

4. L'orchestration est essentielle a grande echelle :
Kubernetes est devenu le standard de facto pour gerer des centaines de conteneurs. Maitriser cet outil est une competence tres demandee.

5. Le continuum cloud-edge est l'avenir :
La tendance est a l'integration transparente de toutes les couches (edge, fog, cloud) avec une orchestration unifiee.

Retour d'experience

J'ai developpe de nouvelles competences en architectures hybrides et leurs applications dans les environnements informatiques modernes. J'ai pu comprendre et utiliser l'ensemble des concepts abordes. Cependant, j'ai realise qu'il me faudra pratiquer ces outils a l'avenir pour ne pas les oublier, car je n'ai pas actuellement l'opportunite de les utiliser dans mon entreprise d'apprentissage.

La session sur Kubernetes ayant ete realisee rapidement avec mon binome, nous avons du passer vite et simplement lancer les commandes. Grace au rapport que nous avons redige, il a ete plus simple de comprendre les concepts dans un second temps.

Mon avis

Ce cours etait tres interessant. J'ai eu la chance d'apprendre de nombreux concepts que j'entends dans la vie courante pour certains metiers. Ce cours sera reellement utile pour mon parcours professionnel ou ces concepts pourraient etre appliques.

Le contenu du cours etait bien structure, partant des bases de la virtualisation et progressant graduellement vers des sujets plus complexes. Cette progression m'a aide a mieux comprendre puis a elargir mes connaissances vers des concepts plus avances.

Je me sens desormais plus confiant pour concevoir, deployer et gerer des solutions cloud-edge scalables.

Applications professionnelles :

  • Ingenieur DevOps : deploiement d'applications conteneurisees sur Kubernetes, CI/CD
  • Architecte Cloud : conception d'infrastructures cloud hybrides et multi-cloud
  • Ingenieur IoT : deploiement d'architectures edge pour le traitement local des donnees
  • Administrateur systeme : gestion d'infrastructures virtualisees et OpenStack
  • Ingenieur Telecom : integration MEC dans les reseaux 5G

Liens avec les autres cours :


Documents de Cours

Cours Complet Cloud & Edge Computing Full Cloud & Edge Computing Course

Cours complet sur le Cloud & Edge Computing : virtualisation, modeles de service, OpenStack, Edge Computing, Fog Computing, MEC, continuum cloud-edge. Complete course on Cloud & Edge Computing: virtualization, service models, OpenStack, Edge Computing, Fog Computing, MEC, cloud-edge continuum.

Telecharger le cours Download the course


Rapports et Projets

Rapport de Projet Cloud Computing Cloud Computing Project Report

Ouvrir le rapport complet Open the full report

Ouvrir le sujet de TP Open the lab subject


Cours suivi en 2024-2025 a l'INSA Toulouse, Departement Genie Electrique et Informatique, specialite ISS.

Related courses:


Cloud & Edge Computing - Semester 9

Academic year: 2024-2025
Instructor: Sami Yangui
Category: Cloud, Virtualization, Edge Computing


PART A - General Presentation

Overview

The Cloud & Edge Computing course covers centralized cloud systems and decentralized edge solutions, preparing students to address modern technological challenges. Taught by Sami Yangui, this course explores virtualization technologies, cloud services and edge infrastructures. It focuses on designing, deploying and managing architectures that combine the low-latency advantages of edge computing with the scalability of cloud environments.

This training is particularly relevant in the current context, where the rise of IoT, real-time applications and networks requires expertise in these areas.

Learning objectives:

  • Understand the fundamentals of virtualization (Type 1 and Type 2 hypervisors, paravirtualization)
  • Master containerization with Docker and orchestration with Kubernetes
  • Understand cloud service models (IaaS, PaaS, SaaS)
  • Deploy and configure OpenStack environments
  • Understand the Edge Computing, Fog Computing and MEC (Multi-access Edge Computing) paradigm
  • Design integrated cloud-edge architectures

Position in the curriculum

This module builds on previously acquired foundations:

  • Network Interconnection (S8): TCP/IP fundamentals, routing, VLAN
  • Operating Systems (S5): process management, Unix systems
  • Hardware Architecture (S6): physical layer, server hardware

It connects directly to other courses in the semester:

  • Emerging Network Technologies (S9): SDN and network virtualization
  • Middleware for IoT (S9): IoT communication protocols deployed on cloud/edge
  • Service Oriented Architecture (S9): cloud service architectures

PART B - Experience and Context

Organization and resources

The module combined theory and intensive hands-on practice:

Lectures:

  • Introduction to Cloud Computing and its essential characteristics
  • Virtualization technologies (hypervisors, containers)
  • Cloud service models (IaaS, PaaS, SaaS) and deployment models
  • OpenStack architecture and its components
  • Edge Computing, Fog Computing and MEC
  • Cloud-Edge continuum and orchestration

Lab sessions:

  • Lab 1: Configuration of virtual networks with VirtualBox, inter-VM routing
  • Lab 2: Creation and management of Docker containers, Dockerfiles, volumes
  • Lab 3: Deployment of an OpenStack infrastructure (Nova, Neutron, Glance, Keystone)
  • Lab 4: Container orchestration with Kubernetes, service deployment

Tools used:

  • VirtualBox: Type 2 virtualization for lab sessions
  • Docker: application containerization
  • Kubernetes: container orchestration
  • OpenStack: open-source cloud platform (Nova, Neutron, Glance, Keystone, Horizon)
  • Linux (Ubuntu): host system for virtualized environments

My role

As part of this course, I was responsible for:

  • Learning and practicing virtualization techniques (VMs and containers)
  • Designing, deploying and managing hybrid architectures combining cloud and edge computing
  • Acquiring skills with tools such as Kubernetes, Docker and VirtualBox
  • Writing a comprehensive technical report on the lab work completed

Challenges encountered

VirtualBox network configuration:
Setting up virtual networks (NAT, bridge, host-only) and understanding their interactions required time and methodology.

OpenStack deployment:
OpenStack is a complex platform with many interdependent components. The initial configuration and troubleshooting connectivity issues between services were formative challenges.

Kubernetes under time constraints:
The Kubernetes session was completed quickly with my partner. We had to execute commands without always having time to understand each step in depth. The report written afterwards helped us better absorb the concepts.


PART C - Detailed Technical Aspects

1. Virtualization fundamentals

Without virtualization:

In an environment without virtualization, a single application runs directly on the host operating system which manages the physical hardware. This approach has limitations in terms of isolation, scalability and resource utilization.

Figure: Architecture without virtualization - a single application on the host OS

With virtualization:

Virtualization allows running multiple operating systems and applications on the same physical hardware through a hypervisor. Each virtual machine (VM) has its own virtualized resources (CPU, RAM, storage, network).

Figure: Architecture with virtualization - multiple VMs on a single physical host via a hypervisor

Advantages of virtualization:

  • Server consolidation: reduce the number of physical machines
  • Isolation: each VM is independent (failure of one VM does not affect the others)
  • Flexibility: rapid deployment of new environments
  • Snapshots and migration: state backup and live migration
  • Resource optimization: better hardware utilization

2. Type 1 and Type 2 Hypervisors

The hypervisor is the software component that enables virtualization. There are two main types:

Type 1 Hypervisor (Bare Metal):

The hypervisor runs directly on the physical hardware, without an intermediate host operating system. It offers better performance and enhanced security as it has direct access to the hardware.

Examples: VMware ESXi, Microsoft Hyper-V, Citrix XenServer, KVM

Characteristics:

  • Near-native performance
  • Direct management of hardware resources
  • Used in production in datacenters
  • Enhanced security (reduced attack surface)

Type 2 Hypervisor (Hosted):

The hypervisor runs as an application on an existing host operating system. It is simpler to install and use but offers slightly lower performance.

Examples: Oracle VirtualBox, VMware Workstation, Parallels Desktop

Characteristics:

  • Easy to install on a workstation
  • Ideal for development and testing
  • Reduced performance (intermediate OS layer)
  • Primarily used in desktop environments

Figure: Type 1 Hypervisor (Bare Metal)

Figure: Type 2 Hypervisor (Hosted)

CriterionType 1 (Bare Metal)Type 2 (Hosted)
InstallationDirectly on hardwareOn an existing OS
PerformanceHighModerate
Primary useDatacenters, productionDevelopment, testing
SecurityStrong (direct access)Dependent on host OS
ExamplesESXi, KVM, Hyper-VVirtualBox, VMware Workstation

3. Paravirtualization

Paravirtualization is a technique where the guest operating system is modified to communicate directly with the hypervisor through "hypercalls", instead of fully simulating the hardware. This improves performance compared to full virtualization, as system calls are optimized for the virtualized environment.

Figure: Paravirtualization solutions - OpenNebula, OpenStack, Proxmox

Advantages of paravirtualization:

  • Improved performance compared to full virtualization
  • Better I/O management (input/output)
  • Reduced overhead

Disadvantages:

  • Requires modification of the guest operating system
  • Compatibility limited to modified OSes

4. Containers vs Virtual Machines

Containers represent a major evolution compared to traditional virtual machines. Unlike VMs which virtualize the complete hardware, containers share the host operating system kernel and only include the libraries and dependencies necessary for the application.

Figure: Container ecosystem - Container Linux, Solaris, Docker

CriterionVirtual MachineContainer
IsolationComplete (separate OS)Process-level
SizeGB (complete OS)MB (libraries only)
StartupMinutesSeconds
PerformanceOverhead (hypervisor)Near-native
PortabilityLimitedExcellent
Density~10-20 VMs per server~100+ containers per server
SecurityStrong (hardware isolation)Moderate (shared kernel)

VM use cases:

  • Strong isolation needed (multi-tenant, security)
  • Different OSes on the same host
  • Legacy applications

Container use cases:

  • Microservices
  • CI/CD (continuous integration and deployment)
  • Cloud-native applications
  • Reproducible development environments

5. Docker and containerization

Docker is the most popular containerization platform. It allows creating, deploying and managing containers efficiently. During the lab sessions, I learned to use Docker to virtualize applications in isolated environments.

Figure: Docker Logo

Docker architecture:

  • Docker Engine: the daemon that manages containers
  • Docker Image: read-only template containing the application and its dependencies
  • Docker Container: running instance of an image
  • Dockerfile: configuration file for building an image
  • Docker Hub: public Docker image registry
  • Docker Compose: tool for defining multi-container applications

Main commands used in lab sessions:

# Download an image from Docker Hub
docker pull ubuntu:20.04

# Launch a container in interactive mode
docker run -it --name mon_conteneur ubuntu:20.04 /bin/bash

# List active containers
docker ps

# List all containers (active and stopped)
docker ps -a

# Build an image from a Dockerfile
docker build -t mon_image .

# Expose a port and launch a container in the background
docker run -d -p 8080:80 --name serveur_web nginx

# Manage volumes for persistence
docker run -v /host/data:/container/data mon_image

Dockerfile example:

FROM ubuntu:20.04
RUN apt-get update && apt-get install -y python3 pip
COPY app.py /app/
WORKDIR /app
EXPOSE 5000
CMD ["python3", "app.py"]

Advantages of Docker:

  • Portability ("Build once, run anywhere")
  • Environment reproducibility
  • Application isolation
  • Fast startup (seconds)
  • Rich ecosystem (Docker Hub, Docker Compose)

6. Cloud service models: IaaS, PaaS, SaaS

Cloud Computing offers different levels of abstraction for services, represented by three main models:

Figure: Cloud service models - IaaS, SaaS, PaaS and their abstraction levels

IaaS (Infrastructure as a Service):

Provides virtualized infrastructure resources (servers, storage, network). The user manages the OS, middleware and applications.

  • Examples: AWS EC2, Google Compute Engine, Azure Virtual Machines, OpenStack
  • User responsibility: OS, runtime, applications, data
  • Provider responsibility: hardware, virtualization, network
  • Flexibility: maximum (full control over infrastructure)

PaaS (Platform as a Service):

Provides a development and deployment platform. The user focuses on application code without managing the underlying infrastructure.

  • Examples: Google App Engine, Heroku, Azure App Service, Cloud Foundry
  • User responsibility: applications and data
  • Provider responsibility: OS, runtime, middleware, infrastructure
  • Flexibility: moderate (platform constraints)

SaaS (Software as a Service):

Software applications accessible via the browser, fully managed by the provider.

  • Examples: Google Workspace, Microsoft 365, Salesforce, Dropbox
  • User responsibility: data and settings
  • Provider responsibility: everything else
  • Flexibility: limited (configuration only)
AspectIaaSPaaSSaaS
ControlFullPartialMinimal
ComplexityHighMediumLow
ScalabilityManual/Semi-autoAutomaticAutomatic
CostPay-per-usePay-per-useSubscription
Target audienceSystem adminsDevelopersEnd users

Essential Cloud characteristics (NIST):

Figure: Essential characteristics of Cloud Computing according to NIST

The five essential characteristics defined by NIST:

  • On-demand self-service: automatic provisioning without human intervention
  • Broad network access: access via standard mechanisms (HTTP, API)
  • Resource pooling: pooled resources for multiple clients (multi-tenant)
  • Rapid elasticity: automatic scalability according to demand
  • Measured service: usage-based billing (pay-per-use)

Cloud deployment models:

  • Public Cloud: shared infrastructure, accessible to all (AWS, Azure, GCP)
  • Private Cloud: infrastructure dedicated to an organization (OpenStack on-premise)
  • Hybrid Cloud: combination of public and private cloud
  • Community Cloud: shared among organizations with similar needs

7. OpenStack - Open-Source Cloud Platform

OpenStack is an open-source cloud computing platform, primarily deployed as IaaS. It enables the management of large pools of compute, storage and network resources, all manageable via a dashboard (Horizon) or via the OpenStack API.

Figure: OpenStack architecture and its main components

Main OpenStack components:

ComponentProject nameFunction
ComputeNovaVirtual machine instance management
NetworkingNeutronVirtual networks, subnets, routers, firewalls
ImageGlanceVM image storage and management
IdentityKeystoneAuthentication, authorization, service catalog
DashboardHorizonWeb administration interface
Block StorageCinderPersistent storage volumes
Object StorageSwiftDistributed object storage
OrchestrationHeatInfrastructure templates (Infrastructure as Code)

OpenStack architecture:

The OpenStack architecture follows a distributed services model communicating via REST APIs. Keystone provides centralized authentication. Nova manages the VM lifecycle relying on Glance for images, Neutron for networking and Cinder for storage.

Lab work performed:

  • Creation of virtual networks and subnets with Neutron
  • Deployment of VM instances with Nova
  • Configuration of security rules (security groups)
  • Use of the Horizon dashboard for visual administration
  • Image management with Glance

8. Network configuration with VirtualBox

The lab sessions allowed me to configure virtual networks with VirtualBox. I learned to create and configure virtual machines, test their connectivity, and set up port forwarding rules to enable communication between VMs and the host.

Figure: Network configuration with VirtualBox

VirtualBox network types configured:

Network modeInternet accessInter-VM communicationAccess from host
NATYesNoVia port forwarding
BridgedYesYesYes
Host-OnlyNoYesYes
InternalNoYes (same network)No

Lab work performed:

  • Configuration of private networks and routers for communication between different VMs
  • Setting up port forwarding rules for SSH access
  • Connectivity testing (ping, traceroute) between VMs
  • Configuration of isolated subnets

9. Edge Computing paradigm

Edge Computing is a paradigm that consists of processing data as close as possible to its source of generation, rather than systematically sending it to a centralized cloud datacenter. This concept is fundamental for applications requiring low latency, reduced bandwidth or data sovereignty.

Edge Computing motivations:

  • Latency: real-time applications (autonomous vehicles, augmented reality) cannot tolerate round-trip delays to the cloud
  • Bandwidth: the volumes of data generated by IoT saturate network links
  • Data sovereignty: some regulations require local data processing
  • Reliability: operation must continue even in case of loss of cloud connection

Key characteristics:

  • Local data processing as close as possible to users/sensors
  • Latency reduction (from ~100ms to <10ms)
  • Data filtering and aggregation before sending to the cloud
  • Disconnected mode operation possible

10. Fog Computing

Fog Computing, introduced by Cisco, is an extension of cloud computing that brings compute, storage and network services closer to edge devices. It sits as an intermediate layer between IoT devices (edge) and the centralized cloud.

Fog vs Edge differences:

AspectEdge ComputingFog Computing
LocationOn the device or very closeBetween edge and cloud
Compute capacityLimitedModerate
LatencyVery lowLow
ExamplesSensors, IoT gatewaysLocal servers, smart routers
ScopeImmediate processingAggregation, pre-processing

Fog Computing architecture:

  1. Edge layer: sensors and actuators (raw data collection)
  2. Fog layer: gateways, local servers (pre-processing, filtering, quick decisions)
  3. Cloud layer: datacenters (in-depth analysis, long-term storage, machine learning)

11. MEC - Multi-access Edge Computing

MEC (Multi-access Edge Computing), standardized by ETSI, is a concept that integrates computing capabilities at the level of telecommunications operators' infrastructure, typically in base stations or network access points.

MEC characteristics:

  • Integration with operators' network infrastructure (4G/5G)
  • Standardized APIs for accessing network information (location, QoS)
  • Hosting of third-party applications as close as possible to the access network
  • Low latency guaranteed by proximity to antennas

MEC use cases:

  • Connected vehicles (V2X): ultra-reliable and low-latency communication
  • Augmented/virtual reality: real-time rendering
  • Cloud gaming: game streaming with minimal latency
  • Video analytics: real-time video stream analysis
  • Industrial IoT: industrial process control

12. Cloud-Edge continuum

The cloud-edge continuum represents a unified vision where computing resources are continuously distributed from edge devices to the centralized cloud. The goal is to provide seamless orchestration that automatically places processing where it is most relevant.

Continuum principles:

  • Dynamic placement: applications migrate between edge, fog and cloud according to needs (latency, load, cost)
  • Unified orchestration: a single control plane manages all resources
  • Heterogeneity: integration of diverse resources (x86, ARM, GPU, FPGA)
  • Elasticity: horizontal and vertical scalability at all levels

Autonomic management:

Figure: MAPE-K autonomic loop (Monitor, Analyze, Plan, Execute) for cloud-edge continuum management

The MAPE-K model (Monitor, Analyze, Plan, Execute - Knowledge) enables autonomic management of continuum resources:

  • Monitor: metric collection (latency, CPU load, bandwidth)
  • Analyze: anomaly and trend detection
  • Plan: placement, migration, scaling decisions
  • Execute: application of decisions (deployment, container migration)
  • Knowledge: shared knowledge base feeding the loop

13. Container orchestration with Kubernetes

Kubernetes (K8s) is the standard platform for large-scale container orchestration. It automates the deployment, scaling and management of containerized applications.

Kubernetes architecture:

Control Plane:

  • kube-apiserver: entry point for all operations (REST API)
  • etcd: distributed key-value database (cluster state)
  • kube-scheduler: pod placement on nodes
  • kube-controller-manager: controllers that maintain the desired state

Worker Nodes:

  • kubelet: agent on each node that manages pods
  • kube-proxy: network and load balancing management
  • Container Runtime: Docker, containerd or CRI-O

Fundamental concepts:

ConceptDescription
PodMinimum deployment unit (1+ containers)
DeploymentDeclarative pod management (replicas, updates)
ServiceStable network exposure for a set of pods
NamespaceLogical isolation within a cluster
ConfigMap/SecretConfiguration and sensitive data
PersistentVolumePersistent storage for pods

YAML deployment example used in lab:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer

Kubernetes commands used in lab:

```bash # Deploy an application kubectl apply -f deployment.yaml # View running pods kubectl get pods # View services kubectl get services # Scale a deployment kubectl scale deployment nginx-deployment --replicas=5 # View pod logs kubectl logs # Detailed description of a pod kubectl describe pod ```

PART D - Analysis and Reflection

Skills acquired

Virtualization and containerization:
Mastery of the fundamental differences between VMs and containers, Type 1 and Type 2 hypervisors, and Docker and VirtualBox tools. Ability to choose the appropriate technology according to the use case.

Cloud Computing:
Understanding of service models (IaaS, PaaS, SaaS) and deployment models (public, private, hybrid). Hands-on experience with OpenStack for deploying a cloud infrastructure.

Edge Computing:
Understanding of the edge paradigm and its variants (Fog Computing, MEC). Understanding of the cloud-edge continuum and orchestration challenges in a distributed environment.

Orchestration:
Initial competency with Kubernetes for deploying and managing containerized services. Understanding of cluster architecture and YAML configuration files.

Key takeaways

1. Virtualization is the foundation of the cloud:
Without virtualization (VMs or containers), cloud computing would not exist. Understanding these mechanisms is fundamental for any cloud engineer.

2. Containers and VMs are complementary:
Containers do not replace VMs. Each technology has its use cases. In production, containers are often deployed on VMs to combine the advantages of both.

3. Edge computing addresses real needs:
IoT, 5G and real-time applications make edge computing essential. The cloud alone is no longer sufficient for all workloads.

4. Orchestration is essential at scale:
Kubernetes has become the de facto standard for managing hundreds of containers. Mastering this tool is a highly sought-after skill.

5. The cloud-edge continuum is the future:
The trend is toward seamless integration of all layers (edge, fog, cloud) with unified orchestration.

Feedback

I developed new skills in hybrid architectures and their applications in modern computing environments. I was able to understand and use all the concepts covered. However, I realized that I will need to practice these tools in the future to avoid forgetting them, as I do not currently have the opportunity to use them in my apprenticeship company.

Since the Kubernetes session was completed quickly with my partner, we had to rush through and simply run the commands. Thanks to the report we wrote, it was easier to understand the concepts afterwards.

My opinion

This course was very interesting. I had the chance to learn many concepts that I hear in daily life for certain professions. This course will be truly useful for my career where these concepts could be applied.

The course content was well structured, starting from the basics of virtualization and gradually progressing to more complex topics. This progression helped me better understand and then broaden my knowledge toward more advanced concepts.

I now feel more confident in designing, deploying and managing scalable cloud-edge solutions.

Professional applications:

  • DevOps Engineer: deployment of containerized applications on Kubernetes, CI/CD
  • Cloud Architect: design of hybrid and multi-cloud cloud infrastructures
  • IoT Engineer: deployment of edge architectures for local data processing
  • System Administrator: management of virtualized infrastructures and OpenStack
  • Telecom Engineer: MEC integration in 5G networks

Links with other courses:


Course Documents

Cours Complet Cloud & Edge Computing Full Cloud & Edge Computing Course

Cours complet sur le Cloud & Edge Computing : virtualisation, modeles de service, OpenStack, Edge Computing, Fog Computing, MEC, continuum cloud-edge. Complete course on Cloud & Edge Computing: virtualization, service models, OpenStack, Edge Computing, Fog Computing, MEC, cloud-edge continuum.

Telecharger le cours Download the course


Reports and Projects

Rapport de Projet Cloud Computing Cloud Computing Project Report

Ouvrir le rapport complet Open the full report

Ouvrir le sujet de TP Open the lab subject


Course taken in 2024-2025 at INSA Toulouse, Department of Electrical and Computer Engineering, ISS specialization.

</div>