NodeJS এর ​​সাথে InnerLoop ডেভেলপমেন্ট

1। সংক্ষিপ্ত বিবরণ

এই ল্যাবটি কন্টেইনারাইজড পরিবেশে নোডজেএস অ্যাপ্লিকেশন বিকাশের দায়িত্বপ্রাপ্ত সফ্টওয়্যার ইঞ্জিনিয়ারদের জন্য বিকাশের কর্মপ্রবাহকে প্রবাহিত করার জন্য ডিজাইন করা বৈশিষ্ট্য এবং ক্ষমতা প্রদর্শন করে। সাধারণ কন্টেইনার ডেভেলপমেন্টের জন্য ব্যবহারকারীকে কন্টেইনারের বিবরণ এবং কন্টেইনার তৈরির প্রক্রিয়া বুঝতে হবে। উপরন্তু, ডেভেলপারদের সাধারণত তাদের প্রবাহ ভাঙতে হয়, দূরবর্তী পরিবেশে তাদের অ্যাপ্লিকেশন পরীক্ষা ও ডিবাগ করতে তাদের IDE থেকে বেরিয়ে যেতে হয়। এই টিউটোরিয়ালে উল্লিখিত টুলস এবং প্রযুক্তির সাহায্যে, ডেভেলপাররা তাদের IDE না রেখেই কন্টেইনারাইজড অ্যাপ্লিকেশনের সাথে কার্যকরভাবে কাজ করতে পারে।

যা শিখবেন

এই ল্যাবে আপনি জিসিপি-তে কন্টেইনারগুলি সহ বিকাশের পদ্ধতিগুলি শিখবেন:

  • একটি স্টার্টার Nodejs অ্যাপ্লিকেশন তৈরি করা হচ্ছে
  • ধারক উন্নয়নের জন্য Nodejs অ্যাপ্লিকেশন কনফিগার করা হচ্ছে
  • একটি সাধারণ CRUD বিশ্রাম পরিষেবা কোডিং
  • GKE-তে স্থাপন করা হচ্ছে
  • একটি ত্রুটি অবস্থা ডিবাগিং
  • ব্রেকপয়েন্ট/লগ ব্যবহার করা
  • GKE-এ হট ডিপ্লয়িং পরিবর্তন
  • ঐচ্ছিক: ব্যাকএন্ড অধ্যবসায়ের জন্য ক্লাউডএসকিউএল একীভূত করা

2. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

  1. Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না এবং আপনি যে কোনো সময় এটি আপডেট করতে পারেন।
  • সমস্ত Google ক্লাউড প্রজেক্ট জুড়ে প্রোজেক্ট আইডি অবশ্যই অনন্য হতে হবে এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এবং এটি সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়), তাই আপনি যদি এটি পছন্দ না করেন তবে অন্য একটি এলোমেলো তৈরি করুন, অথবা, আপনি নিজের চেষ্টা করে দেখতে পারেন এটি উপলব্ধ কিনা। তারপর প্রকল্প তৈরি হওয়ার পরে এটি "হিমায়িত" হয়।
  • একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। রিসোর্স বন্ধ করতে যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন, কোডল্যাবের শেষে পাওয়া যেকোনো "ক্লিন-আপ" নির্দেশাবলী অনুসরণ করুন। Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

ক্লাউডশেল এডিটর শুরু করুন

এই ল্যাবটি ডিজাইন করা হয়েছে এবং Google ক্লাউড শেল এডিটরের সাথে ব্যবহারের জন্য পরীক্ষা করা হয়েছে। সম্পাদক অ্যাক্সেস করতে,

  1. https://console.cloud.google.com- এ আপনার গুগল প্রকল্প অ্যাক্সেস করুন।
  2. উপরের ডানদিকের কোণায় ক্লাউড শেল এডিটর আইকনে ক্লিক করুন

8560cc8d45e8c112.png

  1. আপনার উইন্ডোর নীচে একটি নতুন ফলক খুলবে
  2. Open Editor বাটনে ক্লিক করুন

9e504cb98a6a8005.png

  1. সম্পাদকটি ডানদিকে একটি এক্সপ্লোরার এবং কেন্দ্রীয় অঞ্চলে সম্পাদকের সাথে খুলবে৷
  2. স্ক্রিনের নীচে একটি টার্মিনাল ফলকও পাওয়া উচিত
  3. টার্মিনাল খোলা না থাকলে একটি নতুন টার্মিনাল উইন্ডো খুলতে `ctrl+`` এর কী সমন্বয় ব্যবহার করুন

gCloud সেট আপ করুন

ক্লাউড শেল-এ, আপনার প্রজেক্ট আইডি এবং যে অঞ্চলে আপনি আপনার অ্যাপ্লিকেশন স্থাপন করতে চান সেটি সেট করুন। সেগুলিকে PROJECT_ID এবং REGION ভেরিয়েবল হিসাবে সংরক্ষণ করুন৷

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

GKE ক্লাস্টার এবং ডাটাবেস সেট আপ করুন

  1. সেটআপ স্ক্রিপ্ট ডাউনলোড করুন এবং এটি এক্সিকিউটেবল করুন।
wget https://raw.githubusercontent.com/GoogleCloudPlatform/container-developer-workshop/main/labs/nodejs/setup.sh
chmod +x setup.sh

এই ল্যাবে ব্যবহৃত অবকাঠামোর ব্যবস্থা করুন

এই ল্যাবে আপনি GKE-তে কোড স্থাপন করবেন এবং স্প্যানার ডাটাবেসে সংরক্ষিত ডেটা অ্যাক্সেস করবেন। নিচের সেটআপ স্ক্রিপ্টটি আপনার জন্য এই পরিকাঠামো প্রস্তুত করে।

  1. setup.sh ফাইল খুলুন এবং পাসওয়ার্ডের মানগুলি সম্পাদনা করুন যা বর্তমানে CHANGEME এ সেট করা আছে
  2. একটি GKE ক্লাস্টার এবং একটি CloudSQL ডাটাবেস দাঁড়াতে সেটআপ স্ক্রিপ্টটি চালান যা আপনি এই ল্যাবে ব্যবহার করবেন
./setup.sh
  1. ক্লাউড শেলে, mynodejsapp নামের একটি নতুন ডিরেক্টরি তৈরি করুন
mkdir mynodejsapp
  1. এই ডিরেক্টরিতে পরিবর্তন করুন এবং এটি একটি ওয়ার্কস্পেস হিসাবে খুলুন। এটি নতুন তৈরি ফোল্ডারে একটি ওয়ার্কস্পেস কনফিগারেশন তৈরি করে সম্পাদকটিকে পুনরায় লোড করবে।
cd mynodejsapp && cloudshell workspace .
  1. এনভিএম ব্যবহার করে নোড এবং এনপিএম ইনস্টল করুন।
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
        
        # This loads nvm bash_completion
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  

nvm install stable

nvm alias default stable

3. একটি নতুন স্টার্টার অ্যাপ্লিকেশন তৈরি করুন

  1. আবেদন শুরু করুন

নিম্নলিখিত কমান্ডটি চালানোর মাধ্যমে একটি package.json ফাইল তৈরি করা

npm init
    Choose the entry point: (index.js) src/index.js and default values for the rest of the parameters. This will create the file with following contents
{
  "name": "mynodejsapp",
  "version": "1.0.0",
  "description": "",
  "main": "src/index.js",,
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
  1. একটি এন্ট্রি পয়েন্ট যোগ করুন

"start": "node src/index.js", পরিবর্তনের পরে স্ক্রিপ্টগুলি নীচের কোড স্নিপেটের মতো হওয়া উচিত:

"scripts": {
    "start": "node src/index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  1. এক্সপ্রেস নির্ভরতা যোগ করুন

আমরা যে কোডটি যোগ করতে যাচ্ছি সেটিও express ব্যবহার করে তাই আসুন আমরা এই package.json ফাইলটিতে সেই নির্ভরতা যোগ করি। তাই সব পরিবর্তনের পর package.json ফাইলটি নিচের মত হতে হবে।

​​{
  "name": "mynodejsapp",
  "version": "1.0.0",
  "description": "",
  "main": "src/index.js",
  "scripts": {
    "start": "node src/index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Your Name",
  "license": "ISC",
  "dependencies": {
    "express": "^4.16.4"
  }
}
  1. index.js ফাইল তৈরি করুন

src নামে একটি উৎস ডিরেক্টরি তৈরি করুন

নিম্নলিখিত কোড দিয়ে src/index.js তৈরি করুন

const express = require('express');
const app = express();
const PORT = 8080;

app.get('/', (req, res) => {
    var message="Greetings from Node";
    res.send({ message: message });
  });

app.listen(PORT, () => {
  console.log(`Server running at: http://localhost:${PORT}/`);

});

মনে রাখবেন PORT মান 8080 সেট করা আছে

ম্যানিফেস্ট তৈরি করুন

স্ক্যাফোল্ড কন্টেইনার ডেভেলপমেন্টকে সহজ করার জন্য সমন্বিত টুল সরবরাহ করে। এই ধাপে আপনি স্ক্যাফোল্ড শুরু করবেন যা স্বয়ংক্রিয়ভাবে বেস কুবারনেটস YAML ফাইল তৈরি করবে। প্রক্রিয়াটি শুরু করতে নীচের কমান্ডটি চালান।

টার্মিনালে নিম্নলিখিত কমান্ডটি চালান

skaffold init --generate-manifests

অনুরোধ করা হলে:

  • পোর্টের জন্য 8080 লিখুন
  • কনফিগারেশন সংরক্ষণ করতে y লিখুন

দুটি ফাইল কর্মক্ষেত্রে যোগ করা হয়েছে যেমন, skaffold.yaml এবং deployment.yaml

অ্যাপের নাম আপডেট করুন

কনফিগারেশনে অন্তর্ভুক্ত ডিফল্ট মানগুলি বর্তমানে আপনার অ্যাপ্লিকেশনের নামের সাথে মেলে না। ডিফল্ট মানগুলির পরিবর্তে আপনার অ্যাপ্লিকেশনের নাম উল্লেখ করতে ফাইলগুলি আপডেট করুন৷

  1. Skaffold কনফিগারেশনে এন্ট্রি পরিবর্তন করুন
  • skaffold.yaml খুলুন
  • বর্তমানে package-json-image হিসাবে সেট করা ছবির নাম নির্বাচন করুন
  • রাইট ক্লিক করুন এবং সমস্ত ঘটনা পরিবর্তন করুন নির্বাচন করুন
  • mynodejsapp হিসাবে নতুন নাম টাইপ করুন
  1. Kubernetes কনফিগারেশনে এন্ট্রি পরিবর্তন করুন
  • deployment.yaml ফাইল খুলুন
  • বর্তমানে package-json-image হিসাবে সেট করা ছবির নাম নির্বাচন করুন
  • রাইট ক্লিক করুন এবং সমস্ত ঘটনা পরিবর্তন করুন নির্বাচন করুন
  • mynodejsapp হিসাবে নতুন নাম টাইপ করুন

লক্ষ্য করুন যে skaffold.yaml ফাইলে, build বিভাগটি অ্যাপ্লিকেশনটিকে কন্টেইনারাইজ করতে buildpacks ব্যবহার করে। এই কোডটিতে ডকারফাইল নেই এবং এই অ্যাপ্লিকেশনটিকে ধারণ করার জন্য বিকাশকারীর ডকার সম্পর্কে কোনও জ্ঞানের প্রয়োজন নেই।

এছাড়াও, এই স্ক্যাফোল্ড কনফিগারেশন দ্বারা সম্পাদক এবং চলমান পাত্রের মধ্যে হট সিঙ্ক স্বয়ংক্রিয়ভাবে সক্ষম হয়। হট সিঙ্ক সক্ষম করার জন্য কোনও অতিরিক্ত কনফিগারেশনের প্রয়োজন নেই।

4. উন্নয়ন প্রক্রিয়ার মধ্য দিয়ে হাঁটা

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

ক্লাউড কোড স্ক্যাফোল্ডের সাথে একীভূত করে আপনার উন্নয়ন প্রক্রিয়াকে প্রবাহিত করতে। আপনি যখন নিম্নলিখিত ধাপে GKE-তে স্থাপন করবেন, ক্লাউড কোড এবং Skaffold স্বয়ংক্রিয়ভাবে আপনার কন্টেইনার ইমেজ তৈরি করবে, এটি একটি কন্টেইনার রেজিস্ট্রিতে ঠেলে দেবে এবং তারপর GKE-তে আপনার অ্যাপ্লিকেশন স্থাপন করবে। এটি বিকাশকারীর প্রবাহ থেকে বিশদ বিবরণকে বিমূর্ত করে পর্দার আড়ালে ঘটে। ক্লাউড কোড কনটেইনার ভিত্তিক ডেভেলপমেন্টে প্রথাগত ডিবাগ এবং হটসিঙ্ক ক্ষমতা প্রদান করে আপনার উন্নয়ন প্রক্রিয়াকেও উন্নত করে।

কুবারনেটে স্থাপন করুন

  1. ক্লাউড শেল এডিটরের নীচের প্যানে, ক্লাউড কোড  নির্বাচন করুন

fdc797a769040839.png

  1. শীর্ষে প্রদর্শিত প্যানেলে, কুবারনেটে চালান নির্বাচন করুন। অনুরোধ করা হলে, বর্তমান কুবারনেটস প্রসঙ্গ ব্যবহার করতে হ্যাঁ নির্বাচন করুন।

cfce0d11ef307087.png

  1. আপনি যখন প্রথমবার কমান্ডটি চালাবেন তখন স্ক্রিনের শীর্ষে একটি প্রম্পট উপস্থিত হবে যা জিজ্ঞাসা করবে যে আপনি বর্তমান কুবারনেট প্রসঙ্গটি চান কিনা, বর্তমান প্রসঙ্গটি গ্রহণ করতে এবং ব্যবহার করতে "হ্যাঁ" নির্বাচন করুন।

817ee33b5b412ff8.png

  1. পরবর্তীতে কোন কন্টেইনার রেজিস্ট্রি ব্যবহার করতে হবে তা জিজ্ঞাসা করে একটি প্রম্পট প্রদর্শিত হবে। প্রদত্ত ডিফল্ট মান গ্রহণ করতে এন্টার টিপুন

eb4469aed97a25f6.png

  1. অগ্রগতি এবং বিজ্ঞপ্তিগুলি দেখতে নীচের ফলকে আউটপুট ট্যাবটি নির্বাচন করুন৷

f95b620569ba96c5.png

  1. কনটেইনারগুলি থেকে লাইভ স্ট্রিমিং অতিরিক্ত বিবরণ এবং লগগুলি দেখতে ডানদিকে ড্রপ ডাউন চ্যানেলে "কুবারনেটস: রান/ডিবাগ - বিস্তারিত" নির্বাচন করুন

94acdcdda6d2108.png

  1. ড্রপডাউন থেকে "কুবারনেটস: রান/ডিবাগ" নির্বাচন করে সরলীকৃত দৃশ্যে ফিরে যান
  2. যখন বিল্ড এবং পরীক্ষা করা হয়, আউটপুট ট্যাব বলে: Resource deployment/mynodejsapp status completed successfully , এবং একটি url তালিকাভুক্ত করা হয়েছে: "পরিষেবা ডেমো-অ্যাপ থেকে ফরওয়ার্ড করা URL: http://localhost:8080"
  3. ক্লাউড কোড টার্মিনালে, আউটপুট (http://localhost:8080) এর URL-এর উপর হোভার করুন এবং তারপরে টুল টিপে প্রদর্শিত ওয়েব প্রিভিউ নির্বাচন করুন।

প্রতিক্রিয়া হবে:

{"message":"Greetings from Node"}

হট রিলোড

  1. src/index.js এ নেভিগেট করুন। 'Hello from Node' তে শুভেচ্ছা বার্তা কোডটি সম্পাদনা করুন

অবিলম্বে লক্ষ্য করুন যে Output উইন্ডোতে, Kubernetes: Run/Debug ভিউ, পর্যবেক্ষক আপডেট করা ফাইলগুলি কুবারনেটসের কন্টেইনারের সাথে সিঙ্ক করে

Update initiated
File sync started for 1 files for gcr.io/myproject/mynodejsapp:latest@sha256:f554756b3b4d6c301c4b26ef96102227cfa2833270db56241248ae42baa1971a
File sync succeeded for 1 files for gcr.io/myproject/mynodejsapp:latest@sha256:f554756b3b4d6c301c4b26ef96102227cfa2833270db56241248ae42baa1971a
Update succeeded
  1. আপনি যদি Kubernetes: Run/Debug - Detailed ভিউ, আপনি লক্ষ্য করবেন এটি ফাইলের পরিবর্তনগুলিকে স্বীকৃতি দেয় এবং নোড পুনরায় চালু করে
files modified: [src/index.js]
Copying files:map[src/index.js:[/workspace/src/index.js]]togcr.io/myproject/mynodejsapp:latest@sha256:f554756b3b4d6c301c4b26ef96102227cfa2833270db56241248ae42baa1971a
Syncing 1 files for gcr.io/myproject/mynodejsapp:latest@sha256:f554756b3b4d6c301c4b26ef96102227cfa2833270db56241248ae42baa1971a
Watching for changes...
[mynodejsapp]
[mynodejsapp]> mynodejsapp@1.0.0 start /workspace
[mynodejsapp]> node src/index.js
[mynodejsapp]
[mynodejsapp]Server running at: http://localhost:8080/
  1. আপডেট ফলাফল দেখতে আপনার ব্রাউজার রিফ্রেশ করুন.

ডিবাগিং

  1. ডিবাগ ভিউতে যান এবং বর্তমান থ্রেড বন্ধ করুন 647213126d7a4c7b.png .
  2. নীচের মেনুতে Cloud Code ক্লিক করুন এবং debug মোডে অ্যাপ্লিকেশনটি চালানোর জন্য Debug on Kubernetes নির্বাচন করুন।
  • Kubernetes Run/Debug - Detailed Output উইন্ডোর বিশদ দৃশ্যে, লক্ষ্য করুন যে skaffold এই অ্যাপ্লিকেশনটিকে ডিবাগ মোডে স্থাপন করবে।
  • অ্যাপ্লিকেশনটি তৈরি করতে এবং স্থাপন করতে কয়েক মিনিট সময় লাগবে৷ আপনি এই সময় সংযুক্ত একটি ডিবাগার লক্ষ্য করবেন.
Port forwarding pod/mynodejsapp-6bbcf847cd-vqr6v in namespace default, remote port 9229 -> http://127.0.0.1:9229
[mynodejsapp]Debugger attached.
  1. নীচের স্ট্যাটাস বারটি নীল থেকে কমলা রঙে পরিবর্তন করে যে এটি ডিবাগ মোডে রয়েছে।
  2. Kubernetes Run/Debug ভিউতে, লক্ষ্য করুন যে একটি ডিবাগযোগ্য ধারক শুরু হয়েছে
**************URLs*****************
Forwarded URL from service mynodejsapp-service: http://localhost:8080
Debuggable container started pod/mynodejsapp-deployment-6bc7598798-xl9kj:mynodejsapp (default)
Update succeeded
***********************************

ব্রেকপয়েন্ট ব্যবহার করুন

  1. src/index.js খুলুন
  2. বিবৃতিটি সনাক্ত করুন যা var message="Greetings from Node";
  3. লাইন নম্বরের বাম দিকের ফাঁকা জায়গায় ক্লিক করে সেই লাইনে একটি ব্রেকপয়েন্ট যোগ করুন। ব্রেকপয়েন্ট সেট করা হয়েছে লক্ষ্য করার জন্য একটি লাল সূচক দেখাবে
  4. আপনার ব্রাউজার পুনরায় লোড করুন এবং নোট করুন ডিবাগার ব্রেকপয়েন্টে প্রক্রিয়াটি বন্ধ করে দেয় এবং আপনাকে GKE-তে দূরবর্তীভাবে চলমান অ্যাপ্লিকেশনের ভেরিয়েবল এবং অবস্থা তদন্ত করতে দেয়
  5. আপনি "message" ভেরিয়েবল না পাওয়া পর্যন্ত ভেরিয়েবল বিভাগে ক্লিক করুন।
  6. স্টেপ ওভারে টিপে লাইনটি কার্যকর করুন 7cfdee4fd6ef5c3a.png
  7. "message" ভেরিয়েবল পরিবর্তনের বর্তমান মানটি "Greetings from Node" এ লক্ষ্য করুন
  8. "টার্গেট" ভেরিয়েবলের নামটিতে ডাবল ক্লিক করুন এবং পপআপে, "Hello from Node" এর মত ভিন্ন কিছুতে মান পরিবর্তন করুন।
  9. ডিবাগ কন্ট্রোল প্যানেলে Continue বাটনে ক্লিক করুন
  10. আপনার ব্রাউজারে প্রতিক্রিয়া পর্যালোচনা করুন যা এখন আপনার প্রবেশ করা আপডেট করা মান দেখায়।
  11. স্টপ বোতাম টিপে "ডিবাগ" মোড বন্ধ করুন 647213126d7a4c7b.png এবং ব্রেকপয়েন্টে আবার ক্লিক করে ব্রেকপয়েন্টটি সরিয়ে ফেলুন।

5. একটি সাধারণ CRUD বিশ্রাম পরিষেবা বিকাশ করা

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

নির্ভরতা কনফিগার করুন

অ্যাপ্লিকেশন কোড একটি ডাটাবেস ব্যবহার করে বাকি পরিষেবা ডেটা বজায় রাখতে। package.json ফাইলে নিম্নলিখিত যোগ করে নির্ভরতা উপলব্ধ রয়েছে তা নিশ্চিত করুন

  1. একটি CRUD অ্যাপ্লিকেশন Postgres তৈরি করতে আরও দুটি নির্ভরতা pg যোগ করুন এবং package.json ফাইলে sequelize । পোস্ট পরিবর্তন নির্ভরতা বিভাগ এই মত হবে.
    "dependencies": {
    "express": "^4.16.4",
    "pg": "^8.7.3",
    "sequelize": "^6.17.0"
  }

REST পরিষেবা কোড করুন

  1. এই অ্যাপ্লিকেশনে CRUD অ্যাপ্লিকেশন কোড যোগ করুন
wget -O app.zip https://github.com/GoogleCloudPlatform/container-developer-workshop/raw/main/labs/nodejs/app.zip

unzip app.zip

এই কোড আছে

  • item জন্য সত্তা মডেল সহ মডেল ফোল্ডার
  • CRUD অপারেশন করে এমন কোড সহ কন্ট্রোলার ফোল্ডার
  • রুট ফোল্ডার যা নির্দিষ্ট URL প্যাটার্নকে বিভিন্ন কলে রুট করে
  • ডাটাবেস সংযোগের বিবরণ সহ কনফিগার ফোল্ডার
  1. মনে রাখবেন db.config.js ফাইলের ডাটাবেস কনফিগারেশনটি এনভায়রনমেন্ট ভেরিয়েবলকে বোঝায় যেগুলি ডাটাবেসের সাথে সংযোগ করার জন্য সরবরাহ করা প্রয়োজন। এছাড়াও আপনাকে url এনকোডিংয়ের জন্য আগত অনুরোধটি পার্স করতে হবে।
  2. app.listen(PORT, () => { এর সাথে শুরু হওয়া শেষ সেকশনের ঠিক আগে আপনার প্রধান জাভাস্ক্রিপ্ট ফাইল থেকে CRUD কোডের সাথে সংযোগ করতে সক্ষম হতে src/index.js এ নিম্নলিখিত কোড স্নিপেট যোগ করুন
const bodyParser = require('body-parser')
app.use(bodyParser.json())
app.use(
 bodyParser.urlencoded({
   extended: true,
 })
)
const db = require("../app/models");
db.sequelize.sync();
require("../app/routes/item.routes")(app);
  1. ডাটাবেস সংযোগ তথ্য সরবরাহ করতে পরিবেশ ভেরিয়েবল যোগ করতে deployment.yaml ফাইলে স্থাপনা সম্পাদনা করুন।

নিম্নলিখিত সংজ্ঞার সাথে মেলে ফাইলের শেষে স্পেস এন্ট্রি আপডেট করুন

    spec:
      containers:
      - name: mynodejsapp
        image: mynodejsapp
        env:
        - name: DB_HOST
          value: ${DB_INSTANCE_IP}        
        - name: DB_PORT
          value: "5432"  
        - name: DB_USER
          valueFrom:
            secretKeyRef:
              name: gke-cloud-sql-secrets
              key: username
        - name: DB_PASS
          valueFrom:
            secretKeyRef:
              name: gke-cloud-sql-secrets
              key: password
        - name: DB_NAME
          valueFrom:
            secretKeyRef:
              name: gke-cloud-sql-secrets
              key: database
  1. আপনার ডাটাবেসের ঠিকানা দিয়ে DB_HOST মান প্রতিস্থাপন করুন
export DB_INSTANCE_IP=$(gcloud sql instances describe mytest-instance \
    --format=json | jq \
    --raw-output ".ipAddresses[].ipAddress")

envsubst < deployment.yaml > deployment.new && mv deployment.new deployment.yaml

প্রয়োগ করুন এবং আবেদন যাচাই করুন

  1. ক্লাউড শেল এডিটরের নীচের প্যানে, Cloud Code নির্বাচন করুন তারপর পর্দার শীর্ষে Debug on Kubernetes নির্বাচন করুন।
  2. যখন বিল্ড এবং পরীক্ষা করা হয়, আউটপুট ট্যাব বলে: Resource deployment/mynodejsapp status completed successfully , এবং একটি url তালিকাভুক্ত করা হয়েছে: "সার্ভিস mynodejsapp থেকে ফরওয়ার্ড করা URL: http://localhost:8080"
  3. আইটেম একটি দম্পতি যোগ করুন.

ক্লাউডশেল টার্মিনাল থেকে, নীচের কমান্ডগুলি চালান

URL=localhost:8080
curl -X POST $URL/items -d '{"itemName":"Body Spray", "itemPrice":3.2}' -H "Content-Type: application/json"
curl -X POST $URL/items -d '{"itemName":"Nail Cutter", "itemPrice":2.5}' -H "Content-Type: application/json"
  1. ব্রাউজারে $URL/আইটেমগুলি চালিয়ে GET পরীক্ষা করুন৷ আপনি কমান্ড লাইন থেকে কার্ল চালাতে পারেন
curl -X GET $URL/items
  1. পরীক্ষা মুছে ফেলুন: এখন চালানোর মাধ্যমে একটি আইটেম মুছে ফেলার চেষ্টা করুন। প্রয়োজনে আইটেম-আইডির মান পরিবর্তন করুন।
curl -X DELETE $URL/items/1
    This throws an error message
{"message":"Could not delete Item with id=[object Object]"}

সমস্যাটি চিহ্নিত করুন এবং সমাধান করুন

  1. ডিবাগ মোডে অ্যাপ্লিকেশনটি পুনরায় চালু করুন এবং সমস্যাটি খুঁজুন। এখানে কিছু টিপস আছে:
  • আমরা জানি মুছে ফেলার সাথে কিছু ভুল আছে কারণ এটি পছন্দসই ফলাফল ফিরিয়ে দিচ্ছে না। সুতরাং আপনি itemcontroller.js -> exports.delete পদ্ধতিতে ব্রেকপয়েন্ট সেট করবেন।
  • ধাপে ধাপে এক্সিকিউশন চালান এবং বাম উইন্ডোতে স্থানীয় ভেরিয়েবলের মান পর্যবেক্ষণ করতে প্রতিটি ধাপে ভেরিয়েবলগুলি দেখুন।
  • নির্দিষ্ট মান পর্যবেক্ষণ করতে যেমন request.params এই ভেরিয়েবলটিকে ওয়াচ উইন্ডোতে যুক্ত করুন।
  1. লক্ষ্য করুন যে id নির্ধারিত মানটি undefined । সমস্যা সমাধানের জন্য কোড পরিবর্তন করুন।

স্থির কোড স্নিপেট এই মত হবে.

// Delete a Item with the specified id in the request
exports.delete = (req, res) => {
    const id = req.params.id;
  1. একবার অ্যাপ্লিকেশনটি পুনরায় চালু হলে, মুছে ফেলার চেষ্টা করে আবার পরীক্ষা করুন।
  2. ডিবাগ টুলবারে লাল বর্গক্ষেত্রে ক্লিক করে ডিবাগিং সেশন বন্ধ করুন 647213126d7a4c7b.png

6. পরিষ্কার করা

অভিনন্দন! এই ল্যাবে আপনি স্ক্র্যাচ থেকে একটি নতুন Nodejs অ্যাপ্লিকেশন তৈরি করেছেন এবং কনটেইনারগুলির সাথে হট ডিপ্লয়মেন্ট মোডে কাজ করার জন্য এটি কনফিগার করেছেন৷ তারপরে আপনি প্রথাগত অ্যাপ্লিকেশন স্ট্যাকগুলিতে পাওয়া একই বিকাশকারী প্রবাহ অনুসরণ করে একটি দূরবর্তী GKE ক্লাস্টারে আপনার অ্যাপ্লিকেশন স্থাপন এবং ডিবাগ করেছেন।

ল্যাব শেষ করার পরে পরিষ্কার করতে:

  1. ল্যাবে ব্যবহৃত ফাইলগুলি মুছুন
cd ~ && rm -rf mynodejsapp && rm -f setup.sh
  1. সমস্ত সম্পর্কিত অবকাঠামো এবং সংস্থানগুলি সরাতে প্রকল্পটি মুছুন৷