ISPsystem, maddeuwch a ffarwel! Pam a sut y gwnaethom ysgrifennu ein panel rheoli gweinyddwr

ISPsystem, maddeuwch a ffarwel! Pam a sut y gwnaethom ysgrifennu ein panel rheoli gweinyddwr

Helo! Rydym yn "Hostio Technolegau" a lansiwyd 5 mlynedd yn ôl VDSina - y gwesteiwr vds cyntaf a grëwyd yn benodol ar gyfer datblygwyr. Rydym yn ymdrechu i'w wneud yn gyfleus, fel DigitalOcean, ond gyda chefnogaeth Rwsia, dulliau talu a gweinyddwyr yn Rwsia. Ond nid yn unig dibynadwyedd a phris yw DigitalOcean, mae hefyd yn wasanaeth.

Trodd meddalwedd o ISPsystem allan i fod yn rhaff a oedd yn clymu ein dwylo ar y ffordd i wasanaeth oer. Dair blynedd yn ôl, fe wnaethom ddefnyddio bilio Billmanager a phanel rheoli gweinydd VMmanager a sylweddoli'n gyflym ei bod bron yn amhosibl darparu gwasanaeth da heb ein panel rheoli ein hunain.

Sut mae ISPsystem wedi lladd Cyfleustra

Bygiau

Ni allem drwsio'r byg ein hunain - bob tro roedd yn rhaid i ni ysgrifennu at gefnogaeth rhywun arall ac aros. Roedd angen ymateb cwmni trydydd parti i ddatrys unrhyw broblem.

Ymatebodd cefnogaeth ISPsystem fel arfer, ond dim ond ar ôl ychydig o ddatganiadau y daeth atgyweiriadau, ac yna nid bob amser ac nid pob un. Weithiau roedd bygiau critigol yn cael eu cywiro am sawl wythnos. Roedd yn rhaid i ni dawelu meddyliau cwsmeriaid, ymddiheuro ac aros i ISPsystem atgyweirio'r nam.

Bygythiad Amser Segur

Gallai diweddariadau gynhyrchu amseroedd segur anrhagweladwy a ysgogodd wallau newydd.

Roedd pob diweddariad yn loteri: roedd yn rhaid i mi guddio biliau a gwneud aberth i dduwiau diweddariadau - cwpl o weithiau achosodd y diweddariad amser segur am 10-15 munud. Roedd ein gweinyddwyr ar yr adeg hon yn eistedd ar eu llygaid - nid oeddem byth yn gwybod pa mor hir y byddai'r amser segur yn para ac ni allem ragweld pryd y byddai ISPsystem yn penderfynu rhyddhau diweddariad newydd.

Ar y bumed genhedlaeth, gwellodd Billmanager, ond er mwyn cael mynediad at y nodweddion angenrheidiol, roedd yn rhaid i mi osod beta, a oedd eisoes yn cael ei ddiweddaru bob wythnos. Pe bai rhywbeth yn torri, roedd yn rhaid i mi roi mynediad i ddatblygwyr eraill fel y gallent drwsio rhywbeth.

Rhyngwyneb panel anghyfleus

Rhannwyd popeth yn baneli gwahanol a'i reoli o wahanol leoedd. Er enghraifft, talodd cwsmeriaid trwy Billmanager, a bu'n rhaid iddynt ailgychwyn neu ailosod VDS yn VMManager. Roedd yn rhaid i'n staff hefyd newid rhwng ffenestri i helpu cleient, gwirio'r llwyth ar ei weinydd, neu weld pa OS yr oedd yn ei ddefnyddio.

Mae rhyngwyneb o'r fath yn cymryd amser - ein un ni a'n cleientiaid'. Nid oes unrhyw gwestiwn o unrhyw gyfleustra, fel un DigitalOcean, mewn sefyllfa o'r fath.

Cylchoedd bywyd byr gyda diweddariadau API aml

Fe wnaethon ni ysgrifennu ein ategion ein hunain - er enghraifft, ategyn gyda dulliau talu ychwanegol nad ydyn nhw yn VMManager.

Yn ystod y blynyddoedd diwethaf, roedd gan VMManager gylch bywyd cymharol fyr, ac mewn fersiynau newydd, gallai enwau newidynnau neu swyddogaethau yn yr API newid yn fympwyol - torrodd hyn ein ategion. Daeth cefnogaeth ar gyfer fersiynau hŷn i ben yn gyflym a bu'n rhaid ei diweddaru.

Nid oes modd ei addasu

Yn fwy manwl gywir, mae'n bosibl, ond yn hynod aneffeithlon. Nid yw cyfyngiadau trwydded yn caniatáu ichi wneud newidiadau i'r cod ffynhonnell, dim ond ategion y gallwch chi eu hysgrifennu. Uchafswm ategion - rhai eitemau dewislen, dewin cam-wrth-gam. Mae ISPsystem wedi'u cynllunio ar gyfer amlbwrpasedd, ond roedd angen atebion arbenigol arnom.

Felly roedd y penderfyniad yn aeddfed i ysgrifennu fy mhanel fy hun. Rydym wedi gosod nodau:

  • Ymateb yn gyflym i wallau, chwilod a gallu eu trwsio eich hun heb orfodi'r cleient i aros.
  • Addasu'r rhyngwyneb yn rhydd ar gyfer llifoedd gwaith ac anghenion cleientiaid.
  • Cynyddu defnyddioldeb gyda dyluniad glân a dealladwy.

Ac rydym yn dechrau datblygu.

Pensaernïaeth Panel Newydd

Mae gennym dîm datblygu hunangynhaliol, felly fe wnaethom ni ysgrifennu'r panel ein hunain.
Gwnaethpwyd y prif waith gan dri pheiriannydd - lluniodd y cyfarwyddwr technegol Sergey y bensaernïaeth ac ysgrifennodd asiant y gweinydd, Alexey a wnaeth y bilio, a chafodd y pen blaen ei ymgynnull gan ein blaenwr Artysh.

Cam 1: Asiant Gweinydd

Gweinydd gwe python yw'r asiant gweinydd sy'n rheoli'r llyfrgell libvirt, sydd yn ei dro yn llywodraethu Qemu-kvm hypervisor.

Mae'r asiant yn rheoli'r holl wasanaethau ar y gweinydd: creu, stopio, dileu vds, gosod systemau gweithredu, newid paramedrau, ac ati trwy'r llyfrgell libvirt. Ar adeg cyhoeddi'r erthygl, mae'r rhain yn fwy na deugain o swyddogaethau gwahanol, yr ydym yn ychwanegu atynt yn dibynnu ar y dasg ac anghenion y cleient.

Mewn egwyddor, gellid rheoli libvirt yn uniongyrchol o filio, ond roedd hyn yn gofyn am ormod o god ychwanegol a phenderfynom wahanu'r swyddogaethau hyn rhwng yr asiant a'r bilio - yn syml, mae bilio yn gwneud ceisiadau i'r asiant trwy'r API JSON.

Yr asiant yw'r peth cyntaf a wnaethom, gan nad oedd angen unrhyw ryngwyneb arno ac roedd yn bosibl ei brofi'n uniongyrchol o gonsol y gweinydd.

Yr hyn a roddodd asiant y gweinydd i ni: mae haen wedi ymddangos sy'n symleiddio bywyd i bawb - nid oes angen i filio anfon criw cyfan o orchmynion, ond dim ond gwneud cais. A bydd yr asiant yn gwneud popeth sydd ei angen: er enghraifft, bydd yn dyrannu gofod disg a RAM.

Cam 2. Bilio

Ar gyfer ein datblygwr Alex, nid hwn oedd y panel rheoli cyntaf - mae Alex wedi bod yn cynnal ers amser maith, felly roedd yn deall yn gyffredinol beth oedd ei angen ar y cleient a beth oedd ei angen ar y gwesteiwr.

Rydyn ni'n galw bilio ymhlith ein gilydd yn “banel rheoli”: mae'n cynnwys nid yn unig arian a gwasanaethau, ond hefyd eu rheolaeth, cefnogaeth i gwsmeriaid a llawer mwy.

I newid o feddalwedd system ISPS, roedd angen cadw'r swyddogaeth flaenorol ar gyfer cwsmeriaid yn llawn, trosglwyddo holl gamau ariannol defnyddwyr o'r hen filio i'r un newydd, yn ogystal â'r holl wasanaethau a chysylltiadau rhyngddynt. Fe wnaethon ni astudio'r hyn sydd yn y cynnyrch presennol, yna atebion cystadleuwyr, yn bennaf DO a Vultr. Edrychom ar yr anfanteision a'r manteision, a chasglwyd adborth gan bobl a oedd yn gweithio gyda hen gynhyrchion o ISPsystem.

Defnyddiodd y bilio newydd ddau bentwr: PHP clasurol, MySQL (ac yn y dyfodol bwriedir newid i PostgreSQL), Yii2 fel fframwaith ar y backend a VueJS ar y blaen. Mae staciau'n gweithio'n annibynnol ar ei gilydd, yn cael eu datblygu gan wahanol bobl, ac yn cyfathrebu gan ddefnyddio'r API JSON. Ar gyfer datblygiad yn awr ac yn awr rydym yn defnyddio Storm PHP и Storm We gan JetBrains ac yn eu caru'n annwyl (hei bois!)

Mae'r panel wedi'i gynllunio ar sail fodiwlaidd: modiwlau system dalu, modiwl cofrestrydd parth neu, er enghraifft, modiwl tystysgrif SSL. Gallwch chi ychwanegu nodwedd newydd yn hawdd neu ddileu hen un. Mae'r sylfaen ar gyfer yr ehangu wedi'i osod yn bensaernïol, gan gynnwys i'r cyfeiriad arall, “tuag at y caledwedd”.
ISPsystem, maddeuwch a ffarwel! Pam a sut y gwnaethom ysgrifennu ein panel rheoli gweinyddwr
Beth gawson ni: panel rheoli y mae gennym reolaeth lawn drosto. Nawr mae bygiau wedi'u gosod mewn oriau, nid wythnosau, ac mae nodweddion newydd yn cael eu gweithredu ar gais cwsmeriaid, ac nid ar gais system ISPS.

Rhyngwyneb Cam 3

ISPsystem, maddeuwch a ffarwel! Pam a sut y gwnaethom ysgrifennu ein panel rheoli gweinyddwr
Syniad ein tîm yw'r rhyngwyneb.

Yn gyntaf, fe wnaethom edrych ar beth fyddai'n digwydd pe baem yn gwneud ychwanegiad dros yr API ISPsystem heb newid unrhyw beth yn y rhyngwyneb yn sylfaenol. Mae'n troi allan felly-felly ac rydym yn penderfynu gwneud popeth o'r dechrau.

Roeddem yn credu mai'r prif beth yw gwneud y rhyngwyneb yn rhesymegol, gyda dyluniad glân a minimalaidd, ac yna byddwn yn cael panel hardd. Trafodwyd lleoliad yr elfennau yn Megaplan a bydd y rhyngwyneb y mae defnyddwyr yn ei weld yn y panel rheoli nawr yn cael ei eni'n raddol.

Dyluniad y dudalen bilio oedd y cyntaf i ymddangos, oherwydd rydym eisoes wedi gwneud ategion talu ar gyfer ISPsystem.

Pen blaen

Fe benderfynon nhw wneud y panel yn gymhwysiad SPA - yn ddiangen o ran adnoddau a gyda llwytho data cyflym. Penderfynodd ein blaenwr Artysh ei ysgrifennu ar Vue - roedd Vue ar y pryd newydd ymddangos. Cymerasom yn ganiataol y byddai’r fframwaith yn datblygu’n ddeinamig, fel React, ar ôl peth amser byddai cymuned Vue yn tyfu a môr o lyfrgelloedd yn ymddangos. Fe wnaethon ni fetio ar Vue ac nid oedd yn difaru - nawr nid yw'n cymryd llawer o amser i ychwanegu swyddogaethau newydd i'r blaen sydd eisoes wedi'u rhaglennu ar y backend. Byddwn yn dweud mwy wrthych am y panel pen blaen mewn erthygl ar wahân.

Cysylltu'r blaen i'r pen ôl

Roedd y blaen wedi'i gysylltu â'r pen ôl trwy hysbysiadau gwthio. Roedd yn rhaid i mi weithio'n galed ac ysgrifennu fy nhriniwr fy hun, ond nawr mae'r wybodaeth ar y dudalen yn cael ei diweddaru bron yn syth.

Beth ddigwyddodd: Mae rhyngwyneb y panel wedi dod yn symlach. Fe wnaethom ei addasu, ac mae llwytho cyflym yn caniatáu ichi ei ddefnyddio hyd yn oed o ffonau symudol yn y munudau olaf cyn esgyn, heb osod cymhwysiad ar wahân i weithio gyda'r panel.

Cam 4. Cynllun profi a mudo

Pan ddechreuodd popeth a'r profion cyntaf basio, cododd cwestiwn mudo. Yn gyntaf oll, fe wnaethom osod bilio a dechrau profi ei weithrediad gyda'r asiant gweinydd.

Yna fe wnaethon ni ysgrifennu sgript syml sy'n trosglwyddo'r gronfa ddata o'r hen filio i'r un newydd.

Roedd yn rhaid i mi brofi ac ailwirio popeth yn llythrennol, gan fod y data wedi'i gyfuno'n un gronfa ddata newydd o dri hen un: Billmanager, VMmanager a IPmanager y rheolwr. Efallai mai’r mudo prawf yw’r peth anoddaf i ni ddod ar ei draws yn y broses o ddatblygu panel newydd.

Ar ôl ailwirio, fe wnaethom gau'r hen filio. Roedd yr ymfudiad data terfynol yn foment ofidus iawn, ond, diolch i Dduw, fe'i cwblhawyd mewn ychydig funudau a heb broblemau amlwg. Roedd yna fân fygiau y gwnaethom eu trwsio yn ystod yr wythnos. Treuliwyd y rhan fwyaf o'r amser yn profi beth ddigwyddodd.

Yna fe wnaethom anfon llythyrau at gleientiaid gyda chyfeiriad y panel newydd a'r bilio a gwneud ailgyfeiriad.

I grynhoi: MAE'N FYW!

Diwedd hapus

O oriau gwaith cyntaf ein meddalwedd, roeddem yn teimlo holl bleserau'r trawsnewid. Roedd y cod yn gyfan gwbl i ni a gyda phensaernïaeth gyfleus, ac roedd y rhyngwyneb yn lân ac yn rhesymegol.
ISPsystem, maddeuwch a ffarwel! Pam a sut y gwnaethom ysgrifennu ein panel rheoli gweinyddwr
Adolygiad cyntaf ar ôl lansio'r panel newydd

Fe wnaethom lansio'r broses drosglwyddo ym mis Rhagfyr, ar y noson cyn y Flwyddyn Newydd 2017, pan oedd y llwyth y lleiaf, er mwyn gwneud y trawsnewid yn haws i gwsmeriaid - nid oes bron neb yn gweithio ar y noson cyn y gwyliau.

Y prif beth a gawsom wrth newid i'n system (ar wahân i ddibynadwyedd a chyfleustra cyffredinol) yw'r gallu i ychwanegu ymarferoldeb yn gyflym ar gyfer cwsmeriaid allweddol - i fod yn wyneb, nid eu asyn.

Beth sydd nesaf?

Rydym yn tyfu, mae swm y data, cwsmeriaid, data cwsmeriaid yn tyfu. Roedd yn rhaid i mi ychwanegu gweinydd Memcached a dau reolwr ciw gyda thasgau gwahanol i'r backend. Mae gan y frontend caching a'i giwiau ei hun.

Wrth gwrs, cawsom anturiaethau o hyd wrth i'r cynnyrch ddatblygu a dod yn fwy cymhleth, er enghraifft pan wnaethom ychwanegu HighLoad.

Yn yr erthygl nesaf, byddwn yn dweud wrthych sut y lansiwyd y tariff Hi-CPU: am galedwedd, meddalwedd, pa dasgau y gwnaethom eu datrys a'r hyn a wnaethom.

Ffynhonnell: hab.com

Ychwanegu sylw