
नमस्ते! हम "होस्टिंग टेक्नोलॉजीज" हैं और 5 साल पहले
VDSina लॉन्च किया गया था - डेवलपर्स के लिए विशेष रूप से बनाई गई पहली vds होस्टिंग। हम DigitalOcean की तरह इसे सुविधाजनक बनाने का प्रयास करते हैं, लेकिन रूस में रूसी समर्थन, भुगतान विधियों और सर्वरों के साथ। लेकिन DigitalOcean केवल विश्वसनीयता और कीमत नहीं है, यह एक सेवा भी है।
ISPsystem के सॉफ्टवेयर एक रस्सी है कि एक अच्छी सेवा के रास्ते पर हमारे हाथ बाध्य हो गया है। तीन साल पहले, हमने Billmanager बिलिंग और VMmanager सर्वर नियंत्रण कक्ष का उपयोग किया और जल्दी से महसूस किया कि अपने स्वयं के पैनल के बिना अच्छी सेवा प्रदान करना लगभग असंभव है।
कैसे ISPystem ने प्रयोज्य को मार डाला
कीड़ेहम बग को स्वयं ठीक नहीं कर सकते थे - हर बार हमें किसी और के समर्थन और प्रतीक्षा में लिखना पड़ता था। किसी भी समस्या के समाधान के लिए तीसरे पक्ष की कंपनी की प्रतिक्रिया की आवश्यकता होती है।
आईएसपीसिस्टम सपोर्ट ने सामान्य रूप से प्रतिक्रिया दी, लेकिन फिक्स केवल कुछ रिलीज के माध्यम से आए, और हमेशा और सभी नहीं। कभी-कभी कई हफ्तों के लिए महत्वपूर्ण कीड़े तय हो जाते हैं। हमें ग्राहकों को आश्वस्त करने, माफी माँगने और बग को ठीक करने के लिए ISPystem की प्रतीक्षा करनी थी।
डाउनटाइम खतराअद्यतन अप्रत्याशित डाउनटाइम्स को जन्म दे सकता है जो नए बग को उकसाता है।
प्रत्येक अपडेट एक लॉटरी थी: बिलिंग को कवर करना और अपडेट के देवताओं के लिए बलिदान करना आवश्यक था - अपडेट के कुछ समय में 10-15 मिनट के लिए डाउनटाइम का कारण बना। उस समय, हमारी आँखें हमारी आंखों के सामने ग्रे हो रही थीं - हमें कभी नहीं पता था कि कब तक डाउनटाइम चलेगा और भविष्यवाणी नहीं कर सकता जब आईएसपीसिस्टम ने एक नया अपडेट जारी करने का फैसला किया।
पांचवीं पीढ़ी में, बिलमैनगर बेहतर हो गया, लेकिन आवश्यक सुविधाओं तक पहुंच प्राप्त करने के लिए, मुझे एक बीटा स्थापित करना पड़ा, जिसे हर हफ्ते पहले ही अपडेट किया गया था। अगर कुछ टूट गया, तो आपको विदेशी डेवलपर्स को एक्सेस देना होगा ताकि वे कुछ सुधार कर सकें।
असुविधाजनक पैनल इंटरफ़ेससब कुछ अलग-अलग पैनलों में विभाजित किया गया था और विभिन्न स्थानों से नियंत्रित किया गया था। उदाहरण के लिए, ग्राहकों ने बिलमैनगर के माध्यम से भुगतान किया, और उन्हें वीएमडीएमएजीआर में वीडीएस को रिबूट या पुनर्स्थापित करना पड़ा। हमारे कर्मचारियों को भी क्लाइंट की मदद करने के लिए खिड़कियों के बीच स्विच करना पड़ता था, अपने सर्वर पर लोड की जाँच करनी चाहिए या देखना चाहिए कि वह किस ओएस का उपयोग करता है।
इस तरह के एक इंटरफ़ेस में समय लगता है - हमारा और ग्राहकों दोनों का। किसी भी सुविधा के बारे में, DigitalOcean की तरह, ऐसी स्थिति में कोई सवाल नहीं है।
लगातार एपीआई अपडेट के साथ लघु जीवनचक्रहमने अपने स्वयं के प्लगइन्स लिखे - उदाहरण के लिए, अतिरिक्त भुगतान विधियों के साथ एक प्लगइन जो VMManager में नहीं है।
हाल के वर्षों में, VMManager के पास अपेक्षाकृत कम जीवन चक्र था, और नए संस्करणों में एपीआई में चर या कार्यों के नाम मनमाने ढंग से बदल सकते थे - इससे हमारे प्लगइन्स टूट गए। पुराने संस्करणों के लिए समर्थन जल्दी से कम से कम किया गया था और अद्यतन किया जाना था।
आप संशोधित नहीं कर सकतेअधिक सटीक, लेकिन बेहद अक्षम। लाइसेंसिंग प्रतिबंध आपको स्रोत में बदलाव करने की अनुमति नहीं देता है, आप केवल प्लगइन्स लिख सकते हैं। प्लगइन्स की अधिकतम कुछ मेनू आइटम, एक कदम-दर-चरण विज़ार्ड है। ISPystem को बहुमुखी प्रतिभा के लिए तेज किया जाता है, और हमें विशेष समाधान की आवश्यकता है।
तो अपने पैनल को लिखने का निर्णय परिपक्व हो गया। हम लक्ष्य निर्धारित करते हैं:
- क्लाइंट की प्रतीक्षा किए बिना, त्रुटियों, बग्स का त्वरित रूप से जवाब दें और उन्हें स्वयं ठीक करने में सक्षम हों।
- प्रक्रियाओं और ग्राहक की जरूरतों के लिए इंटरफ़ेस को संशोधित करें।
- एक साफ और समझने योग्य डिजाइन के साथ प्रयोज्यता बढ़ाएं।
और उन्होंने विकास शुरू कर दिया।
नई पैनल वास्तुकला
हमारे पास एक आत्मनिर्भर विकास टीम है, इसलिए हमने खुद पैनल लिखा।
मुख्य कार्य तीन इंजीनियरों द्वारा किया गया था - तकनीकी निदेशक सर्गेई वास्तुकला के साथ आए और सर्वर एजेंट को लिखा, एलेक्सी ने बिलिंग की, और हमारे सामने वाले आर्टीश ने फ्रंटेंड इकट्ठा किया।
चरण 1. सर्वर एजेंट
एक सर्वर एजेंट एक पायथन वेब सर्वर है जो
लिबावर्ट लाइब्रेरी का प्रबंधन करता है, जो बदले में
Qemu-kvm हाइपरविजर का प्रबंधन करता
है ।
एजेंट सर्वर पर सभी सेवाओं का प्रबंधन करता है: vds को बनाना, रोकना, अनइंस्टॉल करना, ऑपरेटिंग सिस्टम स्थापित करना, सेटिंग्स बदलना, और इसी तरह libvirt लाइब्रेरी के माध्यम से। प्रकाशन के समय, यह चालीस से अधिक विभिन्न कार्य हैं, जिन्हें हम ग्राहक के कार्य और जरूरतों के आधार पर पूरक करते हैं।
सिद्धांत रूप में, libvirt को बिलिंग से सीधे प्रबंधित किया जा सकता है, लेकिन इसके लिए बहुत अधिक अतिरिक्त कोड की आवश्यकता होती है और हमने एजेंट और बिलिंग के बीच इन कार्यों को वितरित करने का निर्णय लिया - बिलिंग केवल JSON API के माध्यम से एजेंट से अनुरोध करता है।
एजेंट पहली चीज है जो हमने किया, क्योंकि इसके लिए किसी भी इंटरफ़ेस की आवश्यकता नहीं थी और इसे सर्वर कंसोल से सीधे परीक्षण किया जा सकता था।
सर्वर एजेंट ने हमें क्या दिया: एक परत दिखाई दी जो हर किसी के लिए जीवन को सरल बनाती है - बिलिंग को आदेशों का एक पूरा गुच्छा भेजने की आवश्यकता नहीं है, लेकिन केवल एक अनुरोध करें। और एजेंट आपके लिए आवश्यक सब कुछ करेगा: उदाहरण के लिए, डिस्क स्थान और रैम आवंटित करें।
चरण 2. बिलिंग
हमारे डेवलपर, एलेक्स के लिए, यह पहला नियंत्रण कक्ष नहीं था - एलेक्स लंबे समय तक होस्टिंग में था, इसलिए वह आमतौर पर समझता था कि क्लाइंट को क्या चाहिए और होस्टर को क्या चाहिए।
हम खुद के बीच बिलिंग को "नियंत्रण कक्ष" कहते हैं: इसमें न केवल धन और सेवाएं शामिल हैं, बल्कि उनका प्रबंधन, ग्राहक सहायता और भी बहुत कुछ है।
ISPSystem सॉफ्टवेयर से स्विच करने के लिए, ग्राहकों के लिए पिछली कार्यक्षमता को पूरी तरह से बनाए रखने के लिए आवश्यक था, सभी वित्तीय उपयोगकर्ता कार्यों को पुराने बिलिंग सिस्टम से नए एक में स्थानांतरित करें, साथ ही साथ उनके बीच सभी सेवाएं और कनेक्शन। हमने अध्ययन किया कि वर्तमान उत्पाद में क्या है, फिर प्रतियोगियों के निर्णय, मुख्य रूप से DO और Vultr। हमने नुकसान और फायदों को देखा, आईएसपीसिस्टम के पुराने उत्पादों के साथ काम करने वाले लोगों से प्रतिक्रिया एकत्र की।
नई बिलिंग में, दो स्टैक का उपयोग किया गया था: क्लासिक PHP, MySQL (और भविष्य में इसे PostgreSQL पर स्विच करने की योजना बनाई गई है), Yii2 बैकएंड पर एक फ्रेमवर्क और फ्रंट पर VueJS के रूप में। ढेर एक-दूसरे से स्वतंत्र रूप से काम करते हैं, विभिन्न लोगों द्वारा विकसित किए जाते हैं, और JSON एपीआई का उपयोग करके संवाद करते हैं। विकास के लिए, तब और अब हम JetBrains से
PHPStorm और
WebStorm का उपयोग
करते हैं और उन्हें बहुत प्यार करते हैं (दोस्तों, नमस्कार!)।
पैनल को मॉड्यूलर सिद्धांत के अनुसार डिज़ाइन किया गया है: भुगतान प्रणाली मॉड्यूल, डोमेन रजिस्ट्रार मॉड्यूल या, उदाहरण के लिए, एसएसएल प्रमाणपत्र मॉड्यूल। आप आसानी से एक नया फ़ंक्शन जोड़ सकते हैं या पुराने को हटा सकते हैं। विस्तार की आधारशिला वास्तुशिल्प रूप से रखी गई थी, जिसमें विपरीत दिशा भी शामिल थी, "लोहे के लिए।"
हमें क्या मिला : एक नियंत्रण कक्ष जिस पर हमारा पूर्ण नियंत्रण है। अब बग को घंटों में तय किया जाता है, हफ्तों में नहीं, और नए कार्यों को ग्राहकों के अनुरोध पर लागू किया जाता है, न कि आईएसपीएस सिस्टम के अनुरोध पर।
चरण 3. इंटरफ़ेस

इंटरफ़ेस हमारी टीम का दिमाग है।
सबसे पहले, हमने देखा कि यदि हम इंटरफेस में नाटकीय रूप से कुछ भी बदले बिना आईएसपीसिस्टम एपीआई पर एक ऐड-ऑन बनाते हैं, तो क्या होगा। यह इतना निकला और हमने खरोंच से सब कुछ करने का फैसला किया।
हमारा मानना था कि मुख्य बात यह थी कि स्वच्छ और न्यूनतर डिजाइन के साथ इंटरफ़ेस को तार्किक बनाया जाए, और फिर हमें एक सुंदर पैनल मिलेगा। मेगाप्लान में तत्वों की व्यवस्था पर चर्चा की गई थी, और उपयोगकर्ता जो इंटरफ़ेस अब नियंत्रण कक्ष में देखते हैं, वे धीरे-धीरे पैदा होंगे।
पहला पृष्ठ बिलिंग डिज़ाइन दिखाई दिया, क्योंकि हमने पहले ही ISPsystem के लिए भुगतान प्लगइन्स बना लिए थे।
दृश्यपटलउन्होंने पैनल को एक एसपीए एप्लिकेशन बनाने का फैसला किया - संसाधनों के लिए निंदा और तेजी से डेटा लोडिंग के साथ। हमारे सामने के अंत के अरिष्ट ने इसे Vue पर लिखने का फैसला किया - उस समय Vue दिखाई दिया था। हमने मान लिया कि रूपरेखा अभिक्रिया की तरह गतिशील रूप से विकसित होगी, कुछ समय बाद Vue समुदाय बढ़ेगा और पुस्तकालयों का एक समुद्र दिखाई देगा। हमने इसे वीयू पर स्थापित किया और इसे पछतावा नहीं किया - अब सामने की नई विशेषताओं को जोड़ना जो बैकएंड पर पहले से ही प्रोग्राम किए गए हैं, थोड़ा समय लगता है। हम आपको एक अलग लेख में फ्रंटएंड पैनल के बारे में अधिक बताएंगे।
बैकएंड के साथ फ्रंटेंड का संचारफ्रंटेंड को पुसी के माध्यम से बैकेंड से बांधा गया था। मुझे अपने स्वयं के हैंडलर को पसीना और लिखना था, लेकिन अब पृष्ठ पर जानकारी लगभग तुरंत अपडेट की जाती है।
क्या हुआ: पैनल इंटरफ़ेस आसान हो गया है। हमने इसे अनुकूली बना दिया है, और फास्ट लोडिंग इसे टेक-ऑफ से पहले अंतिम क्षणों में मोबाइल फोन से भी उपयोग करने की अनुमति देता है, बिना पैनल के साथ काम करने के लिए एक अलग एप्लिकेशन इंस्टॉल किए बिना।
चरण 4. परीक्षण और प्रवास योजना
जब सब कुछ शुरू हुआ और पहला परीक्षण पास हुआ, तो प्रवास का सवाल पैदा हुआ। सबसे पहले, हमने बिलिंग सेट की और सर्वर एजेंट के साथ उसके काम का परीक्षण करना शुरू किया।
फिर उन्होंने एक साधारण स्क्रिप्ट लिखी जो पुराने बिलिंग से डेटाबेस को नए में स्थानांतरित करती है।
मुझे तीन पुरानी चीजों में से एक नए डेटाबेस में डेटा डाले जाने के बाद से शाब्दिक रूप से हर चीज का परीक्षण और परीक्षण करना था: बिलमैनगर, वीएमएम्नेजर और आईपीएम्नेजर मैनेजर। शायद परीक्षण प्रवास सबसे कठिन बात है जो हमने एक नए पैनल को विकसित करने की प्रक्रिया में सामना किया।
रीचेक करने के बाद, हमने पुरानी बिलिंग को कवर किया। अंतिम डेटा माइग्रेशन एक बहुत ही चिंताजनक क्षण था, लेकिन, भगवान का शुक्र है, यह कुछ ही मिनटों में और ध्यान देने योग्य समस्याओं के बिना पूरा हो गया। मामूली कीड़े थे जो हमने एक सप्ताह में तय किए। जो हुआ उसका परीक्षण करके मुख्य समय निकाला गया।
फिर हमने ग्राहकों को नए पैनल और बिलिंग के पते के साथ पत्र भेजे और पुनर्निर्देशित किया।
नीचे पंक्ति: यह जीवित है!Heppiend
हमारे सॉफ्टवेयर के पहले घंटों से, हमने संक्रमण के सभी प्रसन्नता को महसूस किया। कोड पूरी तरह से हमारा था और एक सुविधाजनक वास्तुकला के साथ था, और इंटरफ़ेस साफ और तार्किक था।
नया पैनल लॉन्च करने के बाद पहली समीक्षाहमने 2017 के नए साल की पूर्व संध्या पर दिसंबर में संक्रमण प्रक्रिया शुरू की, जब ग्राहकों के लिए संक्रमण को आसान बनाने के लिए सबसे कम भार था - छुट्टियों की पूर्व संध्या पर लगभग कोई भी काम नहीं करता है।
हमारे सिस्टम में संक्रमण के दौरान हमें जो मुख्य चीज मिली (सामान्य विश्वसनीयता और सुविधा के अलावा) वह मुख्य ग्राहकों के लिए जल्दी कार्यक्षमता जोड़ने की क्षमता है - उनका चेहरा होना और उनकी गांड का न होना।
आगे क्या है?
हम बढ़ रहे हैं, डेटा, ग्राहकों, ग्राहक डेटा की मात्रा बढ़ रही है। एक मेमेकटेड सर्वर और विभिन्न कार्यों के साथ दो कतार प्रबंधकों को बैकएंड में जोड़ा जाना था। सामने के छोर पर कैशिंग और कतारें हैं।
बेशक, हमारे पास अभी भी रोमांच था क्योंकि हमने उत्पाद विकसित और जटिल किया था, उदाहरण के लिए, जब हमने हाईलाड को जोड़ा।
अगले लेख में हम आपको बताएंगे कि हाय-सीपीयू टैरिफ कैसे लॉन्च किया गया: हार्डवेयर, सॉफ्टवेयर के बारे में, हमने कौन से कार्य हल किए और हमने क्या किया।

हमारे Instagram डेवलपर की सदस्यता लें
