ISPsystem, odpusť a zbohom! Prečo a ako sme napísali náš ovládací panel servera

ISPsystem, odpusť a zbohom! Prečo a ako sme napísali náš ovládací panel servera

Ahoj! Sme "Hostingové technológie" a spustili sme pred 5 rokmi VDSina — prvý vds hosting vytvorený špeciálne pre vývojárov. Snažíme sa, aby to bolo pohodlné, ako napríklad DigitalOcean, ale s ruskou podporou, platobnými metódami a servermi v Rusku. DigitalOcean však nie je len spoľahlivosť a cena, je to aj služba.

Softvér od ISPsystem sa ukázal ako lano, ktoré nám zväzovalo ruky na ceste za cool službou. Pred tromi rokmi sme použili fakturáciu Billmanager a ovládací panel servera VMmanager a rýchlo sme si uvedomili, že je takmer nemožné poskytovať dobré služby bez vlastného ovládacieho panela.

Ako ISP systém zabil pohodlie

hmyz

Chybu sme nedokázali opraviť sami – zakaždým sme museli napísať na podporu niekoho iného a čakať. Riešenie akéhokoľvek problému si vyžadovalo reakciu spoločnosti tretej strany.

Podpora ISP systému reagovala normálne, ale opravy prišli až po niekoľkých vydaniach a potom nie vždy a nie všetky. Niekedy sa kritické chyby opravovali niekoľko týždňov. Museli sme zákazníkov ubezpečiť, ospravedlniť sa a počkať, kým ISPsystem chybu opraví.

Hrozba výpadku

Aktualizácie by mohli spôsobiť nepredvídateľné prestoje, ktoré vyvolali nové chyby.

Každá aktualizácia bola lotéria: musel som zakryť fakturáciu a obetovať sa bohom aktualizácií - niekoľkokrát aktualizácia spôsobila výpadok na 10-15 minút. Naši admini v tom čase sedeli na očiach – nikdy sme nevedeli, ako dlho bude výpadok trvať a nevedeli sme predpovedať, kedy sa ISP systém rozhodne vydať novú aktualizáciu.

Na piatej generácii sa Billmanager zlepšil, ale aby som získal prístup k potrebným funkciám, musel som nainštalovať beta verziu, ktorá už bola aktualizovaná každý týždeň. Ak sa niečo pokazilo, musel som dať prístup iným vývojárom, aby mohli niečo opraviť.

Nepohodlné rozhranie panela

Všetko bolo rozdelené do rôznych panelov a ovládané z rôznych miest. Zákazníci napríklad platili cez Billmanager a museli reštartovať alebo preinštalovať VDS vo VMManager. Naši zamestnanci tiež museli prepínať medzi oknami, aby pomohli klientovi, skontrolovali záťaž na jeho serveri alebo videli, aký OS používa.

Takéto rozhranie si vyžaduje čas – nášmu aj našim klientom. V takejto situácii nemôže byť reč o žiadnom pohodlí, aké má DigitalOcean.

Krátke životné cykly s častými aktualizáciami API

Napísali sme vlastné pluginy – napríklad plugin s ďalšími platobnými metódami, ktoré nie sú vo VMManager.

VMManager mal v posledných rokoch relatívne krátky životný cyklus a v nových verziách sa názvy premenných či funkcií v API mohli ľubovoľne meniť – to nám rozbilo pluginy. Podpora starších verzií bola rýchlo ukončená a bolo potrebné ju aktualizovať.

Nedá sa upraviť

Presnejšie povedané, je to možné, ale mimoriadne neefektívne. Licenčné obmedzenia vám neumožňujú vykonávať zmeny v zdrojovom kóde, môžete písať iba pluginy. Maximálny počet pluginov - niektoré položky ponuky, sprievodca krok za krokom. ISPsystem sú navrhnuté pre všestrannosť, no potrebovali sme špecializované riešenia.

Takže bolo zrelé rozhodnutie napísať svoj vlastný panel. Stanovili sme si ciele:

  • Rýchlo reagujte na chyby, chyby a buďte schopní ich sami opraviť bez toho, aby ste museli klienta čakať.
  • Voľne upravujte rozhranie pre pracovné postupy a potreby klienta.
  • Zvýšte použiteľnosť pomocou čistého a zrozumiteľného dizajnu.

A začali sme s vývojom.

Nová panelová architektúra

Máme sebestačný vývojový tím, takže panel sme si napísali sami.
Hlavnú prácu vykonali traja inžinieri - technický riaditeľ Sergej prišiel s architektúrou a napísal serverového agenta, Alexey urobil fakturáciu a front-end zostavil náš front-ender Artysh.

Krok 1: Serverový agent

Serverový agent je python webový server, ktorý spravuje knižnicu libvirt, ktorý zasa riadi Hypervízor Qemu-kvm.

Agent spravuje všetky služby na serveri: vytváranie, zastavovanie, mazanie vds, inštaláciu operačných systémov, zmenu parametrov atď. prostredníctvom knižnice libvirt. V čase vydania článku ide o viac ako štyridsať rôznych funkcií, ktoré dopĺňame v závislosti od zadania a potrieb klienta.

Teoreticky by libvirt mohol byť riadený priamo z fakturácie, ale to si vyžadovalo príliš veľa dodatočného kódu a rozhodli sme sa oddeliť tieto funkcie medzi agentom a fakturáciou – fakturácia jednoducho vytvára požiadavky na agenta cez JSON API.

Agent je prvá vec, ktorú sme urobili, pretože nevyžadoval žiadne rozhranie a bolo možné ho otestovať priamo z konzoly servera.

Čo nám dal agent servera: objavila sa vrstva, ktorá zjednodušuje život všetkým – fakturácia nemusí posielať celú kopu príkazov, ale iba zadávať požiadavku. A agent urobí všetko, čo je potrebné: napríklad pridelí miesto na disku a RAM.

Krok 2. Fakturácia

Pre nášho vývojára Alexa to nebol prvý ovládací panel – Alex sa v hostingu pohybuje už dlho, takže vo všeobecnosti rozumel tomu, čo klient potrebuje a čo potrebuje hostiteľ.

Účtovanie medzi sebou nazývame „ovládací panel“: obsahuje nielen peniaze a služby, ale aj ich správu, zákaznícku podporu a oveľa viac.

Pre prechod zo softvéru ISPSystem bolo potrebné pre zákazníkov plne zachovať doterajšiu funkcionalitu, preniesť všetky finančné úkony používateľov zo starej fakturácie do novej, ako aj všetky služby a prepojenia medzi nimi. Študovali sme, čo je v aktuálnom produkte, potom riešenia konkurentov, hlavne DO a Vultr. Pozreli sme sa na nevýhody a výhody, zozbierali spätnú väzbu od ľudí, ktorí pracovali so starými produktmi od ISPsystem.

Nové účtovanie využívalo dva zásobníky: klasické PHP, MySQL (a v budúcnosti sa plánuje prechod na PostgreSQL), Yii2 ako framework na backende a VueJS na prednej strane. Stohy fungujú nezávisle od seba, vyvíjajú ich rôzni ľudia a komunikujú pomocou JSON API. Pre rozvoj vtedy a teraz používame PHPStorm и webstore od JetBrains a veľmi ich milujem (ahoj chlapci!)

Panel je navrhnutý na modulárnej báze: moduly platobného systému, modul registrátora domén alebo napríklad modul SSL certifikátu. Môžete jednoducho pridať novú funkciu alebo odstrániť starú. Základ pre rozšírenie je položený architektonicky, a to aj v opačnom smere, „k hardvéru“.
ISPsystem, odpusť a zbohom! Prečo a ako sme napísali náš ovládací panel servera
Čo sme dostali: ovládací panel, nad ktorým máme plnú kontrolu. Teraz sú chyby opravené v priebehu niekoľkých hodín, nie týždňov, a nové funkcie sú implementované na žiadosť zákazníkov a nie na žiadosť ISPSystem.

Krok 3 Rozhranie

ISPsystem, odpusť a zbohom! Prečo a ako sme napísali náš ovládací panel servera
Rozhranie je duchovným dieťaťom nášho tímu.

Najprv sme sa pozreli na to, čo by sa stalo, keby sme urobili doplnok cez ISPsystem API bez toho, aby sme zásadne zmenili čokoľvek v rozhraní. Dopadlo to tak a tak a rozhodli sme sa robiť všetko od nuly.

Verili sme, že hlavnou vecou je urobiť rozhranie logické, s čistým a minimalistickým dizajnom, a potom získame krásny panel. O umiestnení prvkov sa hovorilo v Megaplane a postupne sa bude rodiť rozhranie, ktoré používatelia teraz vidia v ovládacom paneli.

Ako prvý sa objavil dizajn fakturačnej stránky, pretože sme už robili platobné pluginy pre ISPsystem.

Frontend

Z panelu sa rozhodli urobiť SPA aplikáciu – nenáročnú na zdroje a s rýchlym načítavaním dát. Náš front-ender Artysh sa rozhodol napísať to na Vue - v tom čase sa Vue práve objavilo. Predpokladali sme, že rámec sa bude dynamicky rozvíjať, podobne ako React, po určitom čase sa komunita Vue rozrastie a objaví sa more knižníc. Stavili sme na Vue a neoľutovali sme - teraz zaberie len málo času na pridanie nových funkcií dopredu, ktoré už boli naprogramované na zadnej strane. Viac o front-end paneli vám povieme v samostatnom článku.

Pripojenie frontendu k backendu

Frontend bol pripojený k backendu prostredníctvom push notifikácií. Musel som tvrdo pracovať a napísať svoj vlastný handler, ale teraz sa informácie na stránke aktualizujú takmer okamžite.

Čo sa stalo: Rozhranie panela sa zjednodušilo. Urobili sme ho adaptabilným a rýchle načítanie vám umožňuje používať ho aj z mobilných telefónov v posledných minútach pred vzletom bez inštalácie samostatnej aplikácie na prácu s panelom.

Krok 4. Schéma testovania a migrácie

Keď sa všetko rozbehlo a prešli prvé testy, vyvstala otázka migrácie. V prvom rade sme nainštalovali billing a začali testovať jeho fungovanie so serverovým agentom.

Potom sme napísali jednoduchý skript, ktorý prenesie databázu zo starej fakturácie do novej.

Musel som otestovať a prekontrolovať doslova všetko, keďže údaje boli zlúčené do jednej novej databázy z troch starých: Billmanager, VMmanager a manažérov IPmanager. Testovacie migrácie sú možno tou najťažšou vecou, ​​s ktorou sme sa stretli v procese vývoja nového panelu.

Po opätovnej kontrole sme staré vyúčtovanie uzavreli. Záverečná migrácia dát bola veľmi znepokojivým momentom, ale vďaka Bohu bola dokončená za pár minút a bez viditeľných problémov. Vyskytli sa menšie chyby, ktoré sme opravili počas týždňa. Väčšinu času sme strávili testovaním toho, čo sa stalo.

Potom sme klientom poslali listy s adresou nového panelu a fakturáciou a urobili sme presmerovanie.

V súhrne: JE NAŽIVE!

Šťastný koniec

Od prvých hodín práce s naším softvérom sme cítili všetky potešenie z prechodu. Kód bol úplne náš a s pohodlnou architektúrou a rozhranie bolo čisté a logické.
ISPsystem, odpusť a zbohom! Prečo a ako sme napísali náš ovládací panel servera
Prvá recenzia po spustení nového panelu

Proces prechodu sme spustili v decembri, v predvečer Nového roka 2017, kedy bola záťaž najmenej, aby sme zákazníkom uľahčili prechod – v predvečer sviatkov takmer nikto nepracuje.

Hlavná vec, ktorú sme pri prechode na náš systém získali (okrem všeobecnej spoľahlivosti a pohodlia), je schopnosť rýchlo pridať funkcionalitu pre kľúčových zákazníkov – byť ich tvárou, nie zadkom.

Čo bude ďalej?

Rastieme, rastie množstvo dát, zákazníkov, zákazníckych dát. Do backendu som musel pridať server Memcached a dvoch správcov frontov s rôznymi úlohami. Frontend má ukladanie do vyrovnávacej pamäte a svoje vlastné fronty.

Samozrejme, stále sme zažívali dobrodružstvá, keď sa produkt vyvíjal a stával sa komplexnejším, napríklad keď sme pridali HighLoad.

V ďalšom článku vám povieme, ako bola spustená tarifa Hi-CPU: o hardvéri, softvéri, aké úlohy sme vyriešili a čo sme urobili.

Zdroj: hab.com

Pridať komentár