ISPsystem, pasayloa ug panamilit! Ngano ug giunsa namo pagsulat ang among control panel sa server

ISPsystem, pasayloa ug panamilit! Ngano ug giunsa namo pagsulat ang among control panel sa server

Hello! Kami ang "Hosting Technologies" ug gilunsad 5 ka tuig na ang milabay VDSina - ang una nga vds hosting nga gihimo alang sa mga developer. Gipaningkamutan namon nga himuon kini nga kombenyente, sama sa DigitalOcean, apan adunay suporta sa Russia, mga pamaagi sa pagbayad ug mga server sa Russia. Apan ang DigitalOcean dili lamang kasaligan ug presyo, kini usa usab ka serbisyo.

Ang software gikan sa ISPsystem nahimo nga usa ka pisi nga naghigot sa among mga kamot padulong sa usa ka cool nga serbisyo. Tulo ka tuig ang milabay, among gigamit ang Billmanager billing ug ang VMmanager server control panel ug dali nga nakaamgo nga halos imposible ang paghatag ug maayong serbisyo nga wala ang among kaugalingong control panel.

Giunsa Pagpatay sa ISPsystem ang Kasayon

Mga bug

Dili namo masulbad ang bug sa among kaugalingon - sa matag higayon nga kami kinahanglan nga magsulat sa suporta sa uban ug maghulat. Ang solusyon sa bisan unsang problema nanginahanglan tubag sa usa ka ikatulo nga partido nga kompanya.

Ang suporta sa ISPsystem kasagaran nga mitubag, apan ang mga pag-ayo moabut lamang human sa pipila ka mga pagpagawas, ug unya dili kanunay ug dili tanan. Usahay ang mga kritikal nga bug gitul-id sulod sa pipila ka semana. Kinahanglan namon nga pasaligon ang mga kostumer, mangayo og pasaylo ug maghulat nga ayohon sa ISPsystem ang bug.

Panghulga sa Downtime

Ang mga pag-update mahimong makamugna og dili matag-an nga mga downtime nga makapukaw sa bag-ong mga sayup.

Ang matag pag-update usa ka loterya: Kinahanglan kong tabunan ang pagsingil ug magsakripisyo sa mga diyos sa mga pag-update - duha ka beses nga ang pag-update nagpahinabog downtime sa 10-15 minuto. Ang among mga admin niining panahona nagtan-aw sa ilang mga mata - wala kami nahibal-an kung unsa kadugay ang downtime ug dili matagna kung kanus-a ang ISPsystem magdesisyon nga magpagawas usa ka bag-ong update.

Sa ikalimang henerasyon, ang Billmanager nahimong mas maayo, apan aron makakuha og access sa gikinahanglan nga mga bahin, kinahanglan kong mag-instalar og beta, nga gi-update na matag semana. Kung adunay naguba, kinahanglan nako nga hatagan ug access ang ubang mga developer aron sila adunay ayohon.

Dili kombenyente nga interface sa panel

Ang tanan gibahin sa lainlaing mga panel ug gikontrol gikan sa lainlaing mga lugar. Pananglitan, ang mga kustomer nagbayad pinaagi sa Billmanager, apan kinahanglan nila nga i-reboot o i-install pag-usab ang VDS sa VMManager. Ang among mga empleyado kinahanglan usab nga magbalhinbalhin taliwala sa mga bintana aron matabangan ang usa ka kliyente, susihon ang load sa iyang server, o tan-awon kung unsang OS ang iyang gigamit.

Ang ingon nga interface nagkinahanglag panahon - pareho namo ug sa among mga kliyente. Wala’y pangutana sa bisan unsang kasayon, sama sa DigitalOcean, sa ingon nga kahimtang.

Mubo nga mga siklo sa kinabuhi nga adunay kanunay nga pag-update sa API

Gisulat namon ang among kaugalingon nga mga plugin - pananglitan, usa ka plugin nga adunay dugang nga mga pamaagi sa pagbayad nga wala sa VMManager.

Sa bag-ohay nga mga tuig, ang VMManager adunay usa ka mubo nga siklo sa kinabuhi, ug sa mga bag-ong bersyon, ang mga ngalan sa mga variable o function sa API mahimo’g magbag-o nga arbitraryo - kini nakaguba sa among mga plugins. Ang suporta alang sa mas daan nga mga bersyon dali nga nawala ug kinahanglan nga i-update.

Dili mausab

Sa mas tukma, kini posible, apan hilabihan ka dili epektibo. Ang mga pagdili sa lisensya wala magtugot kanimo sa paghimo sa mga pagbag-o sa source code, mahimo ka lamang magsulat sa mga plugins. Maximum nga mga plugins - pipila ka mga butang sa menu, usa ka step-by-step wizard. Ang ISPsystem gidisenyo alang sa versatility, apan nagkinahanglan kami og espesyal nga mga solusyon.

Busa ang desisyon hinog na sa pagsulat sa akong kaugalingong panel. Nagtakda kami og mga tumong:

  • Pagtubag dayon sa mga kasaypanan, mga bug ug makahimo sa pag-ayo niini sa imong kaugalingon nga dili maghulat sa kliyente.
  • Libre nga usbon ang interface alang sa mga workflow ug mga kinahanglanon sa kliyente.
  • Dugangi ang usability sa usa ka limpyo ug masabtan nga disenyo.

Ug nagsugod kami sa pag-uswag.

Bag-ong Panel nga Arkitektura

Kami adunay usa ka self-sufficient development team, mao nga kami mismo ang nagsulat sa panel.
Ang nag-unang buluhaton gihimo sa tulo ka mga inhenyero - ang teknikal nga direktor nga si Sergey naghimo sa arkitektura ug gisulat ang ahente sa server, si Alexey ang naghimo sa pagsingil, ug ang front-end gitigum sa among front-ender nga si Artysh.

Lakang 1: Ahente sa Server

Ang ahente sa server usa ka web server sa python nga nagdumala sa librarya libut, nga sa baylo nagdumala Qemu-kvm hypervisor.

Ang ahente nagdumala sa tanan nga mga serbisyo sa server: paghimo, paghunong, pagtangtang sa mga vd, pag-install sa mga operating system, pagbag-o sa mga parameter, ug uban pa pinaagi sa librarya sa libvirt. Sa panahon sa pagmantala sa artikulo, kini mao ang labaw pa kay sa kap-atan ka lain-laing mga gimbuhaton, nga atong gidugang depende sa buluhaton ug sa mga panginahanglan sa kliyente.

Sa teoriya, ang libvirt mahimong direktang kontrolahon gikan sa pagsingil, apan nagkinahanglan kini og daghan nga dugang nga code ug nakahukom kami nga bulagon kini nga mga gimbuhaton tali sa ahente ug billing - ang billing naghangyo lang sa ahente pinaagi sa JSON API.

Ang ahente mao ang una nga butang nga among gibuhat, tungod kay wala kini magkinahanglan bisan unsang interface ug posible nga sulayan kini direkta gikan sa console sa server.

Unsa ang gihatag sa ahente sa server kanamo: usa ka layer ang nagpakita nga nagpasimple sa kinabuhi alang sa tanan - ang pagsingil dili kinahanglan magpadala usa ka tibuuk nga hugpong sa mga mando, apan maghimo lang usa ka hangyo. Ug buhaton sa ahente ang tanan nga gikinahanglan: pananglitan, maggahin kini og disk space ug RAM.

Lakang 2. Pagsingil

Alang sa among developer nga si Alex, dili kini ang una nga control panel - dugay na nga nag-host si Alex, mao nga sa kasagaran nasabtan niya kung unsa ang kinahanglan sa kliyente ug kung unsa ang kinahanglan sa host.

Gitawag namon ang pagsingil sa among kaugalingon nga usa ka "control panel": wala lamang kini sulud nga salapi ug serbisyo, apan usab ang ilang pagdumala, suporta sa kustomer ug daghan pa.

Aron mabalhin gikan sa ISPSystem software, gikinahanglan nga hingpit nga mapreserbar ang nauna nga pagpaandar alang sa mga kustomer, ibalhin ang tanan nga mga aksyon sa pinansyal sa mga tiggamit gikan sa daan nga pagsingil ngadto sa bag-o, ingon man ang tanan nga mga serbisyo ug koneksyon tali kanila. Gitun-an namon kung unsa ang naa sa karon nga produkto, dayon ang mga solusyon sa mga kakompetensya, labi na ang DO ug Vultr. Among gitan-aw ang mga disbentaha ug mga bentaha, nakolekta ang feedback gikan sa mga tawo nga nagtrabaho sa mga daan nga produkto gikan sa ISPsystem.

Ang bag-ong billing migamit ug duha ka stack: classic PHP, MySQL (ug sa umaabot giplanohan nga mobalhin sa PostgreSQL), Yii2 isip framework sa backend ug VueJS sa atubangan. Ang mga stack nagtrabaho nga independente sa usag usa, gihimo sa lainlaing mga tawo, ug nakigsulti gamit ang JSON API. Para sa kalambuan kaniadto ug karon atong gamiton PHPStorm ΠΈ webstorm gikan sa JetBrains ug gihigugma sila pag-ayo (hey guys!)

Ang panel gidisenyo sa usa ka modular nga basehan: sistema sa pagbayad modules, domain registrar module o, pananglitan, usa ka SSL certificate module. Dali ka makadugang og bag-ong feature o makatangtang sa daan. Ang sukaranan alang sa pagpalapad gibutang sa arkitektura, lakip sa atbang nga direksyon, "paingon sa hardware".
ISPsystem, pasayloa ug panamilit! Ngano ug giunsa namo pagsulat ang among control panel sa server
Unsay nakuha namo: usa ka control panel diin kita adunay bug-os nga kontrol. Karon ang mga bug gitakda sa mga oras, dili mga semana, ug ang mga bag-ong bahin gipatuman sa hangyo sa mga kustomer, ug dili sa hangyo sa ISPSystem.

Lakang 3 Interface

ISPsystem, pasayloa ug panamilit! Ngano ug giunsa namo pagsulat ang among control panel sa server
Ang interface mao ang brainchild sa among team.

Una, gitan-aw namon kung unsa ang mahitabo kung maghimo kami usa ka add-on sa ISPsystem API nga wala’y sukaranan nga pagbag-o bisan unsa sa interface. Nahitabo kini ug nakahukom kami nga buhaton ang tanan gikan sa wala.

Kami nagtuo nga ang nag-unang butang mao ang paghimo sa interface nga makatarunganon, nga adunay usa ka limpyo ug minimalistic nga disenyo, ug unya makakuha kami usa ka matahum nga panel. Ang lokasyon sa mga elemento gihisgutan sa Megaplan ug ang interface nga makita sa mga tiggamit sa control panel karon anam-anam nga matawo.

Ang laraw sa panid sa pagsingil mao ang una nga nagpakita, tungod kay nakahimo na kami mga plugin sa pagbayad alang sa ISPsystem.

Frontend

Nakahukom sila nga himuon ang panel nga usa ka aplikasyon sa SPA - dili kinahanglan sa mga kahinguhaan ug adunay paspas nga pagkarga sa datos. Nakahukom ang among front-ender nga si Artysh nga isulat kini sa Vue β€” niadtong panahona bag-o pa lang mitungha ang Vue. Nagtuo kami nga ang balangkas molambo nga dinamiko, sama sa React, pagkahuman sa pila ka panahon ang komunidad sa Vue motubo ug usa ka dagat sa mga librarya ang makita. Nagpusta kami sa Vue ug wala nagbasol - karon gamay ra ang oras aron madugangan ang mga bag-ong function sa atubangan nga na-program na sa backend. Isulti namon kanimo ang labi pa bahin sa front-end panel sa usa ka bulag nga artikulo.

Pagkonektar sa frontend ngadto sa backend

Ang frontend konektado sa backend pinaagi sa push notifications. Kinahanglan kong magtrabaho og maayo ug magsulat sa akong kaugalingong handler, apan karon ang impormasyon sa panid gi-update halos diha-diha dayon.

Unsay nahitabo: Ang interface sa panel nahimong mas simple. Gihimo namo kini nga adaptive, ug ang paspas nga pagkarga nagtugot kanimo sa paggamit niini bisan gikan sa mga mobile phone sa katapusang mga minuto sa wala pa ang pag-takeoff, nga walay pag-instalar sa usa ka bulag nga aplikasyon aron magtrabaho uban sa panel.

Lakang 4. Pagsulay ug pamaagi sa paglalin

Sa diha nga ang tanan nagsugod ug ang unang mga pagsulay milabay, ang pangutana sa paglalin mitungha. Una sa tanan, among gi-install ang billing ug gisugdan ang pagsulay sa operasyon niini sa ahente sa server.

Dayon nagsulat kami og usa ka yano nga script nga nagbalhin sa database gikan sa daan nga billing ngadto sa bag-o.

Kinahanglan nako nga sulayan ug susihon pag-usab ang tanan, tungod kay ang datos gihiusa sa usa ka bag-ong database gikan sa tulo ka mga karaan: Billmanager, VMmanager ug IPmanager sa manager. Tingali ang mga paglalin sa pagsulay mao ang labing lisud nga butang nga among nasugatan sa proseso sa paghimo og bag-ong panel.

Human sa pagsusi pag-usab, gisirad-an namo ang karaang billing. Ang katapusang paglalin sa datos usa ka makahasol nga higayon, apan, salamat sa Dios, nahuman kini sa pipila ka minuto ug wala’y nakita nga mga problema. Adunay gagmay nga mga bug nga among giayo sa semana. Kadaghanan sa panahon gigugol sa pagsulay kung unsa ang nahitabo.

Dayon nagpadala kami og mga sulat ngadto sa mga kliyente nga adunay adres sa bag-ong panel ug billing ug mihimo og redirect.

Sa katingbanan: BUHI NA!

Malipayon nga katapusan

Gikan sa unang mga oras sa pagtrabaho sa among software, gibati namo ang tanang kalipay sa transisyon. Ang kodigo bug-os nga atoa ug adunay kombenyente nga arkitektura, ug ang interface limpyo ug lohikal.
ISPsystem, pasayloa ug panamilit! Ngano ug giunsa namo pagsulat ang among control panel sa server
Unang pagrepaso human sa paglusad sa bag-ong panel

Gilunsad namo ang proseso sa transisyon sa Disyembre, sa bisperas sa Bag-ong Tuig 2017, sa diha nga ang load mao ang pinakagamay, aron sa paghimo sa transisyon nga mas sayon ​​alang sa mga kustomer - halos walay usa nga nagtrabaho sa bisperas sa mga holidays.

Ang nag-unang butang nga among nakuha sa dihang mibalhin sa among sistema (gawas sa kinatibuk-ang kasaligan ug kasayon) mao ang abilidad nga dali nga makadugang sa pag-andar alang sa mga nag-unang kustomer - aron mahimong ilang nawong, dili ilang asno.

Unsay sunod?

Nag-uswag kami, ang gidaghanon sa datos, kustomer, data sa kustomer nagkadako. Kinahanglan kong magdugang og Memcached server ug duha ka queue managers nga adunay lain-laing mga buluhaton sa backend. Ang frontend adunay caching ug kaugalingon nga pila.

Siyempre, aduna gihapon kami mga panimpalad samtang ang produkto naugmad ug nahimong mas komplikado, pananglitan sa dihang among gidugang ang HighLoad.

Sa sunod nga artikulo, isulti namon kanimo kung giunsa ang paglansad sa taripa sa Hi-CPU: bahin sa hardware, software, unsa nga mga buluhaton ang among nasulbad ug kung unsa ang among gibuhat.

Source: www.habr.com

Idugang sa usa ka comment