ISPsystem, ngapura lan pamitan! Napa lan carane kita nulis panel kontrol server

ISPsystem, ngapura lan pamitan! Napa lan carane kita nulis panel kontrol server

Hello! Kita minangka "Teknologi Hosting" lan diluncurake 5 taun kepungkur VDSina - vds hosting pisanan digawe khusus kanggo pangembang. Kita ngupayakake supaya trep, kaya DigitalOcean, nanging kanthi dhukungan Rusia, cara pembayaran lan server ing Rusia. Nanging DigitalOcean ora mung linuwih lan rega, nanging uga layanan.

Piranti lunak saka ISPsystem dadi tali sing ngikat tangan kita ing dalan menyang layanan sing keren. Telung taun kepungkur, kita nggunakake tagihan Billmanager lan panel kontrol server VMmanager lan kanthi cepet nyadari yen meh ora bisa nyedhiyakake layanan sing apik tanpa panel kontrol dhewe.

Carane ISPsystem Killed Penak

Bugs

Kita ora bisa ndandani bug kasebut dhewe - saben-saben kita kudu nulis menyang dhukungan wong liya lan ngenteni. Solusi kanggo masalah apa wae mbutuhake respon saka perusahaan pihak katelu.

Dhukungan ISPsystem nanggapi biasane, nanging mbenakake mung sawise sawetara rilis, banjur ora tansah lan ora kabeh. Kadhangkala bug kritis didandani sawetara minggu. Kita kudu njamin pelanggan, njaluk ngapura lan ngenteni ISPsystem kanggo ndandani bug kasebut.

Ancaman Downtime

Nganyari bisa ngasilake downtime sing ora bisa ditebak sing nyebabake kesalahan anyar.

Saben nganyari ana lotre: Aku kudu nutupi tagihan lan nggawe kurban kanggo dewa nganyari - kaping pindho nganyari nyebabake downtime kanggo 10-15 menit. Administrator kita ing wektu iki lungguh ing mripate - kita ora ngerti suwene downtime lan ora bisa prédhiksi nalika ISPsystem mutusake kanggo ngeculake nganyari anyar.

Ing generasi kaping lima, Billmanager dadi luwih apik, nanging kanggo entuk akses menyang fitur sing dibutuhake, aku kudu nginstal beta, sing wis dianyari saben minggu. Yen ana sing rusak, aku kudu menehi akses menyang pangembang liyane supaya bisa ndandani.

Antarmuka panel sing ora trep

Kabeh dipérang dadi panel sing beda-beda lan dikontrol saka macem-macem panggonan. Contone, pelanggan mbayar liwat Billmanager, lan kudu urip maneh utawa nginstal VDS ing VMManager. Staf kita uga kudu ngalih ing antarane windows kanggo mbantu klien, mriksa beban ing server, utawa ndeleng OS apa sing digunakake.

Antarmuka kasebut mbutuhake wektu - kita lan klien kita. Ora ana pitakonan babagan penak, kaya DigitalOcean, ing kahanan kaya ngono.

Siklus urip cendhak kanthi nganyari API sing kerep

Kita nulis plugin dhewe - contone, plugin kanthi cara pembayaran tambahan sing ora ana ing VMManager.

Ing taun-taun pungkasan, VMManager duwe siklus urip sing cendhak, lan ing versi anyar, jeneng variabel utawa fungsi ing API bisa diganti kanthi sewenang-wenang - iki ngrusak plugin kita. Dhukungan kanggo versi lawas diilangi kanthi cepet lan kudu dianyari.

Ora bisa diowahi

Luwih tepat, bisa, nanging arang banget ora efisien. Watesan lisensi ora ngidini sampeyan ngganti kode sumber, sampeyan mung bisa nulis plugin. Plugin maksimal - sawetara item menu, tuntunan langkah-langkah. ISPsystem dirancang kanggo versatility, nanging kita mbutuhake solusi khusus.

Dadi kaputusan wis mateng kanggo nulis panel dhewe. Kita wis nyetel gol:

  • Tanggapi kanthi cepet kesalahan, kewan omo lan bisa ndandani dhewe tanpa ngenteni klien.
  • Ngowahi antarmuka kanthi bebas kanggo alur kerja lan kabutuhan klien.
  • Tambah migunani kanthi desain sing resik lan bisa dingerteni.

Lan kita miwiti pembangunan.

Arsitektur Panel Anyar

Kita duwe tim pangembangan mandhiri, mula kita nulis panel kasebut dhewe.
Karya utama ditindakake dening telung insinyur - direktur teknis Sergey teka karo arsitektur lan nulis agen server, Alexey nindakake tagihan, lan front-end dirakit dening Artysh ngarep-ender kita.

Langkah 1: Agen Server

Agen server minangka server web python sing ngatur perpustakaan mardika, kang banjur ngatur Qemu-kvm hypervisor.

Agen kasebut ngatur kabeh layanan ing server: nggawe, mungkasi, mbusak vds, nginstal sistem operasi, ngganti paramèter, lan liya-liyane liwat perpustakaan libvirt. Ing wektu publikasi artikel, iki luwih saka patang puluh fungsi sing beda-beda, sing ditambahake gumantung saka tugas lan kabutuhan klien.

Ing teori, libvirt bisa dikontrol langsung saka tagihan, nanging iki mbutuhake kode tambahan sing akeh banget lan kita mutusake kanggo misahake fungsi kasebut ing antarane agen lan tagihan - tagihan mung nggawe panjaluk menyang agen liwat API JSON.

Agen kasebut minangka perkara pisanan sing ditindakake, amarga ora mbutuhake antarmuka lan bisa nyoba langsung saka konsol server.

Apa sing diwenehake agen server: lapisan wis katon sing simplifies urip for everyone - tagihan ora perlu kanggo ngirim Bunch kabèh printah, nanging mung nggawe panjalukan. Lan agen bakal nindakake kabeh sing dibutuhake: contone, bakal nyedhiyakake ruang disk lan RAM.

Langkah 2. Tagihan

Kanggo pangembang Alex, iki dudu panel kontrol pisanan - Alex wis suwe dadi hosting, mula dheweke umume ngerti apa sing dibutuhake klien lan apa sing dibutuhake hoster.

Kita nelpon tagihan antarane awake dhewe minangka "panel kontrol": isine ora mung dhuwit lan layanan, nanging uga manajemen, dhukungan pelanggan lan liya-liyane.

Kanggo ngalih saka piranti lunak ISPSystem, perlu kanggo njaga fungsi sadurunge kanggo pelanggan, nransfer kabeh tumindak finansial pangguna saka tagihan lawas menyang sing anyar, uga kabeh layanan lan sambungan ing antarane. Kita sinau apa sing ana ing produk saiki, banjur solusi pesaing, utamane DO lan Vultr. We katon ing cacat lan kaluwihan, diklumpukake saran saka wong sing makarya karo produk lawas saka ISPsystem.

Tagihan anyar nggunakake rong tumpukan: PHP klasik, MySQL (lan ing mangsa ngarep direncanakake ngalih menyang PostgreSQL), Yii2 minangka kerangka ing mburi lan VueJS ing ngarep. Tumpukan bisa digunakake kanthi mandiri, dikembangake dening wong sing beda-beda, lan komunikasi nggunakake API JSON. Kanggo pangembangan saiki lan saiki digunakake PHPStorm и badai web saka JetBrains lan tresna banget (hey guys!)

Panel kasebut dirancang kanthi modular: modul sistem pembayaran, modul registrar domain utawa, contone, modul sertifikat SSL. Sampeyan bisa kanthi gampang nambah fitur anyar utawa mbusak sing lawas. Landasan kanggo ekspansi dilebokake kanthi arsitektur, kalebu ing arah ngelawan, "menyang hardware".
ISPsystem, ngapura lan pamitan! Napa lan carane kita nulis panel kontrol server
Apa kita entuk: panel kontrol kang kita duwe kontrol lengkap. Saiki kewan omo didandani sajrone pirang-pirang jam, dudu minggu, lan fitur-fitur anyar dileksanakake ing panyuwunan pelanggan, lan ora ing panyuwunan ISPSystem.

Langkah 3 Antarmuka

ISPsystem, ngapura lan pamitan! Napa lan carane kita nulis panel kontrol server
Antarmuka minangka gagasan tim kita.

Pisanan, kita ndeleng apa sing bakal kedadeyan yen kita nggawe tambahan ing API ISPsystem tanpa ngganti apa wae ing antarmuka. Pranyata dadi-dadi lan kita mutusaké kanggo nindakake kabeh saka ngeruk.

Kita pitados bilih ingkang paling utama yaiku nggawe antarmuka logis, kanthi desain sing resik lan minimalis, banjur bakal entuk panel sing apik. Lokasi unsur kasebut dibahas ing Megaplan lan antarmuka sing dideleng pangguna ing panel kontrol saiki bakal mboko sithik.

Desain kaca tagihan minangka sing pisanan katon, amarga kita wis nggawe plugin pembayaran kanggo ISPsystem.

Frontend

Dheweke mutusake nggawe panel minangka aplikasi SPA - ora mbutuhake sumber daya lan kanthi cepet loading data. Artysh ngarep-arep kita mutusake kanggo nulis ing Vue - nalika iku Vue nembe muncul. Kita nganggep manawa kerangka kasebut bakal berkembang kanthi dinamis, kaya React, sawise sawetara wektu komunitas Vue bakal tuwuh lan segara perpustakaan bakal katon. We nang ing Vue lan ora Getun iku - saiki iku njupuk sethitik wektu kanggo nambah fungsi anyar ing ngarep sing wis diprogram ing mburi mburi. Kita bakal ngandhani luwih lengkap babagan panel ngarep ing artikel sing kapisah.

Nyambungake frontend menyang backend

Frontend disambungake menyang backend liwat kabar push. Aku kudu kerja keras lan nulis pawangku dhewe, nanging saiki informasi ing kaca dianyari meh langsung.

Ana apa: Antarmuka panel wis dadi luwih gampang. We digawe adaptif, lan loading cepet ngijini sampeyan kanggo nggunakake malah saka ponsel ing menit pungkasan sadurunge lepas landas, tanpa nginstal aplikasi kapisah kanggo karya karo panel.

Langkah 4. Pengujian lan skema migrasi

Nalika kabeh diwiwiti lan tes pisanan lulus, pitakonan migrasi muncul. Kaping pisanan, kita nginstal tagihan lan miwiti nyoba operasi karo agen server.

Banjur kita nulis skrip prasaja sing nransfer database saka tagihan lawas menyang sing anyar.

Aku kudu nyoba lan mriksa maneh kanthi harfiah kabeh, amarga data kasebut digabung dadi siji database anyar saka telung sing lawas: Billmanager, VMmanager lan IPmanager manajer. Mbok menawa migrasi tes minangka perkara sing paling angel ditemoni ing proses ngembangake panel anyar.

Sawise mriksa maneh, kita nutup tagihan lawas. Migrasi data pungkasan minangka wayahe banget, nanging, alhamdulillah, rampung ing sawetara menit lan tanpa masalah sing katon. Ana kewan omo cilik sing didandani sajrone minggu. Umume wektu digunakake kanggo nguji apa sing kedadeyan.

Banjur kita ngirim surat menyang klien kanthi alamat panel anyar lan tagihan lan nggawe pangalihan.

Ringkesan: URIP!

Happy end

Saka jam pisanan karya piranti lunak, kita ngrasakake kabeh kesenengan transisi kasebut. Kode iki rampung kita lan karo arsitektur trep, lan antarmuka resik lan logis.
ISPsystem, ngapura lan pamitan! Napa lan carane kita nulis panel kontrol server
Tinjauan pisanan sawise diluncurake panel anyar

Kita ngluncurake proses transisi ing Desember, ing wayah wengi Taun Anyar 2017, nalika beban paling sithik, kanggo nggawe transisi luwih gampang kanggo para pelanggan - meh ora ana sing kerja ing wayah wengi preian.

Wangsulan utama sing entuk nalika ngalih menyang sistem kita (saliyane saka linuwih lan kepenak umum) yaiku kemampuan kanggo nambah fungsionalitas kanthi cepet kanggo para pelanggan utama - dadi pasuryane, dudu bokonge.

Apa sabanjuré?

Kita tambah akeh, jumlah data, pelanggan, data pelanggan saya akeh. Aku kudu nambah server Memcached lan loro manager antrian karo tugas beda kanggo backend. Frontend duwe caching lan antrian dhewe.

Mesthi wae, kita isih duwe petualangan amarga produk kasebut dikembangake lan dadi luwih rumit, umpamane nalika nambah HighLoad.

Ing artikel sabanjure, kita bakal menehi pitutur marang kowe carane tarif Hi-CPU diluncurake: babagan hardware, piranti lunak, tugas apa sing ditanggulangi lan apa sing ditindakake.

Source: www.habr.com

Add a comment