Sistema ISP, perdona è addiu! Perchè è cumu avemu scrittu u nostru pannellu di cuntrollu di u servitore

Sistema ISP, perdona è addiu! Perchè è cumu avemu scrittu u nostru pannellu di cuntrollu di u servitore

Bonghjornu! Semu "Tecnulugie di Hosting" è lanciati 5 anni fà VDSina - u primu hosting vds creatu apposta per i sviluppatori. Facemu u sforzu di rende cunvene, cum'è DigitalOcean, ma cù supportu russu, metudi di pagamentu è servitori in Russia. Ma DigitalOcean ùn hè micca solu affidabilità è prezzu, hè ancu un serviziu.

U software da ISPsystem hè diventatu una corda chì hà ligatu e nostre mani nantu à a strada per un serviziu cool. Trè anni fà, avemu usatu Billmanager billing è u pannellu di cuntrollu di u servitore VMmanager è hà capitu rapidamente chì era quasi impussibile di furnisce un bonu serviziu senza u nostru propiu pannellu di cuntrollu.

Cumu ISPsystem hà uccisu a cunvenzione

Bugs

Ùn pudemu micca riparà u bug noi stessi - ogni volta avemu avutu à scrive à u sustegnu di qualcunu altru è aspittà. A suluzione à ogni prublema hà bisognu di a risposta di una cumpagnia di terzu.

U supportu ISPsystem hà rispostu nurmalmente, ma i correzioni sò ghjunti solu dopu uni pochi di versioni, è micca sempre è micca tutti. A volte i bug critichi sò stati corretti per parechje settimane. Avemu avutu à rassicurà i clienti, scusate è aspittà chì ISPsystem risolve u bug.

Minaccia di downtime

L'aghjurnamenti puderanu generà tempi di inattività imprevisible chì pruvucanu novi errori.

Ogni aghjurnamentu era una lotteria: aghju avutu per copre a fattura è fà sacrifici à i dii di l'aghjurnamenti - un paru di volte l'aghjurnamentu hà causatu un downtime per 10-15 minuti. I nostri amministratori in questu mumentu stavanu seduti nantu à i so ochji - ùn avemu mai saputu quantu durà u tempu d'inattività è ùn pudia micca predichendu quandu ISPsystem deciderà di liberà una nova aghjurnazione.

In a quinta generazione, Billmanager hà megliu, ma per avè accessu à e funzioni necessarie, aghju avutu à stallà una beta, chì era digià aghjurnata ogni settimana. Se qualcosa si rompe, aghju avutu l'accessu à l'altri sviluppatori per pudè riparà qualcosa.

Interfaccia di pannellu inconveniente

Tuttu era divisu in pannelli diffirenti è cuntrullati da diversi lochi. Per esempiu, i clienti paganu per Billmanager, è anu da riavvià o reinstallà VDS in VMManager. U nostru staffu hà avutu ancu cambià trà Windows per aiutà un cliente, verificate a carica nantu à u so servitore, o vede quale OS hà utilizatu.

Una tale interfaccia richiede tempu - sia a nostra è à i nostri clienti. Ùn ci hè nunda di cunvenzione, cum'è quella di DigitalOcean, in una tale situazione.

Cicli di vita brevi cù aghjurnamenti API frequenti

Avemu scrittu i nostri plugins - per esempiu, un plugin cù metudi di pagamentu supplementari chì ùn sò micca in VMManager.

Nta l'ultimi anni, VMManager hà avutu un ciculu di vita relativamente curtu, è in e novi versioni, i nomi di variàbili o funzioni in l'API puderanu cambià arbitrariamente - questu hà rottu i nostri plugins. U supportu per e versioni più vechje hè statu eliminatu rapidamente è duverebbe esse aghjurnatu.

Ùn pò esse mudificatu

Più precisamente, hè pussibule, ma estremamente inefficient. E restrizioni di licenza ùn permettenu micca di fà cambiamenti à u codice fonte, pudete scrive solu plugins. Plugins massimi - alcuni elementi di menu, un assistente passu per passu. ISPsystem sò pensati per a versatilità, ma avemu bisognu di suluzioni specializate.

Allora a decisione era matura di scrive u mo propiu pannellu. Avemu stabilitu scopi:

  • Rispondi rapidamente à l'errori, i bug è esse capaci di riparà elli stessu senza fà aspittà u cliente.
  • Mudificà liberamente l'interfaccia per i flussi di travagliu è i bisogni di i clienti.
  • Aumenta l'usabilità cù un disignu pulitu è ​​​​comprensibile.

È avemu principiatu u sviluppu.

New Panel Architecture

Avemu una squadra di sviluppu autosufficiente, cusì avemu scrittu u pannellu noi stessi.
U travagliu principale hè statu fattu da trè ingegneri - u direttore tecnicu Sergey hè stata cun l'architettura è hà scrittu l'agente di u servitore, Alexey hà fattu a fattura, è u front-end hè statu assemblatu da u nostru front-ender Artysh.

Passu 1: Agente di u Servitore

L'agente di u servitore hè un servitore web python chì gestisce a biblioteca libvirt, chì à turnu guverna Ipervisore Qemu-kvm.

L'agente gestisce tutti i servizii nantu à u servitore: creazione, stopping, eliminazione di vds, installà sistemi operativi, cambiendu paràmetri, è cusì via a libreria libvirt. À u mumentu di a publicazione di l'articulu, queste sò più di quaranta funzioni diffirenti, chì aghjunghjemu secondu u compitu è ​​i bisogni di u cliente.

In teoria, libvirt puderia esse cuntrullatu direttamente da a fatturazione, ma questu richiedeva troppu codice supplementu è avemu decisu di separà queste funzioni trà l'agente è a fatturazione - a fatturazione face solu richieste à l'agente via l'API JSON.

L'agente hè a prima cosa chì avemu fattu, postu chì ùn hà micca bisognu di alcuna interfaccia è era pussibule di pruvà direttamente da a cunsola di u servitore.

Ciò chì l'agente di u servitore ci hà datu: una strata hè apparsu chì simplificà a vita per tutti - a fattura ùn hà micca bisognu di mandà una mansa di cumandamenti, ma solu fà una dumanda. È l'agente farà tuttu ciò chì hè necessariu: per esempiu, assignarà spaziu di discu è RAM.

Passu 2. Billing

Per u nostru sviluppatore Alex, questu ùn era micca u primu pannellu di cuntrollu - Alex hè stata in hosting per un bellu pezzu, cusì in generale hà capitu ciò chì u cliente avia bisognu è ciò chì l'hoster avia bisognu.

Chjamemu fattura trà noi un "pannellu di cuntrollu": cuntene micca solu soldi è servizii, ma ancu a so gestione, u supportu di i clienti è assai più.

Per cambià da u software ISPSystem, era necessariu di priservà cumplettamente a funziunalità precedente per i clienti, trasfiriri tutte l'azzioni finanziarii di l'utilizatori da a vechja fattura à a nova, è ancu tutti i servizii è cunnessione trà elli. Avemu studiatu ciò chì hè in u pruduttu attuale, dopu i suluzioni di i cuncurrenti, principalmente DO è Vultr. Avemu vistu i svantaghji è i vantaghji, cullighjate feedback da e persone chì anu travagliatu cù vechji prudutti da ISPsystem.

A nova fattura hà utilizatu dui stacks: PHP classic, MySQL (è in u futuru hè previstu di cambià à PostgreSQL), Yii2 cum'è un framework in u backend è VueJS in u fronte. Stacks funziona indipindentamente l'una di l'altru, sò sviluppati da diverse persone, è cumunicanu utilizendu l'API JSON. Per u sviluppu allora è avà avemu aduprà PHPStorm и tempesta web da JetBrains è li amate assai (ehi ragazzi!)

U pannellu hè cuncepitu nantu à una basa modulare: moduli di sistema di pagamentu, modulu di registrazione di duminiu o, per esempiu, un modulu di certificatu SSL. Pudete facilmente aghjunghje una nova funzione o sguassà una vechja. A basa per l'espansione hè stata architetturale, ancu in a direzzione opposta, "versu l'hardware".
Sistema ISP, perdona è addiu! Perchè è cumu avemu scrittu u nostru pannellu di cuntrollu di u servitore
Chì avemu avutu: un pannellu di cuntrollu nantu à quale avemu un cuntrollu tutale. Avà i bug sò fissi in ore, micca settimane, è e funzioni novi sò implementate à a dumanda di i clienti, è micca à a dumanda di ISPSystem.

Passu 3 Interfaccia

Sistema ISP, perdona è addiu! Perchè è cumu avemu scrittu u nostru pannellu di cuntrollu di u servitore
L'interfaccia hè a nostra idea di squadra.

Prima, avemu vistu ciò chì succede se avemu fattu un add-on nantu à l'API di l'ISPsystem senza cambià fundamentalmente qualcosa in l'interfaccia. Hè risultatu cusì cusì è avemu decisu di fà tuttu da zero.

Avemu cridutu chì a cosa principal hè di fà l'interfaccia logica, cù un disignu pulitu è ​​minimalista, è dopu avè un bellu pannellu. U locu di l'elementi hè statu discutitu in Megaplan è l'interfaccia chì l'utilizatori vedenu in u pannellu di cuntrollu avà nascerà gradualmente.

U disignu di a pagina di fatturazione era u primu à apparisce, perchè avemu digià fattu plugins di pagamentu per ISPsystem.

Frontend

Anu decisu di fà u pannellu una applicazione SPA - pocu esigenti à risorse è cù carica rapida di dati. U nostru front-ender Artysh hà decisu di scrive nantu à Vue - à quellu tempu Vue era appena apparsu. Avemu presumitu chì u quadru si svilupperà dinamicamente, cum'è React, dopu à qualchì tempu a cumunità Vue crescerà è un mare di biblioteche apparissi. Avemu scumessa nantu à Vue è ùn ne dispiacemu - avà ci vole pocu tempu per aghjunghje novi funzioni à u fronte chì sò digià programati in u back-end. Vi diciaremu più nantu à u pannellu front-end in un articulu separatu.

Cunnettendu u frontend à u backend

U frontend hè stata cunnessa à u backend via notificazioni push. Aviu avutu à travaglià dura è scrive u mo propiu gestore, ma avà l'infurmazioni nantu à a pagina hè aghjurnata quasi istantaneamente.

Chi hè successu: L'interfaccia di u pannellu hè diventata più simplice. Avemu fattu l'adattivu, è a carica rapida permette di usà ancu da i telefunini mobili in l'ultimi minuti prima di u decollo, senza installà una applicazione separata per travaglià cù u pannellu.

Step 4. Schema di prova è migrazione

Quandu tuttu hà cuminciatu è i primi testi passanu, a quistione di a migrazione hè stata. Prima di tuttu, avemu stallatu a fattura è hà cuminciatu à pruvà u so funziunamentu cù l'agente di u servitore.

Allora avemu scrittu un script simplice chì trasferisce a basa di dati da a vechja fattura à a nova.

Aviu avutu à pruvà è ricontrollate literalmente tuttu, postu chì i dati sò stati uniti in una nova basa di dati da trè vechji: Billmanager, VMmanager è l'IPmanager di u manager. Forsi e migrazioni di teste sò a cosa più difficiuli chì avemu scontru in u prucessu di sviluppà un novu pannellu.

Dopu à ritruvà, avemu chjusu l'antica fattura. A migrazione di dati finali era un momentu assai preoccupante, ma, grazie à Diu, hè stata cumpletata in pochi minuti è senza prublemi notevuli. Ci sò stati bug minori chì avemu riparatu durante a settimana. A maiò parte di u tempu hè stata passata à pruvà ciò chì hè accadutu.

Allora avemu mandatu lettere à i clienti cù l'indirizzu di u novu pannellu è a fattura è hà fattu un redirect.

In resume: HÈ VIVU !

Felice fine

Da e prime ore di travagliu di u nostru software, avemu sentitu tutti i piacè di a transizione. U codice era cumpletamente u nostru è cun una architettura còmuda, è l'interfaccia era pulita è logica.
Sistema ISP, perdona è addiu! Perchè è cumu avemu scrittu u nostru pannellu di cuntrollu di u servitore
Prima rivista dopu à u lanciu di u novu panel

Avemu lanciatu u prucessu di transizione in dicembre, à a vigilia di u New Year 2017, quandu a carica era u minimu, per fà a transizione più faciule per i clienti - quasi nimu travaglia à a vigilia di e vacanze.

A cosa principale chì avemu avutu quandu cambiassi à u nostru sistema (fora di l'affidabilità generale è a cunvenzione) hè a capacità di aghjunghje rapidamente funziunalità per i clienti chjave - per esse a so faccia, micca u so culo.

Chi c'è vicinu?

Crescemu, a quantità di dati, i clienti, i dati di i clienti cresce. Aviu avutu à aghjunghje un servitore Memcached è dui gestori di fila cù diverse attività à u backend. U frontend hà caching è e so file.

Di sicuru, avemu sempre avventure cum'è u pruduttu sviluppatu è diventatu più cumplessu, per esempiu, quandu avemu aghjustatu HighLoad.

In u prossimu articulu, vi diceremu cumu a tarifa Hi-CPU hè stata lanciata: nantu à hardware, software, ciò chì avemu risoltu è ciò chì avemu fattu.

Source: www.habr.com

Add a comment