ISPsystem, ferjou en farwol! Wêrom en hoe't wy ús serverkontrôlepaniel skreaun hawwe

ISPsystem, ferjou en farwol! Wêrom en hoe't wy ús serverkontrôlepaniel skreaun hawwe

Hallo! Wy binne "Hosting Technologies" en 5 jier lyn hawwe wy lansearre VDSina - de earste vds-hosting spesifyk makke foar ûntwikkelders. Wy stribje dernei om it handich te meitsjen, lykas DigitalOcean, mar mei Russyske stipe, betelmethoden en servers yn Ruslân. Mar DigitalOcean giet net allinich oer betrouberens en priis, it giet ek oer tsjinst.

Software fan ISPsystem blykte in tou te wêzen dat ús hannen bûn op 'e wei nei in koele tsjinst. Trije jier lyn brûkten wy Billmanager-fakturearring en it VMmanager-tsjinnerkontrôlepaniel en realisearre gau dat it hast ûnmooglik wie om goede tsjinst te leverjen sûnder ús eigen paniel.

Hoe ISPsystem fermoarde gemak

Bugs

Wy koenen de brek sels net reparearje - elke kear moasten wy skriuwe nei de stipe fan in oar en wachtsje. De oplossing foar elk probleem easke in antwurd fan in bedriuw fan tredden.

ISPsystem-stipe reagearre normaal, mar reparaasjes kamen pas nei ferskate releases, en net altyd en net allegear. Soms duorre krityske bugs ferskate wiken om te reparearjen. Wy moasten kliïnten gerêststelle, ferûntskuldigje en wachtsje op ISPsystem om de brek te reparearjen.

Downtime bedriging

Updates koene ûnfoarspelbere downtimes generearje, dy't nije flaters útlokten.

Elke fernijing wie in lotterij: wy moasten fakturearring bedekke en offers bringe oan 'e goaden fan updates - in pear kear feroarsake in update downtime foar 10-15 minuten. Op dit stuit waarden ús admins griis foar ús eagen - wy wisten noait hoe lang de downtime soe duorje en koene net foarsizze wannear ISPsystem soe beslute om in nije update frij te jaan.

Billmanager waard better op 'e fyfde generaasje, mar om tagong te krijen ta de nedige funksjes moast ik in beta ynstallearje, dy't al elke wike bywurke waard. As der wat bruts, moasten jo tagong jaan oan oare ûntwikkelders, sadat se it kinne reparearje.

Unhandich paniel ynterface

Alles waard ferdield yn ferskate panielen en kontrolearre fan ferskate plakken. Bygelyks, kliïnten betelle fia Billmanager, mar se moasten opnij opstarte of opnij ynstallearje VDS yn VMManager. Us meiwurkers moasten ek wikselje tusken finsters om in klant te helpen, de lading op har server te kontrolearjen, of te sjen hokker OS se brûkten.

Sa'n ynterface nimt tiid yn beslach - sawol ús as ús kliïnten'. D'r is yn sa'n situaasje gjin sprake fan gemak lykas DigitalOcean.

Koarte libbenssyklusen mei faak API-fernijings

Wy hawwe ús eigen plugins skreaun - bygelyks in plugin mei ekstra betelmethoden dy't net beskikber binne yn VMManager.

Yn 'e ôfrûne jierren hie VMManager in relatyf koarte libbenssyklus, en nije ferzjes koene de nammen fan fariabelen of funksjes yn' e API willekeurich feroarje - dit bruts ús plugins. Stipe foar âldere ferzjes waard fluch stopset en it wie nedich om te aktualisearjen.

Kin net wizige wurde

Krekter, it is mooglik, mar ekstreem net effektyf. Lisinsjebeperkingen tastean jo gjin wizigingen oan 'e boarnekoade te meitsjen; jo kinne allinich plugins skriuwe. Maksimum plugins - guon menu-eleminten, stap-foar-stap wizard. ISPsystem is ûntwurpen foar veelzijdigheid, mar wy nedich spesjalisearre oplossings.

Dat it beslút om myn eigen panel te skriuwen wie ryp. Wy hawwe doelen ynsteld:

  • Reagearje fluch op flaters en bugs en kinne se sels reparearje sûnder de klant te wachtsjen.
  • Feroarje de ynterface frij om te passen by de wurkprosessen en behoeften fan 'e kliïnt.
  • Ferbetterje brûkberens mei in skjin en dúdlik ûntwerp.

En wy begûn ûntwikkeling.

Arsjitektuer fan it nije paniel

Wy hawwe in selsfoarsjennend ûntwikkelingsteam, dat wy hawwe it paniel sels skreaun.
It wichtichste wurk waard dien troch trije yngenieurs - technysk direkteur Sergei kaam mei de arsjitektuer en skreau de serveragent, Alexey die de fakturearring, en de frontend waard gearstald troch ús frontender Artysh.

Stap 1: Server Agent

De server-agint is in Python-webserver dy't de bibleteek beheart libvirt, dy't op syn beurt kontrolearret hypervisor Qemu-kvm.

De agint beheart alle tsjinsten op 'e tsjinner: oanmeitsjen, stopjen, wiskjen fan vd's, ynstallearjen fan bestjoeringssystemen, feroarjen fan parameters, en sa fierder fia de libvirt-bibleteek. Op it momint fan publikaasje fan dit artikel binne dit mear as fjirtich ferskillende funksjes, dy't wy tafoegje ôfhinklik fan 'e taak en behoeften fan' e kliïnt.

Yn teory koe libvirt direkt wurde beheard fan fakturearring, mar dit easke tefolle ekstra koade en wy besletten om dizze funksjes te splitsen tusken de agent en fakturearring - fakturearring makket gewoan oanfragen oan 'e agint fia de JSON API.

De agint wie it earste dat wy diene, om't it gjin ynterface easke en direkt koe wurde hifke fan 'e serverkonsole.

Wat de serveragent ús joech: der is in laach ferskynd dy't it libben foar elkenien makliker makket - fakturearring hoecht net in hiele bosk kommando's te stjoeren, mar allinich in fersyk te dwaan. En de agint sil dwaan alles wat nedich is: bygelyks, allocate skiif romte en RAM.

Stap 2. Billing

Foar ús ûntwikkelder Alex wie dit net it earste kontrôlepaniel - Alex hie al in lange tiid hosting, dus hy begriep oer it algemien wat de klant nedich wie en wat de hoster nedich wie.

Wy neame fakturearring in "kontrôlepaniel": it befettet net allinich jild en tsjinsten, mar ek har behear, klantstipe en folle mear.

Om te wikseljen fan ISPSystem-software wie it nedich foar kliïnten om de foarige funksjonaliteit folslein te behâlden, alle finansjele aksjes fan brûkers oer te setten fan 'e âlde fakturearring nei de nije, lykas alle tsjinsten en ferbiningen tusken har. Wy studearre wat is yn it hjoeddeiske produkt, dan de oplossings fan konkurrinten, benammen DO en Vultr. Wy seagen nei de neidielen en foardielen, sammele feedback fan minsken dy't wurken mei âlde produkten fan ISPsystem.

De nije fakturearring brûkte twa stapels: klassike PHP, MySQL (en yn 'e takomst is it pland om te wikseljen nei PostgreSQL), Yii2 as ramt op' e efterkant en VueJS op 'e foarkant. De stapels operearje ûnôfhinklik fan elkoar, wurde ûntwikkele troch ferskate minsken, en kommunisearje mei de JSON API. Foar ûntwikkeling doe en no brûke wy PHPSstorm и webstoarm fan JetBrains en hâld fan har tige (hey guys!)

It paniel is ûntwurpen op in modulêre basis: betelling systeem modules, domein registrars module of, bygelyks, SSL sertifikaten module. Jo kinne maklik in nije funksje tafoegje of in âlde fuortsmite. De grûnslach foar útwreiding wurdt arsjitektoanysk lein, ynklusyf yn 'e tsjinoerstelde rjochting, "rjochting de hardware".
ISPsystem, ferjou en farwol! Wêrom en hoe't wy ús serverkontrôlepaniel skreaun hawwe
Wat hawwe wy krigen: In kontrôle paniel dêr't wy hawwe folsleine kontrôle. No wurde bugs yn oeren reparearre, net wiken, en nije funksjes wurde ymplementearre op fersyk fan klanten, en net op fersyk fan ISPSystem.

Stap 3. Ynterface

ISPsystem, ferjou en farwol! Wêrom en hoe't wy ús serverkontrôlepaniel skreaun hawwe
De ynterface is ús team brainchild.

Earst seagen wy nei wat der barre soe as wy in tafoeging meitsje oan 'e ISPsystem API sûnder wat yn 'e ynterface fûneminteel te feroarjen. It waard sa-sa en wy besletten om te dwaan alles út it begjin.

Wy leauden dat it wichtichste wie om de ynterface logysk te meitsjen, mei in skjin en minimalistysk ûntwerp, en dan soene wy ​​in prachtich paniel krije. De arranzjemint fan eleminten waard besprutsen yn Megaplan en stadichoan sil de ynterface wurde berne dy't brûkers no yn it kontrôlepaniel sjogge.

It ûntwerp fan 'e fakturearside kaam earst, om't wy al betellingsplugins makke hawwe foar ISPsystem.

Frontend

Se besleaten it paniel in SPA-applikaasje te meitsjen - ûneasket yn termen fan boarnen en mei rappe gegevensladen. Us frontender Artysh besleat it yn Vue te skriuwen - op dat stuit wie Vue krekt ferskynd. Wy geane derfan út dat it ramt dynamysk soe ûntwikkelje, lykas React, en nei in skoft soe de Vue-mienskip groeie en in see fan biblioteken soe ferskine. Wy hawwe keazen foar Vue en hawwe der gjin spyt fan - no it tafoegjen fan nije funksjes oan 'e foarkant dy't al op' e efterkant programmearre wiene, nimt in bytsje tiid. Wy sille jo mear fertelle oer front-end panielen yn in apart artikel.

Ferbining tusken frontend en backend

De frontend waard ferbûn mei de efterkant fia push-notifikaasjes. Ik moast hurd wurkje en myn eigen handler skriuwe, mar no wurdt de ynformaasje op 'e side hast daliks bywurke.

Wat is bard: De panielynterface is ienfâldiger wurden. Wy makken it oanpasber, en fluch laden kinne jo it sels brûke fan mobile tillefoans yn 'e lêste minuten foar it opstarten, sûnder in aparte applikaasje te ynstallearjen om mei it paniel te wurkjen.

Stap 4. Testen en migraasje skema

Doe't alles opstart en de earste tests passe, kaam de fraach fan migraasje op. Alderearst hawwe wy fakturearring ynstalleare en begon har wurk te testen mei de serveragent.

Dêrnei hawwe wy in ienfâldich skript skreaun dat de databank oerbringt fan it âlde fakturearringsysteem nei it nije.

Wy moasten letterlik alles testen en dûbel kontrolearje, om't de gegevens waarden gearfoege yn ien nije database fan trije âlde: Billmanager, VMmanager en IPmanager manager. Miskien binne testmigraasjes it dreechste ding dat wy tsjinkamen yn it proses fan it ûntwikkeljen fan in nij paniel.

Nei dûbele kontrôles sluten wy de âlde rekkening. De definitive gegevensmigraasje wie in heul soargen momint, mar, tankje God, waard it yn in pear minuten foltôge en sûnder merkbere problemen. D'r wiene lytse bugs dy't wy yn 'e rin fan in wike repareare. De measte tiid waard bestege oan it testen fan wat der barde.

Doe stjoerden wy brieven nei kliïnten mei it adres fan it nije paniel en fakturearring en makken in trochferwizing.

Yn gearfetting: IT LIBBET!

Lokkich ein

Fan 'e earste oeren fan wurkjen mei ús software, fielden wy alle wille fan' e oergong. De koade wie folslein ús en hie in handige arsjitektuer, en de ynterface wie skjin en logysk.
ISPsystem, ferjou en farwol! Wêrom en hoe't wy ús serverkontrôlepaniel skreaun hawwe
Earste resinsje nei it lansearjen fan it nije paniel

Wy hawwe it oergongsproses yn desimber lansearre, op âldjiersnacht 2017, doe't der de minste wurkdruk wie, om de oergong makliker te meitsjen foar klanten - hast gjinien wurket op 'e foarjûn fan' e feestdagen.

It wichtichste ding dat wy krigen by it wikseljen nei ús systeem (njonken algemiene betrouberens en gemak) wie de mooglikheid om fluch funksjonaliteit ta te foegjen foar wichtige kliïnten - har gesicht te wêzen, net har kont.

Wat is folgjende?

Wy groeie, de hoemannichte gegevens, kliïnten, kliïntgegevens groeit. Op 'e efterkant moasten wy in Memcached-tsjinner tafoegje en twa wachtrigemanagers mei ferskate taken. De frontend hat caching en syn eigen wachtrijen.

Fansels hiene wy ​​noch aventoeren as it produkt ûntwikkele en komplekser waard, bygelyks doe't wy HighLoad tafoege.

Yn it folgjende artikel sille wy jo fertelle hoe't wy it Hi-CPU-tarief lansearre hawwe: oer hardware, software, hokker problemen wy hawwe oplost en wat wy hawwe berikt.

Boarne: www.habr.com

Add a comment