ISP sistēma, piedod un ardievas! Kāpēc un kā mēs rakstījām mūsu servera vadības paneli

ISP sistēma, piedod un ardievas! Kāpēc un kā mēs rakstījām mūsu servera vadības paneli

Sveiki! Mēs esam "Hosting Technologies" un sākam darboties pirms 5 gadiem VDSina ā€” pirmais vds hostings, kas izveidots Ä«paÅ”i izstrādātājiem. Mēs cenÅ”amies to padarÄ«t ērtu, piemēram, DigitalOcean, bet ar Krievijas atbalstu, maksājumu metodēm un serveriem Krievijā. Taču DigitalOcean ir ne tikai uzticamÄ«ba un cena, bet arÄ« pakalpojums.

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 libvirt, kas savukārt regulē Qemu-kvm hipervizors.

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 PHPS vētra Šø tÄ«mekļa vētra no JetBrains un ļoti mÄ«lu viņus (čau, puiÅ”i!)

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ā€.
ISP sistēma, piedod un ardievas! Kāpēc un kā mēs rakstījām mūsu servera vadības paneli
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

ISP sistēma, piedod un ardievas! Kāpēc un kā mēs rakstījām mūsu servera vadības paneli
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.
ISP sistēma, piedod un ardievas! Kāpēc un kā mēs rakstījām mūsu servera vadības paneli
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

Pievieno komentāru