ISPsystem, andestage ja hĂŒvasti! Miks ja kuidas me oma serverihalduspuldi kirjutasime

ISPsystem, andestage ja hĂŒvasti! Miks ja kuidas me oma serverihalduspuldi kirjutasime

Tere! Me oleme «Hosting Technology» ja viis aastat tagasi lansseerisime VDSina — esimene VDS hostimine, mis on loodud spetsiaalselt arendajatele. Meie eesmĂ€rk on teha see sama mugavaks kui DigitalOcean, kuid vene toe, makseviiside ja serveritega Venemaal. Kuid DigitalOcean ei ole ainult usaldusvÀÀrsus ja hind, vaid ka teenus.

ISPsystemi tarkvara osutus nööriks, mis sidus meid kÀtega tagasituleku tee hulgas. Kolm aastat tagasi kasutasime arveldamisprogrammi Billmanager ja serverihaldustarkvara VMmanager ning mÔistsime kiiresti, et kvaliteetse teenuse pakkumine ilma oma paneelita on peaaegu vÔimatu.

Kuidas ISPsystem tapab mugavuse

Vead

Me ei suutnud vigu ise parandada — iga kord pidime kirjutama kellegi teise tugiisikule ja ootama. Iga probleemi lahendamine nĂ”udis kolmanda osapoole reageerimist.

ISPsystemi tugi vastas normaalselt, kuid parandused tulid alles pÀrast mitmeid uusi versioone, ja mitte alati ja mitte kÔik. MÔningaid kriitilisi vigu parandati mitme nÀdala jooksul. Me pidime rahustama kliente, vabandama ja ootama, kuni ISPsystem vea parandab.

Ajavahemike oht

Uuendused vÔisid pÔhjustada ettenÀgematuid aegade, mis tekitas uusi vigu.

Iga vĂ€rskendus oli loterii: pidime sulgema arveldamise ja tooma uuenduste jumalate juurde ohvreid — paar korda pĂ”hjustas uuendus umbes 10-15 minuti pikkuse seisaku. Meie administraatorid istusid sel ajal silme ees — me ei teadnud kunagi, kui kaua seisak kestab ja ei suutnud ennustada, millal ISPsystem otsustab vĂ€lja anda uue uuenduse.

Billmanageri viiendat pÔlvkonda on saadud paremaks, kuid vajalike funktsioonide juurde pÀÀsemiseks pidime installima beetaversiooni, mida uuendati igal nÀdalal. Kui midagi purunes, pidime andma juurdepÀÀsu teiste arendajate jaoks, et nad midagi parandaksid.

Ebamugav paneeli liides

KĂ”ik oli jagatud erinevatesse paneelidesse ja haldati erinevates kohtades. NĂ€iteks maksid kliendid lĂ€bi Billmanageri, kuid VDS-i taaskĂ€ivitamine vĂ”i reinstalleerimine pidi toimuma VMManageris. Meie töötajad pidid samuti akende vahel vahetama, et aidata kliendi puhul, kontrollida tema serveri koormust vĂ”i vaadata, millist operatsioonisĂŒsteemi ta kasutab.

Selline liides vĂ”tab aega — nii meie kui ka klientide aega. Sellises olukorras ei saa mugavusest, nagu DigitalOceanil, juttu olla.

LĂŒhikesed elutsĂŒklid sagedaste API vĂ€rskendustega

Me oleme kirjutanud oma pluginaid – nĂ€iteks plugin, mis vĂ”imaldab tĂ€iendavaid makseviise, mida VMManager ei toeta.

Viimastel aastatel on VMManageril olnud suhteliselt lĂŒhike elutsĂŒkkel, kusjuures uutes versioonides vĂ”ivad API muutuda muutuvas jĂ€rjekorras muutuda muutuva jĂ€rjekorraga muutuda muutuva jĂ€rjekorraga – see rikkus meie pluginaid. Vanade versioonide tugi lĂ”petati kiiresti ja tuli uuendama.

Ei saa parandada

TĂ€psemalt on see vĂ”imalik, kuid ÀÀrmiselt ebatĂ”hus. Litsentseerimispiirangud ei luba muudatusi lĂ€htekoodis, saab ainult kirjutada pluginaid. Maksimaalne pluginate arv – mĂ”ned menĂŒĂŒelemendid, samm-sammult juhend. ISPsystem keskendub universaalsusele, kuid meie vajasime spetsialiseeritud lahendusi.

Nii sĂŒndis otsus kirjutada oma paneel. Seadsime eesmĂ€rgid:

  • Kiire reageerimine vigadele, tĂ”rgetele ja vĂ”imalus neid iseseisvalt lahendada, ilma et klient ootaks.
  • Vabadus kohandada liidest vastavalt tööprotsessidele ja kliendi vajadustele.
  • TĂ”sta kasutatavust puhta ja arusaadava disainiga.

Ja alustasime arendust.

Uue paneeli arhitektuur

Meil on iseseisev arendustiim, seega kirjutasime paneeli ise.
Peamised tööd tegi kolm inseneri – tehnilise direktori Sergei vĂ€lja mĂ”eldud arhitektuur ja serveri agent, Aleksei tegi arveldussĂŒsteemi ning meie frontend arendas frontendi, Artysh.

Samm 1. Serveri agent

Serveri agent on Pythonis loodud veebiserver, mis haldab raamatukogu libvirt, mis omakorda haldab hypervisor Qemu-kvm.

Agent haldab kĂ”iki teenuseid serveris: VDS-i loomine, peatamine, kustutamine, operatsioonisĂŒsteemide paigaldamine, parameetrite muutmine ja nii edasi raamatukogu libvirt kaudu. Artikli avaldamise ajal on neid rohkem kui nelikĂŒmmend erinevat funktsiooni, mida tĂ€iendame sĂ”ltuvalt ĂŒlesandest ja kliendi vajadustest.

Teoreetiliselt oleks libvirtiga vĂ”inud hallata otse arveldussĂŒsteemist, kuid see nĂ”udis liiga palju tĂ€iendavat koodi ja otsustasime need funktsioonid jaotada agendi ja arveldussĂŒsteemi vahel – arveldussĂŒsteem teeb lihtsalt pĂ€ringud agendile lĂ€bi JSON API.

Agent oli esimene, mille me tegime, kuna see ei nÔudnud mingit liidest ja seda sai testida otse serveri konsoolist.

Mida andis meile serveri agent: ilm on ilmunud kiht, mis lihtsustab elu kĂ”igile — arveldamiseks ei pea edastama suurt hulka kĂ€ske, vaid piisab ĂŒksnes pĂ€ringu tegemisest. Agent teeb kĂ”ik vajalikud toimingud: nĂ€iteks eraldab kettaruumi ja RAM-i.

Samm 2. Arveldamine

Meie arendaja Aleksile polnud see esimene juhtpaneel — Aleks on hostimises ammu olnud, seega mĂ”istis ta ĂŒldiselt, mida klient vajab ja mida hostija.

Arveldamist nimetame me omavahel "juhtpaneeliks": seal on mitte ainult raha ja teenuseid, vaid ka nende haldamine, klienditugi ja palju muud.

ISPSystemilt tarkvarale ĂŒlemiseks tuli tĂ€ielikult sĂ€ilitada klientide varasem funktsionaalsus, ĂŒle kanda kĂ”ik kasutajate finantstegevused vanast arveldussĂŒsteemist uude ning ka kĂ”ik teenused ja nende vahelised seosed. Uurisime, mida pakub praegune toode, seejĂ€rel konkurentide lahendusi, peamiselt DO-d ja Vultrit. Vaatasime puudusi ja eeliseid, kogusime tagasisidet inimestelt, kes töötasid vana ISPsystemi toodetega.

Uues arveldamises kasutasime kahte tehnikat: klassikaline PHP, MySQL (ja tulevikus plaanime ĂŒle minna PostgreSQL-ile), Yii2 raamistikul tagaplaanil ja VueJS esiplaanil. Tehnikad töötavad ĂŒksteisest sĂ”ltumatult, neid arendavad erinevad inimesed ning nad suhtlevad JSON API kaudu. Arendamiseks kasutasime siis ja kasutame ka praegu PHPStorm ja WebStorm JetBrainsilt ja me armastame neid vĂ€ga (poisid, tere!)

Paneel on projekteeritud moodulipĂ”hiselt: maksesĂŒsteemide moodul, domeeniregistraatorite moodul vĂ”i nĂ€iteks SSL-sertifikaatide moodul. Uue funktsiooni lisamine vĂ”i vana eemaldamine on lihtne. Arhitektuuri on sisseehitatud laienemisvĂ”imalus, sealhulgas ka tagasi poole, "rauda".
ISPsystem, andestage ja hĂŒvasti! Miks ja kuidas me oma serverihalduspuldi kirjutasime
Mida me saime: juhtpaneel, mille ĂŒle meil on tĂ€ielik kontroll. NĂŒĂŒd parandatakse vigu tundidega, mitte nĂ€dalatega, ja uusi funktsioone rakendatakse klientide soovi jĂ€rgi, mitte ISPSystemi soovide jĂ€rgi.

Samm 3. Liides

ISPsystem, andestage ja hĂŒvasti! Miks ja kuidas me oma serverihalduspuldi kirjutasime
Liides on meie meeskonna ĂŒhine looming.

Esmalt vaatasime, mis juhtub, kui teha ISPsystemi API ĂŒlekatte, mitte midagi radikaalselt muutmata liideses. Tulemus ei olnud liiga hea ja otsustasime kĂ”ik nullist teha.

Me uskusime, et peamine on luua loogiline liides, puhta ja minimalistliku disainiga, et saada ilus juhtpaneel. Arutasime elementide paigutust Megaplanis ja jÀrk-jÀrgult kujunes see liides, mida kasutajad nÀevad praegu juhtpaneelil.

Esimesena tekkis arvepidamise lehe disain, kuna olime juba loonud maksepluginad ISPsystemile.

Eesmine joon

Otsustasime, et paneel on SPA rakendus — madalate ressursside nĂ”udmistega ja kiire andmete laadimisega. Meie eesmine arendaja ArtĆĄis otsustas kirjutada selle Vue'is — sellel hetkel oli Vue just ilmuma hakanud. Arvasime, et raamistik areneb dĂŒnaamiliselt nagu React, ja mĂ”ne aja pĂ€rast kasvab Vue kogukond ning ilmuvad hulk raamatukogusid. Me panustasime Vue-le ja ei kahetsenud — nĂŒĂŒd on front-endile uute funktsioonide lisamine, mis on juba tagaplaanil programmeeritud, kiire. RÀÀgime paneeli eesmisest joonest eraldi artiklis.

Eesmise jooni ja tagaplaani ĂŒhendamine

Eesmine joon ĂŒhendati tagaplaaniga pushide kaudu. Palusime pingutada ja kirjutada oma töötleja, kuid nĂŒĂŒd toimub teabe vĂ€rskendamine lehel peaaegu koheselt.

Mida me saime: paneeli liides sai lihtsamaks. Muutsime selle adaptiivseks, ning kiire koormamine vÔimaldab selle kasutamist isegi mobiiltelefonidel viimasel minutil enne tÔusmist, ilma et oleks vaja installeerida eraldi rakendust paneeli kasutamiseks.

Samm 4. Testimine ja migreerimise skeem

Kui kĂ”ik toimis ja esimesed testid olid lĂ€bitud, tuli ĂŒlesanne migreerida. Esmalt paigaldasime arvepidamise ja alustasime selle töö testimist serveriagendi kĂŒljes.

Siis kirjutasime lihtsa skripti, mis kannab andmebaasi vanast arvepidamisest uude.

Pidime testima ja ĂŒle kontrollima peaaegu kĂ”ike, kuna andmed koondusid kolmest vanast: Billmanager, VMmanager ja IPmanager. VĂ”ib-olla olid testmigratsioonid kĂ”ige keerulisem asi, millega me uue paneeli arendamise kĂ€igus silmitsi seisime.

PĂ€rast ĂŒmberkontrollimist sulgesime vana arvepidamise. Andmete lĂ”plik migratsioon oli vĂ€ga Ă€rev hetk, kuid Ă”nneks toimus see mĂ”ne minuti jooksul ja ilma mĂ€rgatavate probleemideta. Oli vĂ€ikesi vigu, mida me parandasime nĂ€dala jooksul. Peamine aeg kulus selle testimiseks, mis vĂ€lja tuli.

SeejĂ€rel saatsime klientidele uusi kirju uue paneeli ja arveldamise aadressiga ning suunasime ĂŒmber.

Tulemus: SEE ON ELUS!

Õnnelik lĂ”pp

Esimestest tundidest oma tarkvara tööle hakkamisest tundsime, kuidas ĂŒleminek toob endaga kaasa kĂ”ik eelised. Kood oli tĂ€ielikult meie ja mugava arhitektuuriga, ning liides - puhas ja loogiline.
ISPsystem, andestage ja hĂŒvasti! Miks ja kuidas me oma serverihalduspuldi kirjutasime
Esimene ĂŒlevaade pĂ€rast uue paneeli kĂ€ivitamist

KĂ€ivitamise protsessi alustasime detsembris, just enne 2017. aasta uut aastat, kui koormus oli madalaim, et muuta ĂŒleminek klientidele lihtsamaks - peaaegu keegi ei tööta enne pĂŒhi.

Peamine, mida saime oma sĂŒsteemile ĂŒleminekul (vĂ€lja arvatud ĂŒldine usaldusvÀÀrsus ja mugavus) - vĂ”imalus kiiresti lisada funktsioone vĂ”tmeklientidele - olla neile ees, mitte taga.

Mis edasi?

Me kasvame, kasvab andmete, klientide ja klientide andmete arv. Tagaplaanile tuli lisada Memcached-server ja kaks jĂ€rjekorrahaldurit erinevate ĂŒlesannete jaoks. Esiplaanil on vahemĂ€lu ja oma jĂ€rjekorrad.

Muidugi oli meil arengute kÀigus veel seiklusi, kui nÀiteks lisasime HighLoad.

JĂ€rgmises artiklis rÀÀgime, kuidas kĂ€ivitasime Hi-CPU plaani: riistvara, tarkvara, milliseid ĂŒlesandeid me lahendasime ja mis me saavutame.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster