ISPsystem, oprosti i zbogom! Zašto i kako smo napisali vlastitu upravljačku ploču za poslužitelje

ISPsystem, oprosti i zbogom! Zašto i kako smo napisali vlastitu upravljačku ploču za poslužitelje

Pozdrav! Mi smo «Hosting tehnologije» i prije 5 godina smo pokrenuli VDSina — prvi VDS hosting, stvoren posebno za programere. Nastojimo ga učiniti udobnim kao DigitalOcean, ali s podrškom na ruskom jeziku, načinima plaćanja i serverima u Rusiji. No, DigitalOcean nije samo pouzdanost i cijena, već i usluga.

Softver od ISPsystema se pokazao kao konopac koji nam je vezivao ruke na putu do izvrsne usluge. Prije tri godine koristili smo billing Billmanager i upravljačku ploču za servere VMmanager i brzo smo shvatili da je pružanje dobre usluge bez vlastite ploče gotovo nemoguće.

Kako je ISPsystem uništavao udobnost

Greške

Nismo mogli sami ispraviti grešku — svaki put smo se morali obraćati vanjskoj podršci i čekati. Rješavanje bilo kojeg problema zahtijevalo je reakciju treće strane.

Podrška ISPsystema je odgovarala normalno, ali popravci su dolazili samo kroz nekoliko izdanja, i to ne uvijek i ne sve. Ponekad su kritične greške ispravljane nekoliko tjedana. Morali smo smirivati klijente, ispričavati se i čekati dok ISPsystem ne popravi grešku.

Prijetnja downtime-u

Ažuriranja su mogla uzrokovati nepredvidive downtimeove, što je provociralo nove greške.

Svako ažuriranje je bilo lutrija: morali smo zatvoriti billing i donositi žrtve bogovima ažuriranja — nekoliko puta je ažuriranje uzrokovalo downtime od 10-15 minuta. Naši administratori su u tom vremenu sjedili s zebnjom — nikada nismo znali koliko će potrajati downtime i nismo mogli predvidjeti kada će ISPsystem odlučiti objaviti novo ažuriranje.

Na petoj generaciji Billmanagera postalo je bolje, ali da bismo dobili pristup potrebnim značajkama morali smo instalirati beta verziju, koja se već ažurirala svake tjedna. Ako se nešto pokvarilo, morali smo dati pristup stranim programerima da nešto isprave.

Neudoban sučelje ploče

Sve je bilo razdijeljeno na različite panele i upravljano iz različitih mjesta. Na primjer, klijenti su plaćali preko Billmanagera, dok su morali ponovno pokrenuti ili reinstalirati VDS u VMManageru. Našim zaposlenicima je također bilo potrebno prebacivati se između prozora kako bi pomogli klijentu, provjerili opterećenje na njegovom serveru ili pogledali koju operativnu sustav koristi.

Takvo sučelje oduzima vrijeme — i naše, i klijenata. O udobnosti, kao kod DigitalOcean, u takvoj situaciji ne može biti ni govora.

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

Napisali smo vlastite dodatke, na primjer, dodatak s dodatnim metodama plaćanja koje nisu sadržane u VMManageru.

Posljednjih godina VMManager je imao relativno kratak životni ciklus, a u novim verzijama su se nasumično mijenjali nazivi varijabli ili funkcija u API-ju – to je lomilo naše dodatke. Podrška za stare verzije brzo je ukinuta i morali smo se ažurirati.

Nije moguće doraditi

Odnosno, moguće je, ali iznimno neefikasno. Licencni uvjeti ne dopuštaju promjene u izvoru, možemo samo pisati dodatke. Maksimalni broj dodataka su neki elementi izbornika, korak-po-korak čarobnjaka. ISPsystem je usmjeren na univerzalnost, a nama su bila potrebna specijalizirana rješenja.

Tako se razvilo rješenje za izradu vlastite upravljačke ploče. Postavili smo ciljeve:

  • Brzo reagirati na greške, bugove i imati mogućnost samostalnog rješavanja, bez čekanja klijenta.
  • Slobodno modificirati sučelje prema radnim procesima i potrebama klijenta.
  • Povećati upotrebljivost čistim i razumljivim dizajnom.

I započeli smo razvoj.

Arhitektura nove ploče

Imamo samostalni tim za razvoj, tako da smo ploču napisali sami.
Glavni posao odradila su tri inženjera – tehnički direktor Sergej osmislio je arhitekturu i napisao server agenata, Aleksej je izradio billing, a frontend je sastavio naš frontend inženjer Artysh.

Korak 1. Server agent

Server agent je web server na Pythonu koji upravlja bibliotekom libvirt, koja, zauzvrat, upravlja hipervizorom Qemu-kvm.

Agent upravlja svim uslugama na serveru: kreiranje, zaustavljanje, brisanje vds-a, instalacija operativnih sustava, promjena parametara i tako dalje putem biblioteke libvirt. U trenutku objave ovog članka, to je više od četrdeset različitih funkcija koje dodajemo ovisno o zadatku i potrebama klijenta.

Teoretski, putem libvirta moglo se upravljati izravno iz billing-a, ali to je zahtijevalo previše dodatnog koda, pa smo odlučili razdvojiti te funkcije između agenta i billing-a – billing jednostavno šalje zahtjeve agentu putem JSON API-ja.

Agent je prva stvar koju smo napravili, jer nije zahtijevao nikakvo sučelje, a mogao se testirati izravno iz konzole servera.

Što nam je donio server agent: Pojavila se slojnica koja olakšava život svima — naplati nije potrebno slati cijeli niz naredbi, već samo izvršiti zahtjev. A agent će učiniti sve što je potrebno: na primjer, dodijelit će prostor na disku i radnu memoriju.

Korak 2. Naplata

Za našeg developera Alex-a ovo nije bila prva upravljačka ploča — Alex je u hosting industriji već dugo, tako da je u velikoj mjeri razumio što klijent želi i što treba hosteru.

Naplatu između sebe nazivamo 'upravljačkom pločom': u njemu nisu samo novac i usluge, već i upravljanje njima, podrška korisnicima i mnogo toga drugog.

Prilikom prijelaza s softvera ISPSystem, bilo je potrebno potpuno očuvati prethodnu funkcionalnost za klijente, prenijeti sve financijske radnje korisnika iz starog sustava naplate u novi, kao i sve usluge i veze između njih. Istražili smo što postoji u trenutnom proizvodu, zatim rješenja konkurenata, uglavnom DO i Vultr. Pogledali smo nedostatke i prednosti, prikupili povratne informacije od ljudi koji su radili s starim proizvodima iz ISPsystem.

U novoj naplati korištena su dva stoga: klasični PHP, MySQL (a u budućnosti je planirano prebacivanje na PostgreSQL), Yii2 kao okvir na backendu i VueJS na frontend. Stogovi rade neovisno jedan o drugome, razvijaju ih različiti ljudi i komuniciraju putem JSON API-ja. Za razvoj tada i sada koristimo PHPStorm i WebStorm od JetBrains i nježno ih volimo (dečki, pozdrav!)

Panel je projektiran prema modularnom principu: moduli platnih sustava, modul registratora domena ili, na primjer, modul SSL certifikata. Lako je dodati novu funkciju ili ukloniti staru. Arhitektonski je zadržan potencijal za proširenje, uključujući i obrnuto, 'na hardver'.
ISPsystem, oprosti i zbogom! Zašto i kako smo napisali vlastitu upravljačku ploču za poslužitelje
Što smo stekli: upravljačka ploča, nad kojom imamo punu kontrolu. Sada se greške ispravljaju za nekoliko sati, a ne tjednima, a nove funkcije se implementiraju na zahtjev klijenata, a ne prema želji ISPSystem.

Korak 3. Sučelje

ISPsystem, oprosti i zbogom! Zašto i kako smo napisali vlastitu upravljačku ploču za poslužitelje
Sučelje — naše timsko djelo.

Prvo smo pogledali što će se dogoditi ako napravimo nadogradnju nad API-jem ISPsystem, ne mijenjajući previše sučelje. Rezultat je bio osrednji pa smo odlučili sve napraviti ispočetka.

Vjerovali smo da je najvažnije stvoriti intuitivan sučelje s čistim i minimalističkim dizajnom, i tako ćemo dobiti lijepu teču. Raspored elemenata raspravili smo u Megaplanu, i postupno je nastalo ono sučelje koje korisnici sada vide u upravljačkoj ploči.

Prvi se pojavio dizajn stranice za naplatu, jer smo već izradili platne module za ISPsystem.

Frontend

Odlučili smo izraditi ploču kao SPA aplikaciju — koja nije zahtjevna prema resursima i s brzim učitavanjem podataka. Naš frontend programer Artyš odlučio je raditi na Vue — u to vrijeme Vue je tek bio predstavljen. Pretpostavili smo da će se framework dinamično razvijati poput Reakta, te da će nakon nekog vremena Vue zajednica narasti i doći će do obilja biblioteka. Odabrali smo Vue i nismo zažalili — sada dodavanje novih funkcija na frontend, koje su već programirane na backendu, traje vrlo malo vremena. O frontend dijelu ploče detaljnije ćemo govoriti u posebnom članku.

Veza frontenda s backendom

Frontend smo povezali s backendom putem push notifikacija. Morali smo se potruditi i napisati vlastiti obrtnik, ali sada se ažuriranje informacija na stranici događa gotovo odmah.

Što smo postigli: sučelje ploče postalo je jednostavnije. Učinili smo ga responzivnim, a brzo učitavanje omogućuje korištenje čak i s mobilnih uređaja u posljednjim minutama prije leta, bez potrebe za instaliranjem odvojene aplikacije za rad s pločom.

Korak 4. Testiranje i shema migracije

Kad je sve proradilo i uspjeli smo u prvom testiranju, postavilo se pitanje migracije. Prvo smo instalirali naplatu i započeli testirati njeno funkcioniranje s poslužiteljskim agentom.

Zatim smo napisali jednostavan skript koji prenosi bazu podataka iz stare naplate u novu.

Morali smo testirati i ponovno provjeriti doslovno sve, jer su podaci slijevani u novu bazu iz tri stare: Billmanager, VMmanager i IPmanager menadžera. Vjerojatno su testne migracije bile najteži dio s kojim smo se suočili tijekom razvoja nove ploče.

Nakon ponovnih provjera, zatvorili smo staru naplatu. Završna migracija podataka bila je vrlo stresan trenutak, ali, hvala Bogu, izvršena je za nekoliko minuta i bez značajnijih problema. Bilo je sitnih grešaka koje smo ispravili tijekom tjedna. Najviše vremena je potrošeno na testiranje onoga što je postignuto.

Zatim smo poslali e-poruke klijentima s adresom nove upravljačke ploče i naplate te napravili preusmjeravanje.

Na kraju: ŽIVI JE!

Sretan završetak

Od prvih sati rada našeg softvera osjetili smo sve čari prijelaza. Kod je bio potpuno naš s intuitivnom arhitekturom, a sučelje čisto i logično.
ISPsystem, oprosti i zbogom! Zašto i kako smo napisali vlastitu upravljačku ploču za poslužitelje
Prva recenzija nakon pokretanja nove upravljačke ploče

Pokrenuli smo proces prijelaza u prosincu, pred Novu 2017. godinu, kada su opterećenja bila najmanja, kako bismo olakšali prijelaz za klijente — gotovo nitko ne radi pred praznike.

Najvažnije što smo dobili prijelazom na naš sustav (osim opće pouzdanosti i jednostavnosti) je mogućnost brze dodavanja funkcionalnosti za ključne klijente — biti njima lice, a ne stražnjica.

Što dalje?

Rastemo, raste količina podataka, klijenata, podataka klijenata. Na backend smo dodali Memcached poslužitelj i dva upravitelja redova s različitim zadacima. Na frontend imamo keširanje i vlastite redove.

Naravno, imali smo još pustolovina tijekom razvoja i kompliciranja proizvoda, primjerice kada smo dodavali HighLoad.

U sljedećem članku pričat ćemo o tome kako smo pokrenuli Hi-CPU tarif: o hardveru, softveru, koje smo zadatke rješavali i što smo postigli.

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster