مائیکرو سروسز - ورژن کا ایک مشترکہ دھماکہ

ہیلو، حبر! آپ کی توجہ کے لیے پیش کرتا ہوں۔ مضمون کا مصنف کا ترجمہ مائیکرو سروسز - ورژن کا مشترکہ دھماکہ.
مائیکرو سروسز - ورژن کا ایک مشترکہ دھماکہ
ایک ایسے وقت میں جب آئی ٹی کی دنیا آہستہ آہستہ مائیکرو سروسز اور ٹولز جیسے Kubernetes کی طرف بڑھ رہی ہے، صرف ایک مسئلہ زیادہ سے زیادہ نمایاں ہوتا جا رہا ہے۔ یہ مسئلہ - مشترکہ دھماکہ مائیکرو سروس ورژن۔ پھر بھی، آئی ٹی کمیونٹی کا خیال ہے کہ موجودہ صورتحال اس سے کہیں بہتر ہے۔ "انحصار جہنم" ٹیکنالوجی کی پچھلی نسل. تاہم، مائیکرو سروسز کو ورژن بنانا ایک بہت پیچیدہ مسئلہ ہے۔ اس کا ایک ثبوت جیسے مضامین ہوسکتے ہیں۔ "مجھے میرا یک سنگی واپس دو".

اگر آپ اب بھی اس تحریر کو پڑھ کر مسئلہ نہیں سمجھتے ہیں تو میں وضاحت کرتا ہوں۔ فرض کریں کہ آپ کی پروڈکٹ 10 مائیکرو سروسز پر مشتمل ہے۔ اب فرض کرتے ہیں کہ ان مائیکرو سروسز میں سے ہر ایک کے لیے 1 نیا ورژن جاری کیا گیا ہے۔ صرف 1 ورژن - مجھے امید ہے کہ ہم سب اس بات پر متفق ہوں گے کہ یہ ایک بہت ہی معمولی اور معمولی حقیقت ہے۔ تاہم، اب ہم اپنی مصنوعات پر ایک اور نظر ڈالتے ہیں۔ ہر جزو کے صرف ایک نئے ورژن کے ساتھ، اب ہمارے پاس 2^10 - یا 1024 ترتیب ہے کہ ہماری مصنوعات کو کیسے بنایا جا سکتا ہے۔

اگر اب بھی کوئی غلط فہمی ہے تو میں حساب کو توڑ دیتا ہوں۔ لہذا ہمارے پاس 10 مائیکرو سروسز ہیں، ہر ایک کو ایک اپ ڈیٹ مل رہا ہے۔ یعنی، ہمیں ہر مائیکرو سروس کے لیے 2 ممکنہ ورژن ملتے ہیں (یا تو پرانا یا نیا)۔ اب، پروڈکٹ کے ہر ایک اجزاء کے لیے، ہم ان دونوں ورژنوں میں سے کسی ایک کو استعمال کر سکتے ہیں۔ ریاضی کے لحاظ سے، یہ وہی ہے جیسے ہمارے پاس 10 ہندسوں کا بائنری نمبر ہو۔ مثال کے طور پر، ہم کہتے ہیں کہ 1 نیا ورژن ہے، اور 0 پرانا ورژن ہے - پھر ایک ممکنہ ترتیب کو 1001000000 کے طور پر ظاہر کیا جا سکتا ہے - جہاں 1st اور 4th اجزاء کو اپ ڈیٹ کیا جاتا ہے، اور باقی تمام نہیں ہیں۔ ریاضی سے ہم جانتے ہیں کہ 10 ہندسوں کے بائنری نمبر کی 2^10 یا 1024 قدریں ہوسکتی ہیں۔ یعنی، ہم نے اس تعداد کے پیمانے کی تصدیق کی ہے جس کے ساتھ ہم کام کر رہے ہیں۔

آئیے اپنے استدلال کو مزید جاری رکھیں - اگر ہمارے پاس 100 مائیکرو سروسز ہوں اور ہر ایک کے 10 ممکنہ ورژن ہوں تو کیا ہوگا؟ پوری صورت حال کافی ناخوشگوار ہو جاتی ہے - ہمارے پاس اب 10^100 پرمیوٹیشنز ہیں - جو کہ ایک بہت بڑی تعداد ہے۔ تاہم، میں اس صورت حال کو اس طرح سے لیبل کرنے کو ترجیح دیتا ہوں، کیونکہ اب ہم "kubernetes" جیسے الفاظ کے پیچھے نہیں چھپ رہے ہیں، بلکہ اس مسئلے کا سامنا ہے جیسا کہ یہ ہے۔

میں اس مسئلے سے اتنا متوجہ کیوں ہوں؟ جزوی طور پر، اس سے پہلے NLP اور AI کی دنیا میں کام کرنے کے بعد، ہم نے تقریباً 5-6 سال پہلے مشترکہ دھماکے کے مسئلے پر بہت بحث کی تھی۔ صرف ورژن کے بجائے ہمارے پاس انفرادی الفاظ تھے، اور مصنوعات کے بجائے ہمارے پاس جملے اور پیراگراف تھے۔ اور اگرچہ NLP اور AI کے مسائل کافی حد تک حل طلب ہیں، لیکن یہ تسلیم کرنا ضروری ہے کہ پچھلے کچھ سالوں میں اس میں نمایاں پیش رفت ہوئی ہے۔ (میری رائے میں، پیش رفت کی جا سکتی ہےоیہ بہتر ہو گا کہ صنعت کے لوگ مشین لرننگ پر تھوڑی کم اور دوسری تکنیکوں پر تھوڑی زیادہ توجہ دیں - لیکن یہ پہلے سے ہی موضوع سے ہٹ کر ہے)۔

آئیے ڈی او اوپس اور مائیکرو سروسز کی دنیا میں واپس آتے ہیں۔ ہمیں ایک بہت بڑی پریشانی کا سامنا ہے، کنسٹکامیرا میں ہاتھی کا روپ دھار رہے ہیں - کیونکہ جو میں اکثر سنتا ہوں وہ ہے "بس کبرنیٹ اور ہیلم لے لو، سب ٹھیک ہو جائے گا!" لیکن نہیں، سب کچھ ٹھیک نہیں ہوگا اگر سب کچھ ویسا ہی چھوڑ دیا جائے۔ مزید یہ کہ اس مسئلے کا کوئی تجزیاتی حل اپنی پیچیدگی کی وجہ سے قابل قبول نہیں لگتا۔ جیسا کہ NLP میں ہے، ہمیں سب سے پہلے تلاش کے دائرہ کار کو کم کر کے اس مسئلے سے رجوع کرنا چاہیے — اس معاملے میں، پرانی تبدیلیوں کو ختم کر کے۔

ان چیزوں میں سے ایک جو مدد کر سکتی ہے وہ ہے جو میں نے پچھلے سال لکھا تھا۔ کلائنٹس کے لیے پوسٹ کیے گئے ورژنز کے درمیان کم از کم فرق برقرار رکھنے کی ضرورت کے بارے میں. یہ نوٹ کرنا بھی ضروری ہے کہ اچھی طرح سے ڈیزائن کیا گیا CI/CD عمل تغیرات کو کم کرنے میں بہت مدد کرتا ہے۔ تاہم، CI/CD کے ساتھ معاملات کی موجودہ حالت اتنی اچھی نہیں ہے کہ اکاؤنٹنگ اور ٹریکنگ اجزاء کے لیے اضافی ٹولز کے بغیر اجازت کے مسئلے کو حل کر سکے۔

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

تجربات کا ایسا نظام اس طرح نظر آسکتا ہے:

  1. ڈویلپرز ٹیسٹ لکھتے ہیں (یہ ایک نازک مرحلہ ہے - کیونکہ بصورت دیگر ہمارے پاس تشخیص کا کوئی معیار نہیں ہے - یہ مشین لرننگ میں ڈیٹا کو لیبل لگانے جیسا ہے)۔
  2. ہر جزو (پروجیکٹ) کو اپنا اپنا CI نظام ملتا ہے - یہ عمل اب اچھی طرح سے تیار ہو چکا ہے، اور کسی ایک جزو کے لیے CI سسٹم بنانے کا مسئلہ بڑی حد تک حل ہو چکا ہے۔
  3. "سمارٹ انٹیگریشن سسٹم" مختلف CI سسٹمز کے نتائج کو اکٹھا کرتا ہے اور اجزاء کے منصوبوں کو حتمی مصنوعات میں جمع کرتا ہے، ٹیسٹنگ چلاتا ہے اور آخر میں موجودہ اجزاء اور خطرے کے عوامل کی بنیاد پر مطلوبہ پروڈکٹ کی فعالیت حاصل کرنے کے لیے مختصر ترین راستے کا حساب لگاتا ہے۔ اگر اپ ڈیٹ ممکن نہیں ہے تو، یہ سسٹم ڈویلپرز کو موجودہ اجزاء کے بارے میں مطلع کرتا ہے اور ان میں سے کون سی خرابی کا سبب بن رہا ہے۔ ایک بار پھر، یہاں ٹیسٹ کا نظام انتہائی اہمیت کا حامل ہے - چونکہ انضمام کا نظام ٹیسٹوں کو تشخیصی معیار کے طور پر استعمال کرتا ہے۔
  4. سی ڈی سسٹم، جو پھر اسمارٹ انٹیگریشن سسٹم سے ڈیٹا وصول کرتا ہے اور براہ راست اپ ڈیٹ کرتا ہے۔ یہ مرحلہ سائیکل کو ختم کرتا ہے۔

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

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

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

ماخذ: www.habr.com

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