Verschieben des Webportals: vom Monolithen zur Microservice-Architektur

Wir teilen die Erfahrung mit der Modernisierung der Architektur des Webportals, die es ermöglicht hat, das Produkt bequem, stabil und fehlertolerant zu machen: Der Datenverkehr stieg von 350.000 auf 7 Millionen Benutzer! Die Geschichte wird für diejenigen nützlich sein, die planen, ihr Produkt zu erweitern. Zunächst werden wir untersuchen, welche Faktoren die Arbeit und Entwicklung des Webportals beeinträchtigen können:

  • Veralterung. Der Usability-Ansatz, die Anpassung an verschiedene Geräte, das elementare Erscheinungsbild und die Struktur entsprechen im Laufe der Zeit nicht mehr den Bedürfnissen des Publikums.
  • Technologische Veralterung. Webstandards und -technologien werden ständig weiterentwickelt. Änderungen wirken sich sowohl auf Entwicklertools (z. B. Frameworks, Datenbanken, andere Software) als auch auf die grundlegenden Grundlagen des Webs aus. Seit relativ kurzer Zeit - ein massiver Übergang von http zu https und die Aufgabe der Unterstützung für Legacy-DNS.
  • Fehler und Abstürze. Entwickler können ihre Aufgabe unvollkommen bewältigen und Fehler zulassen. Infolgedessen können Verstöße gegen die Site auftreten - beginnend mit der Tatsache, dass die Schaltflächen beim ersten Mal nicht funktionieren, bis die Systeme vollständig ausfallen.

Fall

Wir wurden von einem Kunden angesprochen, dessen Webportal weiterentwickelt werden musste. Zu einem bestimmten Zeitpunkt wurde jeden Monat eine Obergrenze von 350.000 Besuchern erreicht. Dies schien unzureichend zu sein - das Projekt hatte eindeutig Perspektiven, und wir mussten herausfinden, was genau einer weiteren Skalierung der Ressource im Wege stand.

Audit

Es stellte sich heraus, dass die alte Bitrix-Engine nicht an Lasten und Skalierungen angepasst war. Jede einzelne Komponente des Systems kreuzte sich eng und war voneinander abhängig. Das ständige Beheben von Fehlern war eine so qualvolle Aufgabe, dass wir eine flexible und verständliche Microservice-Architektur vorschlugen. In ihnen ist jede Komponente unabhängig genug, damit die darin enthaltenen Fehler die verbleibenden Elemente des Systems nicht „verletzen“.

Bitrix blieb die Basis der Architektur - zumindest ist die Autorisierung daran gebunden, aber wo es möglich war und große Effizienz versprach, haben wir die Funktionalität auf Microservices übertragen. Sie wurden zum Eckpfeiler des Projekts.

Die neue kombinierte Architektur hat uns einen stabilen, schnelleren Betrieb der Systeme und eine nahezu vollständige Fehlerfreiheit bei einigen Modulen ermöglicht. Es diente auch als Grundlage für die effektive Arbeit der Vermarkter. Dank der verbesserten Architektur gelang es den Werbespezialisten, die Präsenz der Ressource um das 20-fache zu erhöhen.



Microservices

In eigenständigen Microservices haben wir Module wie einen Dateilader, eine Suche und einen Newsfeed unterschieden. Neben diesen benutzerfreundlichen und offensichtlichen Dingen wurden viele andere Funktionselemente in Form von Microservices implementiert:

  • Entladen, Speichern und Verwalten von Daten aus Open Source-Projekten;
  • Dynamische Erstellung von RSS-Feeds;
  • Dynamische Erstellung eines Blocksystems, Anordnung der Materialien aller Dienstleistungen zu Strukturblöcken;
  • Hinzufügen zusätzlicher Daten zu Servicematerialien;
  • Technischer Support;
  • Ein einziger Katalog verschiedener Daten.

Zusätzlich zu all dem haben wir viele Microservices für die bequeme Arbeit mit dem Admin-Panel erstellt.



Jeder Funktionsblock der Site ist zu einer ziemlich autonomen Einheit geworden. Zum Laden und Rendern wird ein dedizierter Prozess verwendet, um die Überschneidung mit anderen Diensten zu minimieren.

Wenn ein Benutzer eine Zahlung vornimmt, möchte er nicht lange auf das Laden des Skripts warten, das für die Wiedergabe des nicht benötigten Videos in einem anderen Teil der Seite verantwortlich ist. In der Tat geschieht dies in monolithischen Systemen - Nebenfunktionen beeinträchtigen manchmal die Arbeit wirklich wichtiger Komponenten.

Wir haben den ersten Schritt getan und sowohl Benutzern als auch Entwicklern das Leben erleichtert und mehr als 20 neue Dienste pro Jahr veröffentlicht. Ergebend:

  • Wir haben das Problem der Skalierung gelöst.
  • Implementierung eines effizienteren Entwicklungsprozesses durch verteilte Teams.
  • Richten Sie ein dynamisches Ressourcenmanagement für einen reibungslosen und schnellen Systembetrieb ein.


Technologie-Stack-Upgrade

Parallel dazu haben wir den Technologie-Stack aktualisiert. Wenn das Portal ursprünglich auf PHP 5.6 und MySQL 5.6 basierte, haben wir es im Zuge der Verbesserung der Engine auf PHP 7.0 und MySQL 5.7 umgestellt. Implementierung des Yii2-Frameworks, Bereitstellung von Memcache-Caching.



Aufgabenwarteschlange

Um Aufgaben besser parallelisieren zu können, haben wir Web-Worker - interne Handler - in die RabbitMQ-Warteschlange übertragen. Es optimiert die Reihenfolge der auslösenden Ereignisse, wodurch das System entlastet wird. Die Arbeit mit der Website ist viel schneller und komfortabler geworden.

Kontinuierliche Integration

Mit GitLab CI wird ein transparenter und verwaltbarer Entwicklungsprozess unterstützt. Dies ist eine wirklich kontinuierliche, nahtlose Entwicklung, bei der Programmierer und Tester mehr Zeit für wichtige Fragen haben, anstatt Löcher zu flicken.

Um Fehler zu minimieren, haben wir zusätzliche Entwicklungsschleifen eingeführt. Die Kette besteht aus mehreren Testschleifen für Anwendungen und Infrastrukturen: Pre-Release, in dem die neuesten Assembly-Tests (Pre-Prod), Combat (Prod), mehrere Testschleifen zum gleichzeitigen Testen mehrerer Builds sowie eine Schleife für Entwickler durchgeführt werden.

Montagesystem

In der Anfangsphase werden Builds aus den Projektquellen erstellt. Anstelle eines unterschiedlichen Satzes von Klassen, Stilen und Handlern werden kombinierte Entitäten verwendet - jeweils in der Shell einer ausführbaren Datei. In der Assembly werden nur die erforderlichen Konstruktionen platziert, um Ereignisse auf der Seite auszuführen. Dies bietet zusätzlich Flexibilität und Geschwindigkeit der Site.

Fehlerüberwachung

GitLab CI bietet erweiterte Funktionen für die Codeüberprüfung und das automatisierte Testen. Bei der geringsten Abweichung von Assemblys mit den angegebenen Parametern benachrichtigt das System die Entwickler und erlaubt nicht, den weiteren Prozess der Komponentenimplementierung zu starten, bis Fehler behoben sind. Zusätzlich haben wir Sentry installiert, ein vollständiges Tool zur Fehlerüberwachung.



Prozessoptimierung

Um das System auf einem hohen Leistungsniveau zu halten, haben wir Geschäftsprozesse und Infrastruktur konsequent optimiert. Gemeinsame Bibliotheken und Prototypen von Diensten wurden zur Grundlage für die schnelle Implementierung neuer Funktionen - wir nehmen vorgefertigte Vorlagen und erhalten in kurzer Zeit ein funktionierendes Produkt.

Überwachung und Betrieb

Alle Prozesse sind in voller Sicht. Überwachung des Status jedes Knotens bieten wir Zabbix - ein umfassendes Tracking-System. Wir hatten die Möglichkeit, in den Kern der Projektstruktur zu schauen und sie kompakt zu sehen.

Wir haben auch die Grafana-Plattform verbunden, die trockene Daten für die Mitarbeiter der Kunden in ein visuelles Dashboard verwandelt.

Stabilisierung und Refactoring

Bei Bedarf haben wir das System überarbeitet - der Code wird vereinfacht und prägnant. Gleichzeitig gibt es immer Raum zum Wachsen, da das regelmäßige Dotieren von Systemen den Standort beschleunigt. Infolgedessen ist die Ressource für Suchmaschinen und Benutzer benutzerfreundlicher geworden.

Neue Architektur ist die Basis für Wachstum

Zu Beginn der Arbeit hatte die Ressource ein bescheidenes Werbepotential und war für Kunden nicht bequem genug, was die Geschäftsprozesse des Unternehmens behinderte. Um den Prozess der Benutzerinteraktion mit der Site zu verbessern, haben wir die Portalarchitektur und ihre Struktur fast vollständig aktualisiert und einen flexiblen Mechanismus geschaffen, der dank unserer eigenen API in eine große Anzahl von Diensten und Anwendungen integriert werden kann. Viele Dienste arbeiten seit mehr als einem Jahr optimal, ohne dass Eingriffe erforderlich sind - die Anzahl der Fehler in ihrer Arbeit ist auf nahezu Null gesunken.

Die neue Site ist ein leistungsstarkes Tool für die Geschäftsentwicklung mit dem Potenzial für eine weitere Skalierung. Mithilfe der aktualisierten Architektur der Webanwendung konnten die Vermarkter des Projekts ihre Werbemaßnahmen umsetzen und den Traffic von 350.000 Besuchern pro Monat auf über 7 Millionen steigern. Darüber hinaus funktioniert das Portal nach einer mehrfachen Zunahme des Publikums weiterhin stabil.

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


All Articles