হোস্ট করা লক্ষ্য রেফারেন্স

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

পরিবেশগত পরিবর্তনশীল সীমা

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

  • ১০০০: একটিমাত্র এনভায়রনমেন্ট ভেরিয়েবলের সর্বোচ্চ দৈর্ঘ্য।
  • ১০০: আপনি সর্বোচ্চ যতগুলো এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারবেন।

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

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

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

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

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

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

  • ২৫৬ মেগাবাইট মেমরি
  • ১.২ গিগাহার্টজ সিপিইউ

স্কেলিং

এই বিভাগে বর্ণনা করা হয়েছে, আপনার Edge অ্যাকাউন্টের ধরনের ওপর নির্ভর করে Hosted Targets অ্যাপ্লিকেশনগুলো কীভাবে স্কেল করে।
  • Apigee Edge-এর ট্রায়াল সংস্করণ প্রতি প্রক্সিতে একটি Hosted Targets ইনস্ট্যান্সে সীমাবদ্ধ।
  • পেইড 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 ম্যানিফেস্ট ফাইলে নিম্নলিখিত উপাদানগুলো অন্তর্ভুক্ত থাকে:

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

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

    এই বিভাগে Node.js অ্যাপ্লিকেশনের জন্য উদাহরণ ম্যানিফেস্ট ফাইল রয়েছে। একটি Hosted Targets অ্যাপ ডেপ্লয় করার জন্য একটি ম্যানিফেস্ট ফাইল প্রয়োজন, এবং এটি অবশ্যই 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

    গিটহাবে নমুনা হোস্টেড টার্গেট অ্যাপ্লিকেশন

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

    পূর্বশর্ত

    স্যাম্পলগুলো স্থাপন করার জন্য, আপনার সিস্টেমে দুটি টুল ইনস্টল করা থাকতে হবে:

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

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

    নমুনা রিপো প্রাপ্তি

    1. ব্রাউজারে https://github.com/apigee/api-platform-samples -এ যান।
    2. আপনার পছন্দের পদ্ধতি ব্যবহার করে রিপোটি ক্লোন করুন অথবা ডাউনলোড করে আপনার স্থানীয় সিস্টেমে পুল করুন।
    3. <আপনার ইনস্টল ডিরেক্টরি>/api-platform-samples/doc-samples/hosted-targets-এ যান
    4. রিপোটি ডাউনলোড হয়ে গেলে, আপনি যেকোনো স্যাম্পল ডিরেক্টরিতে গিয়ে README-এর নির্দেশাবলী অনুসরণ করে Edge-এ একটি স্যাম্পল প্রক্সি ডেপ্লয় করতে পারেন। ডেপ্লয় কমান্ডটি নিচে দেখানো হলো। শুধু নির্দেশিত প্যারামিটারগুলো আপনার 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 এবং ডিপ্লয়মেন্টের মধ্যে এখন একটি নেটওয়ার্ক হপ তৈরি হয়েছে। অবশ্যই এর জন্য একটি মূল্য দিতে হয়, কিন্তু প্রাথমিক বেঞ্চমার্কগুলো দেখায় যে এটি একটি যুক্তিসঙ্গত সীমার মধ্যেই থাকে।
    • ধীরগতির এপিআই প্রতিক্রিয়া - আপনার অ্যাপ্লিকেশনগুলো যে পরিকাঠামোতে চলে, তা প্রয়োজন অনুযায়ী স্বয়ংক্রিয়ভাবে স্কেল করে। এর মানে হলো, আপনার অ্যাপ্লিকেশনটি ইনস্ট্যান্সের সংখ্যা শূন্যে নামিয়ে আনতে পারে এবং যদি তেমনটা হয়, তাহলে পরবর্তী এপিআই অনুরোধটি সম্পন্ন হতে সাধারণ অনুরোধের চেয়ে কিছুটা বেশি সময় লাগবে, কারণ পরিকাঠামোটি অনুরোধটি প্রক্রিয়া করার জন্য ইনস্ট্যান্সগুলো চালু করতে থাকে।
    • ডিপ্লয়মেন্ট ত্রুটি - হোস্টেড টার্গেটস প্রক্সি ডিপ্লয় করার সময় যদি আপনি কোনো ডিপ্লয়মেন্ট ত্রুটি পান, তবে প্রক্সিটি পুনরায় ডিপ্লয় করার চেষ্টা করুন। কিছু ক্ষেত্রে, ডিপ্লয়মেন্টের সময়সীমা শেষ হয়ে যেতে পারে এবং পুনরায় ডিপ্লয় করলে সমস্যাটি নিজে থেকেই সমাধান হয়ে যাবে।