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-кадам: Server Agent

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

Агент сервердеги бардык кызматтарды башкарат: libvirt китепканасы аркылуу vds түзүү, токтотуу, жок кылуу, операциялык системаларды орнотуу, параметрлерди өзгөртүү жана башкалар. Макала жарыяланган учурда, бул кырктан ашык ар кандай функциялар, аларды биз тапшырмага жана кардардын муктаждыгына жараша толуктайбыз.

Теориялык жактан алганда, libvirt түздөн-түз эсеп коюудан башкарылса болот, бирок бул өтө көп кошумча кодду талап кылды жана биз бул функцияларды агент менен эсеп-кысаптын ортосунда бөлүүнү чечтик – биллинг жөн гана JSON API аркылуу агентке суроо-талаптарды жасайт.

Агент - бул биз жасаган эң биринчи нерсе, анткени ал эч кандай интерфейсти талап кылбаган жана аны түздөн-түз сервер консолунан сынап көрүү мүмкүн болгон.

Сервер агенти бизге эмне берди: ар бир адам үчүн жашоону жеңилдеткен катмар пайда болду - эсеп коюуга бир топ буйруктарды жөнөтүүнүн кереги жок, бирок бир гана суроо-талап кылуу керек. Жана агент бардык зарыл болгон нерселерди кылат: мисалы, ал диск мейкиндигин жана RAM бөлүп берет.

2-кадам. Эсеп коюу

Биздин иштеп чыгуучубуз Алекс үчүн бул биринчи башкаруу панели болгон жок - Алекс көптөн бери хостинг менен алектенип келет, ошондуктан ал жалпысынан кардарга эмне керек жана хосттерге эмне керек экенин түшүндү.

Биз өз ара эсеп-кысапты “башкаруу панели” деп атайбыз: анда акча жана кызматтар гана эмес, аларды башкаруу, кардарларды колдоо жана башка көп нерселер камтылган.

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

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

Панел модулдук негизде иштелип чыккан: төлөм системасынын модулдары, доменди каттоочу модулу же, мисалы, SSL сертификатынын модулу. Жаңы функцияны оңой кошуп же эскисин алып салсаңыз болот. кеңейтүү үчүн негиз архитектуралык, анын ичинде карама-каршы багытта, "аппараттык көздөй" коюлган.
ISPсистема, кечирип коюңуз! Эмне үчүн жана кантип биз сервердин башкаруу панелин жаздык
Биз эмне алдык: биз толук көзөмөлдөй турган башкаруу панели. Эми мүчүлүштүктөр жумаларда эмес, сааттарда оңдолуп, жаңы функциялар ISPSсистеманын талабы боюнча эмес, кардарлардын өтүнүчү боюнча ишке ашат.

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

ISPсистема, кечирип коюңуз! Эмне үчүн жана кантип биз сервердин башкаруу панелин жаздык
Интерфейс - бул биздин команданын мээси.

Биринчиден, биз интерфейсте эч нерсени түп-тамырынан бери өзгөртпөстөн, ISPsystem API аркылуу кошумча киргизсек, эмне болорун карап көрдүк. Ушундай болуп чыкты жана биз бардыгын нөлдөн баштап жасоону чечтик.

Биз эң негизгиси интерфейсти логикалык, таза жана минималисттик дизайн менен түзүү деп эсептедик, андан кийин биз кооз панелди алабыз. Элементтердин жайгашкан жери Megaplanда талкууланган жана колдонуучулар башкаруу панелинен көргөн интерфейс акырындык менен пайда болот.

Эсеп-кысап барагынын дизайны биринчи болуп пайда болду, анткени биз ISPсистемасы үчүн төлөм плагиндерин жасаганбыз.

Frontend

Алар панелди SPA тиркемеси кылууну чечишти - ресурстарга талап кылынбаган жана маалыматтарды тез жүктөө. Биздин фронтчу Артыш аны Vue сайтына жазууну чечти — ошол кезде Вуэ жаңы эле пайда болгон. Биз алкак React сыяктуу динамикалык түрдө өнүгөт деп ойлогонбуз, бир нече убакыттан кийин Vue коомчулугу өсүп, китепканалар деңизи пайда болот. Биз Vueге коюм койдук жана өкүнгөн жокпуз - азыр арткы жагында программаланган жаңы функцияларды фронтко кошуу үчүн аз убакыт керек. Биз сизге өзүнчө макалада алдыңкы панел жөнүндө көбүрөөк айтып беребиз.

Фронт менен арткы тарапты туташтыруу

Frontend backend менен push эскертмелери аркылуу туташтырылган. Мен талыкпай эмгектенип, өзүмдүн иштеткичимди жазууга туура келди, бирок азыр баракчадагы маалымат дээрлик заматта жаңыланып турат.

Не болду: панелдин интерфейси жөнөкөй болуп калды. Биз аны ыңгайлаштырдык, ал эми тез жүктөө панел менен иштөө үчүн өзүнчө тиркемени орнотпостон, учууга чейинки акыркы мүнөттөрдө уюлдук телефондордон да колдонууга мүмкүндүк берет.

4-кадам. Сыноо жана миграция схемасы

Баары башталып, алгачкы сыноолордон өткөндө миграция маселеси көтөрүлдү. Биринчиден, биз биллингди орнотуп, сервердик агент менен анын иштешин сынай баштадык.

Андан кийин биз базаны эски эсеп-кысаптан жаңысына өткөрүүчү жөнөкөй скрипт жаздык.

Мага бардыгын сынап, кайра текшерүүгө туура келди, анткени маалыматтар үч эски маалымат базасынан бир жаңы маалымат базасына бириктирилди: Billmanager, VMmanager жана менеджердин IPmanager. Балким, сыноо миграциясы жаңы панелди иштеп чыгуу процессинде туш болгон эң кыйын нерсе.

Кайра текшергенден кийин эски эсепти жаптык. Акыркы маалыматтарды көчүрүү абдан кооптуу учур болду, бирок, Кудайга шүгүр, ал бир нече мүнөттүн ичинде жана байкаларлык көйгөйлөрсүз аяктады. Апта ичинде биз оңдогон майда мүчүлүштүктөр болду. Көпчүлүк убакыт эмне болгонун сынап көрүүгө жумшалды.

Андан кийин биз кардарларга жаңы панелдин дареги жана эсеп-кысап көрсөтүүсү менен кат жөнөттүк жана багыттоо жасадык.

Жыйынтыгында: БУЛ ТИРҮҮ!

Бактылуу аягы

Биздин программалык камсыздоо ишинин алгачкы сааттарынан тартып биз өткөөл мезгилдин бардык ырахаттарын сездик. Код толугу менен биздики жана ыңгайлуу архитектура менен, интерфейси таза жана логикалык болгон.
ISPсистема, кечирип коюңуз! Эмне үчүн жана кантип биз сервердин башкаруу панелин жаздык
Жаңы панелди ишке киргизгенден кийинки биринчи кароо

Кардарлар үчүн өтүүнү жеңилдетүү үчүн биз өткөөл процессти декабрь айында, 2017-жылдын Жаңы жылдын алдында, жүк эң аз болгон учурда ишке киргиздик – майрамдардын алдында дээрлик эч ким иштебейт.

Биздин системага өткөндө биз алган эң негизги нерсе (жалпы ишенимдүүлүк жана ыңгайлуулуктан тышкары) негизги кардарлар үчүн функцияларды тез кошуу мүмкүнчүлүгү - алардын эшек эмес, жүзү болуу.

Кийинкиси эмне?

Биз өсүп жатабыз, маалыматтардын, кардарлардын, кардарлардын маалыматтарынын көлөмү өсүүдө. Мен Memcached серверин жана ар кандай тапшырмалары бар эки кезек менеджерин артка кошууга туура келди. Фронттун кэштөө жана өзүнүн кезектери бар.

Албетте, бизде дагы эле өнүм өнүгүп, татаалдашып кеткенде, мисалы, HighLoadди кошкондо укмуштуу окуялар болду.

Кийинки макалада биз Hi-CPU тарифи кантип ишке киргизилгенин айтып беребиз: аппараттык, программалык камсыздоо, кандай милдеттерди чечтик жана эмне кылдык.

Source: www.habr.com

Комментарий кошуу