প্লাগ-ইন ব্যবহার করা

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

Edge Microgateway v. 2.4.x

দর্শক

এই বিষয় Edge Microgateway অপারেটরদের জন্য যারা মাইক্রোগেটওয়ের সাথে ইনস্টল করা আছে এমন বর্তমান প্লাগ-ইন ব্যবহার করতে চান। এছাড়াও, এটি স্পাইক অ্যারেস্ট এবং কোটা প্লাগ-ইন সম্পর্কে বিস্তারিত আলোচনা করে (দুটিই ইনস্টলেশনের সাথে অন্তর্ভুক্ত)। আপনি যদি একজন ডেভেলপার হন যিনি নতুন প্লাগ-ইন ডেভেলপ করতে চান, তাহলে কাস্টম প্লাগ-ইন ডেভেলপ করা দেখুন।

Edge Microgateway প্লাগ-ইন কী?

প্লাগ-ইন হল একটি Node.js মডিউল যা Edge Microgateway-তে ফাংশনালিটি যোগ করে। প্লাগ-ইন মডিউল একটি নির্দিষ্ট প্যাটার্ন মেনে চলে এবং Edge Microgateway-এর পরিচিত লোকেশনে স্টোর করা হয়, যা মাইক্রোগেটওয়েকে সেগুলি অটোমেটিক খুঁজে পেতে এবং লোড করতে সাহায্য করে। Edge Microgateway-তে আগে থেকেই থাকা বেশ কিছু প্লাগ-ইন থাকে এবং আপনি কাস্টম প্লাগ-ইন ডেভেলপ করা নিবন্ধে ব্যাখ্যা করা পদ্ধতি অনুযায়ী কাস্টম প্লাগ-ইন তৈরি করতে পারেন।

Edge Microgateway-এর সাথে বান্ডেল করা বর্তমান প্লাগ-ইন

ইনস্টলেশনের সময় Edge Microgateway-এর সাথে আগে থেকেই থাকা বিভিন্ন প্লাগ-ইন প্রদান করা হয়। এর মধ্যে এগুলি অন্তর্ভুক্ত:

প্লাগ-ইন ডিফল্ট হিসেবে চালু করা থাকে বিবরণ
Analytics হ্যাঁ Edge Microgateway থেকে Apigee Edge-এ অ্যানালিটিক্স ডেটা পাঠায়।
oauth হ্যাঁ Edge Microgateway-তে OAuth টোকেন ও API কী যাচাইকরণ যোগ করে। Edge Microgateway সেট-আপ ও কনফিগার করা দেখুন।
কোটা না Edge Microgateway-তে অনুরোধের উপর কোটা প্রয়োগ করে। কোটা সেভ ও ম্যানেজ করতে Apigee Edge ব্যবহার করে। কোটা প্লাগ-ইন ব্যবহার করা দেখুন।
spikearrest না ট্রাফিক স্পাইক ও DoS অ্যাটাক থেকে রক্ষা করে। স্পাইক অ্যারেস্ট প্লাগ-ইন ব্যবহার করা দেখুন।
header-uppercase না ডেভেলপারদের কাস্টম প্লাগ-ইন লেখার ব্যাপারে সাহায্য করার জন্য একটি কমেন্ট করা, স্যাম্পেল প্রক্সি গাইড হিসেবে ব্যবহার করা হয়। Edge মাইক্রোগেটওয়ে স্যাম্পেল প্লাগ-ইন দেখুন।
accumulate-request না প্লাগ-ইন চেনের পরবর্তী হ্যান্ডলারে ডেটা পাস করার আগে একটি অবজেক্টে অনুরোধ ডেটা জমা করে। ট্রান্সফর্ম প্লাগ-ইন লেখার জন্য উপযোগী যেগুলিকে একটি সিঙ্গেল, জমা করা অনুরোধ কন্টেন্ট অবজেক্টে কাজ করতে হয়।
accumulate-response না প্লাগ-ইন চেনের পরবর্তী হ্যান্ডলারকে ডেটা পাস করার আগে একটি অবজেক্টে উত্তরের ডেটা জমা করে। ট্রান্সফর্ম প্লাগ-ইন লেখার জন্য উপযোগী, যেগুলিকে একটি সিঙ্গেল, জমা করা উত্তর কন্টেন্ট অবজেক্টে কাজ করতে হয়।
transform-uppercase না অনুরোধ বা উত্তর সংক্রান্ত ডেটা ট্রান্সফর্ম করে। এই প্লাগ-ইনটি ট্রান্সফর্ম প্লাগ-ইনের পেশাদার পদ্ধতি প্রয়োগের উদাহরণ। নমুনা প্লাগ-ইনটি একটি তুচ্ছ ট্রান্সফর্মেশন করে (অনুরোধ বা উত্তর সংক্রান্ত ডেটা বড় হাতের অক্ষরে পরিবর্তন করে); তবে, এটি সহজেই অন্যান্য ধরনের ট্রান্সফর্মেশন করার জন্য অ্যাডাপ্ট করা যেতে পারে, যেমন XML থেকে JSON-এ পরিবর্তন করা।
json2xml না Accept বা content-type হেডার অনুযায়ী অনুরোধ বা উত্তর সংক্রান্ত ডেটা ট্রান্সফর্ম করে। আরও বিবরণের জন্য, GitHub-এ প্লাগ-ইন ডকুমেন্টেশন দেখুন।
কোটা-মেমরি না Edge Microgateway-তে অনুরোধের উপর কোটা প্রয়োগ করে। স্থানীয় মেমরিতে কোটা সেভ ও ম্যানেজ করে।
healthcheck না Edge Microgateway প্রসেস -- মেমরি ব্যবহার, CPU ব্যবহার, ইত্যাদি সম্পর্কে তথ্য রিটার্ন করে। প্লাগ-ইন ব্যবহার করতে, আপনার Edge Microgateway ইনস্ট্যান্সে /healthcheck URL কল করুন। এই প্লাগ-ইনটি একটি উদাহরণ হিসেবে ব্যবহার করার জন্য তৈরি করা হয়েছে যা আপনি নিজের হেলথ চেকিং প্লাগ-ইন ইমপ্লিমেন্ট করার জন্য ব্যবহার করতে পারবেন।

আগে থেকে থাকা প্লাগ-ইন কোথায় খুঁজে পাবেন

Edge Microgateway-এর সাথে বান্ডেল করা আগে থেকে থাকা প্লাগ-ইন এখানে থাকে, যেখানে [prefix] হল npm প্রিফিক্স ডিরেক্টরি। Edge Microgateway কোথায় ইনস্টল করা আছে তা দেখুন।

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins

প্লাগ-ইন যোগ করা ও কনফিগার করা

প্লাগ-ইন যোগ ও কনফিগার করতে এই প্যাটার্ন অনুসরণ করুন:

  1. Edge Microgateway বন্ধ করুন।
  2. Edge Microgateway কনফিগারেশন ফাইল খুলুন। বিকল্পের জন্য, কনফিগারেশন পরিবর্তন করা দেখুন।
  3. কনফিগারেশন ফাইলের plugins:sequence এলিমেন্টে প্লাগ-ইন যোগ করুন, নিচে দেখানো পদ্ধতি অনুসরণ করে। এই তালিকায় যেভাবে দেখানো হয়েছে সেই ক্রম অনুযায়ী প্লাগ-ইন এক্সিকিউট করা হয়।
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
     level: info
     dir: /var/tmp
     stats_log_interval: 60
  plugins:
     dir: ../plugins
     sequence:   
     - oauth
     - plugin-name
  1. প্লাগ-ইন কনফিগার করুন। কিছু প্লাগ-ইনে ঐচ্ছিক প্যারামিটার থাকে যা আপনি কনফিগারেশন ফাইলে কনফিগার করতে পারেন। যেমন, স্পাইক অ্যারেস্ট প্লাগ-ইন কনফিগার করতে, আপনি নিম্নলিখিত স্তবক যোগ করতে পারেন। আরও তথ্যের জন্য স্পাইক অ্যারেস্ট প্লাগ-ইন ব্যবহার করা দেখুন।
    edgemicro:
      home: ../gateway
      port: 8000
      max_connections: -1
      max_connections_hard: -1
      logging:
        level: info
        dir: /var/tmp
        stats_log_interval: 60
      plugins:
        dir: ../plugins
        sequence:
          - oauth
          - spikearrest
    spikearrest:
       timeUnit: minute
       allow: 10
  1. ফাইলটি সেভ করুন।
  2. আপনি কোন কনফিগারেশন ফাইল এডিট করেছেন তার উপর নির্ভর করে Edge Microgateway রিস্টার্ট বা রিলোড করুন, যেমন কনফিগারেশনে পরিবর্তন করা নিবন্ধে ব্যাখ্যা করা হয়েছে।

প্লাগ-ইন নির্দিষ্ট কনফিগারেশন

এই ডিরেক্টরিতে প্লাগ-ইন-নির্দিষ্ট কনফিগারেশন তৈরি করে আপনি কনফিগারেশন ফাইলে উল্লেখ করা প্লাগ-ইন প্যারামিটার ওভাররাইড করতে পারবেন:

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config

[prefix] হল npm প্রিফিক্স ডিরেক্টরি। Edge Microgateway কোথায় ইনস্টল করা আছে তা দেখুন।

plugins/<plugin_name>/config/default.yaml. যেমন, আপনি এই ব্লকটি plugins/spikearrest/config/default.yaml-এ রাখতে পারেন এবং এটি অন্য যেকোনও কনফিগারেশন সেটিংসকে ওভাররাইড করবে।

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

স্পাইক অ্যারেস্ট প্লাগ-ইন ব্যবহার করা

এই বিভাগে স্পাইক অ্যারেস্ট প্লাগ-ইন সম্পর্কে আলোচনা করা হয়েছে।

স্পাইক অ্যারেস্ট সম্পর্কে

স্পাইক অ্যারেস্ট ট্রাফিকে হঠাৎ করে হওয়া বৃদ্ধি থেকে রক্ষা করে। এটি Edge Microgateway ইনস্ট্যান্সের মাধ্যমে প্রসেস করা অনুরোধের সংখ্যাকে থ্রটল করে। আরও তথ্যের জন্য, স্পাইক অ্যারেস্ট কীভাবে কাজ করে? দেখুন। এছাড়াও, স্পাইক অ্যারেস্ট ও কোটার মধ্যে পার্থক্য কী? দেখুন।

স্পাইক অ্যারেস্ট প্লাগ-ইন যোগ করা

যেকোনও প্লাগ-ইনের জন্য অনুসরণ করার প্রাথমিক ধাপগুলি দেখতে, প্লাগ-ইন যোগ করা ও কনফিগার করা দেখুন।

স্পাইক অ্যারেস্টের জন্য কনফিগারেশনের নমুনা

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - spikearrest
spikearrest:
   timeUnit: minute
   allow: 10
   bufferSize: 5

স্পাইক অ্যারেস্টের জন্য কনফিগারেশন বিকল্প

  • timeUnit: স্পাইক অ্যারেস্ট এক্সিকিউশন উইন্ডো কত ঘনঘন রিসেট হয়। সঠিক মান হল সেকেন্ড বা মিনিট।
  • অনুমতি দিন: timeUnit চলাকালীন অনুমতি দেওয়ার জন্য অনুরোধের সর্বাধিক সংখ্যা।
  • bufferSize: (ঐচ্ছিক, ডিফল্ট = ০) bufferSize > ০ হলে, স্পাইক অ্যারেস্ট এই সংখ্যক অনুরোধ বাফারে সেভ করে। পরবর্তী এক্সিকিউশন "উইন্ডো" শুরু হলেই, প্রথমে বফার করা অনুরোধ প্রসেস করা হবে। এছাড়াও বাফার যোগ করা দেখুন।

স্পাইক অ্যারেস্ট কীভাবে কাজ করে?

স্পাইক অ্যারেস্টকে নির্দিষ্ট সংখ্যক অনুরোধে ট্রাফিক সীমিত করার উপায় হিসেবে না ভেবে, সাধারণভাবে ট্রাফিক স্পাইক থেকে রক্ষা করার উপায় হিসেবে ভাবুন। আপনার API ও ব্যাকএন্ড একটি নির্দিষ্ট পরিমাণ ট্রাফিক হ্যান্ডেল করতে পারে এবং স্পাইক অ্যারেস্ট নীতি আপনাকে সাধারণ পরিমাণে ট্রাফিক মসৃণ করতে সাহায্য করে।

আপনি যে আক্ষরিক প্রতি মিনিট বা প্রতি সেকেন্ডের ভ্যালু দেন, রানটাইম স্পাইক অ্যারেস্টের আচরণ তার থেকে আলাদা হয়।

যেমন, আপনি যদি প্রতি মিনিটে ৩০টি অনুরোধের হার নির্দিষ্ট করেন, তাহলে সেটি এইরকম হবে:

spikearrest:
   timeUnit: minute
   allow: 30

পরীক্ষা করার সময়, আপনি হয়ত ভাবতে পারেন যে ১ সেকেন্ডে ৩০টি অনুরোধ পাঠানো যেতে পারে, যতক্ষণ না সেগুলি ১ মিনিটের মধ্যে আসছে। কিন্তু নীতি সেটিং প্রয়োগ করার ক্ষেত্রে এটি সেই পদ্ধতি নয়। আপনি যদি এটি নিয়ে ভাবেন, তাহলে ১ সেকেন্ডের মধ্যে ৩০ অনুরোধ কিছু এনভায়রনমেন্টে একটি মিনি স্পাইক হিসেবে বিবেচনা করা যেতে পারে।

তাহলে আসলে কী হয়? স্পাইক-এর মতো আচরণ প্রতিরোধ করতে, স্পাইক অ্যারেস্ট আপনার সেটিংসকে ছোট ছোট ইন্টারভ্যালে ভাগ করে অনুমোদিত ট্রাফিককে মসৃণ করে, যেমন:

প্রতি মিনিটের রেট

প্রতি মিনিটের রেটকে সেকেন্ডের অনুমোদিত ইন্টারভ্যালে স্মুথ করা হয়। যেমন, প্রতি মিনিটে ৩০টি অনুরোধকে এইভাবে মসৃণ করা হয়:

৬০ সেকেন্ড (১ মিনিট) / ৩০ = ২-সেকেন্ডের ব্যবধান, অথবা প্রতি ২ সেকেন্ডে ১টি অনুরোধ অনুমোদিত। ২ সেকেন্ডের মধ্যে দ্বিতীয় অনুরোধ করলে সেটি সম্পূর্ণ হবে না। এছাড়াও, এক মিনিটের মধ্যে ৩১তম অনুরোধটি সম্পূর্ণ করা যাবে না।

প্রতি সেকেন্ডের রেট

প্রতি সেকেন্ডের রেটকে মিলিসেকেন্ডের ব্যবধানে অনুমোদিত অনুরোধে মসৃণ করা হয়। যেমন, প্রতি সেকেন্ডে ১০টি অনুরোধকে এইভাবে স্মুথ করা হয়:

১০০০ মিলিসেকেন্ড (১ সেকেন্ড) / ১০ = ১০০ মিলিসেকেন্ডের ব্যবধান অথবা প্রায় ১টি অনুরোধ অনুমোদিত প্রতি ১০০ মিলিসেকেন্ডে । ১০০ মিলিসেকেন্ডের মধ্যে দ্বিতীয় অনুরোধ করলে তা সম্পূর্ণ হবে না। এছাড়াও, এক সেকেন্ডের মধ্যে ১১তম অনুরোধটি কাজ করবে না।

সীমা অতিক্রম করলে

নির্দিষ্ট সময়সীমার মধ্যে অনুরোধের সংখ্যা সীমা অতিক্রম করলে, স্পাইক অ্যালার্ট HTTP 503 স্ট্যাটাস সহ এই সমস্যার মেসেজটি দেখায়:

{"error": "spike arrest policy violated"}

বাফার যোগ করা

আপনার কাছে নীতিতে বাফার যোগ করার বিকল্প আছে। ধরা যাক, আপনি বাফার ১০ হিসেবে সেট করেছেন। আপনি দেখতে পাবেন যে স্পাইক অ্যারেস্ট সীমা অতিক্রম করলে API সাথে সাথেই কোনও সমস্যা দেখায় না। এর পরিবর্তে, অনুরোধগুলি বাফার করা হয় (নির্দিষ্ট সংখ্যা পর্যন্ত) এবং পরবর্তী উপযুক্ত এক্সিকিউশন উইন্ডো উপলভ্য হওয়ার সাথে সাথেই বাফার করা অনুরোধগুলি প্রসেস করা হয়। ডিফল্ট bufferSize হল ০।

কোটা প্লাগ-ইন ব্যবহার করা

এই বিভাগে কোটা প্লাগ-ইন সম্পর্কে আলোচনা করা হয়েছে।

কোটা প্লাগ-ইন সম্পর্কে

কোটা হল অনুরোধ মেসেজের সংখ্যা যা কোনও অ্যাপকে এক ঘণ্টা, এক দিন, এক সপ্তাহ বা এক মাস ধরে API-তে জমা দেওয়ার অনুমতি দেওয়া হয়। কোনও অ্যাপ কোটার সীমায় পৌঁছে গেলে, পরবর্তী API কল বাতিল করা হয়। এছাড়াও দেখুন স্পাইক অ্যারেস্ট ও কোটার মধ্যে পার্থক্য কী?

কোটা প্লাগ-ইন যোগ করা

যেকোনও প্লাগ-ইনের জন্য অনুসরণ করার প্রাথমিক ধাপগুলি দেখতে, প্লাগ-ইন যোগ করা ও কনফিগার করা দেখুন।

Apigee Edge-এ প্রোডাক্ট কনফিগারেশন

আপনি Apigee Edge UI-তে কোটা কনফিগার করেন, যেখানে API প্রোডাক্ট কনফিগার করেন। আপনাকে জানতে হবে কোন প্রোডাক্টে মাইক্রোগেটওয়ে-অ্যাওয়ার প্রক্সি আছে যেটিকে আপনি কোটা দিয়ে সীমিত করতে চান। এই প্রোডাক্টটি অবশ্যই ডেভেলপার অ্যাপে যোগ করতে হবে। আপনি যখন ডেভেলপার অ্যাপে কী ব্যবহার করে API কল করেন, তখন সেইসব API কলের উপর কোটা প্রয়োগ করা হবে।

  1. আপনার Apigee Edge প্রতিষ্ঠানের অ্যাকাউন্টে লগ-ইন করুন।
  2. Edge UI-তে, মাইক্রোগেটওয়ে-অ্যাওয়ার প্রক্সির সাথে যুক্ত প্রোডাক্টটি খুলুন, যেখানে আপনি কোটা প্রয়োগ করতে চান।
    1. UI-তে, 'প্রকাশ করুন' মেনু থেকে প্রোডাক্ট বিকল্প বেছে নিন।
    2. আপনি যে API-তে কোটা প্রয়োগ করতে চান, সেই API থাকা প্রোডাক্টটি খুলুন।
    3. এডিট করুন বিকল্পে ক্লিক করুন।
    4. কোটা ফিল্ডে, কোটা ইন্টারভ্যাল নির্দিষ্ট করুন। যেমন, প্রতি এক মিনিটে ১০০টি অনুরোধ। অথবা প্রতি ২ ঘণ্টায় ৫০,০০০ অনুরোধ।

  1. সেভ করুন বিকল্পে ক্লিক করুন।
  2. নিশ্চিত করুন যে প্রোডাক্টটি কোনও ডেভেলপার অ্যাপে যোগ করা হয়েছে। আপনাকে যাচাই করা API কল করতে এই অ্যাপের কী প্রয়োজন হবে।

কোটার জন্য কনফিগারেশনের নমুনা

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota

কোটার জন্য কনফিগারেশন বিকল্প

কোটা প্লাগ-ইনের জন্য কোনও অতিরিক্ত কনফিগারেশন বিকল্প নেই।

কোটা প্লাগ-ইন পরীক্ষা করা হচ্ছে

কোটা পেরিয়ে গেলে, ক্লায়েন্টকে HTTP 403 স্ট্যাটাস সহ নিম্নলিখিত মেসেজ দেখানো হয়:

{"error": "exceeded quota"}

স্পাইক অ্যারেস্ট ও কোটার মধ্যে পার্থক্য কী?

যে কাজ করতে হবে তার জন্য সঠিক টুল বেছে নেওয়া গুরুত্বপূর্ণ। কোটা সংক্রান্ত নীতি, কোনও ক্লায়েন্ট অ্যাপকে এক ঘণ্টা, এক দিন, এক সপ্তাহ বা এক মাস ধরে API-তে জমা দেওয়ার জন্য অনুমোদিত অনুরোধ মেসেজের সংখ্যা কনফিগার করে। কোটা নীতি ক্লায়েন্ট অ্যাপের উপর কনজাম্পশন সীমা প্রয়োগ করে। এটি একটি ডিস্ট্রিবিউট করা কাউন্টার বজায় রাখে যা ইনকামিং অনুরোধের সংখ্যা গণনা করে।

অপারেশনাল ট্রাফিক ম্যানেজমেন্টের পরিবর্তে, ডেভেলপার ও পার্টনারদের সাথে ব্যবসায়িক চুক্তি বা SLA প্রয়োগ করতে কোটা নীতি ব্যবহার করুন। যেমন, পেমেন্ট করা গ্রাহকদের সম্পূর্ণ অ্যাক্সেস দেওয়ার পাশাপাশি, কোটা ব্যবহার করে ফ্রি পরিষেবার ট্রাফিক সীমিত করা হতে পারে। এছাড়াও কোটা প্লাগ-ইন ব্যবহার করা দেখুন।

API ট্রাফিকে হঠাৎ করে হওয়া স্পাইক থেকে রক্ষা করতে স্পাইক অ্যারেস্ট ব্যবহার করুন। সাধারণত, সম্ভাব্য DDoS বা অন্যান্য ক্ষতিকারক আক্রমণ এড়াতে স্পাইক অ্যারেস্ট ব্যবহার করা হয়।