ISP жүйесі, кешіріңіз және қош болыңыз! Неліктен және қалай біз сервердің басқару тақтасын жаздык

ISP жүйесі, кешіріңіз және қош болыңыз! Неліктен және қалай біз сервердің басқару тақтасын жаздык

Сәлеметсіз бе! Біз «Хостинг технологиялары» және 5 жыл бұрын іске қостық VDSina — әзірлеушілер үшін арнайы жасалған бірінші vds хостинг. Біз оны DigitalOcean сияқты ыңғайлы етуге тырысамыз, бірақ ресейлік қолдау, төлем әдістері және Ресейдегі серверлер. Бірақ DigitalOcean - бұл сенімділік пен баға ғана емес, ол да қызмет.

ISPsystem бағдарламалық жасақтамасы керемет қызмет көрсету жолында қолымызды байлаған арқан болып шықты. Үш жыл бұрын біз Billmanager биллингін және VMmanager серверінің басқару панелін қолдандық және жеке басқару панелінсіз жақсы қызмет көрсету мүмкін емес екенін тез түсіндік.

ISP жүйесі ыңғайлылықты қалай жойды

Қателер

Қатені өзіміз түзете алмадық – әр жолы басқа біреудің қолдауына хат жазып, күтуге тура келді. Кез келген мәселені шешу үшін үшінші тарап компаниясының жауабы қажет болды.

ISP жүйесін қолдауы қалыпты түрде жауап берді, бірақ түзетулер тек бірнеше шығарылымнан кейін ғана келді, содан кейін әрқашан емес, барлығы емес. Кейде сыни қателер бірнеше апта бойы түзетілді. Біз тұтынушыларды тыныштандыруға, кешірім сұрауға және ISP жүйесінің қатені түзетуін күтуге тура келді.

Тоқтау қаупі

Жаңартулар жаңа қателерді тудыратын күтпеген тоқтауларды тудыруы мүмкін.

Әрбір жаңарту лотерея болды: мен шот-фактураны жасырып, жаңарту құдайларына құрбандық шалуым керек болды - бірнеше рет жаңарту 10-15 минут бойы тоқтап қалуды тудырды. Бұл уақытта біздің әкімшілеріміз қарап отырды - біз үзіліс қанша уақытқа созылатынын ешқашан білмедік және ISP жүйесі жаңа жаңартуды қашан шығаруға шешім қабылдайтынын болжай алмадық.

Бесінші ұрпақта Billmanager жақсарды, бірақ қажетті мүмкіндіктерге қол жеткізу үшін апта сайын жаңартылып тұратын бета нұсқасын орнатуға тура келді. Егер бірдеңе бұзылса, мен басқа әзірлеушілерге бірдеңені түзете алатындай рұқсат беруім керек еді.

Ыңғайсыз панель интерфейсі

Барлығы әртүрлі панельдерге бөлініп, әр жерден басқарылды. Мысалы, тұтынушылар Billmanager арқылы төледі және олар VMManager жүйесінде VDS-ті қайта жүктеуге немесе қайта орнатуға мәжбүр болды. Біздің қызметкерлерге клиентке көмектесу, оның серверіндегі жүктемені тексеру немесе оның қандай ОЖ қолданып жатқанын көру үшін терезелер арасында ауысуға тура келді.

Мұндай интерфейс уақытты қажет етеді - біздің де, біздің клиенттеріміз де. Мұндай жағдайда DigitalOcean сияқты ыңғайлылық туралы сөз жоқ.

API жиі жаңартулары бар қысқа өмірлік циклдар

Біз өз плагиндерімізді жаздық - мысалы, VMManager қолданбасында жоқ қосымша төлем әдістері бар плагин.

Соңғы жылдары VMManager салыстырмалы түрде қысқа өмірлік циклге ие болды және жаңа нұсқаларда API ішіндегі айнымалылардың немесе функциялардың атаулары ерікті түрде өзгеруі мүмкін - бұл біздің плагиндерімізді бұзды. Ескі нұсқаларды қолдау тез арада тоқтатылды және оны жаңарту қажет болды.

Өзгерту мүмкін емес

Дәлірек айтқанда, бұл мүмкін, бірақ өте тиімсіз. Лицензия шектеулері бастапқы кодқа өзгертулер енгізуге мүмкіндік бермейді, сіз тек плагиндерді жаза аласыз. Максималды плагиндер - кейбір мәзір элементтері, қадамдық шебер. ISP жүйесі әмбебаптыққа арналған, бірақ бізге арнайы шешімдер қажет болды.

Сондықтан өзімнің панельімді жазуға шешім қабылданды. Біз мақсаттар қойдық:

  • Қателерге, қателерге жылдам жауап беріңіз және клиентті күтпей-ақ оларды өзіңіз түзете аласыз.
  • Жұмыс процестері мен клиент қажеттіліктері үшін интерфейсті еркін өзгертіңіз.
  • Таза және түсінікті дизайнмен пайдалану мүмкіндігін арттырыңыз.

Ал біз дамуды бастадық.

Жаңа панель архитектурасы

Бізде өзін-өзі қамтамасыз ететін даму тобы бар, сондықтан панельді өзіміз жаздық.
Негізгі жұмысты үш инженер атқарды - техникалық директор Сергей архитектурасын ойлап, сервер агентін жазды, Алексей есепшотты жасады, ал фронтонды біздің фронт-эндер Артыш құрастырды.

1-қадам: Сервер агенті

Сервер агенті кітапхананы басқаратын python веб-сервері libvirt, ол өз кезегінде басқарады Qemu-kvm гипервизоры.

Агент сервердегі барлық қызметтерді басқарады: libvirt кітапханасы арқылы vds жасау, тоқтату, жою, операциялық жүйелерді орнату, параметрлерді өзгерту және т.б. Мақала жарияланған кезде бұл қырықтан астам әртүрлі функциялар, біз оларды тапсырма мен клиенттің қажеттіліктеріне байланысты толықтырамыз.

Теориялық тұрғыдан, libvirt-ті шот ұсыну арқылы тікелей басқаруға болады, бірақ бұл тым көп қосымша кодты қажет етті және біз бұл функцияларды агент пен есепшот арасында бөлуді шештік – есепшот JSON API арқылы агентке сұраулар жасайды.

Агент - біз жасаған бірінші нәрсе, өйткені ол ешқандай интерфейсті қажет етпеді және оны сервер консолінен тікелей тексеруге болады.

Сервер агенті бізге не берді: барлығының өмірін жеңілдететін қабат пайда болды - шот ұсыну үшін пәрмендердің барлық жиынтығын жіберудің қажеті жоқ, тек сұрау жасаңыз. Ал агент барлық қажет нәрсені жасайды: мысалы, ол дискілік кеңістік пен жедел жадты бөледі.

2-қадам. Төлем

Біздің әзірлеушіміз Алекс үшін бұл бірінші басқару панелі емес - Алекс ұзақ уақыт бойы хостингте жұмыс істейді, сондықтан ол клиентке не қажет екенін және хосттерге не қажет екенін түсінді.

Біз өз ара есепшотты «басқару тақтасы» деп атаймыз: ол тек ақша мен қызметтерді ғана емес, сонымен қатар оларды басқаруды, тұтынушыларды қолдауды және т.б. қамтиды.

ISPSystem бағдарламалық қамтамасыз етуінен ауысу үшін тұтынушылар үшін бұрынғы функционалдылықты толығымен сақтау, пайдаланушылардың барлық қаржылық әрекеттерін ескі есепшоттан жаңасына, сондай-ақ олардың арасындағы барлық қызметтер мен байланыстарды ауыстыру қажет болды. Біз қазіргі өнімде не бар екенін, содан кейін бәсекелестердің, негізінен DO және Vultr шешімдерін зерттедік. Біз кемшіліктер мен артықшылықтарды қарастырдық, ISPsystem ескі өнімдерімен жұмыс істеген адамдардан пікірлер жинадық.

Жаңа есепшот екі стекті пайдаланды: классикалық PHP, MySQL (және болашақта PostgreSQL-ке ауысу жоспарлануда), серверлік жүйе ретінде Yii2 және алдыңғы жағында VueJS. Стектер бір-бірінен тәуелсіз жұмыс істейді, әртүрлі адамдар әзірлейді және JSON API арқылы байланысады. Даму үшін сол кезде де, қазір де қолданамыз PHPStorm и веб-дауыл JetBrains-тен және оларды қатты жақсы көремін (эй, балалар!)

Панель модульдік негізде құрастырылған: төлем жүйесінің модульдері, домен тіркеушісі модулі немесе, мысалы, SSL сертификатының модулі. Жаңа мүмкіндікті оңай қосуға немесе ескісін жоюға болады. Кеңейтудің негізі архитектуралық түрде, оның ішінде қарама-қарсы бағытта «аппараттық құралдарға қарай» қаланған.
ISP жүйесі, кешіріңіз және қош болыңыз! Неліктен және қалай біз сервердің басқару тақтасын жаздык
Біз не алдық: біз толық басқаратын басқару тақтасы. Енді қателер апталарда емес, сағаттарда түзетіледі және жаңа мүмкіндіктер ISPSжүйесінің сұрауы бойынша емес, тұтынушылардың сұрауы бойынша жүзеге асырылады.

3-қадам Интерфейс

ISP жүйесі, кешіріңіз және қош болыңыз! Неліктен және қалай біз сервердің басқару тақтасын жаздык
Интерфейс - бұл біздің команданың ойы.

Біріншіден, интерфейсте ештеңені түбегейлі өзгертпестен ISPsystem API арқылы қосымша жасасақ не болатынын қарастырдық. Бұл солай болды және біз бәрін нөлден жасауды шештік.

Біз ең бастысы интерфейсті логикалық, таза және минималистік дизайнмен жасау деп сендік, содан кейін әдемі панель аламыз. Элементтердің орналасуы Megaplan бағдарламасында талқыланды және пайдаланушылар басқару тақтасында көретін интерфейс бірте-бірте пайда болады.

Төлем бетінің дизайны бірінші болып пайда болды, өйткені біз ISPsystem үшін төлем плагиндерін жасап қойғанбыз.

Алғы жақ

Олар панельді SPA қолданбасына айналдыруды ұйғарды - ресурстарға қарапайым және деректерді жылдам жүктеу. Біздің майдангер Артыш оны Vue сайтында жазуды ұйғарды — ол кезде Ву жаңа ғана пайда болған еді. Біз құрылым React сияқты динамикалық түрде дамиды деп ойладық, біраз уақыттан кейін Vue қауымдастығы өсіп, кітапханалар теңізі пайда болады. Біз Vue-ге бәс тіктік және өкінбедік - енді артқы жағында бағдарламаланған жаңа функцияларды фронтқа қосу үшін аз уақыт қажет. Біз сізге жеке мақалада алдыңғы панель туралы көбірек айтып береміз.

Фронтты серверге қосу

Фронт серверге push хабарландырулары арқылы қосылды. Мен көп жұмыс істеуге және өз өңдеушімді жазуға тура келді, бірақ қазір беттегі ақпарат бірден дерлік жаңартылады.

Не болып қалды: Панель интерфейсі қарапайым болды. Біз оны бейімделгіш етіп жасадық, ал жылдам жүктеу оны ұшу алдындағы соңғы минуттарда, панельмен жұмыс істеу үшін бөлек қолданбаны орнатпай-ақ ұялы телефондардан пайдалануға мүмкіндік береді.

Қадам 4. Тестілеу және көшіру схемасы

Барлығы іске қосылып, алғашқы сынақтардан өткенде көші-қон мәселесі туындады. Біріншіден, біз биллингті орнаттық және оның жұмысын сервер агентімен тексеруді бастадық.

Содан кейін біз дерекқорды ескі есепшоттан жаңасына ауыстыратын қарапайым сценарий жаздық.

Деректер үш ескі дерекқордан: Billmanager, VMmanager және IPmanager менеджерінен бір жаңа дерекқорға біріктірілгендіктен, барлығын сынап, қайта тексеруге тура келді. Мүмкін, сынақ көші-қоны жаңа панельді әзірлеу барысында кездескен ең қиын нәрсе болуы мүмкін.

Қайта тексергеннен кейін біз ескі есепшотты жаптық. Соңғы деректерді көшіру өте қиын сәт болды, бірақ, Құдайға шүкір, ол бірнеше минут ішінде және айтарлықтай проблемаларсыз аяқталды. Апта ішінде біз түзететін шағын қателер болды. Уақыттың көп бөлігі не болғанын тексеруге жұмсалды.

Содан кейін біз клиенттерге жаңа панельдің мекен-жайы мен есепшоты бар хаттар жіберіп, қайта бағыттауды жасадық.

Нәтижесінде: БҰЛ ТІРІ!

Бақытты аяқталу

Біздің бағдарламалық жасақтама жұмысының алғашқы сағаттарынан бастап біз өтпелі кезеңнің барлық ләззаттарын сезіндік. Код толығымен біздікі және ыңғайлы архитектурасы болды, ал интерфейс таза және логикалық болды.
ISP жүйесі, кешіріңіз және қош болыңыз! Неліктен және қалай біз сервердің басқару тақтасын жаздык
Жаңа панельді іске қосқаннан кейінгі бірінші шолу

Біз өтпелі үдерісті желтоқсанда, 2017 жылғы Жаңа жыл қарсаңында, ең аз жүктеме болған кезде, тұтынушыларға көшуді жеңілдету үшін бастадық - мерекелер қарсаңында ешкім жұмыс істемейді.

Біздің жүйеге ауысқан кезде алған ең бастысы (жалпы сенімділік пен ыңғайлылықтан басқа) негізгі тұтынушылар үшін функционалдылықты жылдам қосу мүмкіндігі - олардың есек емес, бет-бейнесі болу.

Ары қарай не?

Біз өсіп жатырмыз, деректер көлемі, тұтынушылар, тұтынушы деректері өсуде. Мен серверге Memcached серверін және әртүрлі тапсырмалары бар екі кезек менеджерін қосуға тура келді. Фронттың кэштеу және өз кезектері бар.

Әрине, бізде әлі де шытырман оқиғалар болды, өйткені өнім дамып, күрделене түсті, мысалы, HighLoad қосқан кезде.

Келесі мақалада біз Hi-CPU тарифі қалай іске қосылғанын айтамыз: аппараттық, бағдарламалық қамтамасыз ету, біз қандай тапсырмаларды шештік және не істедік.

Ақпарат көзі: www.habr.com

пікір қалдыру