ИСПсистем, опрости и збогом! Зашто и како смо написали наш серверски контролни панел

ИСПсистем, опрости и збогом! Зашто и како смо написали наш серверски контролни панел

Здраво! Ми смо "Хостинг Тецхнологиес" и пре 5 година смо покренули ВДСина — први вдс хостинг креиран посебно за програмере. Трудимо се да буде згодно, као ДигиталОцеан, али са руском подршком, начинима плаћања и серверима у Русији. Али ДигиталОцеан се не односи само на поузданост и цену, већ и на услугу.

Софтвер из ИСПсистем-а се показао као конопац који нам је везао руке на путу до кул услуге. Пре три године користили смо Биллманагер наплату и ВМманагер серверску контролну таблу и брзо смо схватили да је готово немогуће пружити добру услугу без сопственог панела.

Како је ИСПсистем убио удобност

Бубе

Нисмо могли сами да поправимо грешку — сваки пут када смо морали да пишемо туђој подршци и чекамо. Решење било ког проблема захтевало је одговор треће стране компаније.

Подршка ИСПсистема је реаговала нормално, али су поправке стигле тек након неколико издања, и то не увек и не сва. Понекад је било потребно неколико недеља да се поправе критичне грешке. Морали смо да уверимо клијенте, извинимо се и сачекамо да ИСПсистем поправи грешку.

Претња застоја

Ажурирања би могла да генеришу непредвидиве застоје, што је изазвало нове грешке.

Свако ажурирање је било лутрија: морали смо да прикријемо наплату и да се жртвујемо боговима ажурирања - неколико пута је ажурирање изазвало застоје од 10-15 минута. У овом тренутку, наши администратори су постајали сиви пред нашим очима – никада нисмо знали колико ће застој трајати и нисмо могли да предвидимо када ће ИСПсистем одлучити да објави ново ажурирање.

Биллманагер је постао бољи на петој генерацији, али да бих добио приступ неопходним функцијама морао сам да инсталирам бета верзију, која се већ ажурирала сваке недеље. Ако се нешто поквари, морали сте да дате приступ другим програмерима како би они то могли да поправе.

Незгодан интерфејс панела

Све је било подељено на различите панеле и контролисано са различитих места. На пример, клијенти су плаћали преко Биллманагер-а, али су морали да рестартују или поново инсталирају ВДС у ВММанагер-у. Наши запослени су такође морали да прелазе између прозора да би помогли клијенту, проверили оптерећење на свом серверу или видели који ОС користе.

Такав интерфејс одузима време – и нама и нашим клијентима. Нема говора о погодностима као што је ДигиталОцеан у таквој ситуацији.

Кратки животни циклуси са честим ажурирањима АПИ-ја

Написали смо сопствене додатке – на пример, додатак са додатним начинима плаћања који нису доступни у ВММанагеру.

Последњих година, ВММанагер је имао релативно кратак животни циклус, а нове верзије су могле насумично да мењају имена променљивих или функција у АПИ-ју - ово је покварило наше додатке. Подршка за старије верзије је брзо укинута и било је потребно ажурирање.

Не може се мењати

Тачније, могуће је, али крајње неефикасно. Ограничења лиценце вам не дозвољавају да уносите промене у изворни код; можете писати само додатке. Максималан додатак - неки елементи менија, корак по корак чаробњак. ИСПсистем је дизајниран за свестраност, али су нам била потребна специјализована решења.

Дакле, одлука да напишем свој панел је сазрела. Поставили смо циљеве:

  • Брзо реагујте на грешке и грешке и будите у могућности да их сами поправите без да клијент чека.
  • Слободно модификујте интерфејс тако да одговара радним процесима и потребама клијента.
  • Побољшајте употребљивост чистим и јасним дизајном.

И почели смо развој.

Архитектура новог панела

Имамо самодовољан развојни тим, па смо сами написали панел.
Главни посао су обавила три инжењера - технички директор Сергеј је осмислио архитектуру и написао агента сервера, Алексеј је извршио наплату, а фронтенд је саставио наш фронтендер Артиш.

Корак 1: Агент сервера

Агент сервера је Питхон веб сервер који управља библиотеком либвирт, који заузврат контролише хипервизор Кему-квм.

Агент управља свим услугама на серверу: креирањем, заустављањем, брисањем вдс-а, инсталирањем оперативних система, променом параметара и тако даље кроз либвирт библиотеку. У тренутку објављивања овог чланка, ради се о више од четрдесет различитих функција, које додајемо у зависности од задатка и потреба клијента.

У теорији, либвирт-ом би се могло управљати директно из наплате, али је то захтевало превише додатног кода и одлучили смо да поделимо ове функције између агента и наплате – наплата једноставно шаље захтеве агенту преко ЈСОН АПИ-ја.

Агент је био прва ствар коју смо урадили, јер није захтевао никакав интерфејс и могао је да се тестира директно са конзоле сервера.

Шта нам је агент сервера дао: појавио се слој који свима олакшава живот – за наплату није потребно слати читаву гомилу команди, већ само направити захтев. А агент ће учинити све што је потребно: на пример, доделити простор на диску и РАМ.

Корак 2. Наплата

За нашег програмера Алекса, ово није била прва контролна табла - Алекс је дуго био хостинг, тако да је генерално разумео шта је потребно клијенту, а шта хостеру.

Наплату називамо „контролном таблом“: она садржи не само новац и услуге, већ и њихово управљање, корисничку подршку и још много тога.

За прелазак са софтвера ИСПСистем било је неопходно да клијенти у потпуности сачувају досадашњу функционалност, пренесу све финансијске радње корисника са старог обрачуна на нови, као и све услуге и везе између њих. Проучавали смо шта се налази у тренутном производу, затим решења конкурената, углавном ДО и Вултр. Размотрили смо недостатке и предности, прикупили повратне информације од људи који су радили са старим производима из ИСПсистем-а.

Нова наплата је користила два стека: класични ПХП, МиСКЛ (а у будућности се планира прелазак на ПостгреСКЛ), Иии2 као оквир на позадини и ВуеЈС на предњој страни. Стекови раде независно један од другог, развијају их различити људи и комуницирају користећи ЈСОН АПИ. За развој некад и сад користимо ПХПСторм и ВебСторм са ЈетБраинс-а и волим их јако (хеј момци!)

Панел је дизајниран на модуларној основи: модули платног система, модул регистратора домена или, на пример, модул ССЛ сертификата. Можете једноставно додати нову функцију или уклонити стару. Основа за проширење је постављена архитектонски, укључујући и у супротном смеру, „ка хардверу“.
ИСПсистем, опрости и збогом! Зашто и како смо написали наш серверски контролни панел
Шта смо добили: Контролна табла над којом имамо потпуну контролу. Сада се грешке исправљају сатима, а не недељама, а нове функције се имплементирају на захтев купаца, а не на захтев ИСПСистем-а.

Корак 3. Интерфејс

ИСПсистем, опрости и збогом! Зашто и како смо написали наш серверски контролни панел
Интерфејс је идеја нашег тима.

Прво смо погледали шта би се десило ако бисмо направили додатак за ИСПсистем АПИ без суштинске промене било чега у интерфејсу. Испало је тако-тако и одлучили смо да урадимо све од нуле.

Веровали смо да је главно да интерфејс буде логичан, са чистим и минималистичким дизајном, и онда ћемо добити прелеп панел. У Мегаплану се разговарало о распореду елемената и постепено ће се родити интерфејс који корисници сада виде на контролној табли.

Дизајн странице за наплату је био на првом месту, јер смо већ направили додатке за плаћање за ИСПсистем.

Предњи крај

Одлучили су да панел учине СПА апликацијом - незахтевним у смислу ресурса и са брзим учитавањем података. Наш фронтендер Артисх одлучио је да то напише у Вуе-у - у то време Вуе се тек појавио. Претпоставили смо да ће се оквир динамички развијати, попут Реацт-а, а након неког времена ће Вуе заједница расти и појавиће се море библиотека. Одлучили смо се за Вуе и нисмо пожалили – сада додавање нових функција на предњу страну које су већ програмиране на позадинској страни захтева мало времена. Више о предњим панелима ћемо вам рећи у посебном чланку.

Веза између фронтенд-а и бацкенд-а

Фронтенд је био повезан са позадином преко пусх обавештења. Морао сам напорно да радим и да напишем свој руковалац, али сада се информације на страници ажурирају скоро тренутно.

Шта се десило: Интерфејс панела је постао једноставнији. Направили смо га прилагодљивим, а брзо учитавање вам омогућава да га користите чак и са мобилних телефона у последњим минутима пре полетања, без инсталирања посебне апликације за рад са панелом.

Корак 4. Шема тестирања и миграције

Када је све кренуло и први тестови прошли, поставило се питање миграције. Пре свега, инсталирали смо биллинг и почели да тестирамо његов рад са серверским агентом.

Затим смо написали једноставну скрипту која преноси базу података са старог система наплате у нови.

Морали смо да тестирамо и поново проверимо буквално све, пошто су подаци спојени у једну нову базу података из три старе: Биллманагер, ВМманагер и ИПманагер манагер. Можда су тест миграције најтежа ствар са којом смо се сусрели у процесу развоја новог панела.

После дуплих провера, затворили смо стари обрачун. Коначна миграција података била је веома забрињавајући тренутак, али је, хвала Богу, завршена за неколико минута и без приметних проблема. Било је мањих грешака које смо исправили током недељу дана. Већину времена провели смо тестирајући шта се догодило.

Затим смо клијентима послали писма са адресом новог панела и обрачуном и направили преусмерење.

Укратко: ЖИВО ЈЕ!

Срећан завршетак

Од првих сати рада са нашим софтвером осетили смо све ужитке транзиције. Код је био потпуно наш и имао је згодну архитектуру, а интерфејс је био чист и логичан.
ИСПсистем, опрости и збогом! Зашто и како смо написали наш серверски контролни панел
Први преглед након покретања новог панела

Процес транзиције покренули смо у децембру, у новогодишњој ноћи 2017. године, када је било најмање посла, да бисмо корисницима олакшали прелазак – уочи празника скоро нико не ради.

Главна ствар коју смо добили када смо прешли на наш систем (поред опште поузданости и погодности) била је могућност брзог додавања функционалности за кључне клијенте – да будемо њихово лице, а не гузице.

Шта је следеће?

Растемо, расте количина података, клијената, података о клијентима. На позадину смо морали да додамо Мемцацхед сервер и два менаџера редова са различитим задацима. Фронтенд има кеширање и сопствене редове.

Наравно, и даље смо имали авантуре како се производ развијао и постајао сложенији, на пример када смо додали ХигхЛоад.

У следећем чланку ћемо вам рећи како смо покренули Хи-ЦПУ тарифу: о хардверу, софтверу, које смо проблеме решили и шта смо постигли.

Извор: ввв.хабр.цом

Додај коментар