Introduction aux clouds

J'entame cette semaine la spécialisation coursera Cloud Computing dont le contenu s'intéresse à comment construire des systèmes distribués/clouds, et à comment utiliser les technologies les plus courantes sur le marché.

La première semaine s'intéresse à rappeler quelques concepts d'informatique et de mathématiques qui seront utiles pour la suite et établit quelques définitions.

Rappels de concepts

Le cours revient d'abord rapidement sur quelques rappels algorithmiques, notamment ce qu'est une queue (FIFO), une pile (FILO).

Ensuite, on a un rapide aperçu d'un processus au sens système du terme, à savoir l'exécution d'un programme, qui illustre l'utilisation du PC (pour pointer la prochaine instruction à exécuter), de la pile (appel de fonctions et passage de paramètres), et les registres.

Une rapide explication de l'architecture basique des ordinateurs : CPU, registres, cache, mémoire, disque, ainsi que les vitesses d'accès à ces différents composants : plus on se rapproche du processeur et plus c'est rapide.

La notation en O() pour évaluer la complexité des algorithmes est aussi abordée brièvement.

Quelques notions de réseaux sont expliquées, notamment ce que sont les DNS, leur lien et utilité par rapport à IP, ainsi que la notion de CDN.

Enfin, on revient sur quelques principes basiques de probabilités :

  • Notions d'ensembles/sous ensembles
  • Probabilité d'un événement
  • Probabilité que deux événements indépendants surviennent ( à savoir la multiplication des probabilités de chaque événement)
  • Probabilité que l'un des deux événements survienne (à savoir P(e1)+P(e2)-P(e1 ET e2)). Ce qui permet de déduire que la probabilité que l'un des événements survienne est inférieure ou égale à la somme des probabilités des deux événements.

Les clouds

On distingue deux types de clouds : privés ou publiques, suivant s'ils sont internes à une entreprise ou gérés par un organisme externe publique. L'intérêt d'un cloud publique est le gain de temps et d'argent et peut être très avantageux dans le cas de lancement d'un business, avant que celui-ci offre la garantie de rester en vie plusieurs mois. Le mode de facturation devient alors à l'utilisation.

Dans une certaine mesure, on peut voir un cloud comme un espace immense de stockage et de calcul.

Après un bref historique (datacenters, data processing industry, grids, fermes de serveurs, P2P, Clouds) et un rappel de la loi de Moore, la prophétie suivante est abordée :

Les services informatiques deviendront comme l'électricité : on se branche au réseau de distribution pour utiliser et payer ce dont on a besoin. -- Fernando Corbató

Les nouvelles fonctionnalités qu'un cloud offre sont les suivantes :

  • Passage à l'échelle massif
  • Accès à la demande, on ne paye que ce qu'on utilise
  • Nature orientée vers l'utilisation intensive de données
  • De nouveaux paradigmes de programmation (nosql, mapreduce)
  • Très haute disponibilité et prépondérance de l'open source

On distingue ensuite plusieurs niveaux d'abstraction pour les clouds :

  • Les HAAS : Hardware As A Service qui offrent la possibilité de louer du matériel à la demande
  • Les IAAS : Infrastructure As A Service qui offrent l'accès à un système d'exploitation
  • Les PAAS : Platform As A Service qui offrent l'accès à un ensemble de composants et permet de s'abstraire d'un grand nombre de problématiques de provisionning
  • Les SAAS : Software As A Service qui offrent à l'utilisateur final les logiciels dont il a besoin

Dans ces environnements où les données et les calculs prennent toute leur importance, les temps d'accès (I/O) deviennent plus importants que la puissance CPU.

Un cloud possède enfin les caractéristiques suivantes :

  • Un grand nombre de serveurs communiquent entre eux
  • Un grand nombre de clients communiquent entre eux
  • Un grand nombre de clients peuvent communiquer entre eux (P2P)

On arrive alors à la notion de système distribué. Même si les termes peuvent avoir changés, ces concepts n'ont pas évolués depuis les années 70 avec les travaux de Lamport.

Systèmes distribués

Revenons sur la notion de système d'exploitation. Il s'agit :

  • D'une interface pour l'utilisateur au dessus du matériel
  • D'abstractions (processus, fichiers, …)
  • D'une gestion des ressources
  • De moyens de communications

Un système distribué (dans le cadre de cette étude) offre alors les caractéristiques suivantes :

  • Il est composé d'une collection d'entités, de processus sur un environnement d'exécution (machine)
  • Chaque entité est autonome, programmable, asynchrone (pas de temps partagé) et ouvert aux erreurs (une entité peut tomber en panne)
  • Les entités communiquent entre elles via un média de communication qui n'est pas fiable
  • Un système distribué est différent d'un système parallèle où chaque entité partage avec les autres une mémoire et un temps communs

Les problématiques auxquelles nous allons nous intéresser :

  • P2P
  • Cloud
  • Stockage
  • Programmation
  • Coordination
  • Comment gérer une grande quantité de clients et serveurs parallèlement (concurrence, contrôle, réplication)

Les challenges que nous aurons à relever :

  • L'erreur devient la norme et non un cas d'exception
  • La scalabilité
  • L'asynchronisme : il n'y a plus de temps partagé
  • La concurrence

Post a Comment

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*