JavaRush /جاوا بلاگ /Random-UR /جاوا مائیکرو سروسز کے لیے ایک گائیڈ۔ حصہ 2: تعیناتی اور ج...

جاوا مائیکرو سروسز کے لیے ایک گائیڈ۔ حصہ 2: تعیناتی اور جانچ

گروپ میں شائع ہوا۔
جاوا مائیکرو سروسز کا ترجمہ اور موافقت : ایک عملی گائیڈ ۔ گائیڈ کے پہلے حصے سے لنک کریں ۔ جاوا مائیکرو سروسز کے لیے ایک گائیڈ۔  حصہ 2: تعیناتی اور جانچ - 1کوئی بھی سرور سائیڈ جاوا پروگرام، اور اس لیے کوئی بھی مائیکرو سروس، صرف ایک فائل ہے جس میں .jar یا .war ایکسٹینشن ہے۔ جاوا ایکو سسٹم، یا JVM کے بارے میں ایک بہت اچھی چیز ہے: آپ کو جاوا کوڈ صرف ایک بار لکھنا ہوگا اور یہ تقریباً کسی بھی آپریٹنگ سسٹم پر چل سکتا ہے، جب تک کہ آپ نے اپنے کوڈ کو جاوا کے نئے ورژن کے ساتھ مرتب نہیں کیا ہے۔ ہدف JVM ورژن۔ یہ سمجھنا ضروری ہے، خاص طور پر جب بات ڈوکر، کبرنیٹس، یا (ڈرم رول!) دی کلاؤڈ جیسے موضوعات کی ہو۔ کیوں؟ آئیے مختلف تعیناتی کے منظرناموں کو دیکھتے ہیں۔

کم سے کم جاوا مائیکرو سرویس تعیناتی کی مثال

آئیے بینک کی مثال کے ساتھ جاری رکھیں۔ لہذا ہمارے پاس ایک monobank.jar فائل (monolith) اور ہماری نئی نکالی گئی riskengine.jar (پہلا خطرہ چیکنگ مائیکرو سروس) ہے۔ آئیے یہ بھی مان لیں کہ دونوں ایپلی کیشنز، دنیا کی ہر دوسری ایپلی کیشن کی طرح، ایک .properties فائل کی ضرورت ہے۔ ہمارے معاملے میں، یہ صرف ڈیٹا بیس URL اور اسناد پر مشتمل ہوگا۔ ایک کم سے کم تعیناتی دو ڈائریکٹریوں پر مشتمل ہو سکتی ہے جو کچھ اس طرح نظر آتی ہیں: پہلا:

-r-r------ 1 ubuntu ubuntu     2476 Nov 26 09:41 application.properties
-r-x------ 1 ubuntu ubuntu 94806861 Nov 26 09:45 monobank-384.jar

ubuntu@somemachine:/var/www/www.monobank.com/java$ java -jar monobank-384.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
...
دوسرا:

-r-r------ 1 ubuntu ubuntu     2476 Nov 26 09:41 application.properties
-r-x------ 1 ubuntu ubuntu 94806861 Nov 26 09:45 risk-engine-1.jar

ubuntu@someothermachine:/var/www/risk.monobank.com/java$ java -jar risk-engine-1.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
...
اس سے سوال کھلا رہ جاتا ہے: .properties اور .jar فائلیں سرور تک کیسے پہنچیں گی؟ بدقسمتی سے، بہت سے جوابات ہو سکتے ہیں۔

جاوا مائیکرو سروسز کو تعینات کرنے کے لیے بلڈ ٹولز، SSH، اور Ansible کا استعمال کیسے کریں۔

بورنگ، لیکن جاوا مائیکرو سروسز کو تعینات کرنے کے بارے میں کوئی بہترین مشورہ نہیں... دراصل، بالکل اسی طرح جس طرح سسٹم ایڈمنسٹریٹرز نے پچھلے 20 سالوں میں کمپنیوں میں جاوا سرور پروگرام کو تعینات کیا ہے۔ یہ مرکب ہے:
  • آپ کا پسندیدہ بلڈ ٹول (Maven، Gradle)
  • .jars کو سرور پر کاپی کرنے کے لیے اچھا پرانا SSH/SCP
  • تعیناتی اسکرپٹس اور سرورز کو منظم کرنے کے لیے باش اسکرپٹس
  • یا اس سے بھی بہتر: کچھ جوابی اسکرپٹ۔
یقیناً، یہ ان اختراع کرنے والوں کے لیے موزوں نہیں ہے جنہیں "سانس لینے والے" کلاؤڈ، خودکار لوڈ بیلنسنگ والے سرورز، وغیرہ کی ضرورت ہے۔ یہ اصلی بورنگ پرانا اسکول ہے۔ تاہم یہ کام کرتا ہے!

جاوا مائیکرو سروسز کو تعینات کرنے کے لیے ڈوکر کا استعمال کیسے کریں۔

آئیے انتخاب کی میٹھی اذیت کی طرف لوٹتے ہیں۔ کچھ سال پہلے ڈوکر منظر پر آیا، اور اس کے ساتھ کنٹینرائزیشن۔ اگر آپ نے اس کے ساتھ کبھی کام نہیں کیا ہے تو، یہاں ایک مختصر تفصیل ہے جس کا مقصد آخری صارفین اور ڈویلپرز ہیں: جاوا مائیکرو سروسز کے لیے ایک گائیڈ۔  حصہ 2: تعیناتی اور جانچ - 2یہ مضحکہ خیز ہے کہ JVM کی پورٹیبلٹی اور پسماندہ مطابقت کو دیکھتے ہوئے، یہ خصوصیت ایسا فائدہ نہیں لگتا ہے۔ آپ آسانی سے کسی بھی Raspberry Pi (یا موبائل فون) پر JVM.zip ڈاؤن لوڈ کر سکتے ہیں، اسے نکال سکتے ہیں اور کسی بھی .jar فائل کو چلا سکتے ہیں۔ پی ایچ پی یا ازگر جیسی زبانوں میں صورتحال بدل جاتی ہے، جہاں ورژن کی عدم مطابقت یا تعیناتی کی ترتیبات زیادہ پیچیدہ ہوتی ہیں۔ یا اگر آپ کی جاوا ایپلیکیشن بہت سی دوسری انسٹال کردہ خدمات پر منحصر ہے (صحیح ورژن نمبروں کے ساتھ): مثال کے طور پر، پوسٹگریس ڈیٹا بیس، یا ریڈیس کلیدی ویلیو اسٹور۔ لہذا، جاوا مائیکرو سروسز کے لیے ڈوکر کا بنیادی فائدہ، یا زیادہ واضح طور پر جاوا ایپلی کیشنز کے لیے، یہ ہے: ٹیسٹ کنٹینرز جیسے ٹولز کا استعمال کرتے ہوئے یکساں ٹیسٹنگ یا انضمام کے ماحول کو ترتیب دینے کی صلاحیت ۔ پیچیدہ پیشرفت انسٹال کرنا آسان ہے۔ ڈسکورس فورم سافٹ ویئر لیں ۔ آپ اسے ایک ہی ڈوکر امیج کے ساتھ انسٹال کر سکتے ہیں، اور اس میں روبی میں لکھے گئے ڈسکورس سافٹ ویئر سے لے کر پوسٹگریس ڈیٹا بیس تک، ریڈیس اور کچن کے سنک تک ہر چیز پر مشتمل ہے۔ اگر آپ کی تعیناتیاں ملتی جلتی ہیں یا آپ ایک اچھا سا اوریکل ڈیٹا بیس چلانا چاہتے ہیں تو ڈوکر کو آزمائیں۔ تو خلاصہ کرنے کے لیے، صرف .jar فائل کو دیکھنے کے بجائے، اب آپ:
  • اپنی جار فائل کو ڈوکر امیج میں بنڈل کریں۔
  • اس تصویر کو پرائیویٹ ڈاکر رجسٹری میں دھکیلیں۔
  • اس تصویر کو اپنے ٹارگٹ پلیٹ فارم پر کھینچ کر چلائیں۔
  • یا ڈاکر امیج کو براہ راست اپنے پروڈکشن سسٹم میں کاپی کریں اور اسے چلائیں۔

جاوا مائیکرو سروسز کو تعینات کرنے کے لیے Docker Swarm یا Kubernetes کا استعمال کیسے کریں۔

ہم کہتے ہیں کہ آپ ڈوکر کو آزمانے کا فیصلہ کرتے ہیں۔ ہر بار جب آپ جاوا مائیکرو سروس تعینات کرتے ہیں، آپ ایک Docker امیج بناتے ہیں جو آپ کی .jar فائل کو بنڈل کرتا ہے۔ فرض کریں کہ آپ کے پاس ان میں سے کچھ جاوا مائیکرو سروسز ہیں، اور آپ ان خدمات کو کئی مشینوں پر (ایک کلسٹر میں) تعینات کرنا چاہتے ہیں۔ سوال یہ پیدا ہوتا ہے کہ اس کلسٹر کا انتظام کیسے کیا جائے؟ ڈوکر کنٹینرز چلائیں، کارکردگی چیک کریں، اپ ڈیٹس تعینات کریں، سسٹم کو پیمانہ کریں (brrr)؟ اس سوال کے دو ممکنہ جواب ہیں Docker Swarm اور Kubernetes۔ دونوں آپشنز کے بارے میں تفصیل میں جانے سے یہ پہلے سے طویل ٹیوٹوریل بہت لمبا ہو جائے گا، لیکن ہمارے خیال میں یہ بتانا ضروری ہے کہ دونوں آپشنز بالآخر YAML فائلیں لکھنے پر انحصار کرتے ہیں (دیکھیں Yaml indentation story ) اپنے کلسٹر کو منظم کرنے کے لیے۔ اگر آپ جاننا چاہتے ہیں کہ اس سے عملی طور پر کیا احساسات پیدا ہوتے ہیں، تو صرف ٹویٹر سرچ میں اسی طرح کا سوال ٹائپ کریں۔ لہذا آپ کے جاوا مائیکرو سروسز کے لیے تعیناتی کا عمل اب کچھ اس طرح نظر آتا ہے:
  • Docker Swarm/Kubernetes کو ترتیب دینا اور ان کا نظم کرنا
  • ڈوکر کے تمام اقدامات (اوپر دیکھیں)
  • YAML لکھیں اور اس پر عمل کریں جب تک کہ آپ کی آنکھوں سے خون بہہ جائے جب تک کہ سب کچھ کام نہ کرے۔

جاوا مائیکرو سروسز کی جانچ کیسے کریں۔

فرض کریں کہ آپ پیداوار میں مائیکرو سروسز کو نافذ کرنے کا فیصلہ کرتے ہیں۔ اب ہم ترقی کے دوران n-microservices کے انضمام کی جانچ کیسے کر سکتے ہیں؟ آپ کیسے دیکھ سکتے ہیں کہ آیا پورا ورک فلو کام کر رہا ہے، اور نہ صرف اس کے کچھ حصے؟ عملی طور پر، آپ تین طریقوں میں سے ایک استعمال کر سکتے ہیں:
  1. تھوڑا سا کام کرنے کے ساتھ (اگر آپ اسپرنگ بوٹ جیسے فریم ورک استعمال کر رہے ہیں)، تو آپ اپنی تمام مائیکرو سروسز کو ایک لانچر کلاس میں جوڑ سکتے ہیں اور ایک ہی Wrapper.java کلاس کا استعمال کرتے ہوئے تمام مائیکرو سروسز لوڈ کر سکتے ہیں - اس بات پر منحصر ہے کہ آیا آپ کی مشین پر کافی میموری ہے یا نہیں۔ انہیں اپنی تمام مائیکرو سروسز چلائیں۔
  2. آپ مقامی طور پر Docker Swarm یا Kubernetes کی ترتیبات کاپی کر سکتے ہیں۔
  3. بس اب مقامی طور پر انٹیگریشن ٹیسٹ نہ چلائیں۔ اس کے بجائے، ایک وقف شدہ DEV/TEST ماحول متعین کریں۔ یہ وہ چیز ہے جو کچھ ٹیمیں دراصل اس وقت کرتی ہیں جب وہ مقامی مائیکرو سروس سیٹ اپ کے درد کا شکار ہو جاتی ہیں۔
مزید برآں، آپ کی جاوا مائیکرو سروسز کے علاوہ، آپ کو ممکنہ طور پر ایک چلنے والے میسج بروکر (جیسے کہ ActiveMQ یا RabbitMQ) یا شاید ایک ای میل سرور یا کسی دوسرے میسجنگ جزو کی بھی ضرورت ہو گی جس کی آپ کی جاوا مائیکرو سروسز کو ایک دوسرے کے ساتھ بات چیت کرنے کی ضرورت ہے۔ اس سے DevOps کی طرف پیچیدگی کا ایک اہم کم اندازہ ہوتا ہے۔ مائیکرو سروس ٹیسٹنگ لائبریریوں پر ایک نظر ڈالیں، وہ اس درد کو کم کر سکتے ہیں۔ کسی بھی صورت میں، یہ پیچیدگی ہمیں مائیکرو سروسز کے عمومی مسائل کی طرف لے جاتی ہے، جس کے بارے میں ہم ابھی بات کریں گے۔ آخری حصے میں ، ہم جاوا مائیکرو سروسز کے بارے میں عمومی سوالات کا احاطہ کریں گے۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION