Vous êtes sur la page 1sur 30

Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

CLOUD COMPUTING

Cours de Licence
Par
Pr YENKE Blaise Omer

FS, Université de Ngaoundéré, Cameroun.

December 2, 2020

CLOUD COMPUTING 1 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Programme du cours

Chapitre 1: Architecture des machines


Chapitre 2: Systèmes distribués
Chapitre 3: Cloud computing
Chapitre 4: Programmer dans Google App Engine avec Python

CLOUD COMPUTING 2 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Calcul haute performance (HPC)

High Performance Computing (HPC) : utilisation des


infrastructures de calcul parallèle pour l’exécution des applications
scientifiques de façon efficace, fiable et rapide
Domaines:
Prévisions météorologiques, Etude du climat
Modélisation moléculaire (calcul des structures et propriétés de composés chimiques...)
Simulations physiques (simulations aérodynamiques, calculs de résistance des matériaux...)
Fouille de données
Cryptologie (Cryptographie et Cryptanalyse)
Les réseaux sociaux

Besoins en puissance de calcul sans cesse croissants


Solution apportée par deux types d’architectures de machines
Architectures multiprocesseurs à mémoire partagée
Architectures multiprocesseurs à mémoire distribuée

CLOUD COMPUTING 3 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Architectures multiprocesseurs à mémoire


partagée

⇒ Connues sous le nom de machine parallèle ou supercalculateur :


Plateforme homogène ie même architecture des composantes
Domaine d’administration unique
⇒ Types de machines parallèles
SMP (Symetric MultiProcessors) ou CC-UMA (Cache Coherent
Uniform Memory Access)
CC-NUMA (cache Coherence Non-Uniform Memory Access)
⇒ Programmation basée sur les threads
⇒ Bibliothèque de programmation parallèle: OpenMP

CLOUD COMPUTING 4 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Exemple de supercalculateurs (1)


1985 : Cray 2 (Constructeur: CRAY Inc)

Puissance réelle: 1.7 gigaflops


Premier supercalculateur à dépasser la barre du 1 gigaflop
5 processeurs dot 4 dédiés aux calculs
Mémoire centrale: 2 Go.
CLOUD COMPUTING 5 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Exemple de supercalculateurs (2)


2009 : Jaguar (Constructeur: CRAY Inc)

Novembre 2009, No 1 au TOP500


224 256 processeurs x86 AMD Opteron quadcoeur
Puissance : 1.75 pétaflops
Mémoire Totale: 360 To.

CLOUD COMPUTING 6 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Exemple de supercalculateurs (3)


2012 : Titan (Successeur de Jaguar)

Novembre 2012, No 1 au TOP500


réutilise les 200 baies Cray XK7 de Jaguar regroupant 18 688 noeuds
Noeud: 1 processeur 32 Go RAM et 16 coeurs + 1 GPU 6 Go RAM
Mémoire Totale: 710 To.
Puissance : 20 pétaflops
Consommation : 9 mégawatts environ
Coût : 97 millions de dollars
CLOUD COMPUTING 7 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Machines parallèles : avantages et


inconvénients

Avantages
Faible coût de communication entre processus
Bonne performance (temps de calcul)

inconvénients
Ne passent pas à l’échelle
Fortes contraintes pour assurer la tolérance aux fautes
Faible ratio coût/performance
Consomment beaucoup d’énergie (de l’ordre du mégawatt)

CLOUD COMPUTING 8 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Architectures multiprocesseurs à mémoire


distribuée
⇒ Connues sous le nom de systèmes distribués (ou répartis) :
Ensemble d’ordinateurs indépendants communiquant à travers un
réseau haut débit
Gestionnaire de ressources (PBS, MAUI, OAR, CONDOR, SGE,
SLURM, etc.)
Vu comme un système unique et cohérent
⇒ Programmation basée sur les passages de messages
⇒ Bibliothèque de programmation parallèle: MPI, PVM
Systèmes distribués ou répartis
” A distributed system is a collection of independent computers
that appear to the users of the system as a single computer ”
A. Tannenbaum, 1994

CLOUD COMPUTING 9 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

systèmes distribués : avantages et


inconvénients

Avantages
Passent aisément à l’échelle
Tolérants aux fautes
Bon ratio coût/performance
Capacité élevée de stockage et de mémoire

inconvénient
Les temps de communication entre les processus peuvent être élevés

CLOUD COMPUTING 10 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Classification de Tanenbaum

(1) SMP ou CC-UMA


(3) CC-NUMA
(4) Grappes, Grilles, Intranet, Internet

CLOUD COMPUTING 11 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Synthèse

Côté onéreux des supercalculateurs ⇒


Usage restreint aux entreprises capables de les acquérir
Mise en place aisée des systèmes distribués failitée par:
faible utilisation des temps de cycles CPU des postes de travail des
LAN et des WANs (< 10 %)
la montée en puissance des PCs standards peu chers
le développement des réseaux d’interconnexion à haut débit
⇒ Intérêt dans ce cours pour le Cloud Computing: Systèmes
distribué

CLOUD COMPUTING 12 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Principales architectures

⇒ A moyenne échelle:
Grappes (Clusters)
Intranets
⇒ A grande échelle:
Grilles (Grids)
Cloud Computing
Internet

CLOUD COMPUTING 13 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Architecture générale d’un système distribué

Formé de blocs UC standards ou de multicoeurs ou de manycoeurs

CLOUD COMPUTING 14 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Grappes

Grappe typique
En général homogène
Noeuds de calcul: PCs, SMP
Réseau: haut débit (Giga Ethernet, Myrinet,Quadrix, InfiniBand)
Usage typique
Environnement dédié de calcul

CLOUD COMPUTING 15 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Grappes : Architecture

Architecture générale des environnements de calcul de type grappe

Jobs soummis via Internet


Requêtes envoyées au gestionnaire de ressources via les frontales qui
servent à authentifier les utilisateurs

CLOUD COMPUTING 16 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Grappes : Exemple

Formé de blocs UC standards

CLOUD COMPUTING 17 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Intranets
Configuration générale
Interconnexion de PCs standards
Architecture: modèle client-serveur
Principales activités
Messagerie et échanges de données entre usagers, Traitement de
texte, recherche et consultation de documents internes,
communications à travers les vidéoconférences
Usage parallèle
Environnement non dédié de calcul HPC (grappe virtuelle) pendant
les nuits, les week-ends, les périodes de congé.
Ressources des postes de travail partiellement ou entièrement
utilisées.

CLOUD COMPUTING 18 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Intranets comme environnement de calcul (1)

Utilisation directe des ressources disponibles


Portions inutilisées des ressources intégrées à la grappe virtuelle
Temps de cycle CPU
Mémoire
Disque
Calcul dans l’environnement de travail

Apprcoche utilisée dans le projet CONDOR


⇒ Pb d’interférence avec l’utilisateur principal de la machine

CLOUD COMPUTING 19 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Intranets comme environnement de calcul (2)

Exécution dans des machines virtuelles (VM)


Les systèmes étrangers et le système natif se partagent les
ressources de la machine hôte
Réduit le pb d’interférence au niveau du disque local

Calcul dans une VM (VmWare, VirtualBox, KVM, Xen)

Apprcoche utilisée dans les projets In-Vigo, Violin


⇒ Peut avoir un impact sévère sur la performance des applications

CLOUD COMPUTING 20 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Intranets comme environnement de calcul (3)

Bascule en mode grappe de calcul


Postes de travail rebootés et intégrés à la grappe virtuelle
Postes généralement utilisé en mode diskless
Pas d’impact sur la performance des applications
Opérations de lecture/écriture sur le (ou les) serveur(s) de l’intranet

Outil de basculement: ComputeMode

Apprcoche utilisée dans le projets IGGI


⇒ Pb: Congestion possible sur les serveurs de stockage

CLOUD COMPUTING 21 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Grilles

Interconnexion de grappes par un réseau très haut débit


Architecture dédiée très hétérogène
Ressources déployées suivant deux modèle: client-serveur ou
pair-à-pair

Architecture générale des environnements de calcul de type grille

Exemple de grille : GRID5000

CLOUD COMPUTING 22 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Cloud computing
Usage des ressources de calcul (matériel et logiciel) qui sont
fournis comme un service via un réseau (typiquement Internet)
Traitements informatiques sur poste utilisateur déportés vers des
infrastructures distantes
Mutualisation des ressources par les entreprises
Ressources: Matériel ; bibliothèques; applications
Architecture générale:

CLOUD COMPUTING 23 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Cloud computing: IaaS

IaaS :Infrastructure as a Service


infrastructure matérielle louée à la demande (serveurs physiques,
espace de stockage, ressources réseaux (bande passante), mémoire
Flexibilité de la manipulation des ressources louées
Quelques plateformes de IaaS
Amazon EC2 (Elastic Compute Cloud): service de ressources
matérielles d’Amazon
Amazon S3 : service de stockage d’Amazon
IBM SmartCloud enterprise

CLOUD COMPUTING 24 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Cloud computing: PaaS


PaaS: Plateform as a Service
⇒ Construits sur les IaaS
⇒ Couche de services pour le déploiement et l’exécution des
applications dans le cloud.
Environnement d’exécution: Java, php, Python, Ruby, etc.
SGBD: SQL, noSQL
Outils de test
Outils de monitoring

Quelques plateformes de PaaS


Heroku (construite sur les services IaaS d’Amazon)
Google App Engine (Java et Python)
Microsoft Azure (pour du .NET)

CLOUD COMPUTING 25 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Cloud computing: SaaS

SaaS: Software-as-a-Service
⇒ Ressources accessibles à distance comme des services à la
demande
Ressources: infrastructure de calcul + applications
Requêtes des usagers ou clients: données + applications sollicitées
Quelques plateformes de SaaS
OVH : hébergeur de sites web (près de 120 000 serveurs)
Basecamp : outil Web de gestion de projets
Salesforec.com (solutions en gestion des relations clients)
Zoho; Heroku; Microsoft Azure; etc.

CLOUD COMPUTING 26 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Internet

Système distribué à très grande échelle


Ressources: ordinateurs de particuliers et de réseaux de grandes
organisations
Agrégation des micro-périodes d’inactivités des millions de
ressources ⇒ temps considérable
Projets qui exploitent les ressources d’Internet: Desktop Computing
SETI@home
Einstein@home
Folding@home
XtremWeb

CLOUD COMPUTING 27 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Synthèse
- PC standanrd de plus en plus multiprocesseurs multicoeurs
- Forte croissance du dév. d’environnements de calcul distribué
⇒ De nouveaux défis
Développer des algorithmes efficaces pour ces environnements
Comment utiliser efficacement des resources libres des intranets
Comment assurer effecicament la taulérance aux fautes
comment placer efficacement les tâches sur ces environnements
Comment assurer la disponibilité, la fiabilité, la maitenabilité de tels
environnements

⇒ Autant d’ouvertures pour la recherche


⇒ Certaines réponses sont données avec l’avènement du Cloud
Computing

CLOUD COMPUTING 28 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Qu’est-ce que le Cloud Computing

A voir dans le support numérique

CLOUD COMPUTING 29 / 30
Architectures de machines Systèmes distribués Cloud Computing Google App Engine et Python

Google App Engine et Python

A voir en TP

CLOUD COMPUTING 30 / 30

Vous aimerez peut-être aussi