Architecture de microservice = informatique distribuée

Salutations à tous les lecteurs de Habr! Je m'appelle Igor Rybakov et je suis le directeur technique de la société informatique Kazakhstan DAR. Aujourd'hui, je partagerai avec vous la compréhension et l'utilisation des principes du calcul parallèle dans les systèmes d'information modernes. Pour mieux comprendre cela, je voudrais donner des arguments en faveur de l'étude et de l'application pratique des concepts de l'informatique parallèle et distribuée dans le développement des systèmes d'information modernes.


L'informatique parallèle ou qu'est-ce que le fondateur d'Intel


Tout d'abord, un peu d'histoire. En 1965, Gordon Moore, l'un des fondateurs d'Intel, a découvert un schéma: l'apparition de nouveaux modèles de microcircuits a été observée environ un an après les prédécesseurs, tandis que le nombre de transistors en eux a presque doublé à chaque fois. Il s'avère que le nombre de transistors placés sur la puce du circuit intégré a doublé tous les 24 mois. Cette observation est devenue la loi de Moore. Le fondateur d'Intel a prédit que le nombre d'éléments dans la puce passerait de 2 ^ 6 (environ 60) en 1965 à 2 ^ 16 (65 000) en 1975 .


Maintenant, afin de pouvoir mettre en pratique cette puissance de calcul supplémentaire que Moore avait prédit, il est devenu nécessaire d'utiliser le calcul parallèle. Depuis plusieurs décennies, les fabricants de processeurs ont constamment augmenté la vitesse d'horloge et le parallélisme au niveau des instructions, de sorte que sur les nouveaux processeurs, les anciennes applications à thread unique s'exécutent plus rapidement sans aucune modification du code du programme.


Depuis le milieu des années 2000 environ, les fabricants de processeurs ont commencé à préférer une architecture multicœur, mais pour tirer pleinement parti des performances accrues du processeur central, les programmes doivent être réécrits de manière appropriée. Ici, un problème se pose, car selon la loi d' Amdahl , tous les algorithmes ne peuvent pas être parallélisés, déterminant ainsi la limite fondamentale de l'efficacité de la résolution d'un problème de calcul sur les superordinateurs.


Pour surmonter cette limite, des approches informatiques distribuées sont utilisées. C'est une telle façon de résoudre des problèmes informatiques à forte intensité de main-d'œuvre en utilisant plusieurs ordinateurs, qui sont le plus souvent combinés en un système informatique parallèle. Les calculs séquentiels dans les systèmes d'information distribués sont effectués en tenant compte de la solution simultanée de nombreux problèmes de calcul. Une caractéristique des systèmes informatiques multiprocesseurs distribués, contrairement aux superordinateurs locaux, est la possibilité d'une augmentation illimitée des performances en raison de la mise à l' échelle .


Vers le milieu de 2005, les ordinateurs sont massivement équipés de processeurs multicœurs, ce qui permet le calcul parallèle. Et les technologies réseau modernes vous permettent de combiner des centaines et des milliers d'ordinateurs. Ce qui a conduit à l'émergence de ce que l'on appelle le "cloud computing".


L'utilisation du calcul parallèle


Les systèmes d'information actuels, tels que le commerce électronique, ont un besoin criant de fournir des services de qualité à leurs clients. Les entreprises sont en concurrence, inventant de nouveaux services et produits d'information. Les services doivent être conçus pour une charge élevée et une tolérance élevée aux pannes, en tant qu'utilisateurs de services, pas un bureau, pas un pays, mais le monde entier.


Dans le même temps, il est important de préserver la faisabilité économique des projets et de ne pas dépenser des fonds inutiles en équipements de serveur coûteux si de vieux logiciels qui n'utilisent qu'une partie de la puissance de calcul y fonctionnent.


Les développeurs de systèmes d'application ont été confrontés à un nouveau problème - la nécessité de réécrire les systèmes d'information pour répondre aux exigences des entreprises modernes et la nécessité de mieux utiliser les ressources du serveur pour réduire le coût total de possession. Les tâches qui doivent être accomplies par les systèmes d'information modernes sont diverses.


À partir de l'apprentissage automatique et de l'analyse du Big Data, pour assurer un fonctionnement stable de la fonctionnalité de base du système existant pendant les périodes de pointe. Par exemple, vous pouvez citer ici les ventes de masse dans la boutique en ligne. Toutes ces tâches peuvent être résolues en utilisant une combinaison de calcul parallèle et distribué, par exemple, en mettant en œuvre une architecture de micro-service.


Contrôle de la qualité du service


Pour mesurer la qualité réelle des services pour un client, le concept d'accord de niveau de service (SLA) est utilisé, c'est-à-dire certaines mesures statistiques des performances du système.


Par exemple, les développeurs peuvent définir eux-mêmes la tâche selon laquelle 95% de toutes les demandes des utilisateurs sont traitées avec un temps de réponse ne dépassant pas 200 ms. Soit dit en passant, ce sont des exigences non fonctionnelles bien réelles, car les utilisateurs n'aiment pas attendre.


Pour évaluer la satisfaction des utilisateurs avec le service, vous pouvez utiliser l'indicateur Apdex, qui reflète le rapport des réponses réussies (satisfaites) aux réponses insatisfaisantes (insatisfaisantes). Par exemple, notre valeur de seuil est SLA = 1,2 seconde, puis avec 95% du temps de réponse des requêtes <= 1,2 seconde, le résultat sera réussi. Dans le cas d'un grand nombre de demandes de plus de 1,2 seconde, mais de moins de 4T (4,8 secondes), le résultat est considéré comme satisfaisant et lorsqu'un grand nombre de demandes dépasse 4T, celles> 4,8 secondes, le résultat est considéré comme un échec.


Conclusions


En conséquence, je voudrais dire que le développement de microservices implique en réalité la compréhension et l'application pratique de l'informatique distribuée et parallèle.


Bien sûr, vous devrez sacrifier certaines choses:


  • La simplicité de développement et de maintenance - les efforts des développeurs pour mettre en œuvre des modules distribués;
  • Lorsque vous travaillez avec des bases de données, la cohérence stricte (ACID) peut supprimer et nécessiter d'autres approches;
  • La puissance de calcul est dépensée pour les communications réseau et la sérialisation;
  • Nous passons du temps à mettre en œuvre des pratiques DevOps pour une surveillance et un déploiement plus complexes.

En retour, nous obtenons, à mon avis, bien plus:


  • la possibilité de réutiliser des modules entiers prêts à l'emploi et, par conséquent, le lancement rapide de produits sur le marché;
  • évolutivité élevée des systèmes, ce qui signifie plus de clients sans perdre le SLA;
  • En utilisant une cohérence éventuelle, basée sur le théorème CAP, nous obtenons la capacité de gérer d'énormes quantités de données, encore une fois, sans perdre le SLA;
  • la possibilité d'enregistrer tout changement dans l'état du système pour une analyse approfondie et un apprentissage automatique.

Source: https://habr.com/ru/post/fr443988/


All Articles