হোস্ট করা টার্গেট রেফারেন্স

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

এনভায়রনমেন্ট ভেরিয়েবল সংক্রান্ত সীমা

হোস্ট করা টার্গেট, হোস্ট করা টার্গেট রানটাইম এনভায়রনমেন্টে সেট করা এনভায়রনমেন্ট ভেরিয়েবলের সাইজ ও সংখ্যা সীমিত করে।

  • ১০০০: একটি এনভায়রনমেন্ট ভেরিয়েবলের সর্বাধিক দৈর্ঘ্য।
  • ১০০: আপনি সেট করতে পারেন এমন এনভায়রনমেন্ট ভেরিয়েবলের সর্বাধিক সংখ্যা।

এনভায়রনমেন্ট ভেরিয়েবল সেট করা সম্পর্কে তথ্য পেতে, ম্যানিফেস্ট ফাইল দেখুন।

অ্যাপ্লিকেশন রানটাইমে সেট করা এনভায়রনমেন্ট ভেরিয়েবল

আপনি কোনও হোস্ট করা টার্গেট অ্যাপ্লিকেশন ডেপ্লয় করলে, নিম্নলিখিত এনভায়রনমেন্ট ভেরিয়েবল সেট করা হয় এবং রানটাইমে আপনার অ্যাপ্লিকেশনের জন্য উপলভ্য থাকে:

  • APIGEE_ENVIRONMENT - হোস্ট করা টার্গেট প্রক্সি যেখানে ডেপ্লয় করা হয়।
  • APIGEE_ORGANIZATION - যে সংস্থায় হোস্ট করা টার্গেট প্রক্সি ডেপ্লয় করা হয়েছে।
  • PORT - হোস্ট করা টার্গেট অ্যাপ্লিকেশনকে যে পোর্টে শুনতে হবে।

সিস্টেম রিসোর্স বরাদ্দ করা

প্রতিটি হোস্ট করা টার্গেট ইনস্ট্যান্স নিম্নলিখিত রিসোর্স পায়:

  • ২৫৬ এমবি মেমরি
  • ১.২ GHz CPU

স্কেলিং

আপনার Edge অ্যাকাউন্টের ধরনের উপর নির্ভর করে, Hosted Targets অ্যাপ্লিকেশন কীভাবে স্কেল করে তা এই বিভাগে বর্ণনা করা হয়েছে।
  • Apigee Edge-এর ট্রায়াল ভার্সনে প্রতিটি প্রক্সি পিছু একটি করে হোস্ট করা টার্গেট ইনস্ট্যান্স ব্যবহার করা যায়।
  • পেড Apigee Edge অ্যাকাউন্টে অনুরোধের হার, উত্তর দেওয়ার লেটেন্সি এবং প্রক্সি পিছু অন্যান্য অ্যাপ্লিকেশন মেট্রিকের ভিত্তিতে অটোমেটিক স্কেলিং করা হয়।
  • হোস্ট করা টার্গেট অ্যাপ, Apigee Edge-এর পেড ও ট্রায়াল ভার্সন, দুটিতেই ডিপ্লয় করা হয়। ইনঅ্যাক্টিভ থাকলে, এগুলি অটোমেটিক বন্ধ হয়ে যায়। এই ক্ষেত্রে, আপনি হয়ত কিছু সময়ের জন্য উত্তর পেতে বেশি সময় লাগতে দেখবেন। এছাড়াও দেখুন পরিচিত সমস্যা

ম্যানিফেস্ট ফাইল

হোস্ট করা অ্যাপ্লিকেশন তৈরি ও ডেপ্লয় করার জন্য রানটাইম তথ্য সংগ্রহ করতে, Edge এগুলি খোঁজে: resources/hosted ডিরেক্টরিতে app.yaml নামের একটি ম্যানিফেস্ট ফাইল। এই ফাইলে হোস্ট করা টার্গেট অ্যাপ্লিকেশন তৈরি ও ডেপ্লয় করার জন্য প্রয়োজনীয় তথ্য থাকে।

ম্যানিফেস্ট ফাইলের সিনট্যাক্স

runtime: node
runtimeVersion: version_number
command: command_name
args: argument_array
env:
  - name: variable_name
    value: literal_value
  - name: variable_name
    valueRef:
      name: kvm_name
      key: kvm_value

ম্যানিফেস্ট ফাইলের এলিমেন্ট

app.yaml ম্যানিফেস্ট ফাইলে এইসব এলিমেন্ট থাকে:

  • runtime - (প্রয়োজনীয়) আপনি যে অ্যাপ্লিকেশন ডেপ্লয় করছেন তার ধরন নির্দিষ্ট করে। আপনাকে অবশ্যই node উল্লেখ করতে হবে।
  • runtimeVersion - (ঐচ্ছিক) আপনার অ্যাপ্লিকেশন যে রানটাইম ব্যবহার করে তার ভার্সন। ডিফল্ট: Node.js LTS (v10.x). অন্যান্য বিকল্পের জন্য Node-এর জন্য Docker-এর অফিসিয়াল রেপোজিটরি দেখুন।
  • কমান্ড - (ঐচ্ছিক) আপনার অ্যাপ্লিকেশন চালু করার জন্য ব্যবহৃত ডিফল্ট কমান্ডের পরিবর্তে অন্য কোনও কমান্ড চালানোর জন্য নির্দিষ্ট করতে দেয়। ডিফল্ট: Node.js=npm
  • args - (ঐচ্ছিক) কমান্ড লাইন আর্গুমেন্টের অ্যারে যা অ্যাপ্লিকেশনে পাস করতে হবে (স্ট্যান্ডার্ড YAML অ্যারে সিনট্যাক্সে নির্দিষ্ট করা আছে)। সাধারণত, এগুলি ডিফল্ট কমান্ডে যোগ করা হয়। ডিফল্ট হল শুরু করুন। যেমন, ডিফল্ট হিসেবে Node.js অ্যাপে কমান্ড npm start পাস করা হবে।
  • env - (ঐচ্ছিক) হোস্ট করা টার্গেটের রানটাইম এনভায়রনমেন্টে সেট করার জন্য এনভায়রনমেন্ট ভেরিয়েবলের (নাম/ভ্যালু পেয়ার) একটি অ্যারে। এইসব ভেরিয়েবল আপনার ডেপ্লয় করা হোস্ট করা টার্গেট অ্যাপে উপলভ্য।
    • name - ভেরিয়েবলের নাম।
    • value | valueRef - আপনার কাছে দুটি বিকল্প আছে। আপনি আক্ষরিক মান সেট করতে পারেন অথবা কী ভ্যালু ম্যাপে সেভ করা মান রেফার করতে পারেন। আপনার Edge এনভায়রনমেন্টে কী ভ্যালু ম্যাপ আগে থেকেই থাকতে হবে। কী ভ্যালু ম্যাপের সাথে কাজ করা দেখুন
      • আপনি value ব্যবহার করলে, আপনাকে অবশ্যই একটি ভেরিয়েবল name ও একটি লিটেরাল value উল্লেখ করতে হবে। যেমন:
        runtime: node
        env:
         - name: NODE_ENV
           value: production
      • আপনি valueRef ব্যবহার করলে, আপনাকে অবশ্যই Edge-এ আগে তৈরি করা কী ভ্যালু ম্যাপের (KVM) নাম এবং একটি কী দিতে হবে। যেমন:
        runtime: node
        env:
          - name: DB_ENV
            value: production
          - name: DB_PASSWORD
            valueRef:
              name: hosted-kvm
              key: db-password

    ম্যানিফেস্ট ফাইলের উদাহরণ

    এই বিভাগে Node.js অ্যাপ্লিকেশনের জন্য ম্যানিফেস্ট ফাইলের উদাহরণ দেওয়া আছে। হোস্ট করা টার্গেট অ্যাপ ডেপ্লয় করার জন্য ম্যানিফেস্ট ফাইল প্রয়োজন এবং এটি অবশ্যই apiproxy/resources/hosted ডিরেক্টরিতে থাকতে হবে এবং ফাইলের নাম app.yaml হতে হবে।

    Node.js অ্যাপের জন্য app.yaml (ম্যানিফেস্ট) ফাইলের উদাহরণ নিচে দেওয়া হল।

    আক্ষরিক এনভায়রনমেন্ট ভেরিয়েবল নির্দিষ্ট করে এমন উদাহরণ:

     runtime: node
     env:
       - name: NODE_ENV
         value: production

    স্টার্ট কমান্ড, কমান্ড-লাইন আর্গুমেন্ট ও এনভায়রনমেন্ট ভেরিয়েবল সহ উদাহরণ।

     runtime: node
     command: ./node_modules/pm2/bin/pm2
     env:
       - name: NODE_ENV
         value: production
     args:
       - app.js


    কী ভ্যালু ম্যাপ (KVM) রেফারেন্স নির্দিষ্ট করে এমন উদাহরণ:

    KVM অ্যাক্সেস সম্পর্কে আরও জানতে, ম্যানিফেস্ট ফাইল দেখুন।

    runtime: node
    env:
      - name: DB_ENV
        value: production
      - name: DB_PASSWORD
        valueRef:
          name: hosted-kvm
          key: db-password

    GitHub-এ হোস্ট করা টার্গেট অ্যাপ্লিকেশনের নমুনা

    Apigee, Node.js-এ লেখা হোস্ট করা টার্গেট অ্যাপ্লিকেশন সহ GitHub-এ নমুনা প্রক্সি প্রদান করে। আপনি এই রেপো ক্লোন করতে পারেন এবং যেকোনও প্রক্সি ডেপ্লয় করতে README নির্দেশাবলী অনুসরণ করতে পারেন।

    পূর্বশর্ত

    স্যাম্পেল ডেপ্লয় করতে, আপনার সিস্টেমে অবশ্যই দুটি টুল ইনস্টল করা থাকতে হবে:

    • apigeetool -- Edge প্রক্সি ডেপ্লয় করার জন্য একটি কমান্ড লাইন টুল।
    • get_token - apigeetool-এর জন্য প্রয়োজনীয় অনুমোদন টোকেন পাওয়ার কমান্ড লাইন টুল।

    আপনি লোকালি স্যাম্পেল পরীক্ষা করতে চাইলে, আপনার Node.js ইনস্টল করা থাকতে হবে।

    স্যাম্পেল রেপো পাওয়া

    1. ব্রাউজারে https://github.com/apigee/api-platform-samples লিঙ্কে যান।
    2. ক্লোন বা ডাউনলোড করুন বিকল্পে ক্লিক করুন এবং আপনার পছন্দসই পদ্ধতি ব্যবহার করে আপনার লোকাল সিস্টেমে রিপো পুল করুন।
    3. cd করে <your install dir>/api-platform-samples/doc-samples/hosted-targets ফোল্ডারে যান
    4. রেপো ডাউনলোড করা হয়ে গেলে, আপনি যেকোনও স্যাম্পেল ডিরেক্টরিতে cd করতে এবং Edge-এ স্যাম্পেল প্রক্সি ডেপ্লয় করার জন্য README নির্দেশাবলী অনুসরণ করতে পারবেন। নিচে ডিপ্লয় কমান্ড দেখানো হয়েছে। আপনার Apigee অ্যাকাউন্টের জন্য নির্দেশিত প্যারামিটারগুলি পরিবর্তন করুন:
    5. get_token && apigeetool deployproxy \
        -o YOUR_ORGANIZATION \
        -e YOUR_ENVIRONMENT \
        --json \
        --token "$(< ~/.sso-cli/valid_token.dat)"\
        --api NAME_OF_THE_PROXY \
        --directory .

    উদাহরণ: একটি নমুনা অ্যাপ চালানো

    স্যাম্পেল রিপোজিটরি ক্লোন করুন

    cd ~/myhome
    git clone https://github.com/apigee/api-platform-samples.git
    cd ~/myhome/api-platform-samples/doc-samples/hosted-targets
    cd node-hosted-hello

    অ্যাপ্লিকেশনটি লোকালি টেস্ট করুন

    এই লোকাল টেস্ট করার জন্য আপনার ডিভাইসে Node.js ইনস্টল করা থাকতে হবে।

     PORT=8081 node apiproxy/resources/hosted/index.js
     curl http://localhost:8081

    আউটপুটের উদাহরণ:

    {"date":"2018-03-12T21:45:22.161Z","msg":"Hello, World!"}

    প্রক্সি ডেপ্লয় করা

     get_token && apigeetool deployproxy \
       -o myorg \
       -e test \
       --json \
       --token "$(< ~/.sso-cli/valid_token.dat)"\
       --api node-hosted-hello \
       --directory .

    ডিপ্লয়মেন্ট পরীক্ষা করা

    ডিপ্লয়মেন্ট সম্পূর্ণ হতে কয়েক মিনিট সময় লাগতে পারে। আপনি কোনও ডিপ্লয়মেন্ট সংক্রান্ত সমস্যার মেসেজ পেলে, ডিপ্লয় কমান্ডটি আবার চালান।

    curl http://myorg-test.apigee.net/node-hosted-hello

    আউটপুটের উদাহরণ:

    {"date":"2018-03-23T18:59:18.668Z","msg":"Hello, World!"

    পরিচিত সমস্যা

    • নেটওয়ার্ক লেটেন্সি - এখন যেহেতু Node.js অ্যাপ্লিকেশন আর MP-এর JVM-এ রান করে না, তাই MP ও ডিপ্লয়মেন্টের মধ্যে এখন একটি নেটওয়ার্ক হপ আছে। অবশ্যই এর জন্য খরচ করতে হবে, তবে প্রাথমিক বেঞ্চমার্ক থেকে দেখা যাচ্ছে যে এটি যুক্তিসঙ্গত খরচের মধ্যেই রয়েছে
    • API থেকে ধীরে ধীরে উত্তর পাওয়া - আপনার অ্যাপ্লিকেশন যে ইনফ্রাস্ট্রাকচারে চলছে, সেটি প্রয়োজন অনুযায়ী অটোমেটিক স্কেল করা হয়। এর অর্থ হল, আপনার অ্যাপ্লিকেশন আসলে স্কেল ডাউন করে জিরো ইনস্ট্যান্স করতে পারে এবং যদি তাই হয়, তাহলে পরবর্তী API অনুরোধটি সাধারণ API অনুরোধের চেয়ে একটু বেশি সময় লাগবে, কারণ ইনফ্রাস্ট্রাকচার অনুরোধ প্রসেস করার জন্য ইনস্ট্যান্স স্পিন-আপ করছে।
    • ডেপ্লয়মেন্ট সংক্রান্ত সমস্যা - হোস্ট করা টার্গেট প্রক্সি ডেপ্লয় করার সময় ডেপ্লয়মেন্ট সংক্রান্ত সমস্যা হলে, প্রক্সি আবার ডেপ্লয় করার চেষ্টা করুন। কিছু ক্ষেত্রে, ডিপ্লয়মেন্ট টাইম-আউট হয়ে যেতে পারে এবং আপনি আবার ডিপ্লয় করলে, সমস্যাটি নিজেই সমাধান হয়ে যাবে।