Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Ce que les nouvelles tendances des logiciels cloud signifient pour les architectes

Par Fayçal SIDI ALI MEBAREK Publié le 28/03/2020 à 09:39:32 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Les cinq dernières années ont vu un changement significatif dans la façon dont les applications cloud sont conçues. Au lieu de grands services monolithiques, où la fonctionnalité d'une application entière comme un réseau social ou un moteur de recherche était mise en œuvre sous la forme d'une base de code unique compilée en un seul binaire, les services cloud ont de plus en plus adopté des conceptions à grain fin et modulaires. En conséquence, des concepts tels que les micro-services et le "serverless" sont de plus en plus courants. Alors que les communautés du génie logiciel et des systèmes distribués étudient de plus en plus les implications de ces nouveaux modèles de programmation, ces implications ne sont pas encore claires pour les architectes informatiques.

Cet article propose une introduction aux concepts, aux opportunités et aux défis du calcul serverless et des micro-services, et offre quelques suggestions sur ce que leur prévalence croissante signifie pour l'architecture informatique, comme la nécessité d'une intégration matérielle et logicielle plus étroite, et le support matériel nécessaire pour satisfaire leurs exigences strictes en matière de latence.

Qu'est ce que "Serverless" ?

Serverless est un modèle de programmation événementiel avec des tâches de courte durée, principalement utilisé dans le cloud et les paramètres de l'IdO, qui privilégie les applications présentant un parallélisme important et/ou une activité intermittente. Par exemple, une application de codage vidéo en parallèle des données est bien adaptée au mode serverless, car toutes les tâches indépendantes fonctionnant sur des morceaux de vidéo peuvent être lancées simultanément, ce qui permet une exécution plus rapide d'un ordre de grandeur par rapport aux ressources traditionnelles du cloud, pour une augmentation modeste du coût. De même, les tâches de calcul déclenchées par un dispositif périphérique, comme un drone, connaissent une activité intermittente, et bénéficient donc d'un fonctionnement serverless en supportant des coûts beaucoup plus faibles par rapport à la maintenance d'instances de cloud de longue durée.

Un utilisateur télécharge les tâches (fonctions serverless) qu'il souhaite exécuter sur le cloud, et le fournisseur du cloud se charge de lancer, de programmer, de placer et de terminer les tâches. Les fonctions serverless elles-mêmes sont pour la plupart apatrides, la plupart des états persistants étant stockés dans un système de stockage à distance, comme S3 pour AWS. Le transfert des opérations de gestion au fournisseur de cloud computing allège considérablement les charges de maintenance de l'utilisateur, ce qui réduit idéalement les frais d'adoption du cloud computing et permet au fournisseur de cloud computing de mieux optimiser la programmation et l'approvisionnement en ressources, compte tenu de la visibilité globale de son système, ce qui se traduit par des performances plus prévisibles et une meilleure efficacité des ressources.

Bien que les offres actuelles serverless n'aient pas encore atteint ce stade, avec des fonctions dépendantes communiquant via un stockage à distance à haut débit, et étant limitées dans leurs ressources et leur temps d'exécution, le serverless gagne de plus en plus de terrain en raison de ses avantages en termes de performances, de coût et de facilité de maintenance.

Le serverless et les microservices sont-ils la même chose ?

Les termes "serverless" et "micro-services" sont souvent utilisés de manière interchangeable, bien qu'ils ne soient pas identiques. Contrairement au serverless, les microservices font référence à un style de conception de logiciel qui privilégie la modularité fine par rapport aux conceptions étroitement intégrées. Ils ne sont pas non plus nécessairement de courte durée, comme les fonctions serverless. Les micro-services sont vaguement couplés et ne concernent qu'une seule personne. Le premier fait référence au fait que des paires de microservices devraient éviter une communication substantielle en va-et-vient, tandis que le second fait référence au fait que chaque microservice est optimisé pour une opération spécifique dans un service complexe de bout en bout. Par exemple, un réseau social mis en œuvre sous la forme d'un graphique de micro-services utiliserait un micro-service pour compter le nombre de followers qu'un utilisateur a, et un autre micro-service pour afficher plus de comptes qu'un utilisateur pourrait être intéressé à suivre.

Bien qu'il puisse sembler que les micro-services remplacent une conception déjà complexe par une conception encore plus complexe (la figure 1 montre des graphiques de regroupement représentatifs pour les micro-services chez quelques fournisseurs de cloud computing), ils offrent plusieurs avantages. Premièrement, ils accélèrent le développement et le déploiement, étant donné que les services cloud sont mis à jour quotidiennement et que la recompilation et/ou le redéploiement de l'ensemble de l'application est un processus lourd et sujet aux erreurs. Deuxièmement, ils permettent une meilleure isolation des erreurs entre les différents niveaux d'application, ce qui simplifie le débogage et les tests unitaires. Troisièmement, elles permettent l'hétérogénéité des logiciels, différents microservices étant mis en œuvre dans différents langages de programmation en fonction de leurs exigences, ne nécessitant qu'une API commune pour s'interfacer les uns avec les autres, généralement à l'aide de RPC.

D'un autre côté, les micro-services modifient plusieurs hypothèses avec lesquelles les systèmes actuels sont conçus, ce qui a un impact sur leurs goulots d'étranglement en matière de ressources et introduit des problèmes de performance en cascade dans les micro-services dépendants. Pour un système de production typique comportant des milliers de micro-services uniques répartis sur plusieurs machines, le débogage de ces problèmes de performance est un processus lourd et sujet à l'erreur.

Pourquoi devrions nous s'en soucier ?

Les services serverless et les microservices n'ont pas encore atteint leur plein potentiel. Par exemple, les offres actuelles serverless sont limitées en termes de ressources et de temps, et restreignent les moyens par lesquels les fonctions dépendantes peuvent communiquer entre elles. Elles sont également sujettes à l'imprévisibilité des performances, car les ressources ne sont pas consacrées à des fonctions spécifiques et peuvent être partagées et récupérées par d'autres locataires. De même, les micro-services tombent souvent dans le piège de la granularité extrêmement fine, la majorité du temps étant consacrée au traitement des demandes du réseau, par opposition au calcul utile.

Malgré ces problèmes, les services cloud ne feront que se complexifier, tant en termes de fonctionnalité que d'échelle, au fil du temps. Si les micro-services ne constituent pas une solution à pilule unique qui devrait être utilisée dans tous les services cloud, ils offrent une approche plus pratique pour les mises à jour fréquentes et les changements de mise en œuvre, un peu comme la modularité de la conception du matériel aide les architectes de puces à composer des processeurs complexes à partir de blocs de base. Des entreprises comme Netflix, Twitter, Amazon, AT&T, EBay et Uber, entre autres, ont déjà adopté le modèle des micro-services, et tous les fournisseurs de cloud public ont intégré des offres serverless dans leurs plateformes.

Qu'est-ce que cela signifie pour les architectes informatiques ?

Les architectes informatiques peuvent s'inspirer de ces nouveaux modèles de programmation cloud.

1. Intégration plus étroite entre le matériel et les logiciels en cloud

Contrairement aux applications cloud traditionnelles, les microservices et les fonctions serverless se soucient des latences de queue de microsecond niveau (par exemple, 99e percentile des demandes). Cela signifie que les inefficacités logicielles - déjà présentes dans les systèmes actuels - deviennent beaucoup plus prononcées dans ces nouveaux modèles de programmation, dégradant les performances et empêchant la prévisibilité des performances. Cela met davantage de pression sur (i) une meilleure compréhension de la pile logicielle existante et (ii) la co-conception de logiciels et de matériels cloud.

2. Support matériel pour les modèles émergents de programmation cloud

Ces dernières années ont vu une grande résurgence des plates-formes matérielles spéciales pour les applications cloud, soit via des puces spéciales, comme la ligne TPU, soit via des plates-formes d'accélération reconfigurables, comme Brainwave et Catapult. L'accélération peut également être rentable pour les micro-services, bien qu'il faille mettre l'accent sur l'accélération des fonctionnalités communes aux micro-services, plutôt que sur les applications individuelles, étant donné leur ampleur et leur diversité.

Outre l'accélération des fonctionnalités des applications, les architectes devraient également envisager d'investir dans un support matériel qui optimise les frais généraux associés aux demandes conteneurisées de courte durée, tels que les frais de démarrage des conteneurs, la mise en cache et la prédiction des branches.

3. Questions relatives au réseau

En ce qui concerne de nombreuses études d'architecture informatique, une plate-forme se limite à CPU+cache (+mémoire). Pour les micro-services, cela ne suffit plus. La qualité de service est quantifiée en termes de performances de bout en bout (latence et/ou débit), une grande partie de cette latence correspondant au traitement des demandes du réseau entre les niveaux de microservices dépendants. Non seulement le réseau doit être pris en compte, mais il doit être un domaine d'optimisation principal, étant donné les exigences strictes en matière de réactivité et de prévisibilité des microservices.

4. Utilisation de candidatures représentatives dans les publications universitaires

D'un point de vue pratique, les progrès des modèles de programmation cloud devraient refléter la manière dont les plateformes matérielles de ces systèmes sont évaluées. Par exemple, si les applications traditionnelles monolithiques cloud peuvent être suffisantes pour certaines études architecturales, elles ne reflètent plus la façon dont les services cloud réels sont conçus aujourd'hui. L'utilisation de modèles de programmation obsolètes dans les études architecturales peut conduire à des hypothèses et des conclusions incorrectes qui ne se traduisent pas dans les systèmes du monde réel.

Conclusion

Dans l'ensemble, le cloud est une scène volatile et en constante évolution. Bien que tous les nouveaux modèles de programmation cloud ne soient pas éternels, la prévalence croissante du calcul serverless et des micro-services indique un changement fondamental dans les principes de conception, qui mérite également une plus grande attention de la part de la communauté des architectes.

Bibliographie

https://www.sigarch.org/reacting-to-new-trends-in-cloud-software/

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels