ISPsystem, oprosti i zbogom! Zašto i kako smo napisali našu kontrolnu ploču poslužitelja

ISPsystem, oprosti i zbogom! Zašto i kako smo napisali našu kontrolnu ploču poslužitelja

Zdravo! Mi smo "Hosting Technologies" i pokrenuti smo prije 5 godina VDSina — prvi vds hosting stvoren posebno za programere. Nastojimo ga učiniti praktičnim, poput DigitalOceana, ali s ruskom podrškom, načinima plaćanja i poslužiteljima u Rusiji. Ali DigitalOcean nije samo pouzdanost i cijena, to je i usluga.

Softver iz ISPsystema pokazao se kao uže koje nam je vezalo ruke na putu do cool usluge. Prije tri godine koristili smo Billmanager billing i VMmanager serversku kontrolnu ploču i vrlo brzo shvatili da je gotovo nemoguće pružiti kvalitetnu uslugu bez vlastite kontrolne ploče.

Kako je ISPsystem ubio praktičnost

Bube

Nismo mogli sami popraviti grešku - svaki put smo morali pisati nečijoj drugoj podršci i čekati. Rješenje bilo kojeg problema zahtijevalo je odgovor treće strane.

Podrška ISPsystema reagirala je normalno, ali popravci su dolazili tek nakon nekoliko izdanja, i to ne uvijek i ne sva. Ponekad su se kritične pogreške ispravljale nekoliko tjedana. Morali smo umiriti kupce, ispričati se i čekati da ISPsystem popravi grešku.

Prijetnja zastoja

Ažuriranja bi mogla generirati nepredvidive zastoje koji su izazvali nove pogreške.

Svako ažuriranje bilo je lutrija: morao sam prikriti naplatu i žrtvovati se bogovima ažuriranja - nekoliko puta je ažuriranje uzrokovalo zastoj na 10-15 minuta. Naši su administratori u to vrijeme sjedili na oči - nikad nismo znali koliko će dugo trajati zastoj i nismo mogli predvidjeti kada će ISPsystem odlučiti objaviti novo ažuriranje.

Na petoj generaciji, Billmanager je postao bolji, ali da bih dobio pristup potrebnim značajkama, morao sam instalirati beta verziju, koja se već ažurirala svaki tjedan. Ako se nešto pokvari, morao sam dati pristup drugim programerima da mogu nešto popraviti.

Neprikladno sučelje ploče

Sve je bilo podijeljeno na različite ploče i kontrolirano s različitih mjesta. Na primjer, kupci su plaćali putem Billmanagera, a morali su ponovno pokrenuti sustav ili ponovno instalirati VDS u VMManageru. Naše se osoblje također moralo prebacivati ​​između prozora kako bi pomoglo klijentu, provjerilo opterećenje njegovog poslužitelja ili vidjelo koji OS koristi.

Za takvo sučelje potrebno je vrijeme – i naše i naših klijenata. U takvoj situaciji nema govora ni o kakvoj pogodnosti poput one DigitalOceana.

Kratki životni ciklusi s čestim ažuriranjima API-ja

Napisali smo vlastite dodatke - na primjer, dodatak s dodatnim načinima plaćanja kojih nema u VMManageru.

Posljednjih godina VMManager je imao relativno kratak životni ciklus, au novim verzijama nazivi varijabli ili funkcija u API-ju mogli su se proizvoljno mijenjati - to je pokvarilo naše dodatke. Podrška za starije verzije brzo je ukinuta i morala se ažurirati.

Ne može se mijenjati

Točnije, moguće je, ali krajnje neučinkovito. Ograničenja licence ne dopuštaju vam da mijenjate izvorni kod, možete samo pisati dodatke. Maksimalan broj dodataka - neke stavke izbornika, čarobnjak korak po korak. ISPsystem je dizajniran za svestranost, ali su nam bila potrebna specijalizirana rješenja.

Tako je sazrela odluka da napišem vlastitu ploču. Postavili smo ciljeve:

  • Brzo reagirajte na greške, bugove i budite u mogućnosti da ih sami popravite bez čekanja klijenta.
  • Slobodno mijenjajte sučelje za tijek rada i potrebe klijenata.
  • Povećajte upotrebljivost čistim i razumljivim dizajnom.

I krenuli smo u razvoj.

Nova arhitektura panela

Imamo samodostatni razvojni tim, pa smo sami napisali panel.
Glavni posao obavila su tri inženjera - tehnički direktor Sergey osmislio je arhitekturu i napisao agenta poslužitelja, Alexey je izvršio naplatu, a front-end je sastavio naš front-ender Artysh.

Korak 1: Agent poslužitelja

Agent poslužitelja je python web poslužitelj koji upravlja bibliotekom libvirt, koji zauzvrat vlada Qemu-kvm hipervizor.

Agent upravlja svim uslugama na poslužitelju: kreiranje, zaustavljanje, brisanje vd-ova, instaliranje operativnih sustava, mijenjanje parametara i tako dalje kroz libvirt biblioteku. U trenutku objave članka radi se o više od četrdeset različitih funkcija, koje nadopunjujemo ovisno o zadatku i potrebama naručitelja.

U teoriji, libvirt se može kontrolirati izravno iz naplate, ali to zahtijeva previše dodatnog koda i odlučili smo odvojiti ove funkcije između agenta i naplate - naplata jednostavno šalje zahtjeve agentu putem JSON API-ja.

Agent je prva stvar koju smo napravili jer nije zahtijevao nikakvo sučelje i bilo ga je moguće testirati izravno sa serverske konzole.

Što nam je agent poslužitelja dao: pojavio se sloj koji svima pojednostavljuje život - za naplatu nije potrebno slati hrpu naredbi, već samo napraviti zahtjev. A agent će učiniti sve što je potrebno: na primjer, dodijelit će prostor na disku i RAM.

Korak 2. Naplata

Našem developeru Alexu ovo nije bila prva kontrolna ploča - Alex je dugo bio u hostingu, tako da je općenito razumio što klijent treba, a što hoster.

Međusobno naplatu nazivamo “kontrolna ploča”: ona ne sadrži samo novac i usluge, već i njihovo upravljanje, korisničku podršku i još mnogo toga.

Za prelazak sa softvera ISPSystem bilo je potrebno u potpunosti očuvati dosadašnje funkcionalnosti za korisnike, prenijeti sve financijske radnje korisnika sa starog billinga na novi, kao i sve usluge i veze između njih. Proučavali smo što se nalazi u trenutnom proizvodu, zatim rješenja konkurenata, uglavnom DO i Vultr. Pogledali smo nedostatke i prednosti, prikupili povratne informacije od ljudi koji su radili sa starim proizvodima iz ISPsystema.

Nova naplata koristila je dva skupa: klasični PHP, MySQL (a u budućnosti se planira prelazak na PostgreSQL), Yii2 kao framework na pozadini i VueJS na prednjoj strani. Skupovi rade neovisno jedan o drugom, razvili su ih različiti ljudi i komuniciraju pomoću JSON API-ja. Za razvoj nekad i sad koristimo PHPStorm и weboluja od JetBrainsa i jako ih volim (hej ljudi!)

Panel je dizajniran na modularnoj osnovi: moduli sustava plaćanja, modul registra domena ili npr. modul SSL certifikata. Možete jednostavno dodati novu značajku ili ukloniti staru. Temelji za širenje postavljeni su arhitektonski, uključujući i u suprotnom smjeru, “prema hardveru”.
ISPsystem, oprosti i zbogom! Zašto i kako smo napisali našu kontrolnu ploču poslužitelja
Što smo dobili: upravljačka ploča nad kojom imamo punu kontrolu. Sada se bugovi popravljaju u satima, a ne u tjednima, a nove značajke implementiraju se na zahtjev korisnika, a ne na zahtjev ISPSystema.

3. korak sučelje

ISPsystem, oprosti i zbogom! Zašto i kako smo napisali našu kontrolnu ploču poslužitelja
Sučelje je zamisao našeg tima.

Prvo smo pogledali što bi se dogodilo ako bismo napravili dodatak preko ISPsystem API-ja bez fundamentalne promjene bilo čega u sučelju. Ispalo je tako-tako i odlučili smo sve napraviti ispočetka.

Vjerovali smo da je najvažnije učiniti sučelje logičnim, čistim i minimalističkim dizajnom, a onda ćemo dobiti prekrasan panel. O lokaciji elemenata raspravljalo se u Megaplanu i postupno će se rađati sučelje koje korisnici sada vide na upravljačkoj ploči.

Prvi se pojavio dizajn naplatne stranice, jer smo već napravili platne dodatke za ISPsystem.

Frontend

Odlučili su panel napraviti kao SPA aplikaciju – nezahtjevna za resurse i s brzim učitavanjem podataka. Naš front-end programer Artysh odlučio je to napisati u Vueu — u to se vrijeme Vue tek pojavio. Pretpostavili smo da će se framework razvijati dinamički, poput Reacta, nakon nekog vremena Vue zajednica će narasti i pojaviti se more biblioteka. Kladili smo se na Vue i nismo požalili - sada je potrebno malo vremena za dodavanje novih funkcija na prednju stranu koje su već programirane na stražnjoj strani. Reći ćemo vam više o prednjoj ploči u zasebnom članku.

Povezivanje frontenda s backendom

Frontend je bio povezan s backendom putem push obavijesti. Morao sam naporno raditi i napisati vlastiti rukovatelj, ali sada se informacije na stranici ažuriraju gotovo trenutno.

Što se dogodilo: Sučelje ploče postalo je jednostavnije. Napravili smo ga prilagodljivim, a brzo učitavanje omogućuje vam korištenje čak i s mobitela u zadnjim minutama prije polijetanja, bez instaliranja posebne aplikacije za rad s panelom.

Korak 4. Shema testiranja i migracije

Kad je sve krenulo i kada su prošli prvi testovi, postavilo se pitanje migracije. Prije svega, instalirali smo billing i počeli testirati njegov rad s poslužiteljskim agentom.

Zatim smo napisali jednostavnu skriptu koja prenosi bazu podataka iz starog billinga u novi.

Morao sam testirati i ponovno provjeriti doslovno sve, jer su podaci spojeni u jednu novu bazu iz tri stare: Billmanager, VMmanager i upraviteljev IPmanager. Možda su testne migracije najteža stvar s kojom smo se susreli u procesu razvoja novog panela.

Nakon ponovne provjere zatvorili smo stari obračun. Konačna migracija podataka bila je vrlo mučan trenutak, ali je, hvala Bogu, završena u nekoliko minuta i bez vidljivih problema. Bilo je manjih grešaka koje smo popravili tijekom tjedna. Većina vremena potrošena je na testiranje onoga što se dogodilo.

Potom smo klijentima poslali dopise s adresom nove ploče i naplatom te napravili preusmjeravanje.

U sažetku: ŽIVO JE!

Sretan završetak

Od prvih sati rada našeg softvera osjetili smo sve čari prijelaza. Kod je bio potpuno naš i sa zgodnom arhitekturom, a sučelje je bilo čisto i logično.
ISPsystem, oprosti i zbogom! Zašto i kako smo napisali našu kontrolnu ploču poslužitelja
Prvi pregled nakon lansiranja novog panela

Prijelaz smo pokrenuli u prosincu, uoči Nove 2017. godine, kada je bilo najmanje opterećenja, kako bismo korisnicima olakšali prijelaz - uoči blagdana gotovo nitko ne radi.

Glavna stvar koju smo dobili prelaskom na naš sustav (osim opće pouzdanosti i praktičnosti) je mogućnost brzog dodavanja funkcionalnosti za ključne kupce - da im budemo lice, a ne guzica.

Što je sljedeće?

Rastemo, raste količina podataka, kupaca, podataka o kupcima. Morao sam dodati Memcached poslužitelj i dva upravitelja čekanja s različitim zadacima u pozadinu. Sučelje ima predmemoriju i vlastite redove čekanja.

Naravno, i dalje smo imali avanture kako se proizvod razvijao i postajao složeniji, na primjer kada smo dodali HighLoad.

U sljedećem članku ćemo vam reći kako je Hi-CPU tarifa pokrenuta: o hardveru, softveru, koje smo zadatke rješavali i što smo radili.

Izvor: www.habr.com

Dodajte komentar