Sveiki! MÄs esam "Hosting Technologies" un sÄkam darboties pirms 5 gadiem
ProgrammatÅ«ra no ISPsystem izrÄdÄ«jÄs virve, kas sasÄja mÅ«su rokas ceÄ¼Ä uz forÅ”u pakalpojumu. Pirms trim gadiem mÄs izmantojÄm Billmanager norÄÄ·inus un VMmanager servera vadÄ«bas paneli un Ätri sapratÄm, ka bez sava vadÄ«bas paneļa ir gandrÄ«z neiespÄjami nodroÅ”inÄt labu pakalpojumu.
KÄ ISP sistÄma nogalinÄja ÄrtÄ«bas
Bugs
Kļūdu paÅ”i nevarÄjÄm novÄrst ā katru reizi bija jÄraksta kÄda cita atbalsta dienestam un jÄgaida. Jebkuras problÄmas risinÄÅ”anai bija nepiecieÅ”ama treÅ”Äs puses uzÅÄmuma reakcija.
ISPsistÄmas atbalsts atbildÄja normÄli, taÄu labojumi tika veikti tikai pÄc dažiem laidieniem, un tad ne vienmÄr un ne visi. Dažreiz kritiskÄs kļūdas tika labotas vairÄkas nedÄļas. Mums bija jÄnomierina klienti, jÄatvainojas un jÄgaida, kamÄr ISPsystem novÄrsÄ«s kļūdu.
DÄ«kstÄves draudi
AtjauninÄjumi var radÄ«t neparedzamas dÄ«kstÄves, kas izraisÄ«ja jaunas kļūdas.
Katrs atjauninÄjums bija loterija: man nÄcÄs slÄpt rÄÄ·inus un upurÄt atjauninÄjumu dieviem - pÄris reizes atjauninÄjums izraisÄ«ja dÄ«kstÄvi uz 10-15 minÅ«tÄm. MÅ«su administratori Å”ajÄ laikÄ sÄdÄja acÄ«s ā mÄs nekad nezinÄjÄm, cik ilgi ilgs dÄ«kstÄve, un nevarÄjÄm paredzÄt, kad ISPsystem izlems izlaist jaunu atjauninÄjumu.
PiektajÄ paaudzÄ Billmanager kļuva labÄks, bet, lai piekļūtu nepiecieÅ”amajÄm funkcijÄm, man bija jÄinstalÄ beta, kas jau tika atjauninÄta katru nedÄļu. Ja kaut kas sabojÄjÄs, man bija jÄdod piekļuve citiem izstrÄdÄtÄjiem, lai viÅi varÄtu kaut ko salabot.
NeÄrts paneļa interfeiss
Viss tika sadalÄ«ts dažÄdos paneļos un tika kontrolÄts no dažÄdÄm vietÄm. PiemÄram, klienti maksÄja, izmantojot Billmanager, un viÅiem VMManager bija jÄpÄrstartÄ vai jÄinstalÄ VDS. MÅ«su darbiniekiem bija arÄ« jÄpÄrslÄdzas starp logiem, lai palÄ«dzÄtu klientam, pÄrbaudÄ«tu viÅa servera slodzi vai redzÄtu, kÄdu OS viÅÅ” izmanto.
Å Äda saskarne prasa laiku - gan mÅ«su, gan mÅ«su klientu. Å ÄdÄ situÄcijÄ nav ne runas par ÄrtÄ«bÄm, piemÄram, DigitalOcean.
ÄŖsi dzÄ«ves cikli ar biežiem API atjauninÄjumiem
MÄs rakstÄ«jÄm paÅ”i savus spraudÅus - piemÄram, spraudni ar papildu maksÄjuma veidiem, kas nav VMManager.
PÄdÄjos gados VMManager bija salÄ«dzinoÅ”i Ä«ss dzÄ«ves cikls, un jaunajÄs versijÄs mainÄ«go vai funkciju nosaukumi API varÄja patvaļīgi mainÄ«ties - tas sabojÄja mÅ«su spraudÅus. VecÄko versiju atbalsts tika Ätri pÄrtraukts, un tas bija jÄatjaunina.
Nevar modificÄt
PrecÄ«zÄk, tas ir iespÄjams, bet ÄrkÄrtÄ«gi neefektÄ«vi. Licences ierobežojumi neļauj veikt izmaiÅas avota kodÄ, var rakstÄ«t tikai spraudÅus. MaksimÄlais spraudÅu skaits - daži izvÄlnes vienumi, soli pa solim vednis. ISPsystem ir paredzÄtas daudzpusÄ«bai, taÄu mums bija nepiecieÅ”ami specializÄti risinÄjumi.
TÄpÄc lÄmums bija gatavs uzrakstÄ«t savu paneli. Esam izvirzÄ«juÅ”i mÄrÄ·us:
- Ätri reaÄ£Äjiet uz kļūdÄm un kļūdÄm un spÄjiet tÄs labot pats, neliekot klientam gaidÄ«t.
- BrÄ«vi modificÄt saskarni darbplÅ«smÄm un klienta vajadzÄ«bÄm.
- Palieliniet lietojamību ar tīru un saprotamu dizainu.
Un mÄs sÄkÄm attÄ«stÄ«bu.
Jauna paneļu arhitektūra
Mums ir paÅ”pietiekama izstrÄdes komanda, tÄpÄc paneli rakstÄ«jÄm paÅ”i.
Galveno darbu veica trÄ«s inženieri - tehniskais direktors Sergejs izdomÄja arhitektÅ«ru un uzrakstÄ«ja servera aÄ£entu, Aleksejs veica rÄÄ·inus, bet front-end montÄja mÅ«su front-enderis ArtiÅ”s.
1. darbība: servera aģents
Servera aÄ£ents ir python tÄ«mekļa serveris, kas pÄrvalda bibliotÄku
AÄ£ents pÄrvalda visus servera pakalpojumus: izveido, aptur, dzÄÅ” vd, instalÄ operÄtÄjsistÄmas, maina parametrus utt., izmantojot libvirt bibliotÄku. Raksta publicÄÅ”anas brÄ«dÄ« tÄs ir vairÄk nekÄ Äetrdesmit dažÄdas funkcijas, kuras papildinÄm atkarÄ«bÄ no uzdevuma un klienta vajadzÄ«bÄm.
TeorÄtiski libvirt varÄtu kontrolÄt tieÅ”i no norÄÄ·iniem, taÄu tas prasÄ«ja pÄrÄk daudz papildu koda, un mÄs nolÄmÄm nodalÄ«t Ŕīs funkcijas starp aÄ£entu un norÄÄ·iniem ā norÄÄ·ini vienkÄrÅ”i veic pieprasÄ«jumus aÄ£entam, izmantojot JSON API.
AÄ£ents ir pirmais, ko darÄ«jÄm, jo āātam nebija nepiecieÅ”ama saskarne un to bija iespÄjams pÄrbaudÄ«t tieÅ”i no servera konsoles.
Ko mums sniedza servera aÄ£ents: ir parÄdÄ«jies slÄnis, kas vienkÄrÅ”o dzÄ«vi ikvienam - rÄÄ·inÄ nav jÄsÅ«ta vesela kaudze komandu, bet tikai jÄveic pieprasÄ«jums. Un aÄ£ents darÄ«s visu nepiecieÅ”amo: piemÄram, pieŔķirs vietu diskÄ un RAM.
2. darbÄ«ba. NorÄÄ·ini
MÅ«su izstrÄdÄtÄjam Aleksam Å”is nebija pirmais vadÄ«bas panelis ā Alekss jau ilgu laiku nodarbojas ar hostingu, tÄpÄc kopumÄ saprata, kas vajadzÄ«gs klientam un kas vajadzÄ«gs hosteram.
MÄs savÄ starpÄ norÄÄ·inus saucam par āvadÄ«bas paneliā: tajÄ ir ne tikai nauda un pakalpojumi, bet arÄ« to vadÄ«ba, klientu atbalsts un daudz kas cits.
Lai pÄrietu no ISPSystem programmatÅ«ras, klientiem bija pilnÄ«bÄ jÄsaglabÄ iepriekÅ”ÄjÄ funkcionalitÄte, jÄpÄrnes visas lietotÄju finansiÄlÄs darbÄ«bas no vecÄ norÄÄ·inu uz jauno, kÄ arÄ« visi pakalpojumi un savienojumi starp tiem. MÄs pÄtÄ«jÄm, kas ir paÅ”reizÄjÄ produktÄ, pÄc tam konkurentu risinÄjumus, galvenokÄrt DO un Vultr. MÄs apskatÄ«jÄm trÅ«kumus un priekÅ”rocÄ«bas, apkopojÄm atsauksmes no cilvÄkiem, kuri strÄdÄja ar veciem produktiem no ISPsystem.
JaunajÄ norÄÄ·inu sistÄmÄ tika izmantoti divi steki: klasiskais PHP, MySQL (un nÄkotnÄ plÄnots pÄriet uz PostgreSQL), Yii2 kÄ ietvars aizmugurÄ un VueJS priekÅ”pusÄ. Stacki darbojas neatkarÄ«gi viens no otra, tos izstrÄdÄ dažÄdi cilvÄki, un tie sazinÄs, izmantojot JSON API. AttÄ«stÄ«bai toreiz un tagad mÄs izmantojam
Panelis ir veidots uz modulÄra pamata: maksÄjumu sistÄmas moduļi, domÄna reÄ£istratora modulis vai, piemÄram, SSL sertifikÄta modulis. Varat viegli pievienot jaunu lÄ«dzekli vai noÅemt veco. Pamats paplaÅ”inÄÅ”anai tiek likts arhitektoniski, tostarp pretÄjÄ virzienÄ, āpret aparatÅ«ruā.
Ko mÄs saÅÄmÄm: vadÄ«bas panelis, kuru mÄs pilnÄ«bÄ kontrolÄjam. Tagad kļūdas tiek novÄrstas stundÄs, nevis nedÄļÄs, un jaunas funkcijas tiek ieviestas pÄc klientu pieprasÄ«juma, nevis pÄc ISPSystem pieprasÄ«juma.
3. darbība Interfeiss
Interfeiss ir mūsu komandas ideja.
PirmkÄrt, mÄs apskatÄ«jÄm, kas notiktu, ja mÄs izveidotu papildinÄjumu, izmantojot ISPsystem API, bÅ«tiski nemainot neko saskarnÄ. SanÄca tÄ, un mÄs nolÄmÄm darÄ«t visu no nulles.
MÄs uzskatÄ«jÄm, ka galvenais ir izveidot interfeisu loÄ£isku, ar tÄ«ru un minimÄlistisku dizainu, un tad mÄs iegÅ«sim skaistu paneli. MegaplanÄ tika apspriesta elementu atraÅ”anÄs vieta, un pamazÄm radÄ«sies saskarne, ko lietotÄji tagad redz vadÄ«bas panelÄ«.
Pirmais parÄdÄ«jÄs norÄÄ·inu lapas dizains, jo esam jau izveidojuÅ”i maksÄjumu spraudÅus ISPsystem.
Frontend
ViÅi nolÄma paneli padarÄ«t par SPA aplikÄciju - maz resursu un ar Ätru datu ielÄdi. MÅ«su priekÅ”galÄ ArtiÅ”s nolÄma to uzrakstÄ«t vietnÄ Vue ā tajÄ laikÄ Vue tikko parÄdÄ«jÄs. MÄs pieÅÄmÄm, ka ietvars attÄ«stÄ«sies dinamiski, tÄpat kÄ React, pÄc kÄda laika Vue kopiena pieaugs un parÄdÄ«sies bibliotÄku jÅ«ra. MÄs derÄjÄm uz Vue un nenožÄlojÄm - tagad ir nepiecieÅ”ams maz laika, lai priekÅ”pusÄ pievienotu jaunas funkcijas, kas jau ir ieprogrammÄtas aizmugurÄ. VairÄk par priekÅ”Äjo paneli pastÄstÄ«sim atseviÅ”Ä·Ä rakstÄ.
PriekŔgala savienoŔana ar aizmuguri
PriekÅ”gals tika savienots ar aizmuguri, izmantojot push paziÅojumus. Man bija smagi jÄstrÄdÄ un jÄraksta savs hendlers, taÄu tagad informÄcija lapÄ tiek atjauninÄta gandrÄ«z acumirklÄ«.
Kas notika: Paneļa saskarne ir kļuvusi vienkÄrÅ”Äka. MÄs to padarÄ«jÄm adaptÄ«vu, un Ätra ielÄde ļauj to izmantot pat no mobilajiem tÄlruÅiem pÄdÄjÄs minÅ«tÄs pirms pacelÅ”anÄs, neinstalÄjot atseviŔķu aplikÄciju darbam ar paneli.
Solis 4. TestÄÅ”anas un migrÄcijas shÄma
Kad viss sÄkÄs un pirmie testi izturÄja, radÄs jautÄjums par migrÄciju. PirmkÄrt, mÄs uzstÄdÄ«jÄm norÄÄ·inus un sÄkÄm pÄrbaudÄ«t tÄ darbÄ«bu ar servera aÄ£entu.
PÄc tam mÄs uzrakstÄ«jÄm vienkÄrÅ”u skriptu, kas pÄrsÅ«ta datu bÄzi no vecÄ norÄÄ·inu uz jauno.
Man bija jÄpÄrbauda un jÄpÄrbauda burtiski viss, jo dati tika apvienoti vienÄ jaunÄ datu bÄzÄ no trim vecajÄm: Billmanager, VMmanager un pÄrvaldnieka IPmanager. IespÄjams, testa migrÄcijas ir vissarežģītÄkÄ lieta, ar ko mÄs saskÄrÄmies jauna paneļa izstrÄdes procesÄ.
PÄc atkÄrtotas pÄrbaudes mÄs slÄdzÄm veco norÄÄ·inu. GalÄ«gÄ datu migrÄcija bija ļoti satraucoÅ”s brÄ«dis, taÄu, paldies Dievam, tÄ tika pabeigta dažu minÅ«Å”u laikÄ un bez manÄmÄm problÄmÄm. Bija nelielas kļūdas, kuras mÄs izlabojÄm nedÄļas laikÄ. LielÄko daļu laika pavadÄ«ja, pÄrbaudot notikuÅ”o.
PÄc tam mÄs nosÅ«tÄ«jÄm klientiem vÄstules ar jaunÄ paneļa adresi un norÄÄ·iniem un veicÄm novirzÄ«Å”anu.
RezumÄjot: TAS IR DZÄŖVS!
Laimīgas beigas
Jau no pirmajÄm mÅ«su programmatÅ«ras darba stundÄm mÄs jutÄm visus pÄrejas priekus. Kods bija pilnÄ«bÄ mÅ«su un ar Ärtu arhitektÅ«ru, un interfeiss bija tÄ«rs un loÄ£isks.
PirmÄ pÄrskatÄ«Å”ana pÄc jaunÄ paneļa palaiÅ”anas
PÄrejas procesu uzsÄkÄm decembrÄ«, JaunÄ 2017. gada priekÅ”vakarÄ, kad slodze bija vismazÄkÄ, lai klientiem atvieglotu pÄreju - svÄtku priekÅ”vakarÄ gandrÄ«z neviens nestrÄdÄ.
Galvenais, ko ieguvÄm, pÄrejot uz mÅ«su sistÄmu (izÅemot vispÄrÄjo uzticamÄ«bu un ÄrtÄ«bas), ir iespÄja Ätri pievienot funkcionalitÄti galvenajiem klientiem - bÅ«t viÅu sejai, nevis dupsim.
Ko tÄlÄk?
MÄs augam, pieaug datu apjoms, klienti, klientu dati. Man aizmugursistÄmai bija jÄpievieno Memcached serveris un divi rindu pÄrvaldnieki ar dažÄdiem uzdevumiem. PriekÅ”galam ir keÅ”atmiÅa un savas rindas.
Protams, mums joprojÄm bija piedzÄ«vojumi, jo produkts attÄ«stÄ«jÄs un kļuva sarežģītÄks, piemÄram, pievienojot HighLoad.
NÄkamajÄ rakstÄ mÄs jums pastÄstÄ«sim, kÄ tika palaists Hi-CPU tarifs: par aparatÅ«ru, programmatÅ«ru, kÄdus uzdevumus mÄs atrisinÄjÄm un ko darÄ«jÄm.
Avots: www.habr.com