ISPsistema, barkatu eta agur! Zergatik eta nola idatzi genuen gure zerbitzariaren kontrol panela

ISPsistema, barkatu eta agur! Zergatik eta nola idatzi genuen gure zerbitzariaren kontrol panela

Kaixo! "Hosting Technologies" gara eta duela 5 urte jarri genuen martxan VDSina β€” Garatzaileentzako bereziki sortutako vds hostinga. Erosoa izan dadin ahalegintzen gara, DigitalOcean bezala, baina Errusiako laguntzarekin, ordainketa metodoekin eta zerbitzariekin. Baina DigitalOcean fidagarritasuna eta prezioa ez ezik, zerbitzu bat ere bada.

ISPsystem-en softwarea zerbitzu polit baterako bidean eskuak lotzen zituen soka bat izan zen. Duela hiru urte, Billmanager fakturazioa eta VMmanager zerbitzariaren kontrol panela erabili genituen eta azkar konturatu ginen ia ezinezkoa zela zerbitzu on bat eskaintzea gure kontrol panel propiorik gabe.

Nola ISPsistemak erosotasuna hil zuen

zomorroak

Ezin izan dugu akatsa guk geuk konpondu; beste norbaiten laguntzara idatzi eta itxaron behar izaten genuen bakoitzean. Edozein arazoren konponbideak hirugarren enpresa baten erantzuna behar zuen.

ISPsistemaren laguntzak normal erantzun zuen, baina konponketak kaleratze gutxi batzuen ondoren etorri ziren, eta gero ez beti eta ez guztiak. Batzuetan, akats kritikoak zenbait astez zuzendu ziren. Bezeroak lasaitu, barkamena eskatu eta ISPsystem akatsa konpondu arte itxaron behar izan dugu.

Etenaldiko mehatxua

Eguneratzeek ezusteko geldialdiak sor ditzakete, akats berriak eragin dituztenak.

Eguneratze bakoitza loteria bat zen: fakturazioa estali eta eguneratzeen jainkoei sakrifizioak egin behar izan nituen - eguneratzeak pare bat aldiz 10-15 minutuko geldialdia eragin zuen. Une honetan gure administratzaileak begietan eserita zeuden - inoiz ez genuen jakin zenbat denbora iraungo zuen geldialdiak eta ezin genuen aurreikusi ISPsystem-ek eguneratze berri bat askatzea noiz erabakiko zuen.

Bosgarren belaunaldian, Billmanager hobetu zen, baina beharrezko eginbideetarako sarbidea izateko, beta bat instalatu behar izan nuen, jada astero eguneratzen zena. Zerbait apurtzen bazen, beste garatzaileei sarbidea eman behar nien, zerbait konpondu ahal izateko.

Panel interfaze deserosoa

Dena panel ezberdinetan banatuta zegoen eta leku ezberdinetatik kontrolatzen zen. Adibidez, bezeroek Billmanager bidez ordaintzen zuten eta VDS berrabiarazi edo berriro instalatu behar izan zuten VMManager-en. Gure langileek ere leiho batetik bestera aldatu behar izan zuten bezero bati laguntzeko, zerbitzariaren karga egiaztatzeko edo zer OS erabiltzen ari zen ikusteko.

Horrelako interfazeak denbora behar du, bai gurea bai gure bezeroena. Ez dago inolako erosotasunik, DigitalOcean-en bezala, halako egoera batean.

Bizi-ziklo laburrak APIaren eguneratze sarriekin

Geure pluginak idatzi ditugu, adibidez, VMManager-en ez dauden ordainketa-metodo osagarriak dituen plugin bat.

Azken urteotan, VMManager-ek bizi-ziklo labur samarra izan zuen, eta bertsio berrietan, APIko aldagaien edo funtzioen izenak arbitrarioki alda zitezkeen - honek gure pluginak hautsi zituen. Bertsio zaharrentzako laguntza azkar kendu zen eta eguneratu egin behar izan zen.

Ezin da aldatu

Zehatzago esanda, posible da, baina oso ez-eraginkorra. Lizentzien murrizketek ez dute iturburu kodean aldaketarik egiten uzten, pluginak soilik idatzi ditzakezu. Gehienezko pluginak - menuko elementu batzuk, urratsez urratseko morroia. ISPsistema aldakortasunerako diseinatuta dago, baina irtenbide espezializatuak behar genituen.

Beraz, nire panela idazteko erabakia heldua zen. Helburuak jarri ditugu:

  • Erantzun azkar akatsei, akatsei eta izan zaitez zuk zeuk konpondu bezeroa itxaron gabe.
  • Aldatu interfazea libreki lan-fluxuetarako eta bezeroen beharretarako.
  • Handitu erabilgarritasuna diseinu garbi eta ulergarri batekin.

Eta garatzen hasi ginen.

Panelen Arkitektura Berria

Garapen talde autosufizientea dugu, beraz, panela geuk idatzi dugu.
Lan nagusia hiru ingeniarik egin zuten: Sergey zuzendari teknikoak arkitektura sortu zuen eta zerbitzariaren agentea idatzi zuen, Alexey fakturazioa egin zuen eta frontend-a Artysh-ek muntatu zuen.

1. urratsa: zerbitzariaren agentea

Zerbitzariaren agentea liburutegia kudeatzen duen python web zerbitzari bat da libvirt, aldi berean gobernatzen duena Qemu-kvm hipervisor.

Agenteak zerbitzariko zerbitzu guztiak kudeatzen ditu: vd-ak sortu, gelditu, ezabatu, sistema eragileak instalatu, parametroak aldatu eta abar libvirt liburutegiaren bidez. Artikulua argitaratzen den unean, berrogei funtzio ezberdin baino gehiago dira, zereginaren eta bezeroaren beharren arabera osatzen ditugunak.

Teorian, libvirt fakturaziotik zuzenean kontrola zitekeen, baina horrek kode gehigarri gehiegi behar zuen eta funtzio horiek agentearen eta fakturazioaren artean bereiztea erabaki genuen - fakturazioak agenteari eskaerak egiten dizkio JSON APIaren bidez.

Agentea da egin genuen lehenengo gauza, ez baitzuen inolako interfazerik behar eta zerbitzariaren kontsolatik zuzenean probatu ahal izan baitzen.

Zerbitzariaren agenteak eman diguna: guztion bizitza errazten duen geruza bat agertu da - fakturazioak ez du komando asko bidali behar, eskaera bat baino ez du egin behar. Eta agenteak behar den guztia egingo du: adibidez, diskoko espazioa eta RAM esleituko ditu.

2. urratsa. Fakturazioa

Gure Alex garatzailearentzat, hau ez zen lehen kontrol panela izan - Alexek denbora luzez egon da hostingean, beraz, oro har, bezeroak zer behar zuen eta ostalariak zer behar zuen ulertzen zuen.

Gure artean fakturazioa "kontrol panel" deitzen dugu: dirua eta zerbitzuak ez ezik, haien kudeaketa, bezeroarentzako arreta eta askoz gehiago ere biltzen ditu.

ISPSystem softwaretik aldatzeko, beharrezkoa zen bezeroentzako aurreko funtzionaltasuna guztiz gordetzea, erabiltzaileen finantza-ekintza guztiak fakturazio zaharretik berrira transferitzea, baita haien arteko zerbitzu eta konexio guztiak ere. Egungo produktuan zer dagoen aztertu dugu, gero lehiakideen soluzioak, batez ere DO eta Vultr. Desabantailak eta abantailak aztertu genituen, ISPsystem-eko produktu zaharrekin lan egiten zuten pertsonen iritzia jaso genuen.

Fakturazio berriak bi pila erabili zituen: PHP klasikoa, MySQL (eta etorkizunean PostgreSQLra aldatzea aurreikusten da), Yii2 atzeko aldean marko gisa eta VueJS aurrealdean. Pilak elkarrengandik independentean funtzionatzen dute, pertsona ezberdinek garatzen dituzte eta JSON APIa erabiliz komunikatzen dira. Garapenerako orduan eta orain erabiltzen dugu PHPStorm ΠΈ WebEkaitza JetBrains-etik eta maite itzazu (aixo mutilak!)

Panela modu modular batean diseinatuta dago: ordainketa-sistemaren moduluak, domeinu-erregistratzeko modulua edo, adibidez, SSL ziurtagiriaren modulua. Ezaugarri berri bat erraz gehi dezakezu edo zahar bat kendu. Hedapenaren oinarriak arkitektonikoki jarrita daude, kontrako noranzkoan barne, "hardwarerantz".
ISPsistema, barkatu eta agur! Zergatik eta nola idatzi genuen gure zerbitzariaren kontrol panela
Zer lortu dugu: kontrol osoa dugun kontrol-panela. Orain akatsak orduetan konpontzen dira, ez asteetan, eta funtzio berriak ezartzen dira bezeroek eskatuta, eta ez ISPSystem-ek eskatuta.

3. urratsa Interfazea

ISPsistema, barkatu eta agur! Zergatik eta nola idatzi genuen gure zerbitzariaren kontrol panela
Interfazea gure taldearen ideia da.

Lehenik eta behin, zer gertatuko litzatekeen aztertu dugu ISPsystem APIaren gainean gehigarri bat egingo bagenu, funtsean interfazean ezer aldatu gabe. Hala atera zen eta dena hutsetik egitea erabaki genuen.

Uste genuen gauza nagusia interfazea logikoa egitea dela, diseinu garbi eta minimalista batekin, eta gero panel eder bat lortuko dugu. Elementuen kokapena Megaplanen eztabaidatu zen eta erabiltzaileek orain kontrol panelean ikusten duten interfazea pixkanaka jaioko da.

Fakturazio-orriaren diseinua agertu zen lehena, dagoeneko egin baititugu ordainketa-pluginak ISPsystemerako.

Frontend

Panela SPA aplikazio bat egitea erabaki zuten - baliabideak ez du eskatzen eta datuak azkar kargatzeko. Gure front-end Artysh-ek Vue-n idaztea erabaki zuen β€” garai hartan Vue agertu berria zen. Esparrua modu dinamikoan garatuko zela suposatu genuen, React bezala, denboraren buruan Vue komunitatea haziko zela eta liburutegien itsaso bat agertuko zela. Vue-ren aldeko apustua egin dugu eta ez gara damutu; orain denbora gutxi behar da atzeko aldean dagoeneko programatuta dauden funtzio berriak gehitzeko aurrealdean. Frontend panelari buruzko informazio gehiago emango dizugu aparteko artikulu batean.

Frontend-a backend-era konektatzea

Frontend-a backend-era konektatu zen push jakinarazpenen bidez. Gogor lan egin eta nire kudeatzailea idatzi behar izan nuen, baina orain orrialdeko informazioa ia berehala eguneratzen da.

Zer gertatu zen: Panel interfazea sinpleagoa bihurtu da. Egokigarria egin dugu, eta karga azkarrak mugikorretatik ere erabil dezakezu aireratu aurreko azken minutuetan, panelarekin lan egiteko aparteko aplikaziorik instalatu gabe.

4. urratsa. Proba eta migrazio eskema

Dena hasi eta lehen probak gainditu zirenean, migrazioaren auzia sortu zen. Lehenik eta behin, fakturazioa instalatu eta funtzionamendua probatzen hasi ginen zerbitzariaren agentearekin.

Ondoren, fakturazio zaharretik berrira datu-basea transferitzen duen script soil bat idatzi genuen.

Literalki dena probatu eta berriro egiaztatu behar izan nuen, datuak hiru datu zaharren datu-base berri batean elkartu baitziren: Billmanager, VMmanager eta kudeatzailearen IPmanager. Agian probako migrazioak dira panel berri bat garatzeko prozesuan topatu dugun gauzarik zailena.

Berriro egiaztatu ondoren, fakturazio zaharra itxi genuen. Azken datuen migrazioa oso momentu kezkagarria izan zen, baina, Jainkoari eskerrak, minutu gutxitan eta arazo nabaririk gabe burutu zen. Astean zehar konpondu genituen akats txikiak egon ziren. Gertatutakoa probatzen igarotzen zen denbora gehiena.

Ondoren, bezeroei gutunak bidali genizkien panel berriaren helbidea eta fakturazioarekin eta birbideraketa egin genuen.

Laburbilduz: BIZIRIK DAGO!

Amaiera zoriontsua

Gure softwarearen lehen lan orduetatik, trantsizioaren gozamen guztiak sentitu genituen. Kodea guztiz gurea zen eta arkitektura eroso batekin, eta interfazea garbia eta logikoa zen.
ISPsistema, barkatu eta agur! Zergatik eta nola idatzi genuen gure zerbitzariaren kontrol panela
Lehenengo berrikuspena panel berria abian jarri ondoren

Trantsizio-prozesua abenduan jarri genuen martxan, 2017ko Urte Berriaren bezperan, karga gutxien zegoenean, bezeroei trantsizioa errazteko - ia inork ez du lan egiten oporren bezperan.

Gure sistemara aldatzean lortu dugun gauza nagusia (fidagarritasun orokorraz eta erosotasunaz gain) bezero gakoentzako funtzionalitateak azkar gehitzeko gaitasuna da: haien aurpegia izatea, ez ipurdia.

Zer da hurrengoa?

Hazten ari gara, datu kopurua, bezeroak, bezeroen datuak hazten ari dira. Memcached zerbitzari bat eta zeregin desberdinak dituzten bi ilara kudeatzaile gehitu behar izan nituen backend-era. Frontendak cachea eta bere ilarak ditu.

Jakina, oraindik abenturak izan genituen produktua garatu eta konplexuago bihurtu ahala, adibidez HighLoad gehitu genuenean.

Hurrengo artikuluan, Hi-CPU tarifa nola abian jarri zen kontatuko dizugu: hardwareari, softwareari buruz, zer zeregin konpondu genituen eta zer egin genuen.

Iturria: www.habr.com

Gehitu iruzkin berria