L’infrastructure et les écosystèmes le long de la pyramide de Feynman [1] : les grands systèmes centralisés
par Jean-Luc Dormoy
Supercomputers
En haut de la pyramide, les supercomputers, c’est-à-dire les machines géantes tentant
d’atteindre les performances maximales possibles à la technologie du moment – et pratiquement sans limite de coût – sont aujourd’hui des systèmes distribués géants, réunissant des dizaines de milliers de serveurs, eux-mêmes composés de dizaines de processeurs, eux-mêmes comportant une dizaine ou plus de cœurs de calcul, pour totaliser des centaines de milliers de cœurs. Les performances sont en 2010 au-delà du petaflop, c’est-à-dire de 1015 opérations flottantes par seconde. Bien sûr la mémoire de ces systèmes est à l’avenant – l’unité est le petaoctet – ainsi d’ailleurs que leur consommation énergétique – aujourd’hui dans les 10 MW pour les plus puissants. On peut trouver la liste des 500 plus puissants supercomputers au monde sur le site http://www.top500.org. La puissance des supercomputers est multipliée empiriquement par mille tous les 11 ans sous l’impulsion de la loi de Moore – le petaflop ayant été franchi en 2008 par le Roadrunner du DoE – US Department of Energy, on devrait ainsi passer à l’exaflop autour de 2019, soit un milliard de milliards d’opérations par secondes !
Les supercomputers sont destinés à conduire un calcul à la fois. On appelle cela du High Performance Computing – HPC – ou calcul à haute performance. Celui-ci est divisé en un grand nombre de tâches s’exécutant sur des données également découpées en morceaux, et est donc par nature massivement parallèle. Pour faciliter la programmation, des middlewares spécialisés pour ces calculs parallèles – et les types de calcul exécutés, le plus souvent du calcul scientifique de physique, astronomie, biologie, météo, etc. – sont utilisés, ainsi que des langages parallèles. Ces outils sont généralement disponibles en open source, et ainsi partagés et améliorés par la communauté de leurs utilisateurs. A la base, les systèmes d’exploitation sont le plus souvent des idiomes de Linux – une version adaptée de Windows est aussi utilisée – et les systèmes de fichiers eux-mêmes, spécialisés, sont ouverts.
Plusieurs modèles de programmation existent, selon que l’on dispose ou que l’on simule une mémoire partagée entre les nœuds de calcul, ou au contraire distribuée, et selon que les échanges d’information entre tâches de calcul distribuées sont synchrones ou asynchrones.
Cloud computing
Egalement en haut de la pyramide, à côté en quelque sorte des supercomputers, on trouve les fermes de serveurs destinées à accueillir les services fournis à un grand nombre d’utilisateurs simultanément – des utilisateurs d’une entreprise aux centaines de millions voire milliards d’utilisateurs du web. Ces fermes de serveurs servent de support à ce que l’on appelle désormais le cloud computing, qui vous permet de disposer de puissance de calcul et de stockage auprès d’un fournisseur sur le web, avec des services ad hoc. Vous ne savez pas « où » physiquement vos données sont, « où » le traitement est effectué, eh bien il l’est au sein d’une des fermes de serveurs réparties sur tous les continents et connectées au web.
Google, Microsoft, Amazon, Salesforce, c’est-à-dire les grands opérateurs de services du web, ont construit ces infrastructures géantes comme supports de leurs services, et se sont retrouvés avec des sortes de « centrales nucléaires » du traitement de données dispersées aux grands nœuds de l’Internet. Avec le cloud computing ils en font les plus grands ordinateurs du monde ouverts à d’autres, et à chacun de nous.
D’un point de vue technique, ces centres de calcul sont très différents des superordinateurs dont il était question auparavant. Ils disposent aussi de centaines de milliers de processeurs et de ressources en stockage considérables, mais les tâches exécutées sur les processeurs sont très peu couplées entre elles. En réalité, chacune effectue un calcul souvent limité pour répondre à la requête d’un utilisateur – par exemple une requête sur un moteur de recherche. Si l’on a un million d’utilisateurs simultanément, ce sont donc des millions de tâches qui s’exécutent de façon pratiquement indépendante – sinon qu’elles interrogent et surtout mettent à jour des dépôts de données communes, ce qui contraint à prendre quelques précautions pour conserver leur cohérence. On appelle ce type de calcul High Throughput, ou flux / débit élevé.
Une grande partie de l’infrastructure logicielle a été repensée pour ces infrastructures, jusque par exemple le système de fichier. Un fichier y est cassé en morceaux et distribué avec de la redondance sur les nœuds de la ferme. On atteint en effet de telles quantités de nœuds de calcul – plusieurs millions de cœurs – que la panne de l’un de ces nœuds n’est pas l’exception, mais la règle ! Le système logiciel doit donc permettre de perdre un nœud quelconque à tout moment, sans perdre aucune donnée, et sans que le service soit apparemment interrompu pour l’utilisateur connecté à distance. En outre, il faut des systèmes de supervision permettant de gérer le système, et par exemple de signaler ces pannes et d’indiquer les mesures à prendre. La répartition de la charge de calcul et de mémorisation entre les nœuds est bien sûr également automatique. Toutes ces tâches sont effectuées par le middleware.
A la base, ce type d’infrastructure a été rendu possible par l’utilisation intensive de la virtualisation. Celle-ci permet en effet de rendre relativement indépendants d’un côté les ressources matérielles (serveurs, stockage) et de l’autre les couches logicielles de base. Il y a ainsi décorrélation entre les nœuds de calcul réellement disponibles et ceux « perçus » par l’infrastructure logicielle. On peut de ce point de vue faire « virtuellement » ce que l’on veut, y compris accueillir « virtuellement » tout un système d’information tournant sur une infrastructure de serveurs totalement différente.
L’idée a donc germé « d’ouvrir » des infrastructures à tout client souhaitant disposer de puissance de calcul et de stockage en location en se rapprochant du type d’infrastructure familier au client. Et ces infrastructures ont la capacité d’exécuter en même temps ces divers systèmes d’information tournant sur un support virtualisé.
Du point de vue du client, la location d’une quantité de ressource (virtuelle) donnée coûte certes nominalement plus cher que l’achat de la ressource matérielle équivalente, mais les ressources louées par chaque client individuellement peuvent évoluer très vite dans le temps, alors que le centre de cloud computing met en œuvre une mutualisation de ressources entre les clients et une optimisation par foisonnement. Un client ayant une grande volatilité des ressources nécessaires trouvera donc intérêt à louer du cloud plutôt qu’acheter son propre centre de calcul, puisque ce dernier devrait être dimensionné par la pointe de demande.
Ces évolutions sont d’autant plus sensibles dans les entreprises que les grands traitements « batch » (par lots) la nuit sont progressivement remplacés par des traitements en temps réel, à cause de l’ouverture via le web des systèmes d’information à l’écosystème de fournisseurs et de clients de l’entreprise.
Mais outre ces grands clients, et avec la mise en place du modèle d’affaires et des offres de cloud computing, des services ayant un public plus large sur le web migrent vers le cloud. En théorie, il vous est possible de louer 1/10 de PC[1], l’unité de puissance louable n’est donc pas un problème. On va donc vers un phénomène de « longue queue » (long tail) bien connu des marketers, où au début on engage 20% des clients représentant 80% du marché – les blockbusters – et où progressivement on engage les 80% de clients restants.
Du point de vue des fournisseurs de cloud computing, on vend donc de l’infrastructure, qui auparavant était sous-jacente à des services commercialisés. Mais au-delà des grands opérateurs du web de départ, de projets nombreux sont en cours dans le monde pour construire et exploiter des infrastructures de cloud computing. Les écosystèmes disponibles ne sont pas figés – on en est plutôt à un stade de foisonnement, avant la phase de sélection et élimination dans ces processus darwiniens. Mais les briques d’infrastructure « ouvertes » par les grands acteurs ont tendance à former autour d’eux ces futurs écosystèmes.
Outre l’infrastructure, les vendeurs de cloud proposent également des services applicatifs de base : courrier électronique, bureautique, par exemple. Cette offre devrait s’étendre. C’est ce que l’on appelle le Saas, ou Software as a Service. Les modèles d’affaire du cloud computing et du SaaS sont donc intimement liés. En conséquence, les éditeurs doivent se tourner vers ces modèles d’affaires nouveaux, ce qui les contraint à leur tour pour ne pas dépendre des grands fournisseurs de cloud – centres de calcul et technologie de base – de se mettre eux-mêmes à proposer ce genre d’offres. On a donc affaire à un remue-ménage important sur des positions d’affaires qui paraissaient bien établies. Le service logiciel, qui consiste à produire du logiciel à la demande (dont les industriels sont les SSII, ou Société de Service en Ingénierie Informatique) est également impacté fortement.
Tout service est donc susceptible à terme de migrer vers le cloud. Cela n’est pas sans poser de question aussi bien pour les entreprises que pour les particuliers, peu pressés de laisser leurs données stratégiques ou privées sur des infrastructures non directement contrôlées – pour des raisons de sécurité, de confidentialité, de fiabilité de l’accès, etc. Ces problèmes seront résolus progressivement, et un nouvel équilibre sera trouvé.
Serveurs d’entreprise
Les entreprises sont fréquemment dotées de centres de calcul constitués de serveurs pour leurs besoins en traitement de processus et de données (bases de données de clients, de production, de salariés, etc.). Sur ces systèmes tournent les applications de l’entreprise. Historiquement, les systèmes d’information d’entreprises ont constitué avec les supercalculateurs pour les grands calculs les premiers grands domaines d’application de l’informatique. Il fut un temps où les technologies de l’information se résumaient à ces domaines, et où un acteur dominait le domaine : IBM.
L’avènement du web a créé le besoin d’accéder à ces données à travers des interfaces standardisées web, voire à y donner accès à l’extérieur de l’entreprise de façon contrôlée. Pour cela on utilise des architectures 3 tier, où on répartit sur trois ensembles de serveurs les systèmes de stockage et de traitement des données, la logique d’entreprise, et la communication en termes d’interfaces web. En outre, les serveurs (matériels) sont équipés de serveurs d’applications (logiciels), qui sont des middlewares particuliers ayant la forme d’un framework. Un framework est un programme générique « à trous », les trous devant être comblés par des composants logiciels correspondant à la logique d’entreprise. Le framework « encapsule » ainsi la logique d’entreprise pour insérer dans son exécution des considérations d’équilibrage de charge sur les cœurs disponibles, de reprise en cas de panne, etc. Les serveurs d’applications, ce genre de middleware, existent dans le monde Java et dans le monde .NET de Microsoft.
Les utilisateurs de ce type de système d’entreprise sont appelés des clients, et l’architecture est appelée client-serveur. C’est pratiquement la forme la plus simple de système distribué, avec un « maître » et des « esclaves ». Les clients peuvent être « thin », c’est-à-dire qu’ils n’accèdent au serveur que via les interfaces web standards, et donc n’ont besoin comme middleware local que d’un browser web; sinon ils sont « fat », c’est-à-dire que des composants logiciels, en particulier de middleware, sont installés sur chaque poste client.
Avec le passage à l’heure du web, l’infrastructure tend à permettre de plus en plus des services en temps réel. En effet, il était fréquent dans les entreprises d’avoir des traitements massifs et systématiques auxquels on procédait la nuit et qui complétaient le traitement de toutes les opérations de la journée. Cela est de moins en moins possible et accepté par le nombre grandissant d’acteurs autour du système d’information.
Une sorte plus homogène de système distribué est le cluster, fréquemment utilisé pour les besoins départementaux de calcul d’ingénierie ou scientifiques. Ce sont des machines toutes identiques à un ou plusieurs cœurs reliées par un réseau à haute performance. Les clusters sont destinés au calcul parallèle, comme les supercomputers. En réalité, on peut dire que ce sont de « petits supercomputers ».
[1] Car la virtualisation permet de simuler plusieurs machines indépendantes sur un seul processeurs réel, ainsi un centre de cloud avec disons 1000 processeurs pourrait très bien accueillir 10000 clients simultanément.
Moore’s Law and the Future of [Technology] Economy de Jean-Luc Dormoy est mis à disposition selon les termes de la licence Creative Commons Attribution – Pas d’Utilisation Commerciale – Partage à l’Identique 3.0 non transposé.
Basé(e) sur une oeuvre à mooreslawblog.com.