Déplacement du portail Web: de l'architecture monolithique à l'architecture microservice

Nous partageons l'expérience de la modernisation de l'architecture du portail web, qui a permis de rendre le produit pratique, stable et tolérant aux pannes: le trafic est passé de 350 mille à 7 millions d'utilisateurs! L'histoire sera utile à ceux qui envisagent d'étendre leur produit. Tout d'abord, nous examinerons quels facteurs peuvent interférer avec le travail et le développement du portail Web:

  • Obsolescence. L'approche de l'utilisabilité, l'adaptation à différents appareils, l'apparence élémentaire et la structure cessent de répondre aux besoins du public au fil du temps.
  • Obsolescence technologique. Les normes et la technologie Web évoluent constamment. Les changements affectent à la fois les outils de développement (par exemple, les frameworks, les bases de données, les autres logiciels) et les fondements fondamentaux du Web. Du relativement récent - une transition massive de http à https et l'abandon du support du DNS hérité.
  • Erreurs et plantages. Les développeurs peuvent imparfaitement faire face à leur tâche et permettre des failles. En conséquence, des violations du site peuvent se produire - à commencer par le fait que les boutons ne fonctionnent pas la première fois, jusqu'à ce que les systèmes tombent complètement en panne.

Cas

Nous avons été approchés par un client dont le portail Web avait besoin d'être développé. À un certain moment, un plafond de 350 000 visiteurs uniques a été atteint chaque mois. Cela semblait insuffisant - le projet avait manifestement des perspectives, et nous devions trouver ce qui empêchait exactement une nouvelle augmentation de la ressource.

Audit

Il s'est avéré que l'ancien moteur Bitrix n'était pas adapté aux charges et à la mise à l'échelle. Chaque composant du système se croisait étroitement et dépendait les uns des autres. La correction constante des bogues était une tâche si atroce que nous avons proposé une architecture de microservice flexible et compréhensible. En eux, chaque composant est suffisamment indépendant pour que les erreurs qu'il contient ne «blessent» pas les éléments restants du système.

Bitrix est resté la base de l'architecture - au moins, l'autorisation y est liée, mais là où c'était possible et promettait une grande efficacité, nous avons transféré la fonctionnalité aux microservices. Ils sont devenus la pierre angulaire du projet.

La nouvelle architecture combinée nous a fourni un fonctionnement stable et plus rapide des systèmes et une absence presque complète d'erreurs sur certains modules. Il a également servi de base au travail efficace des spécialistes du marketing. Grâce à l'architecture améliorée, les spécialistes de la promotion ont réussi à multiplier par 20 la fréquentation de la ressource.



Microservices

Dans les microservices autonomes, nous avons distingué des modules tels qu'un chargeur de fichiers, une recherche et un fil d'actualités. En plus de ces éléments conviviaux et évidents, de nombreux autres éléments fonctionnels ont été mis en œuvre sous forme de microservices:

  • Déchargement, stockage et gestion des données des projets open source;
  • Création dynamique de flux RSS;
  • Création dynamique d'un système de blocs, disposition des matériaux de tous les services en blocs structurels;
  • Ajout de données supplémentaires aux documents de service;
  • Service de support technique;
  • Un catalogue unique de diverses données.

En plus de tout ce qui précède, nous avons créé de nombreux microservices pour un travail pratique avec le panneau d'administration.



Chaque bloc fonctionnel du site est devenu une unité assez autonome. Un processus dédié est utilisé pour le chargement et le rendu, minimisant l'intersection avec d'autres services.

D'accord, lorsqu'un utilisateur effectue un paiement, il ne voudra pas attendre longtemps pour charger le script responsable de la lecture de la vidéo dont il n'a pas besoin dans une autre partie de la page. En effet, c'est ce qui se passe dans les systèmes monolithiques - les fonctionnalités latérales interfèrent parfois avec le travail de composants vraiment importants.

Nous avons franchi la première étape et simplifié la vie des utilisateurs et des développeurs, en publiant plus de 20 nouveaux services par an. En conséquence:

  • Nous avons résolu le problème de la mise à l'échelle.
  • Implémentation d'un processus de développement plus efficace par des équipes réparties.
  • Configurez une gestion dynamique des ressources pour un fonctionnement du système fluide et rapide.


Mise à niveau de la pile technologique

En parallèle, nous avons mis à jour la pile technologique. Si le portail était à l'origine basé sur php 5.6 et MySQL 5.6, alors au cours de l'amélioration du moteur, nous l'avons changé en php 7.0 et MySQL 5.7. Implémentation du framework Yii2, mise en cache memcache.



File d'attente des tâches

Afin de mieux paralléliser les tâches, nous avons déplacé les travailleurs Web - gestionnaires internes - vers la file d'attente RabbitMQ. Il optimise la séquence des événements de déclenchement, ce qui réduit la charge sur le système. Travailler avec le site est devenu beaucoup plus rapide et plus confortable.

Intégration continue

Un processus de développement transparent et gérable est pris en charge à l'aide de GitLab CI. Il s'agit d'un développement sans faille vraiment continu qui laisse aux programmeurs et aux testeurs plus de temps avec des questions importantes au lieu de corriger les trous.

Afin de minimiser les erreurs, nous avons introduit des boucles de développement supplémentaires. La chaîne se compose de plusieurs boucles de test d'application et d'infrastructure: pré-version, où se déroulent les derniers tests d'assemblage (pré-prod), combat (prod), plusieurs boucles de test pour tester plusieurs builds à la fois, ainsi qu'une boucle pour les développeurs.

Système d'assemblage

Au stade initial, les builds sont créés à partir des sources du projet. Au lieu d'un ensemble disparate de classes, de styles et de gestionnaires, des entités combinées sont utilisées - chacune dans le shell d'un fichier exécutable. Seules les constructions nécessaires sont placées dans l'assemblage pour effectuer des événements sur la page. Cela offre en outre la flexibilité et la vitesse du site.

Surveillance des erreurs

GitLab CI fournit des fonctionnalités avancées pour la validation de code et les tests automatisés. À la moindre divergence des assemblages avec les paramètres donnés, le système avertit les développeurs et ne permet pas de démarrer le processus ultérieur d'implémentation des composants jusqu'à la correction des bogues. De plus, nous avons installé Sentry, un outil complet de surveillance des erreurs.



Optimisation des processus

Pour maintenir le système dans un état de haute performance, nous avons constamment optimisé les processus métier et l'infrastructure. Les bibliothèques partagées et les prototypes de services sont devenus la base de la mise en œuvre rapide de nouvelles fonctions - nous prenons des modèles prêts à l'emploi et en peu de temps nous obtenons un produit fonctionnel.

Surveillance et fonctionnement

Tous les processus sont bien visibles. En surveillant l'état de chaque nœud, nous fournissons Zabbix - un système de suivi complet. Nous avons eu l'occasion d'examiner le cœur même de la structure du projet et de le voir de manière compacte.

Nous avons également connecté la plate-forme Grafana, qui transforme les données sèches en un tableau de bord visuel pour la commodité des employés des clients.

Stabilisation et refactoring

Au besoin, nous avons refactorisé le système - le code est simplifié et devient concis. Dans le même temps, il y a toujours de la place pour se développer, car le dopage régulier des systèmes accélère le site. En conséquence, la ressource est devenue plus conviviale pour les moteurs de recherche et les utilisateurs.

La nouvelle architecture est la base de la croissance

Au début des travaux, la ressource avait un potentiel de promotion modeste et n'était pas suffisamment pratique pour les clients, ce qui entravait les processus commerciaux de l'entreprise. Pour améliorer le processus d'interaction des utilisateurs avec le site, nous avons presque entièrement mis à jour l'architecture du portail et sa structure, créé un mécanisme flexible qui s'intègre à un grand nombre de services et d'applications, grâce à notre propre API. De nombreux services fonctionnent de manière optimale depuis plus d'un an, sans nécessiter d'intervention - le nombre d'erreurs dans leur travail est tombé à presque zéro.

Le nouveau site est un puissant outil de développement commercial, avec un potentiel de développement à plus grande échelle. Grâce à l'architecture mise à jour de l'application Web, les responsables marketing du projet ont pu mettre en œuvre leur gamme d'activités promotionnelles et augmenter le trafic de 350 000 visiteurs uniques par mois à plus de 7 millions. De plus, après une augmentation multiple d'audience, le portail continue de fonctionner de manière stable.

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


All Articles