ISP-järjestelmä, anna anteeksi ja hyvästit! Miksi ja miten kirjoitimme palvelimen ohjauspaneelin

ISP-järjestelmä, anna anteeksi ja hyvästit! Miksi ja miten kirjoitimme palvelimen ohjauspaneelin

Hei! Olemme "Hosting Technologies" ja lanseerattiin 5 vuotta sitten VDSina - ensimmäinen vds-isännöinti, joka on luotu erityisesti kehittäjille. Pyrimme tekemään siitä kätevän, kuten DigitalOceanin, mutta venäläisellä tuella, maksutavoilla ja palvelimilla Venäjällä. Mutta DigitalOcean ei ole vain luotettavuus ja hinta, se on myös palvelu.

ISPsystemin ohjelmisto osoittautui köydeksi, joka sidoi kätemme matkalla kohti siistiä palvelua. Kolme vuotta sitten käytimme Billmanager-laskutusta ja VMmanager-palvelimen ohjauspaneelia ja huomasimme nopeasti, että on lähes mahdotonta tarjota hyvää palvelua ilman omaa ohjauspaneeliamme.

Kuinka ISP-järjestelmä tappoi mukavuuden

Vikoja

Emme voineet korjata vikaa itse - joka kerta meidän piti kirjoittaa jonkun muun tukeen ja odottaa. Minkä tahansa ongelman ratkaisu vaati kolmannen osapuolen yrityksen vastausta.

ISP-järjestelmän tuki vastasi normaalisti, mutta korjauksia tuli vasta muutaman julkaisun jälkeen, eikä aina eikä kaikissa. Joskus kriittisiä virheitä korjattiin useiden viikkojen ajan. Meidän piti rauhoittaa asiakkaita, pyytää anteeksi ja odottaa, että ISPsystem korjaa virheen.

Katkosaikojen uhka

Päivitykset voivat aiheuttaa arvaamattomia seisokkeja, jotka aiheuttivat uusia virheitä.

Jokainen päivitys oli arpajais: jouduin peittelemään laskutusta ja tekemään uhrauksia päivitysten jumalille - pari kertaa päivitys aiheutti 10-15 minuutin seisokkeja. Järjestelmänvalvojamme istuivat tällä hetkellä silmillään - emme koskaan tienneet, kuinka kauan seisokki kestää, emmekä voineet ennustaa, milloin ISPsystem päättää julkaista uuden päivityksen.

Viidennessä sukupolvessa Billmanager parani, mutta päästäkseni tarvittaviin ominaisuuksiin minun piti asentaa beta, joka päivitettiin jo viikoittain. Jos jokin meni rikki, minun piti antaa pääsy muille kehittäjille, jotta he voivat korjata jotain.

Epämukava paneelikäyttöliittymä

Kaikki oli jaettu eri paneeleihin ja ohjattu eri paikoista. Esimerkiksi asiakkaat maksoivat Billmanagerin kautta, ja heidän oli käynnistettävä uudelleen tai asennettava VDS uudelleen VMManagerissa. Henkilökuntamme piti myös vaihtaa ikkunoiden välillä auttaakseen asiakasta, tarkistaakseen palvelimen kuormituksen tai nähdäkseen, mitä käyttöjärjestelmää hän käytti.

Tällainen käyttöliittymä vie aikaa – sekä meiltä että asiakkailtamme. Ei ole kysymys mistään mukavuudesta, kuten DigitalOcean, tällaisessa tilanteessa.

Lyhyet elinkaari säännöllisillä API-päivityksillä

Kirjoitimme omia laajennuksiamme - esimerkiksi laajennuksen, jossa on lisämaksutapoja, joita ei ole VMManagerissa.

Viime vuosina VMManagerilla oli suhteellisen lyhyt elinkaari, ja uusissa versioissa API:n muuttujien tai funktioiden nimet saattoivat muuttua mielivaltaisesti - tämä rikkoi laajennuksiamme. Vanhojen versioiden tuki lakkautettiin nopeasti ja se piti päivittää.

Ei voi muokata

Tarkemmin sanottuna se on mahdollista, mutta erittäin tehotonta. Lisenssirajoitukset eivät salli sinun tehdä muutoksia lähdekoodiin, voit kirjoittaa vain laajennuksia. Enimmäislaajennukset - jotkin valikkokohdat, vaiheittainen ohjattu toiminto. ISPsystem on suunniteltu monipuoliseksi, mutta tarvitsimme erikoisratkaisuja.

Joten päätös oli kypsä kirjoittaa oma paneeli. Olemme asettaneet tavoitteet:

  • Reagoi nopeasti virheisiin ja bugeihin ja pysty korjaamaan ne itse ilman, että asiakas joutuu odottamaan.
  • Muokkaa käyttöliittymää vapaasti työnkulkujen ja asiakkaiden tarpeiden mukaan.
  • Lisää käytettävyyttä puhtaalla ja ymmärrettävällä suunnittelulla.

Ja aloitimme kehityksen.

Uusi paneeliarkkitehtuuri

Meillä on omavarainen kehitystiimi, joten teimme paneelin itse.
Päätyön teki kolme insinööriä - tekninen johtaja Sergey keksi arkkitehtuurin ja kirjoitti palvelinagentin, Aleksei laskutti ja etupään kokosi etupään Artysh.

Vaihe 1: Palvelinagentti

Palvelinagentti on python-verkkopalvelin, joka hallitsee kirjastoa Libvirt, joka puolestaan ​​hallitsee Qemu-kvm hypervisor.

Agentti hallitsee kaikkia palvelimen palveluita: vd-tiedostojen luomista, pysäyttämistä, poistamista, käyttöjärjestelmien asennusta, parametrien muuttamista ja niin edelleen libvirt-kirjaston kautta. Artikkelin julkaisuhetkellä nämä ovat yli neljäkymmentä erilaista toimintoa, joita täydennämme tehtävän ja asiakkaan tarpeiden mukaan.

Teoriassa libvirtiä voitaisiin ohjata suoraan laskutuksesta, mutta tämä vaati liikaa lisäkoodia ja päätimme erottaa nämä toiminnot agentin ja laskutuksen välillä - laskutus yksinkertaisesti tekee pyynnöt agentille JSON API:n kautta.

Agentti on ensimmäinen asia, jonka teimme, koska se ei vaatinut käyttöliittymää ja sitä oli mahdollista testata suoraan palvelinkonsolista.

Mitä palvelinagentti antoi meille: on ilmestynyt kerros, joka yksinkertaistaa kaikkien elämää - laskutuksen ei tarvitse lähettää koko joukkoa komentoja, vaan tehdä vain pyyntö. Ja agentti tekee kaiken, mitä tarvitaan: se esimerkiksi varaa levytilaa ja RAM-muistia.

Vaihe 2. Laskutus

Kehittäjällemme Alexille tämä ei ollut ensimmäinen ohjauspaneeli - Alex on ollut isännöitsijänä pitkään, joten hän yleensä ymmärsi, mitä asiakas ja isännöitsijä tarvitsi.

Kutsumme keskinäistä laskutusta "ohjauspaneeliksi": se sisältää paitsi rahat ja palvelut, myös niiden hallinnan, asiakastuen ja paljon muuta.

ISPSystem-ohjelmistosta siirtyminen piti täysin säilyttää asiakkaiden entinen toiminnallisuus, siirtää kaikki käyttäjien taloudelliset toimet vanhasta laskutuksesta uuteen sekä kaikki palvelut ja yhteydet niiden välillä. Tutkimme mitä nykyisessä tuotteessa on, sitten kilpailijoiden ratkaisuja, pääasiassa DO ja Vultr. Tarkastelimme haittoja ja etuja, keräsimme palautetta ihmisiltä, ​​jotka työskentelivät ISPsystemin vanhojen tuotteiden kanssa.

Uudessa laskutuksessa käytettiin kahta pinoa: klassista PHP:tä, MySQL:ää (ja jatkossa suunnitellaan siirtymistä PostgreSQL:ään), Yii2:ta taustakehyksenä ja VueJS:ää etupuolella. Pinot toimivat toisistaan ​​riippumatta, ne ovat eri ihmisten kehittämiä, ja ne kommunikoivat JSON-sovellusliittymän avulla. Kehittämiseen silloin ja nyt käytämme PHPS -myrsky и verkkomyrsky JetBrainsista ja rakastan heitä suuresti (hei kaverit!)

Paneeli on suunniteltu modulaarisesti: maksujärjestelmämoduulit, verkkotunnuksen rekisteröintimoduuli tai esimerkiksi SSL-varmennemoduuli. Voit helposti lisätä uuden ominaisuuden tai poistaa vanhan. Laajennuksen pohja on tehty arkkitehtonisesti, myös vastakkaiseen suuntaan, "kohteen laitteistoa".
ISP-järjestelmä, anna anteeksi ja hyvästit! Miksi ja miten kirjoitimme palvelimen ohjauspaneelin
Mitä saimme: ohjauspaneeli, jota meillä on täysi hallinta. Nyt virheet korjataan tunneissa, ei viikoissa, ja uusia ominaisuuksia otetaan käyttöön asiakkaiden pyynnöstä, ei ISPSystemin pyynnöstä.

Vaihe 3 Käyttöliittymä

ISP-järjestelmä, anna anteeksi ja hyvästit! Miksi ja miten kirjoitimme palvelimen ohjauspaneelin
Käyttöliittymä on tiimimme idea.

Ensin tarkastelimme, mitä tapahtuisi, jos tekisimme lisäosan ISPsystem API:n yli muuttamatta perustavasti mitään käyttöliittymässä. Siitä tuli niin ja niin päätimme tehdä kaiken tyhjästä.

Uskoimme, että tärkeintä on tehdä käyttöliittymästä looginen, puhtaalla ja minimalistisella muotoilulla, ja sitten saamme kauniin paneelin. Megaplanissa keskusteltiin elementtien sijainnista ja käyttöliittymä, jonka käyttäjät nyt näkevät ohjauspaneelissa, syntyy vähitellen.

Laskutussivun ulkoasu ilmestyi ensimmäisenä, koska olemme jo tehneet ISPsystemille maksulaajennukset.

Käyttöliittymä

He päättivät tehdä paneelista SPA-sovelluksen - resursseja vaatimattoman ja nopean tiedonlatauksen. Etupäätteemme Artysh päätti kirjoittaa sen Vuelle – tuolloin Vue oli juuri ilmestynyt. Oletimme, että kehys kehittyisi dynaamisesti, kuten React, jonkin ajan kuluttua Vue-yhteisö kasvaa ja kirjastojen meri ilmaantuisi. Panostimme Vuelle, emmekä katuneet sitä - nyt vie vain vähän aikaa lisätä etuosaan uusia toimintoja, jotka on jo ohjelmoitu taustaan. Kerromme sinulle lisää etupaneelista erillisessä artikkelissa.

Etuosan yhdistäminen taustajärjestelmään

Käyttöliittymä yhdistettiin taustajärjestelmään push-ilmoitusten kautta. Minun piti tehdä kovasti töitä ja kirjoittaa oma käsittelijä, mutta nyt sivun tiedot päivittyvät melkein välittömästi.

Mitä tapahtui: Paneelin käyttöliittymä on yksinkertaistunut. Teimme siitä mukautuvan, ja nopea lataus mahdollistaa sen käytön jopa matkapuhelimista viimeisinä minuutteina ennen lentoonlähtöä ilman erillistä sovellusta paneelin kanssa työskentelemiseen.

Vaihe 4. Testaus ja siirtosuunnitelma

Kun kaikki käynnistyi ja ensimmäiset testit läpäisivät, nousi kysymys maahanmuutosta. Ensinnäkin asensimme laskutuksen ja aloimme testata sen toimintaa palvelinagentin kanssa.

Sitten kirjoitimme yksinkertaisen skriptin, joka siirtää tietokannan vanhasta laskutuksesta uuteen.

Minun piti testata ja tarkistaa kirjaimellisesti kaikki, koska tiedot yhdistettiin yhdeksi uudeksi tietokannaksi kolmesta vanhasta: Billmanager, VMmanager ja johtajan IPmanager. Ehkä testimigraatiot ovat vaikein asia, jonka kohtasimme uuden paneelin kehittämisessä.

Uudelleentarkistuksen jälkeen suljemme vanhan laskutuksen. Lopullinen tiedonsiirto oli erittäin huolestuttava hetki, mutta luojan kiitos se valmistui muutamassa minuutissa ja ilman havaittavia ongelmia. Oli pieniä bugeja, jotka korjasimme viikon aikana. Suurin osa ajasta meni testaamiseen, mitä tapahtui.

Sitten lähetimme asiakkaille kirjeitä uuden paneelin osoitteella ja laskutuksella ja teimme uudelleenohjauksen.

Yhteenvetona: SE ON ELOSSA!

Onnellinen loppu

Ohjelmistomme ensimmäisistä työtunneista lähtien tunsimme kaikki siirtymän ilot. Koodi oli täysin meidän ja kätevällä arkkitehtuurilla, ja käyttöliittymä oli puhdas ja looginen.
ISP-järjestelmä, anna anteeksi ja hyvästit! Miksi ja miten kirjoitimme palvelimen ohjauspaneelin
Ensimmäinen tarkistus uuden paneelin julkaisun jälkeen

Aloitimme siirtymäprosessin joulukuussa, uudenvuoden 2017 aattona, jolloin kuormitus oli vähiten, helpottaaksemme siirtymistä asiakkaille - lomien aattona ei juuri kukaan työskentele.

Pääasia, jonka saimme järjestelmäämme vaihtaessamme (yleisen luotettavuuden ja mukavuuden lisäksi) on kyky lisätä nopeasti toimintoja avainasiakkaille - ollakseen heidän kasvojaan, ei perseitä.

Mitä seuraavaksi?

Kasvamme, datan määrä, asiakkaat, asiakasdata kasvaa. Minun piti lisätä taustajärjestelmään Memcached-palvelin ja kaksi jononhallintaa, joilla oli erilaisia ​​tehtäviä. Käyttöliittymässä on välimuisti ja omat jonot.

Tietysti meillä oli vielä seikkailuja tuotteen kehittyessä ja monimutkaisemmiksi, esimerkiksi kun lisäsimme HighLoadin.

Seuraavassa artikkelissa kerromme, kuinka Hi-CPU-tariffi käynnistettiin: laitteistosta, ohjelmistosta, mitä tehtäviä ratkaisimme ja mitä teimme.

Lähde: will.com

Lisää kommentti