ISP sistemi, bağışlayın və əlvida! Server idarəetmə panelimizi niyə və necə yazdıq

ISP sistemi, bağışlayın və əlvida! Server idarəetmə panelimizi niyə və necə yazdıq

Salam! Biz "Hostinq Texnologiyaları"yıq və 5 il əvvəl fəaliyyətə başlamışıq VDSina — xüsusi olaraq tərtibatçılar üçün yaradılmış ilk vds hosting. Biz onu DigitalOcean kimi rahat etməyə çalışırıq, lakin Rusiya dəstəyi, ödəniş üsulları və Rusiyadakı serverləri ilə. Lakin DigitalOcean təkcə etibarlılıq və qiymət deyil, həm də xidmətdir.

ISPsystem-in proqram təminatı sərin bir xidmətə gedən yolda əllərimizi bağlayan bir ip oldu. Üç il əvvəl biz Billmanager billing və VMmanager server idarəetmə panelindən istifadə etdik və tez başa düşdük ki, öz idarəetmə panelimiz olmadan yaxşı xidmət göstərmək demək olar ki, mümkün deyil.

ISP sistemi rahatlığı necə öldürdü

Bugs

Biz özümüz səhvi düzəldə bilmədik - hər dəfə başqasının dəstəyinə yazıb gözləməli olduq. İstənilən problemin həlli üçüncü tərəf şirkətin cavabını tələb edirdi.

ISPsystem dəstəyi normal cavab verdi, lakin düzəlişlər yalnız bir neçə buraxılışdan sonra gəldi, sonra həmişə deyil və hamısı deyil. Bəzən kritik səhvlər bir neçə həftə ərzində düzəldilirdi. Biz müştəriləri sakitləşdirməli, üzr istəməli və ISP sisteminin səhvi düzəltməsini gözləməli olduq.

İşdən çıxma təhlükəsi

Yeniləmələr yeni səhvlərə səbəb olan gözlənilməz fasilələr yarada bilər.

Hər bir yeniləmə lotereya idi: hesablaşmaları ört-basdır etməli və yeniləmələr tanrılarına qurban verməli oldum - bir neçə dəfə yeniləmə 10-15 dəqiqə dayanmağa səbəb oldu. Bu zaman adminlərimiz gözlərinin önündə oturmuşdular - biz fasilələrin nə qədər davam edəcəyini heç bilmirdik və ISP sisteminin nə vaxt yeni yeniləmə buraxmağa qərar verəcəyini təxmin edə bilmirdik.

Beşinci nəsildə Billmanager yaxşılaşdı, lakin lazımi xüsusiyyətlərə giriş əldə etmək üçün hər həftə yenilənən bir beta quraşdırmalı oldum. Əgər bir şey xarab olarsa, mən digər tərtibatçılara giriş imkanı verməli idim ki, nəyisə düzəldə bilsinlər.

Əlverişsiz panel interfeysi

Hər şey müxtəlif panellərə bölünür və müxtəlif yerlərdən idarə olunurdu. Məsələn, müştərilər Billmanager vasitəsilə ödəniş etdilər və VMManager-də VDS-ni yenidən başlatmalı və ya yenidən quraşdırmalı oldular. Əməkdaşlarımız həmçinin müştəriyə kömək etmək, onun serverindəki yükü yoxlamaq və ya onun hansı ƏS-dən istifadə etdiyini görmək üçün pəncərələr arasında keçid etməli olublar.

Belə bir interfeys vaxt tələb edir - həm bizim, həm də müştərilərimizin. Belə bir vəziyyətdə DigitalOcean kimi hər hansı bir rahatlıqdan söhbət gedə bilməz.

Tez-tez API yeniləmələri ilə qısa ömür dövrləri

Biz öz plaginlərimizi yazdıq - məsələn, VMManager-də olmayan əlavə ödəniş üsulları olan bir plagin.

Son illərdə VMManager nisbətən qısa bir həyat dövrünə malik idi və yeni versiyalarda API-də dəyişənlərin və ya funksiyaların adları özbaşına dəyişə bilərdi - bu, bizim plaginlərimizi pozdu. Köhnə versiyalar üçün dəstək tez bir zamanda dayandırıldı və yenilənməli oldu.

Dəyişdirilə bilməz

Daha doğrusu, mümkündür, lakin son dərəcə səmərəsizdir. Lisenziya məhdudiyyətləri mənbə kodunda dəyişiklik etməyə imkan vermir, yalnız plaginlər yaza bilərsiniz. Maksimum plaginlər - bəzi menyu elementləri, addım-addım sehrbazdır. ISPsystem çox yönlülük üçün nəzərdə tutulmuşdur, lakin bizə xüsusi həllər lazım idi.

Buna görə də öz panelimi yazmaq qərarım yetişdi. Qarşımıza məqsədlər qoymuşuq:

  • Səhvlərə, səhvlərə tez cavab verin və müştərini gözləmədən özünüz düzəldə bilərsiniz.
  • İş axını və müştəri ehtiyacları üçün interfeysi sərbəst şəkildə dəyişdirin.
  • Təmiz və başa düşülən dizaynla istifadə qabiliyyətini artırın.

Və inkişafa başladıq.

Yeni Panel Memarlığı

Özünü təmin edən inkişaf komandamız var, ona görə də paneli özümüz yazdıq.
Əsas işi üç mühəndis yerinə yetirdi - texniki direktor Sergey arxitektura ilə gəldi və server agentini yazdı, Aleksey hesablaşmanı etdi, ön tərəfi isə bizim cəbhəçimiz Artış yığdı.

Addım 1: Server Agent

Server agenti kitabxananı idarə edən python veb serveridir libvirt, bu da öz növbəsində idarə edir Qemu-kvm hipervizoru.

Agent serverdəki bütün xidmətləri idarə edir: libvirt kitabxanası vasitəsilə vd-lərin yaradılması, dayandırılması, silinməsi, əməliyyat sistemlərinin quraşdırılması, parametrlərin dəyişdirilməsi və s. Məqalənin dərci zamanı bunlar müştərinin tapşırığından və ehtiyaclarından asılı olaraq əlavə etdiyimiz qırxdan çox müxtəlif funksiyalardır.

Nəzəri olaraq, libvirt billinqdən birbaşa idarə oluna bilərdi, lakin bu, həddən artıq əlavə kod tələb etdi və biz bu funksiyaları agent və billinq arasında ayırmaq qərarına gəldik - faktura sadəcə JSON API vasitəsilə agentə sorğular göndərir.

Agent bizim etdiyimiz ilk işdir, çünki o, heç bir interfeys tələb etmirdi və onu birbaşa server konsolundan yoxlamaq mümkün idi.

Server agenti bizə nə verdi: hər kəs üçün həyatı asanlaşdıran bir təbəqə meydana çıxdı - hesab-fakturaya bütün komandalar göndərmək lazım deyil, yalnız sorğu göndərmək lazımdır. Və agent lazım olan hər şeyi edəcək: məsələn, disk sahəsi və RAM ayıracaq.

Addım 2. Ödəniş

Tərtibatçımız Aleks üçün bu, ilk idarəetmə paneli deyildi - Aleks uzun müddətdir hostinqdə işləyir, ona görə də o, ümumiyyətlə müştərinin nəyə ehtiyacı olduğunu və hosterin nəyə ehtiyacı olduğunu başa düşürdü.

Biz öz aramızda hesablaşmanı “idarəetmə paneli” adlandırırıq: o, təkcə pul və xidmətlər deyil, həm də onların idarə edilməsi, müştəri dəstəyi və s.

ISPSystem proqram təminatından keçmək üçün müştərilər üçün əvvəlki funksionallığı tam qorumaq, istifadəçilərin bütün maliyyə hərəkətlərini köhnə hesablaşmadan yenisinə, eləcə də bütün xidmətlər və onlar arasındakı əlaqələri köçürmək lazım idi. Mövcud məhsulda nə olduğunu, daha sonra rəqiblərin, əsasən DO və Vultr-un həllərini öyrəndik. Mənfi cəhətlərə və üstünlüklərə baxdıq, ISPsystem-dən köhnə məhsullarla işləyən insanlardan rəy topladıq.

Yeni hesablaşmada iki yığın istifadə edilib: klassik PHP, MySQL (və gələcəkdə PostgreSQL-ə keçmək planlaşdırılır), arxa tərəfdə çərçivə kimi Yii2 və ön tərəfdə VueJS. Yığınlar bir-birindən müstəqil işləyir, müxtəlif insanlar tərəfindən hazırlanır və JSON API-dən istifadə edərək ünsiyyət qurur. İnkişaf üçün o vaxt və indi istifadə edirik PHPStorm и veb fırtınası JetBrains-dən və onları çox sevirəm (hey uşaqlar!)

Panel modul əsasda hazırlanmışdır: ödəniş sistemi modulları, domen qeydiyyatı modulu və ya, məsələn, SSL sertifikat modulu. Siz asanlıqla yeni funksiya əlavə edə və ya köhnəsini silə bilərsiniz. Genişlənmə üçün əsas memarlıq olaraq, o cümlədən əks istiqamətdə, “texniki qurğuya doğru” qoyulur.
ISP sistemi, bağışlayın və əlvida! Server idarəetmə panelimizi niyə və necə yazdıq
Nə əldə etdik: üzərində tam nəzarət etdiyimiz idarəetmə paneli. İndi səhvlər həftələrlə deyil, saatlarla düzəldilir və yeni funksiyalar ISPSystem-in tələbi ilə deyil, müştərilərin istəyi ilə həyata keçirilir.

Addım 3 İnterfeys

ISP sistemi, bağışlayın və əlvida! Server idarəetmə panelimizi niyə və necə yazdıq
İnterfeys bizim komandanın ideyasıdır.

Əvvəlcə interfeysdə heç nəyi əsaslı şəkildə dəyişmədən ISPsystem API üzərində əlavə etsəydik nə baş verəcəyini nəzərdən keçirdik. Belə çıxdı və biz hər şeyi sıfırdan etməyə qərar verdik.

İnanırdıq ki, əsas odur ki, interfeysi məntiqli, təmiz və minimalist dizaynla edək, sonra gözəl panel əldə edəcəyik. Elementlərin yeri Megaplan-da müzakirə edildi və indi istifadəçilərin idarəetmə panelində gördükləri interfeys tədricən doğulacaq.

Faktura səhifəsinin dizaynı ilk olaraq göründü, çünki biz artıq ISPsystem üçün ödəniş plaginləri hazırlamışıq.

Frontend

Onlar paneli SPA proqramı etmək qərarına gəldilər - resurslara tələbkar olmayan və məlumatların sürətli yüklənməsi. Ön tərəfdarımız Artysh bunu Vue-da yazmağa qərar verdi - o vaxt Vue yenicə peyda olmuşdu. Güman edirdik ki, çərçivə React kimi dinamik şəkildə inkişaf edəcək, bir müddət sonra Vue icması böyüyəcək və kitabxanalar dənizi yaranacaq. Biz Vue-yə mərc etdik və peşman olmadıq - indi arxa tərəfdə artıq proqramlaşdırılmış yeni funksiyaları cəbhəyə əlavə etmək üçün az vaxt lazımdır. Ön panel haqqında sizə ayrı bir məqalədə ətraflı məlumat verəcəyik.

Frontendin arxa tərəfə qoşulması

Frontend push bildirişləri vasitəsilə arxa hissəyə qoşuldu. Çox işləməli və öz işləyicimi yazmalı idim, amma indi səhifədəki məlumatlar demək olar ki, dərhal yenilənir.

Nə olub: Panel interfeysi sadələşdi. Biz onu uyğunlaşdırdıq və sürətli yükləmə, panellə işləmək üçün ayrıca proqram quraşdırmadan, havaya qalxmazdan əvvəl son dəqiqələrdə hətta mobil telefonlardan istifadə etməyə imkan verir.

Addım 4. Test və miqrasiya sxemi

Hər şey işə başlayanda və ilk sınaqlardan keçəndə miqrasiya məsələsi ortaya çıxdı. İlk növbədə billinq quraşdırdıq və server agenti ilə onun işini sınaqdan keçirməyə başladıq.

Sonra verilənlər bazasını köhnə hesablaşmadan yenisinə köçürən sadə bir skript yazdıq.

Mən sözün həqiqi mənasında hər şeyi sınamalı və yenidən yoxlamalı oldum, çünki məlumatlar üç köhnə verilənlər bazasından yeni bir verilənlər bazasına birləşdirildi: Billmanager, VMmanager və menecerin IPmanager. Bəlkə də test köçürmələri yeni panelin hazırlanması prosesində qarşılaşdığımız ən çətin şeydir.

Yenidən yoxladıqdan sonra köhnə hesabı bağladıq. Son məlumat köçürməsi çox narahatedici bir an idi, lakin Allaha şükür, bir neçə dəqiqə ərzində və nəzərəçarpacaq problemlər olmadan tamamlandı. Həftə ərzində düzəltdiyimiz kiçik səhvlər var idi. Çox vaxt baş verənləri sınamağa sərf olunurdu.

Sonra müştərilərə yeni panelin ünvanı və faktura ilə məktublar göndərdik və yönləndirmə etdik.

Xülasə: O CANLIDIR!

Xoşbəxt sonluq

Proqram təminatımızın işlədiyi ilk saatlardan biz keçidin bütün ləzzətlərini hiss etdik. Kod tamamilə bizimdi və rahat arxitekturaya malik idi və interfeys təmiz və məntiqli idi.
ISP sistemi, bağışlayın və əlvida! Server idarəetmə panelimizi niyə və necə yazdıq
Yeni panel işə salındıqdan sonra ilk baxış

Keçid prosesinə dekabr ayında, yükün ən az olduğu 2017-ci ilin Yeni ili ərəfəsində başlamışıq ki, müştərilər üçün keçidi asanlaşdırsın - bayramlar ərəfəsində demək olar ki, heç kim işləmir.

Sistemimizə keçərkən əldə etdiyimiz əsas şey (ümumi etibarlılıq və rahatlıqdan başqa) əsas müştərilər üçün tez funksionallıq əlavə etmək bacarığıdır - onların eşşəyi deyil, siması olmaq.

Növbəti nədir?

Biz böyüyürük, məlumatların, müştərilərin, müştəri məlumatlarının miqdarı artır. Memcached server və fərqli tapşırıqları olan iki növbə menecerini arxa plana əlavə etməli oldum. Frontendin keşləmə və öz növbələri var.

Əlbəttə ki, məhsul inkişaf etdikcə və daha mürəkkəbləşdikcə, məsələn, HighLoad əlavə etdikdə hələ də macəralarımız oldu.

Növbəti məqalədə Hi-CPU tarifinin necə işə salındığını sizə xəbər verəcəyik: aparat, proqram təminatı, hansı vəzifələri həll etdiyimiz və nə etdiyimiz haqqında.

Mənbə: www.habr.com

Добавить комментарий