ISPsystem, verzeien an Äddi! Firwat a wéi mir eis Server Kontrollpanel geschriwwen hunn

ISPsystem, verzeien an Äddi! Firwat a wéi mir eis Server Kontrollpanel geschriwwen hunn

Hallo! Mir sinn "Hosting Technologies" a viru 5 Joer hu mir lancéiert VDSina - déi éischt vds Hosting erstallt speziell fir Entwéckler. Mir striewen et bequem ze maachen, wéi DigitalOcean, awer mat russescher Ënnerstëtzung, Bezuelmethoden a Serveren a Russland. Awer DigitalOcean ass net nëmmen iwwer Zouverlässegkeet a Präis, et ass och iwwer Service.

Software vum ISPsystem huet sech als Seel erausgestallt, deen eis Hänn um Wee fir e coole Service gebonnen huet. Virun dräi Joer hu mir Billmanager Billing an de VMmanager Server Kontrollpanel benotzt a séier gemierkt datt et bal onméiglech wier e gudde Service ze bidden ouni eisen eegene Panel.

Wéi ISPsystem ëmbruecht Kamoudheet

Käfere

Mir konnten de Käfer net selwer fixéieren - all Kéier hu mir un d'Ënnerstëtzung vun engem aneren ze schreiwen a waarden. D'Léisung fir all Problem erfuerdert eng Äntwert vun enger Drëtt Partei Firma.

ISPsystem Support huet normalerweis geäntwert, awer Fixer koumen eréischt no e puer Verëffentlechungen, an net ëmmer an net all. Heiansdo hunn kritesch Bugs e puer Wochen gedauert fir ze fixéieren. Mir hu misse Clienten berouegen, entschëllegen a waarden bis ISPsystem de Feeler fixéiert.

Downtime Gefor

Updates kéinten onberechenbar Ausbréchzäiten generéieren, wat nei Feeler provozéiert huet.

All Update war eng Lotterie: mir hu misse Rechnung ofdecken an Affer fir d'Gëtter vun den Updates maachen - e puer Mol huet en Update fir 10-15 Minutten Ausdauer verursaacht. Zu dëser Zäit sinn eis Administrateuren virun eisen Aen gro ginn - mir woussten ni wéi laang d'Downtime géif daueren a konnten net viraussoen wéini ISPsystem géif entscheeden en neien Update erauszekommen.

Billmanager gouf op der fënnefter Generatioun besser, awer fir Zougang zu den néidege Featuren ze kréien, hunn ech eng Beta installéiert, déi scho all Woch aktualiséiert gouf. Wann eppes gebrach ass, musst Dir aner Entwéckler Zougang ginn, fir datt se et konnten fixéieren.

Onbequem Panel Interface

Alles gouf a verschiddene Panelen opgedeelt a vu verschiddene Plazen kontrolléiert. Zum Beispill hunn d'Clienten duerch Billmanager bezuelt, awer si hu missen VDS an VMManager nei starten oder nei installéieren. Eis Mataarbechter hu missen och tëscht Fënstere wiesselen fir e Client ze hëllefen, d'Laascht op hirem Server ze kontrolléieren oder ze kucken wat fir eng OS se benotzt hunn.

Esou en Interface hëlt Zäit - souwuel eis wéi och eise Clienten. Et gëtt keng Ried vu Komfort wéi DigitalOcean an esou enger Situatioun.

Kuerz Liewenszyklus mat dacks API Updates

Mir hunn eis eege Plugins geschriwwen - zum Beispill e Plugin mat zousätzlech Bezuelmethoden déi net am VMManager verfügbar sinn.

An de leschte Joeren hat VMManager e relativ kuerze Liewenszyklus, an nei Versioune kënnen d'Nimm vun Variabelen oder Funktiounen an der API zoufälleg änneren - dëst huet eis Plugins gebrach. Ënnerstëtzung fir eeler Versioune gouf séier gestoppt an et war néideg ze aktualiséieren.

Kann net geännert ginn

Méi präzis ass et méiglech, awer extrem ineffektiv. Lizenzbeschränkungen erlaben Iech net Ännerungen am Quellcode ze maachen; Dir kënnt nëmme Plugins schreiwen. Maximum Plugins - e puer Menü Elementer, Schrëtt-vun-Schrëtt Wizard. ISPsystem ass fir Villsäitegkeet entworf, awer mir hu spezialiséiert Léisunge gebraucht.

Also d'Entscheedung fir meng eegen Panel ze schreiwen war reift. Mir hunn Ziler gesat:

  • Reagéiert séier op Feeler a Bugs a fäeg se selwer ze fixéieren ouni de Client ze waarden.
  • Modifizéiert d'Interface fräi fir dem Client seng Aarbechtsprozesser a Bedierfnesser ze passen.
  • Verbessert Benotzerfrëndlechkeet mat engem propperen a kloeren Design.

A mir hunn ugefaang Entwécklung.

Architektur vum neie Panel

Mir hunn e selbstänneg Entwécklungsteam, also hu mir de Panel selwer geschriwwen.
D'Haaptaarbecht gouf vun dräi Ingenieuren gemaach - den techneschen Direkter Sergei koum mat der Architektur an huet de Serveragent geschriwwen, Alexey huet d'Rechnung gemaach, an de Frontend gouf vun eisem Frontender Artysh zesummegesat.

Schrëtt 1: Server Agent

De Server Agent ass e Python Webserver deen d'Bibliothéik geréiert libvirt, déi am Tour Kontrollen hypervisor Qemu-kvm.

Den Agent geréiert all Servicer um Server: Schafung, Stoppen, Vds läschen, Betribssystemer installéieren, Parameteren änneren, a sou weider duerch d'libvirt-Bibliothéik. Zu der Zäit vun der Verëffentlechung vun dësem Artikel sinn dat méi wéi véierzeg verschidde Funktiounen, déi mir ofhängeg vun der Aufgab a Bedierfnesser vum Client addéieren.

An der Theorie konnt libvirt direkt vun der Rechnung geréiert ginn, awer dëst erfuerdert ze vill zousätzlech Code a mir hu beschloss dës Funktiounen tëscht dem Agent an der Rechnung opzedeelen - d'Billing mécht einfach Ufroe un den Agent iwwer d'JSON API.

Den Agent war dat éischt wat mir gemaach hunn, well et keng Interface erfuerdert an direkt vun der Serverkonsole getest ka ginn.

Wat de Server Agent eis huet: eng Schicht ass erschéngt déi d'Liewe fir jiddereen méi einfach mécht - d'Rechnung brauch net eng ganz Rëtsch Kommandoen ze schécken, awer nëmmen eng Ufro ze maachen. An den Agent wäert alles maachen wat néideg ass: zum Beispill Disc Plaz an RAM zougewisen.

Schrëtt 2. Rechnung

Fir eisen Entwéckler Alex war dëst net déi éischt Kontrollpanel - den Alex war scho laang gehost, also huet hien allgemeng verstanen wat de Client brauch a wat den Hoster brauch.

Mir nennen d'Billéierung e "Kontrollpanel": et enthält net nëmme Suen a Servicer, awer och hir Gestioun, Clientssupport a vill méi.

Fir vun ISPSystem Software ze wiesselen, war et néideg fir Clienten déi fréier Funktionalitéit komplett ze erhaalen, all finanziell Handlunge vun de Benotzer vun der aler Rechnung op déi nei ze transferéieren, souwéi all Servicer a Verbindungen tëscht hinnen. Mir studéiert wat am aktuellen Produkt ass, dann d'Léisunge vu Konkurrenten, haaptsächlech DO a Vultr. Mir hunn d'Nodeeler an d'Virdeeler gekuckt, Feedback vu Leit gesammelt, déi mat alen Produkter vum ISPsystem geschafft hunn.

Déi nei Rechnung huet zwee Stack benotzt: klassesch PHP, MySQL (an an Zukunft ass et geplangt fir op PostgreSQL ze wiesselen), Yii2 als Kader um Backend an VueJS op der viischter. D'Stäck funktionnéieren onofhängeg vuneneen, gi vu verschiddene Leit entwéckelt a kommunizéiere mat der JSON API. Fir Entwécklung deemools an elo benotze mir PHPSstorm и webstorm vu JetBrains a gär se gär (hey Kärelen!)

De Panel ass op modulare Basis entworf: Bezuelsystem Moduler, Domain Registrar Modul oder zum Beispill SSL Zertifikat Modul. Dir kënnt einfach eng nei Feature addéieren oder eng al ewechhuelen. D'Basis fir d'Erweiderung gëtt architektonesch geluecht, och an der entgéintgesate Richtung, "an d'Hardware".
ISPsystem, verzeien an Äddi! Firwat a wéi mir eis Server Kontrollpanel geschriwwen hunn
Wat hu mer kritt: Eng Kontrollpanel iwwer déi mir komplett Kontroll hunn. Elo ginn Bugs a Stonnen fixéiert, net Wochen, an nei Features ginn op Ufro vun de Clienten ëmgesat, an net op Ufro vum ISPSystem.

Schrëtt 3. Interface

ISPsystem, verzeien an Äddi! Firwat a wéi mir eis Server Kontrollpanel geschriwwen hunn
Den Interface ass eist Team Brainchild.

Als éischt hu mir gekuckt wat géif geschéien wa mir en Add-on zu der ISPsystem API maachen ouni grondsätzlech eppes an der Interface z'änneren. Et huet sech sou erausgestallt a mir hu beschloss alles vun Null ze maachen.

Mir hunn gegleeft datt d'Haaptsach war d'Interface logesch ze maachen, mat engem propperen a minimalisteschen Design, an da wäerte mir e schéine Panel kréien. D'Arrangement vun Elementer gouf am Megaplan diskutéiert a lues a lues gëtt d'Interface, déi d'Benotzer an der Kontrollpanel gesinn, gebuer ginn.

Den Design vun der Rechnungssäit koum als éischt, well mir scho Bezuelungsplugins fir ISPsystem gemaach hunn.

Frontend

Si hunn décidéiert de Panel eng SPA Applikatioun ze maachen - ongëlteg wat d'Ressourcen ugeet a mat schneller Datebelaaschtung. Eise Frontender Artysh huet decidéiert et a Vue ze schreiwen - deemools war Vue just opgetaucht. Mir hunn ugeholl datt de Kader dynamesch géif entwéckelen, sou wéi React, an no enger Zäit wäert d'Vue Gemeinschaft wuessen an e Mier vu Bibliothéiken erschéngen. Mir hu fir Vue entscheet an hunn et net bedauert - elo nei Funktiounen un der Front bäizefügen, déi scho um Backend programméiert waren, brauch wéineg Zäit. Mir soen Iech méi iwwer Front-End Panelen an engem separaten Artikel.

Verbindung tëscht Frontend an Backend

De Frontend gouf mam Backend iwwer Push Notifikatiounen ugeschloss. Ech hu misse schwéier schaffen a meng eegen Handler schreiwen, awer elo gëtt d'Informatioun op der Säit bal direkt aktualiséiert.

Wat ass geschitt: D'Panel Interface ass méi einfach ginn. Mir hunn et adaptiv gemaach, a séier Luede erlaabt Iech et och vun Handyen an de leschte Minutten virum Start ze benotzen, ouni eng separat Applikatioun z'installéieren fir mam Panel ze schaffen.

Schrëtt 4. Testen an Migratioun Schema

Wéi alles ugefaang huet an déi éischt Tester passéiert sinn, ass d'Fro vun der Migratioun opgestan. Als éischt hu mir Billing installéiert an ugefaang seng Aarbecht mam Server Agent ze testen.

Dunn hu mir en einfache Skript geschriwwen, deen d'Datebank vum alen Rechnungssystem an deen neie transferéiert.

Mir hu wuertwiertlech alles ze testen an duebel iwwerpréift, well d'Donnéeën an eng nei Datebank vun dräi alen fusionéiert goufen: Billmanager, VMmanager an IPmanager Manager. Vläicht Testmigratiounen sinn déi schwieregst Saach déi mir am Prozess vun der Entwécklung vun engem neie Panel begéint hunn.

No Duebelchecken hu mir déi al Rechnung zougemaach. Déi lescht Datemigratioun war e ganz beonrouegend Moment, awer Gott sei Dank ass et an e puer Minutten ofgeschloss an ouni merkbare Probleemer. Et waren kleng Bugs déi mir am Laf vun enger Woch fixéiert hunn. Déi meescht Zäit gouf verbruecht fir ze testen wat geschitt ass.

Duerno hu mir Bréiwer u Cliente mat der Adress vum neie Panel a Rechnung geschéckt an e Viruleedung gemaach.

Als Resultat: ET LEEFT!

Glécklech Enn

Vun den éischte Stonnen vun der Aarbecht mat eiser Software, hu mir all d'Freed vum Iwwergang gefillt. De Code war komplett eis an hat eng praktesch Architektur, an der Interface war propper a logesch.
ISPsystem, verzeien an Äddi! Firwat a wéi mir eis Server Kontrollpanel geschriwwen hunn
Éischt Iwwerpréiwung nom Start vum neie Panel

Mir hunn den Iwwergangsprozess am Dezember lancéiert, op Silvester 2017, wou et déi mannst Aarbechtsbelaaschtung war, fir den Iwwergank fir d'Clientë méi einfach ze maachen - um Virowend vun de Feierdeeg schafft bal keen.

D'Haapt Saach, déi mir kruten beim Wiessel op eise System (nieft allgemeng Zouverlässegkeet a Komfort) war d'Fäegkeet fir séier Funktionalitéit fir Schlësselclienten ze addéieren - hir Gesiicht ze sinn, net hiren Arsch.

Wat d'nächst?

Mir wuessen, d'Quantitéit un Daten, Clienten, Clientdaten wuessen. Um Backend hu mir e Memcached Server an zwee Schlaangmanager mat verschiddenen Aufgaben derbäigesat. De Frontend huet Cache a seng eege Schlaangen.

Natierlech hu mir nach ëmmer Abenteuer wéi d'Produkt entwéckelt a méi komplex gouf, zum Beispill wa mir HighLoad bäigefüügt hunn.

Am nächsten Artikel wäerte mir Iech soen wéi mir den Hi-CPU Tarif lancéiert hunn: iwwer Hardware, Software, wéi eng Probleemer mir geléist hunn a wat mir erreecht hunn.

Source: will.com

Setzt e Commentaire