مائیکرو سروسز میں API گیٹ وے پیٹرن کو سمجھنا: ایک سادہ گائیڈ

مائیکرو سروسز میں API گیٹ وے پیٹرن کو سمجھنا: ایک سادہ گائیڈ

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

اگر آپ کے پاس دس، پچاس، یا سینکڑوں چھوٹی مائیکرو سروسز ہیں، تو کیا موبائل ایپ یا ویب صفحہ ان میں سے ہر ایک سے براہ راست منسلک ہونا چاہیے؟

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


حقیقی دنیا کی تشبیہ: ہوٹل ریسپشنسٹ

تصور کریں کہ آپ ایک بڑے، لگژری ریزورٹ ہوٹل میں چیک کر رہے ہیں۔ ریزورٹ میں بہت سے مختلف شعبے ہیں:

  • ہاؤس کیپنگ (صاف چادروں کے لیے)
  • روم سروس (کھانے کے لیے)
  • دربان (دوروں کی بکنگ کے لیے)
  • بلنگ (بل کی ادائیگی کے لیے)

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

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

اس منظر نامے میں:

  • آپ کلائنٹ ہیں (موبائل ایپ یا براؤزر)۔ استقبال کرنے والا API گیٹ وے ہے۔
  • محکمے (ہاؤس کیپنگ، روم سروس، بلنگ) مائکرو سروسز ہیں۔

مسئلہ: براہ راست کلائنٹ سے سروس مواصلات

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

فرض کریں کہ آپ کی ای کامرس ایپلیکیشن میں تین الگ الگ مائیکرو سروسز ہیں:

  1. صارف کی خدمت (پروفائلز کا انتظام کرتا ہے)
  2. پروڈکٹ سروس (کیٹلاگ کا انتظام کرتا ہے)
  3. آرڈر سروس (چیک آؤٹ کا انتظام کرتا ہے)

API گیٹ وے کے بغیر، کلائنٹ ایپ کو ہر سروس کے انفرادی ایڈریس (IP یا URL) پر براہ راست علیحدہ درخواستیں بھیجنی پڑتی ہیں:

API گیٹ وے آرکیٹیکچر ڈایاگرام روٹنگ، سیکورٹی، اور مائیکرو سروسز دکھا رہا ہے۔

یہ براہ راست کنکشن نقطہ نظر کئی بڑے سر درد پیدا کرتا ہے:

  • بہت سارے اختتامی نقطہ: کلائنٹ ایپ کو تین الگ الگ یو آر ایل یاد رکھنے چاہئیں۔ اگر آپ کسی سروس کو تقسیم کرتے ہیں یا اس کا پتہ تبدیل کرتے ہیں، تو آپ کو کلائنٹ کی درخواست کو اپ ڈیٹ کرنا ہوگا۔
  • سیکیورٹی ڈراؤنا خواب: ہر مائیکرو سروس کو علیحدہ طور پر تصدیق (لاگ ان ٹوکنز کی جانچ پڑتال)، SSL سرٹیفکیٹس، اور فائر وال کے قوانین کو لاگو کرنا چاہیے۔
  • نیٹ ورک اوور ہیڈ: کلائنٹ کو سست موبائل نیٹ ورکس پر صرف ایک صفحہ لوڈ کرنے کے لیے تین الگ الگ نیٹ ورک کی درخواستیں کرنے کی ضرورت پڑسکتی ہے (مثلاً، پروفائل بازیافت کرنا، پروڈکٹ کی تفصیلات حاصل کرنا، اور آرڈر کی تاریخ بازیافت کرنا)۔
  • پروٹوکول فرق: آپ کی کلائنٹ ایپ معیاری ویب پروٹوکول جیسے HTTP/JSON استعمال کرنے کو ترجیح دے سکتی ہے، لیکن آپ کی داخلی خدمات gRPC یا AMQP جیسے خصوصی پروٹوکولز کا استعمال کرتے ہوئے تیزی سے بات چیت کرسکتی ہیں۔

حل: API گیٹ وے پیٹرن

ایک API گیٹ وے ایک مددگار سرور ہے جو کلائنٹ ایپلی کیشنز اور اندرونی مائیکرو سروسز کے درمیان بیٹھتا ہے۔ یہ تمام آنے والی درخواستوں کے اندراج کے واحد نقطہ کے طور پر کام کرتا ہے۔

تین مختلف خدمات کو کال کرنے کے بجائے، کلائنٹ API گیٹ وے پر ایک کال کرتا ہے۔ پھر گیٹ وے درخواست کو درست داخلی خدمت کو بھیجتا ہے، نتائج جمع کرتا ہے، اور کلائنٹ کو واپس بھیج دیتا ہے۔

API گیٹ وے کی کلیدی ذمہ داریاں

ایک API گیٹ وے براہ راست ٹریفک سے کہیں زیادہ کام کرتا ہے۔ یہ “کراس کٹنگ خدشات” کا خیال رکھتا ہے - وہ کام جن کے لیے بصورت دیگر ہر مائیکرو سروس کو کوڈ لکھنا پڑے گا:

  1. روٹنگ: گیٹ وے آنے والا یو آر ایل لیتا ہے (جیسے /api/v1/orders) اور اسے درست داخلی سروس ایڈریس پر نقشہ بناتا ہے۔
  2. تصدیق اور اجازت: گیٹ وے داخلے کے دروازے پر سیکیورٹی ٹوکن (جیسے JWTs) کی توثیق کرتا ہے۔ اگر درخواست غلط ہے، تو اسے فوری طور پر مسترد کر دیا جاتا ہے، جو آپ کی مائیکرو سروسز کو غیر تصدیق شدہ درخواستوں پر CPU سائیکلوں کو ضائع ہونے سے بچاتا ہے۔
  3. شرح کی حد بندی: یہ نقصان دہ بوٹس یا چھوٹی چھوٹی کلائنٹس کو آپ کے سسٹم کو سپیم کرنے سے روکتا ہے اور یہ محدود کرکے کہ صارف فی منٹ کتنی درخواستیں کرسکتا ہے۔
  4. لوڈ بیلنسنگ: گیٹ وے آنے والی ٹریفک کو مائیکرو سروس کی متعدد مثالوں میں یکساں طور پر تقسیم کر سکتا ہے تاکہ کسی ایک سرور کو اوور لوڈنگ سے روکا جا سکے۔
  5. پروٹوکول ٹرانسلیشن: یہ صارف کی طرف سے کی جانے والی JSON درخواستوں کو اعلی کارکردگی والے اندرونی gRPC پیغامات میں ترجمہ کر سکتا ہے، جس سے خدمات کو ان کی ترجیحی زبانوں میں ایک دوسرے سے بات کرنے کی اجازت ملتی ہے۔

ایک سادہ نفاذ: کوڈ کی مثال

یہ دیکھنے کے لیے کہ روٹنگ کتنی آسان ہو جاتی ہے، آئیے API گیٹ وے سیٹ اپ کرنے کے دو عام طریقے دیکھتے ہیں۔

1. اعلانیہ روٹنگ (اسپرنگ کلاؤڈ گیٹ وے YAML)

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

spring:
  cloud:
    gateway:
      routes:
        - id: user_service_route
          uri: http://internal-user-service:8081
          predicates:
            - Path=/api/users/**
        - id: product_service_route
          uri: http://internal-product-service:8082
          predicates:
            - Path=/api/products/**

2. پروگرامی روٹنگ (Node.js Gateway Mockup)

اگر آپ ایکسپریس کا استعمال کرتے ہوئے جاوا اسکرپٹ میں ہلکا پھلکا API گیٹ وے بنانا چاہتے ہیں تو ایسا لگتا ہے:

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
const app = express();
const PORT = 3000;

// 1. Simple Security/Authentication Check at the door
const authenticate = (req, res, next) => {
    const token = req.headers['authorization'];
    if (token === 'secret-handshake-token') {
        next(); // Token is valid, proceed
    } else {
        res.status(401).json({ error: 'Unauthorized Access!' });
    }
};

// Apply auth check to all incoming gateway requests
app.use(authenticate);

// 2. Route requests to correct internal microservices
app.use('/api/users', createProxyMiddleware({ target: 'http://localhost:8081', changeOrigin: true }));
app.use('/api/products', createProxyMiddleware({ target: 'http://localhost:8082', changeOrigin: true }));
app.use('/api/orders', createProxyMiddleware({ target: 'http://localhost:8083', changeOrigin: true }));

app.listen(PORT, () => {
    console.log(`API Gateway running smoothly on port ${PORT}`);
});

API گیٹ وے پیٹرن کے فائدے اور نقصانات

کسی بھی آرکیٹیکچرل فیصلے کی طرح، API گیٹ وے کے استعمال سے تجارت کے مواقع ہوتے ہیں:

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

نتیجہ

API گیٹ وے پیٹرن جدید مائیکرو سروسز فن تعمیر کا سنگ بنیاد ہے۔ ایک واحد، سمارٹ انٹری پوائنٹ کے طور پر کام کرتے ہوئے، یہ کلائنٹ کی ایپلی کیشنز کو اندرونی سروس سیٹ اپ کی پیچیدگی سے بچاتا ہے۔ یہ کلائنٹ سائڈ کوڈ کو آسان بناتا ہے، سیکورٹی کو مرکزی بناتا ہے، اور ٹریفک مینجمنٹ کو موثر طریقے سے ہینڈل کرتا ہے۔

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


غزنکس بلاگ پر مزید سافٹ ویئر ڈویلپمنٹ اور بیک اینڈ انجینئرنگ کی بصیرتیں دریافت کریں →