ISPsistemi, bağışlayın ve veda edin! Sunucu kontrol panelimizi neden ve nasıl yazdık?

ISPsistemi, bağışlayın ve veda edin! Sunucu kontrol panelimizi neden ve nasıl yazdık?

Merhaba! Biz "Barındırma Teknolojileri"yiz ve 5 yıl önce yayına girdik. VDSina — geliştiriciler için özel olarak oluşturulmuş ilk vds barındırma. DigitalOcean gibi, ancak Rusya desteği, ödeme yöntemleri ve Rusya'daki sunucular ile uygun hale getirmeye çalışıyoruz. Ancak DigitalOcean yalnızca güvenilirlik ve fiyat değil, aynı zamanda bir hizmettir.

ISPsystem'den gelen yazılım, havalı bir hizmete giden yolda ellerimizi bağlayan bir ip oldu. Üç yıl önce Billmanager faturalandırma ve VMmanager sunucu kontrol panelini kullandık ve kısa sürede kendi kontrol panelimiz olmadan iyi bir hizmet vermenin neredeyse imkansız olduğunu anladık.

ISPsystem Kolaylığı Nasıl Öldürdü?

Hatalar

Hatayı kendimiz düzeltemedik - her seferinde başka birinin desteğine yazıp beklemek zorunda kaldık. Herhangi bir sorunun çözümü, üçüncü taraf bir şirketin yanıtını gerektiriyordu.

ISP sistem desteği normal şekilde yanıt verdi, ancak düzeltmeler yalnızca birkaç sürümden sonra geldi ve ardından her zaman ve hepsi değil. Bazen kritik hatalar birkaç hafta boyunca düzeltildi. Müşterileri rahatlatmak, özür dilemek ve ISP sisteminin hatayı düzeltmesini beklemek zorunda kaldık.

Kesinti Tehdidi

Güncellemeler, yeni hatalara neden olan öngörülemeyen kesinti süreleri oluşturabilir.

Her güncelleme bir piyangoydu: Faturalandırmayı kapatmak ve güncelleme tanrılarına fedakarlık yapmak zorunda kaldım - güncelleme birkaç kez 10-15 dakikalık kesintiye neden oldu. Yöneticilerimiz o sırada gözlerinin önünde oturuyorlardı - kesinti süresinin ne kadar süreceğini asla bilmiyorduk ve ISP sisteminin ne zaman yeni bir güncelleme yayınlamaya karar vereceğini tahmin edemiyorduk.

Beşinci nesilde Billmanager daha iyi hale geldi, ancak gerekli özelliklere erişebilmek için zaten her hafta güncellenen bir beta sürümü yüklemem gerekiyordu. Bir şey bozulursa, bir şeyi düzeltebilmeleri için diğer geliştiricilere erişim vermem gerekiyordu.

Kullanışsız panel arayüzü

Her şey farklı panellere bölündü ve farklı yerlerden kontrol edildi. Örneğin, müşteriler Billmanager aracılığıyla ödeme yaptılar ve VMManager'da VDS'yi yeniden başlatmaları veya yeniden yüklemeleri gerekiyordu. Personelimiz ayrıca bir müşteriye yardım etmek, sunucusundaki yükü kontrol etmek veya hangi işletim sistemini kullandığını görmek için pencereler arasında geçiş yapmak zorunda kaldı.

Böyle bir arayüz zaman alır - hem bizim hem de müşterilerimizin. Böyle bir durumda DigitalOcean'ınki gibi herhangi bir rahatlık söz konusu değildir.

Sık API güncellemeleri ile kısa yaşam döngüleri

Kendi eklentilerimizi yazdık - örneğin, VMManager'da olmayan ek ödeme yöntemleri olan bir eklenti.

Son yıllarda, VMManager nispeten kısa bir yaşam döngüsüne sahipti ve yeni sürümlerde, API'deki değişkenlerin veya işlevlerin adları keyfi olarak değişebiliyordu - bu, eklentilerimizi bozdu. Eski sürümler için destek hızla kaldırıldı ve güncellenmesi gerekiyordu.

değiştirilemez

Daha doğrusu, mümkündür, ancak son derece verimsizdir. Lisans kısıtlamaları kaynak kodunda değişiklik yapmanıza izin vermez, sadece eklenti yazabilirsiniz. Maksimum eklentiler - bazı menü öğeleri, adım adım sihirbaz. ISP sistemleri çok yönlülük için tasarlanmıştır, ancak özel çözümlere ihtiyacımız vardı.

Bu yüzden kendi panelimi yazma kararı olgunlaşmıştı. Hedefler belirledik:

  • Hatalara, hatalara hızla yanıt verin ve müşteriyi bekletmeden bunları kendiniz düzeltebileceksiniz.
  • Arayüzü iş akışları ve müşteri ihtiyaçları için özgürce değiştirin.
  • Temiz ve anlaşılır bir tasarımla kullanılabilirliği artırın.

Ve geliştirmeye başladık.

Yeni Pano Mimarisi

Kendi kendine yeten bir geliştirme ekibimiz var, bu yüzden paneli kendimiz yazdık.
Ana iş üç mühendis tarafından yapıldı - teknik direktör Sergey mimariyi buldu ve sunucu aracısını yazdı, faturalandırmayı Alexey yaptı ve ön uç, ön uç Artysh tarafından toplandı.

1. Adım: Sunucu Aracısı

Sunucu aracısı, kitaplığı yöneten bir python web sunucusudur. libvirt, bu da yönetir Qemu-kvm hiper yönetici.

Aracı, sunucudaki tüm hizmetleri yönetir: libvirt kitaplığı aracılığıyla vds oluşturma, durdurma, silme, işletim sistemlerini yükleme, parametreleri değiştirme vb. Makalenin yayınlandığı sırada bunlar, müşterinin görevine ve ihtiyaçlarına bağlı olarak eklediğimiz kırktan fazla farklı işlevdir.

Teorik olarak, libvirt doğrudan faturalamadan kontrol edilebilirdi, ancak bu çok fazla ek kod gerektiriyordu ve bu işlevleri aracı ile faturalandırma arasında ayırmaya karar verdik - faturalandırma, JSON API aracılığıyla aracıya istekte bulunur.

Ajan, herhangi bir arayüz gerektirmediği ve doğrudan sunucu konsolundan test edilebildiği için yaptığımız ilk şeydi.

Sunucu aracısının bize verdiği şey: herkes için hayatı kolaylaştıran bir katman ortaya çıktı - faturalandırmanın bir sürü komut göndermesi gerekmez, yalnızca bir istekte bulunması gerekir. Aracı, gereken her şeyi yapacaktır: örneğin, disk alanı ve RAM tahsis edecektir.

Adım 2. Faturalandırma

Geliştiricimiz Alex için bu ilk kontrol paneli değildi - Alex uzun süredir ev sahipliği yapıyor, bu nedenle genellikle müşterinin neye ihtiyacı olduğunu ve ev sahibinin neye ihtiyacı olduğunu anladı.

Kendi aramızda faturalandırmaya “kontrol paneli” diyoruz: sadece para ve hizmetleri değil, aynı zamanda bunların yönetimini, müşteri desteğini ve çok daha fazlasını içerir.

ISPSystem yazılımından geçiş yapmak için, müşteriler için önceki işlevselliği tam olarak korumak, kullanıcıların tüm finansal işlemlerini eski faturalandırmadan yenisine ve ayrıca aralarındaki tüm hizmetleri ve bağlantıları aktarmak gerekiyordu. Mevcut üründe neler olduğunu, ardından başta DO ve Vultr olmak üzere rakiplerin çözümlerini inceledik. Dezavantajlara ve avantajlara baktık, ISP sisteminden eski ürünlerle çalışan insanlardan geri bildirim topladık.

Yeni faturalamada iki yığın kullanıldı: klasik PHP, MySQL (ve gelecekte PostgreSQL'e geçilmesi planlanıyor), arka uçta bir çerçeve olarak Yii2 ve ön tarafta VueJS. Yığınlar birbirinden bağımsız çalışır, farklı kişiler tarafından geliştirilir ve JSON API kullanarak iletişim kurar. Geliştirme için o zaman ve şimdi kullanıyoruz PhpStorm и WebFırtınası JetBrains'ten ve onları çok seviyorum (hey çocuklar!)

Panel modüler olarak tasarlanmıştır: ödeme sistemi modülleri, alan adı kayıt modülü veya örneğin bir SSL sertifika modülü. Kolayca yeni bir özellik ekleyebilir veya eskisini kaldırabilirsiniz. Genişletmenin temeli, "donanıma doğru" ters yön de dahil olmak üzere mimari olarak atılmıştır.
ISPsistemi, bağışlayın ve veda edin! Sunucu kontrol panelimizi neden ve nasıl yazdık?
elimizde ne var: üzerinde tam kontrole sahip olduğumuz bir kontrol paneli. Artık hatalar haftalar içinde değil, saatler içinde gideriliyor ve yeni özellikler ISPSystem'in isteği üzerine değil, müşterilerin isteği üzerine uygulanıyor.

Adım 3 Arayüz

ISPsistemi, bağışlayın ve veda edin! Sunucu kontrol panelimizi neden ve nasıl yazdık?
Arayüz, ekibimizin buluşudur.

İlk olarak, arayüzde hiçbir şeyi temelden değiştirmeden ISPsystem API üzerinden bir eklenti yaparsak ne olacağına baktık. Öyle olduğu ortaya çıktı ve her şeyi sıfırdan yapmaya karar verdik.

Ana şeyin, arayüzü temiz ve minimalist bir tasarımla mantıklı hale getirmek olduğuna inandık ve ardından güzel bir panel elde edeceğiz. Elemanların yeri Megaplan'da tartışıldı ve kullanıcıların artık kontrol panelinde gördükleri arayüz yavaş yavaş doğacak.

İlk olarak faturalandırma sayfasının tasarımı ortaya çıktı, çünkü ISPsystem için zaten ödeme eklentileri yaptık.

Başlangıç ​​aşaması

Paneli, kaynaklar için iddiasız ve hızlı veri yükleme özelliğine sahip bir SPA uygulaması yapmaya karar verdiler. Front-end Artysh'imiz Vue'da yazmaya karar verdi - o sırada Vue yeni ortaya çıktı. Çerçevenin React gibi dinamik olarak gelişeceğini, bir süre sonra Vue topluluğunun büyüyeceğini ve bir kütüphane denizi ortaya çıkacağını varsaydık. Vue'ya bahse girdik ve pişman olmadık - artık arka uçta önceden programlanmış yeni işlevleri cepheye eklemek çok az zaman alıyor. Ön uç panel hakkında size ayrı bir makalede daha fazla bilgi vereceğiz.

Ön ucu arka uca bağlama

Ön uç, push bildirimleri aracılığıyla arka uca bağlandı. Çok çalışmak ve kendi işleyicimi yazmak zorunda kaldım, ancak şimdi sayfadaki bilgiler neredeyse anında güncelleniyor.

Ne oldu: Panel arayüzü daha basit hale getirildi. Uyarlanabilir hale getirdik ve hızlı yükleme, panelle çalışmak için ayrı bir uygulama yüklemeden kalkıştan önceki son dakikalarda cep telefonlarından bile kullanmanıza olanak tanır.

4. Adım. Test ve geçiş şeması

Her şey başladığında ve ilk testler geçtiğinde, göç sorunu ortaya çıktı. Öncelikle faturalandırmayı kurduk ve sunucu aracısı ile çalışmasını test etmeye başladık.

Ardından, veritabanını eski faturalandırmadan yenisine aktaran basit bir komut dosyası yazdık.

Veriler üç eski veritabanından yeni bir veritabanında birleştirildiğinden, kelimenin tam anlamıyla her şeyi test etmem ve yeniden kontrol etmem gerekiyordu: Billmanager, VMmanager ve yöneticinin IPmanager'ı. Belki de test geçişleri, yeni bir panel geliştirme sürecinde karşılaştığımız en zor şeydi.

Yeniden kontrol ettikten sonra eski faturalandırmayı kapattık. Son veri taşıma işlemi çok sıkıntılı bir andı ama çok şükür birkaç dakika içinde ve gözle görülür bir sorun olmadan tamamlandı. Hafta boyunca düzelttiğimiz küçük hatalar vardı. Çoğu zaman ne olduğunu test etmekle geçti.

Daha sonra müşterilere yeni panelin adresini ve faturasını içeren mektuplar gönderdik ve yönlendirme yaptık.

Özetle: YAŞIYOR!

Mutlu son

Yazılımımızın ilk çalışma saatlerinden itibaren geçişin tüm zevklerini hissettik. Kod tamamen bize aitti ve uygun bir mimariye sahipti ve arayüz temiz ve mantıklıydı.
ISPsistemi, bağışlayın ve veda edin! Sunucu kontrol panelimizi neden ve nasıl yazdık?
Yeni panelin kullanıma sunulmasından sonraki ilk inceleme

Müşteriler için geçişi kolaylaştırmak için geçiş sürecini Aralık ayında, 2017 Yeni Yıl arifesinde, yükün en az olduğu zamanda başlattık - neredeyse hiç kimse tatil arifesinde çalışmıyor.

Sistemimize geçerken elde ettiğimiz en önemli şey (genel güvenilirlik ve rahatlığın yanı sıra), kilit müşteriler için hızlı bir şekilde işlevsellik ekleme yeteneğidir - onların kıçı değil yüzü olmak.

Sırada ne var?

Büyüyoruz, veri miktarı, müşteriler, müşteri verileri artıyor. Arka uca bir Memcached sunucusu ve farklı görevlere sahip iki sıra yöneticisi eklemek zorunda kaldım. Ön uç önbelleğe alma ve kendi kuyruklarına sahiptir.

Elbette, ürün geliştikçe ve daha karmaşık hale geldikçe, örneğin HighLoad'u eklediğimizde, hala maceralarımız oldu.

Bir sonraki yazımızda Hi-CPU tarifesinin nasıl lanse edildiğini anlatacağız: donanım, yazılım, hangi görevleri çözdük ve neler yaptık.

Kaynak: habr.com

Yorum ekle