ISPsystem, fyrirgefðu og bless! Hvers vegna og hvernig við skrifuðum stjórnborð netþjónsins okkar

ISPsystem, fyrirgefðu og bless! Hvers vegna og hvernig við skrifuðum stjórnborð netþjónsins okkar

Halló! Við erum "Hosting Technologies" og fyrir 5 árum hófum við VDSina — fyrsta vds hýsingin búin til sérstaklega fyrir forritara. Við leitumst við að gera það þægilegt, eins og DigitalOcean, en með rússneskum stuðningi, greiðslumáta og netþjónum í Rússlandi. En DigitalOcean snýst ekki aðeins um áreiðanleika og verð, það snýst líka um þjónustu.

Hugbúnaður frá ISPsystem reyndist vera reipi sem batt hendur okkar á leiðinni í flotta þjónustu. Fyrir þremur árum notuðum við Billmanager innheimtu og VMmanager miðlara stjórnborðið og áttuðum okkur fljótt á því að það var nánast ómögulegt að veita góða þjónustu án okkar eigin pallborðs.

Hvernig ISPsystem drap þægindi

Pöddur

Við gátum ekki lagað villuna sjálf - í hvert skipti sem við þurftum að skrifa til aðstoðar einhvers annars og bíða. Lausnin á vandamálum krafðist svars frá þriðja aðila fyrirtæki.

Stuðningur ISPkerfis brást eðlilega við, en lagfæringar komu aðeins eftir nokkrar útgáfur, og ekki alltaf og ekki allar. Stundum tók mikilvægar villur nokkrar vikur að laga. Við þurftum að fullvissa viðskiptavini, biðjast afsökunar og bíða eftir að ISPsystem lagaði villuna.

Hótun um miðlunartíma

Uppfærslur gætu valdið ófyrirsjáanlegum niðritíma, sem olli nýjum villum.

Hver uppfærsla var happdrætti: við þurftum að hylja innheimtu og færa fórnir til guða uppfærslunnar - nokkrum sinnum olli uppfærslan niður í 10-15 mínútur. Á þessum tíma voru stjórnendur okkar að grána fyrir augum okkar - við vissum aldrei hversu lengi niðritíminn myndi vara og gátum ekki spáð fyrir um hvenær ISPsystem myndi ákveða að gefa út nýja uppfærslu.

Billmanager varð betri á fimmtu kynslóðinni, en til að fá aðgang að nauðsynlegum eiginleikum þurfti ég að setja upp beta, sem var þegar uppfærð í hverri viku. Ef eitthvað bilaði þurftir þú að veita öðrum forriturum aðgang svo þeir gætu lagað það.

Óþægilegt pallborðsviðmót

Öllu var skipt í mismunandi spjöld og stjórnað frá mismunandi stöðum. Til dæmis greiddu viðskiptavinir í gegnum Billmanager, en þeir þurftu að endurræsa eða setja upp VDS aftur í VMManager. Starfsmenn okkar þurftu líka að skipta á milli glugga til að hjálpa viðskiptavinum, athuga álagið á netþjóninum sínum eða sjá hvaða stýrikerfi þeir voru að nota.

Slíkt viðmót tekur tíma – bæði okkar og viðskiptavina okkar. Það er ekkert talað um þægindi eins og DigitalOcean við slíkar aðstæður.

Stutt líftíma með tíðum API uppfærslum

Við skrifuðum okkar eigin viðbætur - til dæmis viðbót með viðbótargreiðslumáta sem eru ekki tiltækar í VMManager.

Undanfarin ár hafði VMManager tiltölulega stuttan líftíma og nýjar útgáfur gátu breytt nöfnum breyta eða aðgerða af handahófi í API - þetta braut viðbætur okkar. Stuðningur við eldri útgáfur var fljótt hætt og nauðsynlegt var að uppfæra.

Ekki hægt að breyta

Nánar tiltekið, það er mögulegt, en afar árangurslaust. Leyfistakmarkanir leyfa þér ekki að gera breytingar á frumkóðanum; þú getur aðeins skrifað viðbætur. Hámarks viðbætur - sumir valmyndarþættir, skref-fyrir-skref töframaður. ISPsystem er hannað fyrir fjölhæfni, en okkur vantaði sérhæfðar lausnir.

Þannig að ákvörðunin um að skrifa minn eigin pallborð var þroskuð. Við höfum sett okkur markmið:

  • Bregðast hratt við villum og villum og geta lagað þær sjálfur án þess að láta viðskiptavininn bíða.
  • Breyttu viðmótinu frjálslega til að henta vinnuferlum og þörfum viðskiptavinarins.
  • Bættu nothæfi með hreinni og skýrri hönnun.

Og við byrjuðum þróun.

Arkitektúr nýja pallborðsins

Við erum með sjálfbært þróunarteymi, svo við skrifuðum pallborðið sjálf.
Aðalverkið var unnið af þremur verkfræðingum - tæknistjórinn Sergei kom með arkitektúrinn og skrifaði umboðsmann netþjónsins, Alexey sá um innheimtu og framhliðin var sett saman af framenda okkar Artysh.

Skref 1: Server Agent

Miðlarinn er Python vefþjónn sem heldur utan um bókasafnið libvirt, sem aftur stjórnar ofurvisor Qemu-kvm.

Umboðsmaðurinn stjórnar allri þjónustu á þjóninum: búa til, stöðva, eyða vds, setja upp stýrikerfi, breyta breytum og svo framvegis í gegnum libvirt bókasafnið. Við birtingu þessarar greinar eru þetta meira en fjörutíu mismunandi aðgerðir, sem við bætum við eftir verkefnum og þörfum viðskiptavinarins.

Fræðilega séð var hægt að stjórna libvirt beint frá innheimtu, en þetta krafðist of mikils viðbótarkóða og við ákváðum að skipta þessum aðgerðum á milli umboðsmannsins og innheimtu - innheimta gerir einfaldlega beiðnir til umboðsmannsins í gegnum JSON API.

Umboðsmaðurinn var það fyrsta sem við gerðum, þar sem hann krafðist ekki neins viðmóts og hægt var að prófa hann beint frá netþjóninum.

Það sem miðlarinn gaf okkur: lag hefur komið fram sem gerir lífið auðveldara fyrir alla - innheimtu þarf ekki að senda heilan helling af skipunum, heldur aðeins beiðni. Og umboðsmaðurinn mun gera allt sem þarf: til dæmis úthluta diskplássi og vinnsluminni.

Skref 2. Innheimta

Fyrir þróunaraðilann okkar Alex var þetta ekki fyrsta stjórnborðið - Alex hafði verið að hýsa í langan tíma, svo hann skildi almennt hvað viðskiptavinurinn þurfti og hvað gestgjafinn þurfti.

Við köllum innheimtu „stjórnborð“: það inniheldur ekki aðeins peninga og þjónustu, heldur einnig stjórnun þeirra, þjónustuver og margt fleira.

Til að skipta úr ISPSystem hugbúnaði var nauðsynlegt fyrir viðskiptavini að varðveita fyrri virkni algjörlega, flytja allar fjárhagslegar aðgerðir notenda frá gamla reikningnum yfir í það nýja, svo og alla þjónustu og tengingar á milli þeirra. Við rannsökuðum hvað er í núverandi vöru, síðan lausnir samkeppnisaðila, aðallega DO og Vultr. Við skoðuðum galla og kosti, söfnuðum viðbrögðum frá fólki sem vann með gamlar vörur frá ISPsystem.

Nýja reikningurinn notaði tvo stafla: klassískt PHP, MySQL (og í framtíðinni er fyrirhugað að skipta yfir í PostgreSQL), Yii2 sem ramma á bakendanum og VueJS að framan. Staflarnir starfa óháð hver öðrum, eru þróaðir af mismunandi fólki og hafa samskipti með JSON API. Til þróunar þá og nú notum við PHPSstorm и Vefstormur frá JetBrains og elska þá innilega (hey krakkar!)

Spjaldið er hannað á máta grunni: greiðslukerfiseiningum, lénaskráningareiningu eða til dæmis SSL vottorðareiningu. Þú getur auðveldlega bætt við nýjum eiginleika eða fjarlægt gamlan. Grunnurinn að stækkun er lagður byggingarfræðilega, þar á meðal í gagnstæða átt, "í átt að vélbúnaðinum".
ISPsystem, fyrirgefðu og bless! Hvers vegna og hvernig við skrifuðum stjórnborð netþjónsins okkar
Það sem við fengum: Stjórnborð sem við höfum fulla stjórn á. Nú eru villur lagaðar á klukkustundum, ekki vikum, og nýir eiginleikar eru innleiddir að beiðni viðskiptavina, en ekki að beiðni ISPSystem.

Skref 3. Tengi

ISPsystem, fyrirgefðu og bless! Hvers vegna og hvernig við skrifuðum stjórnborð netþjónsins okkar
Viðmótið er hugarfóstur liðsins okkar.

Í fyrsta lagi skoðuðum við hvað myndi gerast ef við gerðum viðbót við ISPsystem API án þess að breyta neinu í viðmótinu í grundvallaratriðum. Þetta varð svo sem svo og við ákváðum að gera allt frá grunni.

Við trúðum því að aðalatriðið væri að gera viðmótið rökrétt, með hreinni og naumhyggju hönnun, og þá myndum við fá fallegt spjald. Rætt var um uppröðun þátta í Megaplan og smám saman verður til viðmótið sem notendur sjá í stjórnborðinu núna.

Hönnun innheimtusíðunnar kom fyrst, vegna þess að við höfðum þegar búið til greiðsluviðbætur fyrir ISPsystem.

Að framanverðu

Þeir ákváðu að gera pallborðið að SPA umsókn - krefjandi hvað varðar fjármagn og með hröðu hleðslu gagna. Framhlið okkar Artysh ákvað að skrifa það í Vue - á þeim tíma hafði Vue bara birst. Við gerðum ráð fyrir að umgjörðin myndi þróast á kraftmikinn hátt, eins og React, og eftir nokkurn tíma myndi Vue samfélagið stækka og hafsjór af bókasöfnum myndi birtast. Við völdum Vue og sáum ekki eftir því - núna tekur það lítinn tíma að bæta við nýjum aðgerðum að framan sem þegar voru forritaðar á bakendanum. Við munum segja þér meira um framhliðarspjöld í sérstakri grein.

Tenging milli framenda og bakenda

Framendinn var tengdur við bakendann með ýttu tilkynningum. Ég þurfti að leggja hart að mér og skrifa minn eigin stjórnanda, en nú eru upplýsingarnar á síðunni uppfærðar nánast samstundis.

Hvað gerðist: Spjaldsviðmótið er orðið einfaldara. Við gerðum það aðlögunarhæft og hröð hleðsla gerir þér kleift að nota það jafnvel úr farsímum á síðustu mínútunum fyrir flugtak, án þess að setja upp sérstakt forrit til að vinna með spjaldið.

Skref 4. Prófun og flutningskerfi

Þegar allt fór í gang og fyrstu prófin stóðust, vaknaði spurningin um fólksflutninga. Fyrst af öllu settum við upp innheimtu og byrjuðum að prófa verk þess með umboðsmanni netþjónsins.

Síðan skrifuðum við einfalda skriftu sem flytur gagnagrunninn úr gamla innheimtukerfinu yfir í það nýja.

Við þurftum að prófa og athuga bókstaflega allt, þar sem gögnin voru sameinuð í einn nýjan gagnagrunn úr þremur gömlum: Billmanager, VMmanager og IPmanager manager. Kannski eru prófunarflutningar það erfiðasta sem við höfum lent í í því ferli að þróa nýjan spjaldið.

Eftir tvískoðun lokuðum við gömlu innheimtunni. Lokaflutningur gagna var mjög áhyggjuefni, en guði sé lof, henni var lokið á nokkrum mínútum og án merkjanlegra vandamála. Það voru smávægilegar villur sem við laguðum á viku. Mestur tími fór í að prófa hvað gerðist.

Síðan sendum við bréf til viðskiptavina með heimilisfangi nýja pallborðsins og innheimtu og gerðum tilvísun.

Í stuttu máli: ÞAÐ ER Á LÍFI!

Hamingjusamlegur endir

Frá fyrstu klukkutímunum þegar við vorum að vinna með hugbúnaðinn okkar fundum við fyrir öllum ánægjulegum umskiptum. Kóðinn var algjörlega okkar og hafði þægilegan arkitektúr og viðmótið var hreint og rökrétt.
ISPsystem, fyrirgefðu og bless! Hvers vegna og hvernig við skrifuðum stjórnborð netþjónsins okkar
Fyrsta endurskoðun eftir að nýja spjaldið var opnað

Við hófum breytingaferlið í desember, á gamlárskvöld 2017, þegar minnst vinnuálag var, til að auðvelda viðskiptavinum umskiptin - nánast enginn vinnur í aðdraganda hátíða.

Það helsta sem við fengum þegar við skiptum yfir í kerfið okkar (fyrir utan almennan áreiðanleika og þægindi) var hæfileikinn til að bæta fljótt við virkni fyrir lykilviðskiptavini - að vera andlit þeirra, ekki rassinn.

Hvað er næst?

Við erum að stækka, gagnamagn, viðskiptavinir, gögn viðskiptavina eru að vaxa. Á bakendanum þurftum við að bæta við Memcached netþjóni og tveimur biðröðstjórum með mismunandi verkefni. Framendinn hefur skyndiminni og sínar eigin biðraðir.

Auðvitað lentum við enn í ævintýrum eftir því sem varan þróaðist og varð flóknari, til dæmis þegar við bættum við HighLoad.

Í næstu grein munum við segja þér hvernig við settum af stað Hi-CPU gjaldskrána: um vélbúnað, hugbúnað, hvaða vandamál við leystum og hvað við náðum.

Heimild: www.habr.com

Bæta við athugasemd