হোস্টেড টার্গেট টিউটোরিয়াল

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

নিচের টিউটোরিয়ালগুলি ব্যাখ্যা করে যে কীভাবে Edge-এ Node.js অ্যাপ্লিকেশন ডিপ্লয় করতে হয়, এর জন্য হোস্ট করা টার্গেট, Apigee-এর হোস্ট করা নেটিভ Node.js রানটাইম এনভায়রনমেন্ট ব্যবহার করা হয়।

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

  • Edge UI ব্যবহার করে হোস্ট করা টার্গেটে Node.js অ্যাপ ডিপ্লয় করা।
  • আপনার লোকাল ডেভেলপমেন্ট মেশিন থেকে হোস্ট করা টার্গেটে Node.js অ্যাপ ডিপ্লয় করা।
  • হোস্টেড টার্গেটে প্রচলিত Edge Node.js টার্গেট ইমপ্লিমেন্টেশন সহ আগে থেকে থাকা কোনও প্রক্সি মাইগ্রেট করা।

Edge UI ব্যবহার করে Hosted Targets-এ Node.js অ্যাপ ডিপ্লয় করা

এই টিউটোরিয়ালে, আপনি Edge UI ব্যবহার করে হোস্টেড টার্গেটে একটি সাধারণ Node.js অ্যাপ ডিপ্লয় করবেন। আপনি টিউটোরিয়াল সম্পূর্ণ করলে, হোস্ট করা টার্গেট প্রক্সি এবং কীভাবে ডিপ্লয়মেন্ট ও বিল্ড লগ ফাইল অ্যাক্সেস করতে হয় তার প্রাথমিক গঠন ও কন্টেন্ট বুঝতে পারবেন।

সাইন-ইন করুন

  1. এখানে যান: apigee.com/edge
  2. সাইন-ইন করতে আপনার Apigee লগ-ইন ক্রেডেনশিয়াল লিখুন।

নতুন প্রক্সি তৈরি করা

  1. সাইড নেভিগেশন মেনু থেকে, ডেভেলপ করুন > API প্রক্সি বিকল্প বেছে নিন।
  2. + প্রক্সি বিকল্পে ক্লিক করুন।
  3. 'প্রক্সি তৈরি করুন' পৃষ্ঠায়, হোস্ট করা টার্গেট বিকল্প বেছে নিন।
  4. পরবর্তী বিকল্পে ক্লিক করুন।
  5. প্রক্সি নামের ফিল্ডে, hello-hosted-targets লিখুন।
  6. "Hello World" Sample বেছে নেওয়া হয়েছে কিনা তা নিশ্চিত করুন।
  7. পরবর্তী বিকল্পে ক্লিক করুন।
  8. নিরাপত্তা পৃষ্ঠায়, অনুমোদনের জন্য পাস থ্রু (কোনওটি নয়) বিকল্প বেছে নিন।
  9. পরবর্তী বিকল্পে ক্লিক করুন।
  10. পরবর্তী বিকল্পে ক্লিক করুন।
  11. বিল্ড পৃষ্ঠায়, টেস্ট এনভায়রনমেন্ট বেছে নেওয়া হয়েছে কিনা তা নিশ্চিত করুন। লক্ষ্য করুন যে প্রক্সি ধরন হল হোস্ট করা টার্গেট।
  12. বিল্ড ও ডেপ্লয় করুন বিকল্পে ক্লিক করুন। প্রক্সি ডেপ্লয়মেন্ট সম্পূর্ণ হতে কয়েক মুহূর্ত সময় লাগতে পারে।
  13. প্রক্সি সঠিকভাবে ডিপ্লয় করা হয়ে গেলে, পৃষ্ঠার নিচে hello-hosted-targets প্রক্সি দেখুন বিকল্পে ক্লিক করুন।
  14. API প্রক্সি কল করুন। এটি করার সবচেয়ে সহজ উপায় হল ট্রেস ট্যাবে গিয়ে, ট্রেস সেশন শুরু করে পাঠান বিকল্পে ক্লিক করা। আপনাকে নিম্নলিখিত উত্তর সহ একটি 200 স্ট্যাটাস কোড পেতে হবে:
    {"date":"2018-09-26T14:23:04.550Z","msg":"Hello, World!"}

প্রক্সি পরীক্ষা করা

  1. Edge UI-তে, ডেভেলপ করুন ট্যাবে ক্লিক করুন।
  2. নেভিগেটরে, টার্গেট এন্ডপয়েন্টের মধ্যে ডিফল্ট বিকল্প বেছে নিন।
  3. কোড এডিটরে, লক্ষ্য করুন যে <TargetEndpoint> এলিমেন্টের অধীনে একটি ফাঁকা <HostedTarget/> চাইল্ড এলিমেন্ট আছে। এই খালি ট্যাগটি প্রয়োজনীয়। এটি Edge-কে জানায় যে প্রক্সির টার্গেট হল এমন একটি অ্যাপ্লিকেশন যা হোস্ট করা টার্গেট এনভায়রনমেন্টে ডেপ্লয় করা হয়েছে।

  4. নেভিগেটরে, স্ক্রিপ্ট বিভাগের কন্টেন্ট দেখুন। Node.js অ্যাপ ফাইলগুলি হোস্ট করা লেবেলের অধীনে তালিকাভুক্ত করা হয়েছে।

  5. Edge UI-তে, স্ক্রিপ্ট-এর মধ্যে হোস্ট করা বিভাগে তালিকাভুক্ত ফাইলগুলি পরীক্ষা করুন:
    • app.yaml ফাইলে কনফিগারেশন সংক্রান্ত তথ্য থাকে। যেমন, আপনি এমন এনভায়রনমেন্ট ভেরিয়েবল যোগ করতে পারেন যা রানটাইমে Node.js অ্যাপ্লিকেশনের জন্য উপলভ্য হবে। এই উদাহরণের জন্য আপনাকে এই ফাইলটি পরিবর্তন করতে হবে না।
    • index.js ফাইল হল Node.js অ্যাপের মূল ফাইল।
    • আপনার অ্যাপে কোনও মডিউল ডিপেন্ডেন্সি থাকলে, সেগুলি অবশ্যই package.json-এ তালিকাভুক্ত থাকতে হবে।

লগ ফাইল দেখা

বিল্ড ফেজ এবং রানটাইমে হওয়া সমস্যার সমাধান করার জন্য অ্যাপ্লিকেশন লগ ফাইল কাজে লাগতে পারে।

  1. Edge UI-তে, ডেভেলপ করুন ট্যাবে ক্লিক করুন।
  2. বিল্ড লগ দেখতে, বিল্ড লগ বিকল্পে ক্লিক করুন।
  3. ডেপ্লয়মেন্ট লগ দেখতে, রানটাইম লগ বিকল্পে ক্লিক করুন।

    আরও দেখুন লগ ফাইল অ্যাক্সেস করা।

সারাংশ

  • আপনি Hosted Targets এনভায়রনমেন্টে একটি সাধারণ Node.js অ্যাপ্লিকেশন ডেপ্লয় করেছেন এবং Edge UI-তে সেটি পরীক্ষা করেছেন।
  • আপনি জেনেছেন যে হোস্ট করা টার্গেট প্রক্সির জন্য Target Endpoint-এ <HostedTarget/> নামের একটি বিশেষ খালি ট্যাগ প্রয়োজন।
  • আপনি জেনেছেন যে Edge আপনার জন্য মডিউল ডিপেন্ডেন্সি অটোমেটিক লোড করে এবং ডিপেন্ডেন্সি অবশ্যই package.json ফাইলে তালিকাভুক্ত থাকতে হবে।
  • এছাড়াও, আপনি কীভাবে বিল্ড ও রানটাইম লগ ফাইল চেক করতে হয় তা শিখেছেন।

আপনার সিস্টেম থেকে Edge-এ Node.js ডিপ্লয় করা

এই বিভাগে আপনার লোকাল সিস্টেম থেকে apigeetool ব্যবহার করে হোস্ট করা টার্গেটে কীভাবে একটি স্ট্যান্ডঅ্যালোন Node.js অ্যাপ্লিকেশন ডিপ্লয় করতে হয় তা ব্যাখ্যা করা হয়েছে। apigeetool ইউটিলিটি Node.js অ্যাপকে নতুন হোস্ট করা টার্গেট প্রক্সিতে বান্ডেল করে এবং Edge-এ তা ডেপ্লয় করে।

apigeetool ইনস্টল করা

Edge-এ প্রক্সি কোড ডেপ্লয় করার জন্য ডেভেলপারদের apigeetool ব্যবহার করার পরামর্শ দেওয়া হয়। apigeetool ইনস্টল করতে, নিম্নলিখিত NPM কমান্ড রান করুন:

npm install -g apigeetool

Node.js অ্যাপ তৈরি করা

বিষয়টি সহজ করতে, একটি সাধারণ Node.js অ্যাপের কোড আপনার জন্য প্রদান করা হয়েছে।

  1. Node.js অ্যাপের জন্য একটি ডিরেক্টরি তৈরি করুন। ডিরেক্টরিটির নাম node-hosted-express দিন।
  2. নতুন ডিরেক্টরিতে cd কমান্ড দিন।
  3. index.js নামের একটি ফাইল তৈরি করুন এবং এই কোডটি সেটিতে কপি করুন।
  4. var express = require('express')
    var app = express()
    
    app.get('/', function(req, res) {
        res.json({
            hello: "Hello World!"
        })
    })
    
    app.get('/hello/:name', function(req, res) {
        var name = req.params.name
        res.json({
            hello: "hello " + name
        })
    })
    
    var server = app.listen(process.env.PORT || 9000, function() {
        console.log('Listening on port %d', server.address().port)
    })
  5. package.json নামে একটি ফাইল তৈরি করুন এবং এই কোডটি সেটিতে কপি করুন। লক্ষ্য করুন যে Express মডিউলটি একটি নির্ভরতা হিসেবে তালিকাভুক্ত করা হয়েছে।
  6. {
        "name": "hello-world",
        "version": "1.0.0",
        "main": "index.js",
        "scripts": {
            "start": "node index.js --use_strict"
        },
        "author": "",
        "license": "",
        "dependencies": {
            "express": "^4.16.0"
        }
    }
  7. app.yaml নামের একটি ফাইল তৈরি করুন এবং এই কোডটি সেটিতে কপি করুন:
  8. runtime: node
    runtimeVersion: 8
    application: my-express-app
    env:
      - name: NODE_ENV
        value: production
      - name: LOG_LEVEL
        value: 3
  9. আপনার ডিরেক্টরি এইরকম দেখতে লাগছে কিনা তা নিশ্চিত করুন:
    ls
    app.yaml index.js package.json
    

অ্যাপ কোডের জন্য প্রয়োজনীয় ডিরেক্টরি স্ট্রাকচার পর্যালোচনা করা

আপনার Node.js অ্যাপের গঠন অবশ্যই একটি স্ট্যান্ডার্ড Node.js অ্যাপের মতো হতে হবে। তবে, Edge-এ apigeetool-এর মাধ্যমে ডিপ্লয় করার আগে, আপনি এইসব প্রয়োজনীয়তা পূরণ করেছেন কিনা তা নিশ্চিত করুন:

  • app.yaml ম্যানিফেস্ট ফাইল প্রয়োজন এবং এটি আপনার অ্যাপের রুট ডিরেক্টরিতে থাকতে হবে। এই ফাইল সম্পর্কে আরও জানতে, ম্যানিফেস্ট ফাইল দেখুন।
  • package.json ফাইল প্রয়োজন। আপনার অ্যাপের প্রয়োজনীয়তা অবশ্যই এতে তালিকাভুক্ত থাকতে হবে।
  • node_modules ফোল্ডারের প্রয়োজন নেই। Node.js অ্যাপ ডিপ্লয় করা হলে Edge আপনার জন্য npm install রান করে। এটি package.json থেকে ডিপেন্ডেন্সি পায়। আপনাকে শুধুমাত্র তখনই স্পষ্টভাবে node_modules প্রদান করতে হবে যদি আপনার কাস্টম মডিউল থাকে যা npm-এর মাধ্যমে উপলভ্য নয়।

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

  1. টার্মিনালে, আপনার Node.js অ্যাপ্লিকেশনের মূল ডিরেক্টরিতে cd করুন।
  2. deployhostedtarget কমান্ডের মাধ্যমে apigeetool এক্সিকিউট করুন:
  3. apigeetool deployhostedtarget -o org -e env -n proxy-name -b /node-hosted-express -u username

    যেখানে -n হল নতুন প্রক্সিটির নাম যা আপনি দিতে চান। সংস্থার মধ্যে এটি অনন্য হতে হবে। নামে ব্যবহার করার জন্য অনুমোদিত অক্ষরগুলি নিম্নলিখিতগুলির মধ্যে সীমাবদ্ধ: a-z0-9._\-$%

    যেমন:

    apigeetool deployhostedtarget -o myorg -e test -n node-hosted-express -b /node-hosted-express -u jdoe@apigee.com

    apigeetool ব্যবহার করা সম্পর্কে আরও তথ্য পেতে, এখানে দেখুন: https://github.com/apigee/apigeetool-node

প্রক্সি পরীক্ষা করা

আপনি cURL কমান্ড, Postman-এর মতো REST ক্লায়েন্ট বা Trace টুলে Edge UI-এর মাধ্যমে প্রক্সি পরীক্ষা করতে পারেন। এখানে cURL কমান্ডের একটি উদাহরণ দেওয়া হল।

curl http://myorg-test.apigee.net/node-hosted-express
     {"date":1506992197427,"msg":"hello-world"}

বিল্ড লগ পাওয়া

Node.js অ্যাপ ডিপ্লয় ও বিল্ড করা সম্পর্কিত আউটপুট বিল্ড লগ থেকে দেখতে পাবেন। এছাড়াও, লগ ফাইল দেখুন।

apigeetool getlogs -u username -o org -e env --hosted-build -n proxy-name

যেমন:

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-build -n node-hosted-express

রানটাইম লগ পাওয়া

রানটাইম লগ থেকে রানিং অ্যাপ সম্পর্কিত আউটপুট দেখা যায়। রানটাইম লগ এনভায়রনমেন্টের মধ্যে সীমাবদ্ধ থাকে এবং বর্তমানে ডিপ্লয় করা প্রক্সি রিভিশনের জন্য লগ রিটার্ন করে। এছাড়াও লগ ফাইল দেখুন।

apigeetool getlogs -u username -o org -e env --hosted-runtime -n proxy-name

যেমন:

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-runtime -n node-hosted-express

Edge UI-তে প্রক্সি দেখা

সফলভাবে ডেপ্লয় করার পরে, আপনি Edge UI-এর API প্রক্সি বিভাগে আপনার প্রক্সি দেখতে ও এডিট করতে পারবেন।

আগে থেকে থাকা Node.js প্রক্সি থেকে Hosted Targets প্রক্সিতে মাইগ্রেট করা

এই বিভাগে, Hosted Targets-এ প্রচলিত Node.js টার্গেট ইমপ্লিমেন্টেশন ব্যবহার করে আগে থেকে থাকা Edge API প্রক্সি কীভাবে ম্যানুয়ালি মাইগ্রেট করতে হয় তা ব্যাখ্যা করা হয়েছে। এছাড়াও, মাইগ্রেশন ধাপগুলি সম্পূর্ণ করার পরে কীভাবে প্রক্সি ডেপ্লয় করতে হয় তা ব্যাখ্যা করে।

মাইগ্রেশন ধাপগুলি API প্রক্সি স্ট্রাকচার, নীতি, ফ্লো এবং অন্যান্য কনফিগারেশন এলিমেন্টকে সুরক্ষিত রাখে। আপনি নিচে উল্লেখ করা চারটি ধাপে মাইগ্রেশন করতে পারবেন এবং তারপরে apigeetool-এর সাহায্যে মাইগ্রেট করা প্রক্সি ডেপ্লয় করতে পারবেন।

ধাপ ১: প্রক্সি ফাইলের স্ট্রাকচার অ্যাডজাস্ট করা

ফাইল স্ট্রাকচার অ্যাডজাস্ট করতে, API প্রক্সি আপনার লোকাল ফাইল সিস্টেমে থাকতে হবে। প্রক্সি Edge-এ ডেপ্লয় করা থাকলে, চালিয়ে যাওয়ার আগে আপনাকে অবশ্যই এটি ডাউনলোড করতে হবে । প্রচলিত কনফিগারেশনে, Node.js কোড সহ Edge প্রক্সি "বান্ডেল" এই ফাইল স্ট্রাকচার অনুসরণ করে। Node.js অ্যাপ্লিকেশন কোড resources/node ডিরেক্টরিতে রাখা হয়:

apiproxy/
    policies/
    proxies/
    targets/
    resources/
      node/
        Your application code


হোস্ট করা টার্গেটের জন্য, আপনাকে অবশ্যই Node.js অ্যাপের রুট ডিরেক্টরিকে resources/hosted নামের ডিরেক্টরির মধ্যে রাখতে হবে। সহজভাবে, resources/hosted নামের একটি নতুন ডিরেক্টরি তৈরি করুন এবং resources/node -এর কন্টেন্ট সেটিতে সরিয়ে দিন। তারপর, আপনি resources/node ডিরেক্টরি মুছে দিতে পারবেন।

apiproxy/
     policies/
     proxies/
     targets/
     resources/
       hosted/
         Your application code

ধাপ ২: ম্যানিফেস্ট ফাইল যোগ করুন

app.yaml নামের একটি ম্যানিফেস্ট ফাইল তৈরি করে apiproxy/resources/hosted ডিরেক্টরিতে রাখুন।

নিচে app.yaml ফাইলের একটি উদাহরণ দেওয়া হল। এতে উল্লেখ করা হয়েছে যে রানটাইম হল Node.js (প্রয়োজনীয়)। এছাড়াও, এটি এক্সিকিউশন এনভায়রনমেন্টে একটি এনভায়রনমেন্ট ভেরিয়েবল তৈরি করে (এমন একটি ভেরিয়েবল যা Node.js অ্যাপ অ্যাক্সেস করতে পারে)। এনভায়রনমেন্ট ভেরিয়েবল ঐচ্ছিক এবং এখানে শুধুমাত্র উদাহরণ হিসেবে দেখানো হয়েছে। আরও বিবরণ ও উদাহরণের জন্য, ম্যানিফেস্ট ফাইল দেখুন।

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


নিচে দেওয়া উদাহরণে Node.js প্রোজেক্ট স্ট্রাকচার দেখানো হয়েছে যা হোস্ট করা টার্গেট ডেপ্লয়মেন্টের প্রক্সি সার্ভারে সঠিক লোকেশনে আছে:

apiproxy/
   resources/
      hosted/
        index.js
        node_modules/
        app.yaml
        package.json

ধাপ ৩: আপনার কাছে package.json ফাইল আছে কিনা তা নিশ্চিত করুন

প্রচলিত Edge Node.js প্রক্সি সার্ভারে, package.json ছিল ঐচ্ছিক। তবে, হোস্ট করা টার্গেটের ক্ষেত্রে, আপনাকে অবশ্যই apiproxy/resources/hosted ডিরেক্টরিতে একটি দিতে হবে। এই ফাইলে আপনার অ্যাপের জন্য প্রয়োজনীয় যেকোনও ডিপেন্ডেন্সি উল্লেখ করতে ভুলবেন না।

ধাপ ৪: প্রক্সির টার্গেট এন্ডপয়েন্ট পরিবর্তন করুন

একটি ঐতিহ্যবাহী Node.js প্রক্সি প্রয়োজন যে <ScriptTarget> নামের একটি ট্যাগ টার্গেট এন্ডপয়েন্ট ফাইলে (সাধারণত /apiproxy/targets/default.xml) থাকতে হবে। হোস্ট করা টার্গেটের জন্য, আপনাকে <HostedTarget/> নামের একটি খালি ট্যাগ যোগ করতে হবে। ফাইলে ScriptTarget ট্যাগ থাকলে, আপনি সেটি সরিয়ে দিতে পারেন। যেমন:

    <?xml version="1.0" encoding="UTF-8"?>
    <TargetEndpoint name="default">
       <Description />
       <FaultRules />
       <PreFlow name="PreFlow">
          <Request />
          <Response />
       </PreFlow>
       <PostFlow name="PostFlow">
          <Request />
          <Response />
       </PostFlow>
       <Flows />
       <HostedTarget />
    </TargetEndpoint>
    

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

আপনি এখন apigeetool deployproxy কমান্ড ব্যবহার করে প্রক্সি ডেপ্লয় করতে পারবেন।

  1. আপনার প্রক্সির মূল ডিরেক্টরিতে cd: /apiproxy
  2. প্রক্সি ডেপ্লয় করতে এই কমান্ড ব্যবহার করুন:
  3. apigeetool deployproxy -u username -o org -e env -n proxy-name -d .

    যেমন:

    apigeetool deployproxy -u jdoe -o docs -e test -n hello-world -d .

apigeetool ব্যবহার করা সম্পর্কে আরও তথ্য পেতে: https://github.com/apigee/apigeetool-node/blob/master/README.md দেখুন।

প্রক্সি পরীক্ষা করা

আপনি cURL কমান্ড, Postman-এর মতো REST ক্লায়েন্ট বা Trace টুলে Edge UI-এর মাধ্যমে প্রক্সি পরীক্ষা করতে পারেন। এখানে cURL কমান্ডের একটি উদাহরণ দেওয়া হল:

curl http://myorg-test.apigee.net/hello-world
Hello,World!