آئی ایس پی سسٹم، معاف کریں اور الوداع! ہم نے اپنا سرور کنٹرول پینل کیوں اور کیسے لکھا

آئی ایس پی سسٹم، معاف کریں اور الوداع! ہم نے اپنا سرور کنٹرول پینل کیوں اور کیسے لکھا

ہیلو! ہم "ہوسٹنگ ٹیکنالوجیز" ہیں اور 5 سال پہلے لانچ کیے گئے ہیں۔ وی ڈی سینا - پہلی وی ڈی ایس ہوسٹنگ جو خاص طور پر ڈویلپرز کے لیے بنائی گئی ہے۔ ہم ڈیجیٹل اوشین کی طرح اسے آسان بنانے کی کوشش کرتے ہیں، لیکن روس میں روسی تعاون، ادائیگی کے طریقوں اور سرورز کے ساتھ۔ لیکن DigitalOcean نہ صرف وشوسنییتا اور قیمت ہے، یہ ایک خدمت بھی ہے۔

آئی ایس پی سسٹم کا سافٹ ویئر ایک رسی بن کر نکلا جس نے ٹھنڈی سروس کے راستے میں ہمارے ہاتھ باندھ دیے۔ تین سال پہلے، ہم نے بل مینیجر بلنگ اور VMmanager سرور کنٹرول پینل کا استعمال کیا اور جلدی سے محسوس کیا کہ ہمارے اپنے کنٹرول پینل کے بغیر اچھی سروس فراہم کرنا تقریباً ناممکن ہے۔

کس طرح آئی ایس پی سسٹم نے سہولت کو ختم کیا۔

کیڑے

ہم خود اس مسئلے کو ٹھیک نہیں کر سکے - ہر بار ہمیں کسی اور کے تعاون کو لکھنا پڑتا تھا اور انتظار کرنا پڑتا تھا۔ کسی بھی مسئلے کے حل کے لیے تھرڈ پارٹی کمپنی کا جواب درکار ہوتا ہے۔

ISPsystem سپورٹ نے عام طور پر جواب دیا، لیکن اصلاحات صرف چند ریلیز کے بعد آئیں، اور پھر ہمیشہ نہیں اور تمام نہیں۔ بعض اوقات اہم کیڑے کئی ہفتوں تک درست کیے جاتے تھے۔ ہمیں صارفین کو یقین دلانا تھا، معافی مانگنی پڑی اور ISPsystem کا انتظار کرنا پڑا تاکہ بگ کو ٹھیک کیا جا سکے۔

بند ہونے کا خطرہ

اپ ڈیٹس غیر متوقع طور پر ڈاؤن ٹائمز پیدا کر سکتے ہیں جو نئی خرابیوں کو ہوا دیتے ہیں۔

ہر اپ ڈیٹ ایک لاٹری تھی: مجھے بلنگ کو چھپانا پڑا اور اپ ڈیٹس کے دیوتاؤں کے لیے قربانیاں دینی پڑیں - ایک دو بار اپ ڈیٹ کی وجہ سے 10-15 منٹ کے لیے ڈاؤن ٹائم ہوا۔ اس وقت ہمارے ایڈمنز سر آنکھوں پر بٹھا رہے تھے - ہم کبھی نہیں جانتے تھے کہ ڈاؤن ٹائم کب تک چلے گا اور یہ اندازہ نہیں لگا سکے کہ ISPsystem کب نئی اپ ڈیٹ جاری کرنے کا فیصلہ کرے گا۔

پانچویں جنریشن پر، بل مینیجر بہتر ہو گیا، لیکن ضروری فیچرز تک رسائی حاصل کرنے کے لیے، مجھے بیٹا انسٹال کرنا پڑا، جو پہلے ہی ہر ہفتے اپ ڈیٹ ہوتا تھا۔ اگر کچھ ٹوٹ جاتا ہے تو مجھے دوسرے ڈویلپرز تک رسائی دینی پڑتی ہے تاکہ وہ کچھ ٹھیک کر سکیں۔

تکلیف دہ پینل انٹرفیس

ہر چیز کو مختلف پینلز میں تقسیم کیا گیا اور مختلف جگہوں سے کنٹرول کیا گیا۔ مثال کے طور پر، کلائنٹس نے بل مینیجر کے ذریعے ادائیگی کی، اور انہیں VMManager میں VDS کو دوبارہ شروع یا دوبارہ انسٹال کرنا پڑا۔ ہمارے عملے کو کسی کلائنٹ کی مدد کرنے، اس کے سرور پر لوڈ چیک کرنے، یا یہ دیکھنے کے لیے کہ وہ کون سا OS استعمال کر رہا ہے، ونڈوز کے درمیان سوئچ کرنا پڑتا ہے۔

اس طرح کے انٹرفیس میں وقت لگتا ہے - ہمارا اور ہمارے کلائنٹس دونوں کا۔ ایسی صورت حال میں ڈیجیٹل اوشن کی طرح کسی سہولت کا سوال ہی پیدا نہیں ہوتا۔

بار بار API اپ ڈیٹس کے ساتھ مختصر لائف سائیکل

ہم نے اپنے اپنے پلگ ان لکھے ہیں - مثال کے طور پر، اضافی ادائیگی کے طریقوں کے ساتھ ایک پلگ ان جو VMManager میں نہیں ہے۔

حالیہ برسوں میں، VMManager کی زندگی کا ایک نسبتاً مختصر دور تھا، اور نئے ورژن میں، API میں متغیرات یا فنکشنز کے نام من مانی طور پر تبدیل ہو سکتے ہیں - اس سے ہمارے پلگ ان ٹوٹ گئے۔ پرانے ورژن کے لیے سپورٹ کو فوری طور پر ختم کر دیا گیا اور اسے اپ ڈیٹ کرنا پڑا۔

ترمیم نہیں کی جا سکتی

زیادہ واضح طور پر، یہ ممکن ہے، لیکن انتہائی غیر موثر ہے۔ لائسنس کی پابندیاں آپ کو سورس کوڈ میں تبدیلیاں کرنے کی اجازت نہیں دیتی ہیں، آپ صرف پلگ ان لکھ سکتے ہیں۔ زیادہ سے زیادہ پلگ ان - کچھ مینو آئٹمز، ایک قدم بہ قدم وزرڈ۔ ISPsystem استرتا کے لیے ڈیزائن کیا گیا ہے، لیکن ہمیں خصوصی حل کی ضرورت تھی۔

لہٰذا فیصلہ پکا تھا کہ میں اپنا پینل لکھوں۔ ہم نے اہداف مقرر کیے ہیں:

  • غلطیوں، کیڑوں کا فوری جواب دیں اور کلائنٹ کو انتظار کیے بغیر خود ان کو ٹھیک کرنے کے قابل ہو جائیں۔
  • ورک فلو اور کلائنٹ کی ضروریات کے لیے انٹرفیس میں آزادانہ طور پر ترمیم کریں۔
  • صاف اور قابل فہم ڈیزائن کے ساتھ استعمال میں اضافہ کریں۔

اور ہم نے ترقی شروع کی۔

نیا پینل آرکیٹیکچر

ہمارے پاس خود کفیل ترقیاتی ٹیم ہے، لہذا ہم نے خود پینل لکھا۔
مرکزی کام تین انجینئروں نے کیا تھا - ٹیکنیکل ڈائریکٹر سرجی نے فن تعمیر کے ساتھ آکر سرور ایجنٹ کو لکھا، الیکسی نے بلنگ کی، اور فرنٹ اینڈ کو ہمارے فرنٹ اینڈر آرٹیش نے اسمبل کیا۔

مرحلہ 1: سرور ایجنٹ

سرور ایجنٹ ایک ازگر کا ویب سرور ہے جو لائبریری کا انتظام کرتا ہے۔ libvirt، جو بدلے میں حکومت کرتا ہے۔ Qemu-kvm ہائپر وائزر.

ایجنٹ سرور پر تمام خدمات کا انتظام کرتا ہے: وی ڈی ایس بنانا، روکنا، ڈیلیٹ کرنا، آپریٹنگ سسٹم انسٹال کرنا، پیرامیٹر تبدیل کرنا، اور اسی طرح libvirt لائبریری کے ذریعے۔ مضمون کی اشاعت کے وقت، یہ چالیس سے زیادہ مختلف فنکشنز ہیں، جنہیں ہم کام اور مؤکل کی ضروریات کے لحاظ سے پورا کرتے ہیں۔

نظریہ میں، libvirt کو براہ راست بلنگ سے کنٹرول کیا جا سکتا ہے، لیکن اس کے لیے بہت زیادہ اضافی کوڈ کی ضرورت تھی اور ہم نے ان افعال کو ایجنٹ اور بلنگ کے درمیان الگ کرنے کا فیصلہ کیا - بلنگ صرف JSON API کے ذریعے ایجنٹ سے درخواستیں کرتی ہے۔

ایجنٹ وہ پہلا کام ہے جو ہم نے کیا، کیونکہ اسے کسی انٹرفیس کی ضرورت نہیں تھی اور اسے سرور کنسول سے براہ راست جانچنا ممکن تھا۔

سرور ایجنٹ نے ہمیں کیا دیا: ایک پرت نمودار ہوئی ہے جو ہر ایک کے لیے زندگی کو آسان بناتی ہے - بلنگ کے لیے کمانڈز کا پورا گروپ بھیجنے کی ضرورت نہیں ہے، بلکہ صرف ایک درخواست کرنا ہے۔ اور ایجنٹ ہر وہ کام کرے گا جس کی ضرورت ہے: مثال کے طور پر، یہ ڈسک کی جگہ اور رام مختص کرے گا۔

مرحلہ 2۔ بلنگ

ہمارے ڈویلپر ایلیکس کے لیے، یہ پہلا کنٹرول پینل نہیں تھا - الیکس ایک طویل عرصے سے میزبانی کر رہا ہے، اس لیے وہ عام طور پر سمجھتا تھا کہ کلائنٹ کو کیا ضرورت ہے اور میزبان کو کیا ضرورت ہے۔

ہم آپس میں بلنگ کو ایک "کنٹرول پینل" کہتے ہیں: اس میں نہ صرف رقم اور خدمات ہیں، بلکہ ان کا انتظام، کسٹمر سپورٹ اور بہت کچھ ہے۔

ISPSystem سافٹ ویئر سے سوئچ کرنے کے لیے، صارفین کے لیے پچھلی فعالیت کو مکمل طور پر محفوظ رکھنا، صارفین کے تمام مالیاتی اقدامات کو پرانی بلنگ سے نئے بلنگ میں منتقل کرنا، نیز ان کے درمیان تمام خدمات اور روابط ضروری تھے۔ ہم نے مطالعہ کیا کہ موجودہ مصنوعات میں کیا ہے، پھر حریفوں کے حل، خاص طور پر DO اور Vultr۔ ہم نے نقصانات اور فوائد کو دیکھا، آئی ایس پی سسٹم سے پرانے پروڈکٹس کے ساتھ کام کرنے والے لوگوں سے فیڈ بیک اکٹھا کیا۔

نئی بلنگ میں دو اسٹیک استعمال کیے گئے ہیں: کلاسک پی ایچ پی، مائی ایس کیو ایل (اور مستقبل میں پوسٹگری ایس کیو ایل پر سوئچ کرنے کا منصوبہ ہے)، بیک اینڈ پر فریم ورک کے طور پر Yii2 اور فرنٹ پر VueJS۔ اسٹیکس ایک دوسرے سے آزادانہ طور پر کام کرتے ہیں، مختلف لوگوں کے ذریعہ تیار کیے جاتے ہیں، اور JSON API کا استعمال کرتے ہوئے بات چیت کرتے ہیں۔ ترقی کے لیے تب اور اب ہم استعمال کرتے ہیں۔ پی ایچ پی سٹورم۔ и ویب اسٹورم JetBrains سے اور ان سے پیار کرتے ہیں (ارے لوگو!)

پینل کو ماڈیولر بنیادوں پر ڈیزائن کیا گیا ہے: ادائیگی کے نظام کے ماڈیول، ڈومین رجسٹرار ماڈیول یا، مثال کے طور پر، ایک SSL سرٹیفکیٹ ماڈیول۔ آپ آسانی سے ایک نئی خصوصیت شامل کر سکتے ہیں یا پرانی کو ہٹا سکتے ہیں۔ توسیع کی بنیاد تعمیراتی طور پر رکھی گئی ہے، بشمول مخالف سمت میں، "ہارڈ ویئر کی طرف"۔
آئی ایس پی سسٹم، معاف کریں اور الوداع! ہم نے اپنا سرور کنٹرول پینل کیوں اور کیسے لکھا
ہمیں کیا ملا: ایک کنٹرول پینل جس پر ہمارا مکمل کنٹرول ہے۔ اب کیڑے ہفتوں میں نہیں بلکہ گھنٹوں میں طے کیے جاتے ہیں، اور نئی خصوصیات ISPSystem کی درخواست پر نہیں بلکہ صارفین کی درخواست پر لاگو کی جاتی ہیں۔

مرحلہ 3 انٹرفیس

آئی ایس پی سسٹم، معاف کریں اور الوداع! ہم نے اپنا سرور کنٹرول پینل کیوں اور کیسے لکھا
انٹرفیس ہماری ٹیم کا دماغ ہے۔

سب سے پہلے، ہم نے دیکھا کہ کیا ہوگا اگر ہم نے انٹرفیس میں بنیادی طور پر کسی بھی چیز کو تبدیل کیے بغیر ISPsystem API پر ایک اضافہ کیا۔ یہ ایسا ہی نکلا اور ہم نے شروع سے سب کچھ کرنے کا فیصلہ کیا۔

ہمیں یقین تھا کہ بنیادی چیز صاف اور کم سے کم ڈیزائن کے ساتھ انٹرفیس کو منطقی بنانا ہے، اور پھر ہمیں ایک خوبصورت پینل ملے گا۔ عناصر کے محل وقوع پر Megaplan میں تبادلہ خیال کیا گیا تھا اور وہ انٹرفیس جو صارفین اب کنٹرول پینل میں دیکھتے ہیں آہستہ آہستہ پیدا ہو جائے گا۔

بلنگ پیج کا ڈیزائن سب سے پہلے ظاہر ہوا، کیونکہ ہم نے پہلے ہی آئی ایس پی سسٹم کے لیے ادائیگی کے پلگ ان بنا لیے ہیں۔

فرنٹ اینڈ

انہوں نے پینل کو ایک SPA ایپلیکیشن بنانے کا فیصلہ کیا - وسائل کے لیے غیر ضروری اور تیز ڈیٹا لوڈنگ کے ساتھ۔ ہمارے فرنٹ اینڈ آرٹیش نے اسے Vue پر لکھنے کا فیصلہ کیا — اس وقت Vue ابھی نمودار ہوا تھا۔ ہم نے فرض کیا کہ فریم ورک متحرک طور پر ترقی کرے گا، جیسے React، کچھ عرصے بعد Vue کمیونٹی بڑھے گی اور لائبریریوں کا ایک سمندر نمودار ہوگا۔ ہم نے Vue پر شرط لگائی اور اس پر افسوس نہیں ہوا - اب فرنٹ میں نئے فنکشنز شامل کرنے میں بہت کم وقت لگتا ہے جو پہلے ہی بیک اینڈ پر پروگرام کر چکے ہیں۔ ہم آپ کو ایک علیحدہ مضمون میں فرنٹ اینڈ پینل کے بارے میں مزید بتائیں گے۔

فرنٹ اینڈ کو بیک اینڈ سے جوڑنا

فرنٹ اینڈ پش اطلاعات کے ذریعے بیک اینڈ سے منسلک تھا۔ مجھے سخت محنت کرنی پڑی اور اپنا ہینڈلر لکھنا پڑا، لیکن اب صفحہ پر موجود معلومات تقریباً فوری طور پر اپ ڈیٹ ہو جاتی ہیں۔

کیا ہوا: پینل انٹرفیس آسان ہو گیا ہے۔ ہم نے اسے موافق بنایا ہے، اور تیز لوڈنگ آپ کو پینل کے ساتھ کام کرنے کے لیے علیحدہ ایپلیکیشن انسٹال کیے بغیر، ٹیک آف سے پہلے آخری منٹوں میں بھی اسے موبائل فون سے استعمال کرنے کی اجازت دیتی ہے۔

مرحلہ 4۔ جانچ اور منتقلی کی اسکیم

جب سب کچھ شروع ہوا اور پہلے امتحان پاس ہوئے تو ہجرت کا سوال پیدا ہوا۔ سب سے پہلے، ہم نے بلنگ انسٹال کی اور سرور ایجنٹ کے ساتھ اس کے آپریشن کی جانچ شروع کی۔

پھر ہم نے ایک سادہ اسکرپٹ لکھا جو ڈیٹا بیس کو پرانی بلنگ سے نئے میں منتقل کرتا ہے۔

مجھے لفظی طور پر ہر چیز کو جانچنا اور دوبارہ چیک کرنا پڑا، کیونکہ ڈیٹا کو تین پرانے ڈیٹا بیس میں ضم کیا گیا تھا: بل مینجر، وی ایم مینیجر اور مینیجر کا آئی پی مینیجر۔ شاید آزمائشی منتقلی سب سے مشکل چیز ہے جس کا سامنا ہم نے ایک نیا پینل تیار کرنے کے عمل میں کیا۔

دوبارہ چیک کرنے کے بعد، ہم نے پرانی بلنگ بند کر دی۔ حتمی ڈیٹا کی منتقلی ایک بہت پریشان کن لمحہ تھا، لیکن، خدا کا شکر ہے، یہ چند منٹوں میں اور قابل توجہ مسائل کے بغیر مکمل ہو گیا۔ معمولی کیڑے تھے جنہیں ہم نے ہفتے کے دوران ٹھیک کیا۔ زیادہ تر وقت جانچنے میں گزرا کہ کیا ہوا۔

پھر ہم نے کلائنٹس کو نئے پینل اور بلنگ کے پتے کے ساتھ خط بھیجے اور ایک ری ڈائریکٹ کیا۔

خلاصہ یہ کہ: یہ زندہ ہے!

خوشگوار اختتام

ہمارے سافٹ ویئر کے کام کے پہلے گھنٹوں سے، ہم نے منتقلی کی تمام خوشیوں کو محسوس کیا۔ کوڈ مکمل طور پر ہمارا تھا اور ایک آسان فن تعمیر کے ساتھ، اور انٹرفیس صاف اور منطقی تھا۔
آئی ایس پی سسٹم، معاف کریں اور الوداع! ہم نے اپنا سرور کنٹرول پینل کیوں اور کیسے لکھا
نئے پینل کے آغاز کے بعد پہلا جائزہ

ہم نے منتقلی کا عمل دسمبر میں، نئے سال 2017 کے موقع پر شروع کیا، جب لوڈ کم سے کم تھا، تاکہ صارفین کے لیے منتقلی کو آسان بنایا جا سکے - تقریباً کوئی بھی تعطیلات کے موقع پر کام نہیں کرتا ہے۔

اپنے سسٹم پر سوئچ کرتے وقت جو اہم چیز ہمیں ملی وہ ہے (عمومی اعتبار اور سہولت کے علاوہ) کلیدی صارفین کے لیے تیزی سے فعالیت شامل کرنے کی صلاحیت - ان کا چہرہ بننا، ان کا گدا نہیں۔

اس کے بعد کیا ہے؟

ہم بڑھ رہے ہیں، ڈیٹا، صارفین، کسٹمر ڈیٹا کی مقدار بڑھ رہی ہے۔ مجھے بیک اینڈ میں مختلف کاموں کے ساتھ ایک میمکیچڈ سرور اور دو قطار مینیجرز کو شامل کرنا تھا۔ فرنٹ اینڈ میں کیشنگ اور اس کی اپنی قطاریں ہیں۔

بلاشبہ، ہمارے پاس اب بھی مہم جوئی تھی کیونکہ پروڈکٹ تیار ہوئی اور مزید پیچیدہ ہوگئی، مثال کے طور پر جب ہم نے HighLoad شامل کیا۔

اگلے مضمون میں، ہم آپ کو بتائیں گے کہ Hi-CPU ٹیرف کیسے شروع کیا گیا: ہارڈ ویئر، سافٹ ویئر، ہم نے کن کاموں کو حل کیا اور کیا کیا۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں