ISPsystem, entschuldige und lebe wohl! Warum und wie wir unser eigenes Server-Management-Panel geschrieben haben.

ISPsystem, entschuldige und lebe wohl! Warum und wie wir unser eigenes Server-Management-Panel geschrieben haben.

Hallo! Wir von „Hosting Technologien“ haben vor 5 Jahren VDSina — das erste VDS-Hosting ins Leben gerufen, das speziell fĂŒr Entwickler geschaffen wurde. Unser Ziel ist es, es so benutzerfreundlich wie DigitalOcean zu machen, jedoch mit russischem Support, Zahlungsoptionen und Servern in Russland. DigitalOcean bietet nicht nur ZuverlĂ€ssigkeit und Preis, sondern auch einen hervorragenden Service.

Die Software von ISPsystem stellte sich als eine Fessel heraus, die uns daran hinderte, einen erstklassigen Service anzubieten. Vor drei Jahren nutzten wir das Abrechnungssystem Billmanager und die Serververwaltungspalette VMmanager und erkannten schnell, dass es nahezu unmöglich ist, einen guten Service ohne unsere eigene Software bereitzustellen.

Wie ISPsystem die Benutzerfreundlichkeit beeintrÀchtigt hat

Fehler

Wir konnten Fehler nicht selbst beheben – jedes Mal mussten wir den externen Support kontaktieren und warten. Die Lösung jedes Problems erforderte eine Reaktion von einer Drittpartei.

Der Support von ISPsystem antwortete normalerweise, aber die Fixes kamen erst nach mehreren Releases, und das auch nicht immer und nicht fĂŒr alle Probleme. Manchmal dauerte es mehrere Wochen, bis kritische Fehler behoben wurden. Wir mussten unsere Kunden beruhigen, uns entschuldigen und warten, bis ISPsystem den Fehler behob.

Bedrohung von Ausfallzeiten

Updates konnten unvorhersehbare Ausfallzeiten verursachen, die neue Fehler hervorriefen.

Jedes Update war ein GlĂŒcksspiel: wir mussten die Abrechnung schließen und Opfer an die Götter der Updates bringen – ein paar Mal verursachte das Update einen Ausfall von etwa 10-15 Minuten. In dieser Zeit saßen unsere Administratoren angespannt da – wir wussten nie, wie lange der Ausfall dauern wĂŒrde, und konnten nicht vorhersagen, wann ISPsystem beschließen wĂŒrde, ein neues Update herauszubringen.

In der fĂŒnften Generation von Billmanager wurde es besser, aber um auf die benötigten Funktionen zuzugreifen, mussten wir die Beta-Version installieren, die bereits wöchentlich aktualisiert wurde. Wenn etwas nicht funktionierte, mussten wir Fremdentwicklern Zugriff gewĂ€hren, damit sie Reparaturen vornehmen konnten.

Unhandliche BenutzeroberflÀche des Panels

Alles war auf verschiedene Panels verteilt und von unterschiedlichen Orten aus gesteuert. Beispielsweise zahlten die Kunden ĂŒber Billmanager, mussten jedoch ihre VDS in VMManager neu starten oder neu installieren. Auch unsere Mitarbeiter mussten zwischen den Fenstern wechseln, um dem Kunden zu helfen, die Serverauslastung zu ĂŒberprĂŒfen oder zu sehen, welches Betriebssystem verwendet wurde.

Eine solche BenutzeroberflĂ€che kostet Zeit – sowohl unsere als auch die der Kunden. Von der Bequemlichkeit, wie bei DigitalOcean, kann in dieser Situation keine Rede sein.

Kurze Lebenszyklen mit hÀufigen API-Updates

Wir haben eigene Plugins entwickelt – zum Beispiel ein Plugin mit zusĂ€tzlichen Zahlungsmöglichkeiten, die im VMManager nicht vorhanden sind.

In den letzten Jahren hatte der VMManager einen relativ kurzen Lebenszyklus, wobei sich in neuen Versionen die Namen von Variablen oder Funktionen in der API willkĂŒrlich Ă€nderten – das fĂŒhrte zu Problemen mit unseren Plugins. Die UnterstĂŒtzung Ă€lterer Versionen wurde schnell eingestellt, und wir mussten aktualisieren.

Es ist nicht möglich, Anpassungen vorzunehmen.

Genauer gesagt, es ist möglich, aber Ă€ußerst ineffizient. LizenzbeschrĂ€nkungen erlauben keine Änderungen am Quellcode, man kann nur Plugins schreiben. Maximal können Plugins einige MenĂŒelemente und einen Schritt-fĂŒr-Schritt-Assistenten bereitstellen. ISPsystem ist auf Universalisierung ausgelegt, wĂ€hrend wir spezialisierte Lösungen benötigten.

So reifte die Entscheidung, unser eigenes Panel zu erstellen. Wir haben uns folgende Ziele gesetzt:

  • Schnell auf Fehler und Bugs reagieren zu können und diese selbststĂ€ndig zu beheben, ohne den Kunden warten zu lassen.
  • Die BenutzeroberflĂ€che flexibel an die ArbeitsablĂ€ufe und BedĂŒrfnisse des Kunden anpassen zu können.
  • Die Benutzerfreundlichkeit durch ein klares und verstĂ€ndliches Design zu erhöhen.

Und wir haben mit der Entwicklung begonnen.

Die Architektur des neuen Panels

Wir haben ein autarkes Entwicklungsteam, sodass wir das Panel selbst erstellt haben.
Die Hauptarbeit leisteten drei Ingenieure: Der technische Direktor Sergej entwarf die Architektur und implementierte den Server-Agenten, Alexej kĂŒmmerte sich um das Billing, und unser Frontend-Entwickler Artysh baute die BenutzeroberflĂ€che.

Schritt 1. Server-Agent

Der Server-Agent ist ein Webserver, der in Python geschrieben ist und die Bibliothek verwaltet, libvirtdie wiederum den Qemu-kvm Hypervisor verwaltet..

Der Agent steuert alle Dienste auf dem Server: Er erstellt, stoppt und löscht VDS-Instanzen, installiert Betriebssysteme, Ă€ndert Parameter und so weiter ĂŒber die libvirt-Bibliothek. Zum Zeitpunkt der Erstellung dieses Artikels umfasst dies ĂŒber vierzig verschiedene Funktionen, die wir je nach Aufgabe und KundenbedĂŒrfnissen erweitern.

Theoretisch wĂ€re es möglich gewesen, libvirt direkt aus dem Billing zu steuern, aber das hĂ€tte zu viel zusĂ€tzlichen Code erfordert. Daher entschieden wir, diese Funktionen zwischen Agent und Billing aufzuteilen – das Billing sendet einfach Anfragen an den Agenten ĂŒber die JSON-API.

Der Agent war das erste, was wir entwickelten, da er keine BenutzeroberflĂ€che benötigte und direkt ĂŒber die Serverkonsole getestet werden konnte.

Was der Server-Agent uns gebracht hat: Es gibt jetzt eine Schicht, die das Leben fĂŒr alle einfacher macht – die Abrechnung muss nicht mehr eine Flut von Befehlen ĂŒbermitteln, sondern lediglich eine Anfrage stellen. Der Agent erledigt alles Weitere: zum Beispiel vergibt er Speicherplatz auf der Festplatte und RAM.

Schritt 2. Abrechnung

FĂŒr unseren Entwickler Alex war dies nicht die erste Steuerungspanel – Alex ist schon lange im Hosting-Bereich, daher hatte er ein gutes VerstĂ€ndnis dafĂŒr, was der Kunde benötigt und was der Hosting-Anbieter braucht.

Wir bezeichnen die Abrechnung untereinander als „Steuerungspanel“: Hier werden nicht nur Geld und Dienstleistungen verwaltet, sondern auch deren UnterstĂŒtzung und vieles mehr.

FĂŒr den Übergang von der ISPSystem-Software war es notwendig, allen Kunden die vorherige FunktionalitĂ€t vollstĂ€ndig zu bewahren, alle finanziellen Transaktionen der Nutzer von der alten in die neue Abrechnung zu ĂŒbertragen sowie alle Dienstleistungen und Verbindungen zwischen ihnen. Wir haben untersucht, was im aktuellen Produkt vorhanden ist, dann Lösungen der Wettbewerber, hauptsĂ€chlich DO und Vultr, betrachtet. Wir schauten uns die MĂ€ngel und Vorteile an und sammelten Feedback von Personen, die mit den alten Produkten von ISPsystem gearbeitet haben.

In der neuen Abrechnungssystem haben wir zwei Stacks verwendet: klassisches PHP, MySQL (in Zukunft planen wir die Umstellung auf PostgreSQL), Yii2 als Backend-Framework und VueJS fĂŒr das Frontend. Die Stacks arbeiten unabhĂ€ngig voneinander, werden von verschiedenen Personen entwickelt und kommunizieren ĂŒber eine JSON-API. FĂŒr die Entwicklung verwenden wir damals wie heute PHPStorm und WebStorm von JetBrains und haben eine große Vorliebe fĂŒr sie (Hallo Leute!)

Das Panel ist modular aufgebaut: Module fĂŒr Zahlungssysteme, ein Modul fĂŒr Domain-Registrar oder beispielsweise ein Modul fĂŒr SSL-Zertifikate. Es ist einfach, eine neue Funktion hinzuzufĂŒgen oder eine alte zu entfernen. Die Architektur ist auf Erweiterungen ausgelegt, auch in umgekehrter Richtung, „zur Hardware“.
ISPsystem, entschuldige und lebe wohl! Warum und wie wir unser eigenes Server-Management-Panel geschrieben haben.
Was wir erhalten haben: ein Kontrollpanel, ĂŒber das wir die volle Kontrolle haben. Jetzt werden Bugs in Stunden und nicht in Wochen behoben, und neue Funktionen werden auf Wunsch der Kunden und nicht nach dem Ermessen von ISPSystem umgesetzt.

Schritt 3. BenutzeroberflÀche

ISPsystem, entschuldige und lebe wohl! Warum und wie wir unser eigenes Server-Management-Panel geschrieben haben.
Die BenutzeroberflÀche ist unser gemeinsames Kind.

ZunĂ€chst haben wir untersucht, was passiert, wenn wir eine Überlagerung ĂŒber die API von ISPsystem machen, ohne die BenutzeroberflĂ€che grundlegend zu Ă€ndern. Das Ergebnis war eher mittelmĂ€ĂŸig und wir haben beschlossen, alles von Grund auf neu zu gestalten.

Wir glaubten, das Wichtigste sei, eine logische BenutzeroberflÀche mit einem klaren und minimalistischen Design zu schaffen, um ein ansprechendes Dashboard zu erhalten. Die Anordnung der Elemente diskutierten wir im Megaplan, und schrittweise entstand die BenutzeroberflÀche, die die Nutzer jetzt im Control Panel sehen.

Zuerst entstand das Design der Abrechnungsseite, da wir bereits Zahlungs-Plugins fĂŒr ISPsystem entwickelt hatten.

Frontend

Das Panel entschieden wir als SPA-Anwendung zu realisieren – ressourcenschonend und mit schneller Datenladezeit. Unser Frontend-Entwickler Artysh entschied sich, es mit Vue zu schreiben – zu diesem Zeitpunkt war Vue gerade erst erschienen. Wir gingen davon aus, dass sich das Framework dynamisch entwickeln wĂŒrde, Ă€hnlich wie React, und in naher Zukunft die Vue-Community wachsen sowie viele Bibliotheken entstehen wĂŒrden. Wir setzten auf Vue und haben es nicht bereut – jetzt benötigt das HinzufĂŒgen neuer Funktionen, die wir bereits im Backend programmiert haben, nur noch wenig Zeit. Mehr ĂŒber das Frontend des Panels werden wir in einem separaten Artikel berichten.

Die Verbindung von Frontend und Backend

Wir verbanden das Frontend mit dem Backend ĂŒber Push-Nachrichten. Es war nötig, einen eigenen Handler zu schreiben, doch nun geschieht die Aktualisierung der Informationen auf der Seite fast in Echtzeit.

Das Ergebnis: Die BenutzeroberflĂ€che des Panels wurde vereinfacht. Wir haben sie responsiv gestaltet, sodass eine schnelle Ladezeit es ermöglicht, sie auch kurz vor dem Abflug von mobilen GerĂ€ten aus zu nutzen, ohne eine separate App fĂŒr die Arbeit mit dem Panel installieren zu mĂŒssen.

Schritt 4. Testen und Migrationsschema

Nachdem alles eingerichtet war und die ersten Tests erfolgreich abgeschlossen wurden, stellte sich die Frage nach der Migration. ZunÀchst haben wir die Abrechnungssysteme eingerichtet und deren Funktionsweise mit dem Server-Agenten getestet.

Anschließend haben wir ein einfaches Skript erstellt, das die Datenbank aus dem alten Abrechnungssystem in das neue ĂŒbertrĂ€gt.

Wir mussten buchstĂ€blich alles testen und ĂŒberprĂŒfen, da die Daten aus drei alten Systemen (Billmanager, VMmanager und IPmanager) in eine neue Datenbank zusammengefĂŒhrt wurden. Die Testmigrationen waren vermutlich die grĂ¶ĂŸte Herausforderung, mit der wir wĂ€hrend der Entwicklung des neuen Panels konfrontiert waren.

Nach den ÜberprĂŒfungen haben wir die alte Abrechnung geschlossen. Die finale Datenmigration war ein sehr angespanntes Ereignis, verlief jedoch zum GlĂŒck innerhalb weniger Minuten und ohne nennenswerte Probleme. Es gab einige kleinere Bugs, die wir im Laufe der Woche behoben haben. Die meiste Zeit wurde fĂŒr das Testen dessen benötigt, was wir erreicht haben.

Anschließend haben wir unseren Kunden die Adresse des neuen Panels und der Abrechnung mitgeteilt und eine Weiterleitung eingerichtet.

Ergebnis: ES LEBT!

Happy End

Von den ersten Stunden an, in denen unsere Software lief, haben wir alle VorzĂŒge des Wechsels erlebt. Der Code war vollstĂ€ndig unser eigener und hatte eine benutzerfreundliche Architektur, wĂ€hrend die BenutzeroberflĂ€che klar und logisch war.
ISPsystem, entschuldige und lebe wohl! Warum und wie wir unser eigenes Server-Management-Panel geschrieben haben.
Das erste Feedback nach dem Start des neuen Panels

Wir haben den Übergangsprozess im Dezember gestartet, kurz vor dem Neuen Jahr 2017, als die Auslastung am niedrigsten war, um den Übergang fĂŒr die Kunden zu erleichtern – fast niemand arbeitet vor den Feiertagen.

Das Wichtigste, was wir mit unserem Systemwechsel erzielt haben (neben besserer ZuverlĂ€ssigkeit und Benutzerfreundlichkeit), ist die Möglichkeit, schnell Funktionen fĂŒr SchlĂŒsselkunden hinzuzufĂŒgen – ihnen ein Gesicht und nicht den RĂŒcken zu zeigen.

Wie geht es weiter?

Wir wachsen, die Menge an Daten, Kunden und Kundendaten wĂ€chst. Im Backend mussten wir einen Memcached-Server und zwei Queue-Manager mit verschiedenen Aufgaben hinzufĂŒgen. Im Frontend gibt es Caching und eigene Warteschlangen.

NatĂŒrlich hatten wir auch Abenteuer wĂ€hrend der Entwicklung und der KomplexitĂ€t des Produkts, zum Beispiel als wir HighLoad hinzugefĂŒgt haben.

Im nĂ€chsten Artikel werden wir darĂŒber berichten, wie wir das Hi-CPU-Paket gestartet haben: ĂŒber die Hardware, die Software, welche Herausforderungen wir gemeistert haben und was wir erreicht haben.

Quelle: habr.com

Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Servern đŸ”„ Kaufen Sie zuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz, VPS VDS-Servern | ProHoster