
Tere! Me oleme "Hostingu Tehnoloogiad" ja viis aastat tagasi alustasime â esimest VDS hostimist, mis on loodud spetsiaalselt arendajatele. Meie eesmĂ€rk on teha see mugavaks nagu DigitalOcean, kuid vene toega, makseviisidega ja serveritega Venemaal. Kuid DigitalOcean ei ole ainult usaldusvÀÀrsus ja hind, see on ka teenus.
ISPsystemi tarkvara muutus köieks, mis sidus meie kÀed teel suurepÀrase teenuse pakkumise poole. Kolm aastat tagasi kasutasime Billmanageri arvelduse ja VMmanageri serverihalduspaneeli ning mÔistsime kiiresti, et hea teenuse pakkumine ilma oma paneelita on praktiliselt vÔimatu.
Kuidas ISPsystem lÔhkus mugavust
Vead
Me ei saanud vigu ise parandada â iga kord pidime kirjutama kolmandate osapoolte toetusele ja ootama. Iga probleemi lahendamine nĂ”udis kolmanda osapoole reageerimist.
ISPsystemi tugi vastas normaalselt, kuid parandused tulid alles pÀrast mitmeid vÀljalaskeid, ja see ei olnud alati ja mitte kÔikide puhul. MÔnikord parandati kriitilisi vigu mitu nÀdalat. Me pidime kliente rahustama, vabandama ja ootama, kuni ISPsystem vea parandab.
Kadalipud
Uuendused vÔisid tekitada ettenÀgematuid seisakuid, mis pÔhjustasid uusi vigu.
Iga uuendus oli loterii: pidime peitma arvelduse ja tooma uuenduste jumalatele ohvreid â paar korda pĂ”hjustas uuendus 10-15 minuti seisaku. Meie administraatorid istusid sel ajal silmade all â me ei teadnud kunagi, kui kaua seisak kestab ja ei saanud ennustada, millal ISPsystem otsustab vĂ€lja anda uue uuenduse.
Viiendal pÔlvkonnal Billmanageris lÀks paremaks, kuid vajalikest funktsioonidest ligipÀÀsu saamiseks tuli installida beetaversioon, mis uuendati juba iga nÀdala tagant. Kui midagi murdus, pidime andma ligipÀÀsu vÀlistele arendajatele, et nad midagi parandaksid.
Ebamugav juhtpaneeli liides
KĂ”ik oli jagatud erinevatesse paneelidesse ja seda haldati erinevatest kohtadest. NĂ€iteks maksid kliendid Billmanageri kaudu, kuid VDS-i taaskĂ€ivitamine vĂ”i uuesti installimine pidi toimuma VMManageris. Meie töötajad pidid samuti akende vahel vahetama, et aidata kliendil, kontrollida tema serveri koormust vĂ”i vaadata, millist opsĂŒsteemi ta kasutab.
Selline liides vĂ”tab aega â nii meie kui ka klientide jaoks. Sellises olukorras ei saa rÀÀkida DigitalOcean'i mugavusest.
LĂŒhikesed elutsĂŒklid sagedaste API vĂ€rskendustega.
Oleme kirjutanud oma pluginaid â nĂ€iteks makseviiside plugin, mida VMManager'is pole.
Viimastel aastatel oli VMManager'il suhteliselt lĂŒhike elutsĂŒkkel, kusjuures uusversionites vĂ”isid API-s muutuda muutujate vĂ”i funktsioonide nimed â see rikkus meie pluginaid. Vanade versioonide tugi lĂ”petati kiiresti ja pidi uuendama.
TÀitmine ei ole vÔimalik.
TĂ€psemalt on see vĂ”imalik, kuid ÀÀrmiselt ebaefektiivne. Litsentsipiirangud ei luba lĂ€htekoodi muuta, saab ainult pluginaid kirjutada. Maximump pluginaid â mĂ”ned menĂŒĂŒelemendid, samm-sammuline viisard. ISPsystem on suunatud universaalsusele, kuid me vajame spetsialiseeritud lahendusi.
Nii sĂŒndis otsus kirjutada oma paneel. Seadsime eesmĂ€rgid:
- Kiire reageerimine vigadele, tÔrgetele ja vÔimalus iseseisvalt neid kÔrvaldada, sundimata klienti ootama.
- VÔime vabalt kohandada liidest vastavalt tööprotsessidele ja kliendi vajadustele.
- TÔsta kasutatavust puhta ja arusaadava disaini kaudu.
Ja alustasid arendust.
Uue paneeli arhitektuur
Meil on tÀiesti iseseisev arendusmeeskond, mistÔttu oleme paneeli ise kirjutanud.
Peamist tööd tegid kolm inseneri â tehniline direktor Sergei mĂ”tles vĂ€lja arhitektuuri ja kirjutas serveri agendi, Aleksei tegi arvelduse ning meie frontendi arendaja Artysh kokku frontendi.
Samm 1. Serveri agent
Serveri agent on veebiserver Pythonis, mis haldab raamatukogu , mis omakorda haldab .
Agent haldab kĂ”iki teenuseid serveris: VDS-i loomine, peatamine, kustutamine, operatsioonisĂŒsteemide installimine, parameetrite muutmine ja nii edasi libvirt raamatukogu kaudu. Artikli avaldamise ajal on seda ĂŒle neljakĂŒmne erineva funktsiooni, mida tĂ€iustame vastavalt ĂŒlesandele ja kliendi vajadustele.
Idee poolest vĂ”iks libvirtiga hallata otse arveldusest, kuid see nĂ”udis liiga palju lisakoodi ning otsustasime need funktsioonid agendi ja arveldussĂŒsteemi vahel jagada â arveldus teeb lihtsalt pĂ€ringud agendile JSON API kaudu.
Agent on esimene, mida me tegime, kuna see ei nÔudnud mingit liidest ja selle testimine oli vÔimalik otse serveri konsoolist.
Mida meie serveri agent tĂ”i: ilmus vahekiht, mis lihtsustab kĂ”igi elu â arveldus ei pea edastama suurt hulka kĂ€ske, vaid teeb lihtsalt pĂ€ringu. Agent teeb kĂ”ik vajalikud toimingud: nĂ€iteks eraldab kettaruumi ja RAM-i.
Samm 2. Arveldamine
Meie arendaja Aleksi jaoks polnud see esimene juhtpaneel â Alesk on juba pikka aega hostingus töötanud, seega mĂ”istis ta, mida klient vajab ja mida hosti pakkuja vajab.
Arveldamist nimetame omavahel «juhtpaneeliks»: seal ei ole mitte ainult raha ja teenuseid, vaid ka nende haldamine, klienditugi ja palju muud.
ISPSystem'i tarkvara vahetamiseks oli vajalik tĂ€ielikult sĂ€ilitada eelmine funksionaalsus klientidele, kanda kĂ”ik kasutajate finantstehingud vanast arveldussĂŒsteemist uude, samuti kĂ”ik teenused ja nendevahelised suhted. Uurisime, mis praeguses tootes on, seejĂ€rel konkurentide lahendusi, peamiselt DO ja Vultr. Vaatasime puuduseid ja eeliseid, kogusime tagasisidet inimestelt, kes on töötanud ISPsystemi vanade toodete kallal.
Uues arveldussĂŒsteemis kasutasime kahte steki: klassikaline PHP, MySQL (ja tulevikus plaanime ĂŒle minna PostgreSQL'ile), Yii2 raamistik tagakĂŒljel ja VueJS esikĂŒljel. Stekid töötavad ĂŒksteisest eraldi, neid arendavad erinevad inimesed ning nad suhtlevad JSON API kaudu. Arenduseks oleme kasutanud ja JetBrainsilt ning armastame neid vĂ€ga (tervitame, poisid!)
Paneel on kavandatud modulaarse pĂ”himĂ”tte jĂ€rgi: maksesĂŒsteemide moodul, domeeniregistrite moodul vĂ”i nĂ€iteks SSL-sertifikaatide moodul. Uue funktsiooni lisamine vĂ”i vana eemaldamine on lihtne. Laiendamiseks on arhitektuurses mĂ”ttes rajatud alus, sealhulgas ka âraudaâ.

Mida me saime: juhtpaneel, mille ĂŒle meil on tĂ€ielik kontroll. NĂŒĂŒd parandatakse tĂ”rkeid tundide jooksul, mitte nĂ€dalate jooksul, ja uusi funktsioone rakendatakse klientide soovi jĂ€rgi, mitte ISPSystemi tahtmise jĂ€rgi.
3. samm. Liidese loomine

Liides on meie meeskonna looming.
Alguses mÔtlesime, mida saaks teha ISPsystemi API-le pÔhinedes, mitte liidest drastiliselt muutes. Tulemus oli kesine ja otsustasime luua kÔik nullist.
Usume, et peamine on luua loogiline liides, puhta ja minimalistliku disainiga, et saada ilus juhtpaneel. Elementide asukohta arutati Megaplanis ja jÀrk-jÀrgult tekkis see liides, mida kasutajad nÀevad praegu juhtpaneelil.
Esimesena valmis arvehalduse lehekujundus, kuna olime juba loonud maksepluginad ISPsystemi jaoks.
Frontend
Otsustasime luua paneelist SPA rakenduse, mis on kerge ja kiire andmete laadimisega. Meie frontend arendaja Artur valis selle kirjutamiseks Vue, kuna see ise oli just ilmunud. Me oletame, et raamistik areneb dĂŒnaamiliselt, nagu React, ja varsti kasvab Vue kogukond ning ilmub hulk teeke. Me panustasime Vue-le ja pole kahetsenud â nĂŒĂŒd uute funktsioonide lisamine front-endile, mis on juba backendis programmeeritud, vĂ”tab vĂ€he aega. RÀÀgime paneeli front-endist eraldi artiklis.
Frontend'i ja backend'i ĂŒhendus
Frontend ĂŒhendati backend'iga pushite kaudu. Pidi kĂ”vasti vaeva nĂ€gema ja kirjutama oma töötleja, kuid nĂŒĂŒd toimub teabe vĂ€rskendamine lehe peal peaaegu koheselt.
Mida me saavutasime: paneeli liides on saanud lihtsamaks. Me tegime selle responsiivseks, ja kiire laadimine vÔimaldab seda kasutada ka mobiiltelefonidest just enne starti, ilma et peaks eraldi rakendust installima paneeliga töötamiseks.
Samm 4. Testimine ja migratsiooniskeem
Kui kĂ”ik oli kĂ€ima lĂ€inud ja esimesed testid tehtud, tekkis kĂŒsimus migratsioonist. Esmalt seadistasime arvelduse ja hakkasime testima selle töötamist serveriagendiga.
Siis kirjutasime lihtsa skripti, mis viib andmebaasi vana arveldamise sĂŒsteemist uude.
Pidime testima ja uuesti kontrollima praktiliselt kĂ”ike, kuna andmed koondati ĂŒhte uude andmebaasi kolmest vanast: Billmanager, VMmanager ja IPmanager. VĂ”ib öelda, et testmigratsioonid olid kĂ”ige keerulisemad, millega me uue paneeli arendamise kĂ€igus silmitsi seisime.
PÀrast uuesti kontrollimist sulgesime vana arvelduse. Andmete lÔplik migratsioon oli vÀga Àrev hetk, kuid Ônneks teostus see mÔne minuti jooksul ja ilma nÀhtavate probleemideta. Esines vÀikseid vigu, mida me parandasime nÀdala jooksul. Enamik aega kulus selle testimise peale, mis vÀlja tuli.
SeejĂ€rel saatsime klientidele kirjad uue paneeli ja arvelduse aadressiga ning tegime ĂŒmbersuunamise.
KokkuvÔttes: SEE ON ELUS!
Ănnelik lĂ”pp
Esimestest tundidest oma tarkvara töös tundsime ĂŒle minemise kĂ”iki eeliseid. Kood oli tĂ€iesti meie oma, mugava arhitektuuriga, ja liides oli puhas ja loogiline.

Esimene tagasiside uue paneeli kÀivitamise jÀrel
Me alustasime ĂŒlemineku protsessi detsembris, vahetult enne 2017. aasta uut aastat, kui koormus oli kĂ”ige vĂ€iksem, et muuta ĂŒleminek klientidele lihtsamaks â peaaegu keegi ei tööta pĂŒhade eel.
Peamine, mida me oma sĂŒsteemile ĂŒlemisel saime (vĂ€lja arvatud ĂŒldine usaldusvÀÀrsus ja mugavus) â vĂ”imalus kiiresti lisada funktsioone vĂ”tmeklientide vajadustele â olla nende nĂ€gu, mitte tagaplane.
Mis edasi?
Me kasvame, kasvab andmete, klientide ja klientide andmete hulk. TagakĂŒljel pidime lisama Memcached-serveri ja kaks queue manegerit erinevate ĂŒlesannete jaoks. Eesliinil on vahemĂ€lu ja oma jĂ€rjekorrad.
Muidugi olid meil veel seiklused toote arendamisel ja keerukuse suurendamisel, nÀiteks kui lisasime HighLoad'i.
JĂ€rgmises artiklis rÀÀgime, kuidas kĂ€ivitasime Hi-CPU plaani: riistvara, tarkvara, milliseid ĂŒlesandeid me lahendasime ja mis meil vĂ€lja tuli.
Allikas: habr.com
