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

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

Здраво! Ние сме „Хостинг технологии“ и започнавме пред 5 години ВДСина — првиот хостинг vds создаден специјално за програмери. Се стремиме да го направиме погодно, како DigitalOcean, но со руска поддршка, начини на плаќање и сервери во Русија. Но, DigitalOcean не е само доверливост и цена, туку е и услуга.

Софтверот од ISPsystem се покажа како јаже што ни ги врзуваше рацете на патот до кул услуга. Пред три години, користевме наплата на Billmanager и контролната табла на серверот VMmanager и брзо сфативме дека е речиси невозможно да се обезбеди добра услуга без сопствен контролен панел.

Како ISP-системот ја уби удобноста

Бубачки

Не можевме сами да ја поправиме грешката - секој пат кога требаше да пишеме на туѓа поддршка и да чекаме. Решението на кој било проблем бараше одговор од трета компанија.

Поддршката на ISP-системот реагираше нормално, но поправките дојдоа само по неколку изданија, а потоа не секогаш и не сите. Понекогаш критичните грешки беа поправени неколку недели. Моравме да ги увериме клиентите, да се извиниме и да чекаме ISPsystem да ја поправи грешката.

Закана за застој

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

Секое ажурирање беше лотарија: морав да ја прикривам наплатата и да се жртвувам на боговите на ажурирањата - неколку пати ажурирањето предизвика прекин од 10-15 минути. Нашите администратори во тоа време седеа на очи - никогаш не знаевме колку долго ќе трае прекинот и не можевме да предвидиме кога ISP системот ќе одлучи да објави ново ажурирање.

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

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

Сè беше поделено на различни панели и контролирано од различни места. На пример, клиентите плаќаа преку Billmanager и мораа да го рестартираат или повторно инсталираат VDS во VMManager. Нашиот персонал исто така мораше да се префрла помеѓу прозорците за да му помогне на клиентот, да го провери оптоварувањето на неговиот сервер или да види каков оперативен систем користи.

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

Кратки животни циклуси со чести ажурирања на API

Напишавме свои приклучоци - на пример, додаток со дополнителни начини на плаќање што не се во VMManager.

Во последниве години, VMManager имаше релативно краток животен циклус, а во новите верзии, имињата на променливите или функциите во API може да се менуваат произволно - ова ги скрши нашите приклучоци. Поддршката за постарите верзии беше брзо укината и мораше да се ажурира.

Не може да се измени

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

Така беше зрела одлуката да напишам свој панел. Ние поставивме цели:

  • Брзо реагирајте на грешки, грешки и можете сами да ги поправите без да го натерате клиентот да чека.
  • Слободно менувајте го интерфејсот за работните текови и потребите на клиентите.
  • Зголемете ја употребливоста со чист и разбирлив дизајн.

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

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

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

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

Агентот на серверот е веб-сервер на python кој управува со библиотеката libvirt, кој пак управува Хипервизор Qemu-kvm.

Агентот управува со сите услуги на серверот: креирање, запирање, бришење vds, инсталирање оперативни системи, менување параметри и така натаму преку библиотеката libvirt. Во моментот на објавување на статијата, тоа се повеќе од четириесет различни функции, кои ги дополнуваме во зависност од задачата и потребите на клиентот.

Теоретски, libvirt може да се контролира директно од наплатата, но ова бараше премногу дополнителен код и решивме да ги одделиме овие функции помеѓу агентот и наплатата - наплатата едноставно испраќа барања до агентот преку JSON API.

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

Што ни даде агентот на серверот: се појави слој кој го поедноставува животот на сите - за наплата не треба да се испраќаат цел куп команди, туку само да се направи барање. И агентот ќе стори сé што е потребно: на пример, ќе додели простор на дискот и RAM меморија.

Чекор 2. Наплата

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

Ние го нарекуваме фактурирањето меѓу себе „контролен панел“: содржи не само пари и услуги, туку и нивно управување, поддршка за корисници и многу повеќе.

За префрлување од софтверот ISPSystem, потребно беше целосно да се зачува досегашната функционалност за клиентите, да се префрлат сите финансиски дејствија на корисниците од старата наплата на новата, како и сите услуги и врски меѓу нив. Проучивме што има во сегашниот производ, потоа решенијата на конкурентите, главно DO и Vultr. Ги разгледавме недостатоците и предностите, собравме повратни информации од луѓе кои работеа со стари производи од ISPsystem.

Новата наплата користеше два стекови: класичен PHP, MySQL (а во иднина се планира да се префрли на PostgreSQL), Yii2 како рамка на задниот дел и VueJS на предната страна. Купиштата работат независно еден од друг, се развиваат од различни луѓе и комуницираат со помош на JSON API. За развој тогаш и сега користиме PHPS бура и Веб-бура од JetBrains и многу сакај ги (еј момци!)

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

Чекор 3 Интерфејс

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

Прво, погледнавме што ќе се случи ако направиме додаток преку API-то на системот ISP без суштински да промениме ништо во интерфејсот. Испадна така-така и решивме да направиме сè од нула.

Верувавме дека главната работа е да го направиме интерфејсот логичен, со чист и минималистички дизајн, а потоа ќе добиеме прекрасен панел. Локацијата на елементите беше дискутирана во Megaplan и постепено ќе се роди интерфејсот што корисниците го гледаат во контролната табла сега.

Прв се појави дизајнот на страницата за наплата, бидејќи веќе направивме приклучоци за плаќање за ISP системот.

Предниот крај

Тие решија да го направат панелот SPA апликација - непотребна за ресурсите и со брзо вчитување податоци. Нашиот предводник Artysh одлучи да го напише на Vue - во тоа време Vue штотуку се појави. Претпоставувавме дека рамката ќе се развива динамично, како React, по некое време Vue заедницата ќе се зголеми и ќе се појави море од библиотеки. Се обложивме на Vue и не зажаливме - сега е потребно малку време да се додадат нови функции на предната страна кои се веќе програмирани на задниот дел. Ќе ви кажеме повеќе за предниот панел во посебна статија.

Поврзување на предниот дел со задниот дел

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

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

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

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

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

Морав да тестирам и повторно да проверам буквално сè, бидејќи податоците беа споени во една нова база на податоци од три стари: Billmanager, VMmanager и IPmanager на менаџерот. Можеби тест миграциите се најтешкото нешто што го сретнавме во процесот на развој на нов панел.

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

Потоа испративме писма до клиентите со адресата на новиот панел и наплата и направивме пренасочување.

Во краток преглед: ЖИВО Е!

Среќен крај

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

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

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

Што е следно?

Растеме, расте количината на податоци, клиенти, податоци за клиентите. Морав да додадам Memcached сервер и два менаџери на редици со различни задачи во задниот дел. Предниот дел има кеширање и свои редици.

Се разбира, сè уште имавме авантури додека производот се развиваше и стана покомплексен, на пример кога додадовме HighLoad.

Во следната статија, ќе ви кажеме како е лансирана тарифата Hi-CPU: за хардверот, софтверот, кои задачи ги решивме и што направивме.

Извор: www.habr.com

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