১. ভূমিকা
এই পোস্টে আমরা দেখব কিভাবে ক্লাউড রান এবং মঙ্গোডিবি একত্রিত হয়ে একটি সম্পূর্ণ সার্ভারলেস MEAN স্ট্যাক অ্যাপ্লিকেশন ডেভেলপমেন্টের অভিজ্ঞতা প্রদান করে। আমরা শিখব কিভাবে ক্লাউড রান এবং মঙ্গোডিবি অ্যাটলাস (মঙ্গোডিবি-র মাল্টি-ক্লাউড অ্যাপ্লিকেশন ডেটা প্ল্যাটফর্ম) ব্যবহার করে একটি সার্ভারলেস MEAN অ্যাপ্লিকেশন তৈরি করতে হয়।
ক্লাউড রান কী?
ক্লাউড রান আপনাকে একটি সম্পূর্ণ পরিচালিত প্ল্যাটফর্মে যেকোনো ভাষায় (গো, পাইথন, জাভা, নোড.জেএস, ডট নেট এবং রুবি সহ) লেখা স্কেলেবল কন্টেইনারাইজড অ্যাপ তৈরি ও স্থাপন করতে সক্ষম করে। ক্লাউড রান নিম্নলিখিত সুবিধাগুলো দিয়ে অন্যদের থেকে নিজেকে আলাদা করে:
- কোডকে একাধিক অনুরোধ-সচেতন স্টেটলেস কন্টেইনারে প্যাকেজ করুন এবং HTTP অনুরোধের মাধ্যমে এটিকে আহ্বান করুন।
- শুধুমাত্র আপনার ব্যবহৃত নির্দিষ্ট রিসোর্সগুলোর জন্যই আপনাকে চার্জ করা হবে।
- আপনার পছন্দের যেকোনো প্রোগ্রামিং ভাষা বা অপারেটিং সিস্টেম লাইব্রেরি, অথবা যেকোনো বাইনারি সমর্থন করুন।
আরও বৈশিষ্ট্য বিস্তারিতভাবে জানতে এই লিঙ্কটি দেখুন।
MongoDB Atlas সহ সার্ভারবিহীন ডাটাবেস
এই সমস্যা সমাধানের জন্য MongoDB অ্যাটলাসে সার্ভারলেস ইনস্ট্যান্স চালু করেছে, যা একটি নতুন, সম্পূর্ণভাবে পরিচালিত, সার্ভারবিহীন ডাটাবেস ডেপ্লয়মেন্ট। সার্ভারলেস ইনস্ট্যান্সের মাধ্যমে আপনাকে অবকাঠামো নিয়ে কখনও ভাবতে হবে না — শুধু আপনার ডাটাবেস ডেপ্লয় করুন এবং এটি চাহিদা অনুযায়ী নির্বিঘ্নে আপ এবং ডাউন স্কেল করবে — যার জন্য কোনো সরাসরি ব্যবস্থাপনার প্রয়োজন নেই। আর সবচেয়ে ভালো দিক হলো, আপনি শুধুমাত্র আপনার চালানো অপারেশনগুলোর জন্যই চার্জ হবেন। আমাদের আর্কিটেকচারকে সত্যিকারের সার্ভারলেস করতে, আমরা ক্লাউড রান এবং MongoDB অ্যাটলাসের সক্ষমতাগুলোকে একত্রিত করব।
গড় স্ট্যাক
MEAN স্ট্যাক হলো একটি প্রযুক্তি স্ট্যাক, যা দিয়ে সম্পূর্ণভাবে জাভাস্ক্রিপ্ট এবং JSON ব্যবহার করে ফুল-স্ট্যাক ওয়েব অ্যাপ্লিকেশন তৈরি করা যায়। MEAN স্ট্যাকটি চারটি প্রধান উপাদান নিয়ে গঠিত—MongoDB, Express, Angular এবং Node.js।
- MongoDB ডেটা সংরক্ষণের দায়িত্বে থাকে।
- এক্সপ্রেস.জেএস হলো এপিআই (API) তৈরির জন্য একটি নোড.জেএস (Node.js) ওয়েব অ্যাপ্লিকেশন ফ্রেমওয়ার্ক।
- অ্যাঙ্গুলার হলো একটি ক্লায়েন্ট-সাইড জাভাস্ক্রিপ্ট প্ল্যাটফর্ম।
- Node.js হলো একটি সার্ভার-সাইড জাভাস্ক্রিপ্ট রানটাইম এনভায়রনমেন্ট। সার্ভারটি ডাটাবেসের সাথে সংযোগ স্থাপন করতে এবং ডেটা পুনরুদ্ধার ও সংরক্ষণ করতে MongoDB Node.js ড্রাইভার ব্যবহার করে।
আপনি যা তৈরি করবেন
আপনি MongoDB, Express JS, Angular JS এবং Node JS ব্যবহার করে একটি ফুল স্ট্যাক এমপ্লয়ি-জব রোল অ্যাপ্লিকেশন লিখবেন। এতে রয়েছে:
- Node JS এবং Express JS-এ তৈরি একটি কন্টেইনারাইজড সার্ভার অ্যাপ্লিকেশন।
- AngularJS-এ নির্মিত একটি ক্লায়েন্ট অ্যাপ্লিকেশন, কন্টেইনারাইজড
- উভয় অ্যাপ্লিকেশনই ক্লাউড রানে ডেপ্লয় করা হয়েছে।
- সার্ভার অ্যাপটি MongoDB NodeJS ড্রাইভার ব্যবহার করে সার্ভারলেস MongoDB ইনস্ট্যান্সের সাথে সংযোগ স্থাপন করে।
- সার্ভার এপিআই ডাটাবেসের সাথে রিড-রাইট ইন্টারঅ্যাকশন সম্পন্ন করে।
- ক্লায়েন্ট অ্যাপ্লিকেশন হলো কর্মচারী-ভূমিকা অ্যাপ্লিকেশনের ইউজার ইন্টারফেস।
আপনি যা শিখবেন
- সার্ভারলেস MongoDB ইনস্ট্যান্স কীভাবে তৈরি করবেন
- ক্লাউড রান প্রজেক্ট কীভাবে সেট আপ করবেন
- গুগল ক্লাউড রানে ওয়েব অ্যাপ্লিকেশন কীভাবে ডেপ্লয় করবেন
- কীভাবে একটি MEAN স্ট্যাক অ্যাপ্লিকেশন তৈরি এবং স্থাপন করবেন
২. প্রয়োজনীয়তা
- ক্রোম বা ফায়ারফক্সের মতো একটি ব্রাউজার
- একটি গুগল ক্লাউড প্ল্যাটফর্ম প্রজেক্ট যাতে আপনার ক্লাউড রান এবং মঙ্গোডিবি অ্যাটলাস ইনস্ট্যান্স রয়েছে
- পরবর্তী বিভাগে MEAN স্ট্যাক অ্যাপ্লিকেশন তৈরি করার ধাপগুলোর তালিকা রয়েছে।
৩. MongoDB সার্ভারলেস ইনস্ট্যান্স এবং ডাটাবেস তৈরি করুন
- শুরু করতে, গুগল ক্লাউডে MongoDB Atlas দিয়ে কাজ শুরু করুন।

- সাইন আপ করার পর, একটি নতুন সার্ভারলেস ইনস্ট্যান্স তৈরি করতে "Build a Database" বোতামে ক্লিক করুন। নিম্নলিখিত কনফিগারেশনটি নির্বাচন করুন:

- আপনার সার্ভারলেস ইনস্ট্যান্সটি প্রোভিশন করা হয়ে গেলে, আপনি দেখবেন সেটি চালু হয়ে গেছে।

- একটি সংযোগ আইপি ঠিকানা এবং একটি ডাটাবেস ব্যবহারকারী যোগ করতে "কানেক্ট" বোতামে ক্লিক করুন।
- এই কোডল্যাবের জন্য, আমরা "Allow Access from Anywhere" সেটিংটি ব্যবহার করব। MongoDB Atlas-এ কিছু নিরাপত্তা এবং অ্যাক্সেস বৈশিষ্ট্য রয়েছে। আপনি নিরাপত্তা বৈশিষ্ট্য ডকুমেন্টেশন আর্টিকেলটিতে এ সম্পর্কে আরও জানতে পারবেন।
- ডাটাবেস ইউজারনেম এবং পাসওয়ার্ডের জন্য আপনার পছন্দমতো ক্রেডেনশিয়াল ব্যবহার করুন। এই ধাপগুলো সম্পন্ন হলে, আপনি নিম্নলিখিতটি দেখতে পাবেন:

- "Choose a connection method" বোতামে ক্লিক করে এবং তারপর "Connect your application" নির্বাচন করে এগিয়ে যান।

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

- এরপর, ক্লাউড শেল থেকে ক্লাউড রান এপিআই সক্রিয় করুন:
- ক্লাউড কনসোল থেকে ক্লাউড শেল সক্রিয় করুন। শুধু 'Activate Cloud Shell'-এ ক্লিক করুন।
- ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রজেক্টটি আপনার প্রজেক্ট আইডি-তে সেট করা আছে। যদি কোনো কারণে প্রজেক্টটি সেট করা না থাকে, তবে কেবল নিম্নলিখিত কমান্ডটি দিন:
gcloud config set project PROJECT_ID

- নিচের কমান্ডটি ব্যবহার করুন:
gcloud services enable run.googleapis.com
- কোড রেফারেন্সের জন্য আমরা ক্লাউড শেল এবং ক্লাউড শেল এডিটর ব্যবহার করব। ক্লাউড শেল এডিটর অ্যাক্সেস করতে, ক্লাউড শেল টার্মিনাল থেকে 'ওপেন এডিটর'-এ ক্লিক করুন:

৫. MEAN স্ট্যাক প্রজেক্ট ক্লোন করুন
- আমরা একটি কর্মচারী ব্যবস্থাপনা ওয়েব অ্যাপ্লিকেশন স্থাপন করব। REST API-টি Express এবং Node.js দিয়ে তৈরি করা হয়েছে; ওয়েব ইন্টারফেসটি Angular দিয়ে; এবং ডেটা আমাদের পূর্বে তৈরি করা MongoDB Atlas ইনস্ট্যান্সে সংরক্ষণ করা হবে।
- ক্লাউড শেল টার্মিনালে নিম্নলিখিত কমান্ডটি চালিয়ে প্রজেক্ট রিপোজিটরিটি ক্লোন করুন:
git clone https://github.com/mongodb-developer/mean-stack-example.git
৬. এক্সপ্রেস এবং নোড.জেএস রেস্ট এপিআই স্থাপন করুন
ডকার কনফিগারেশন ফাইল
- প্রথমে, আমরা এক্সপ্রেস REST API-এর জন্য একটি ক্লাউড রান সার্ভিস ডেপ্লয় করব। আমাদের ডেপ্লয়মেন্টের জন্য সবচেয়ে গুরুত্বপূর্ণ ফাইলটি হলো ডকার কনফিগারেশন ফাইল। চলুন, এটি দেখে নেওয়া যাক:
mean-stack-example/server/Dockerfile
# Use the official lightweight Node.js 12 image.
# https://hub.docker.com/_/node
FROM node:17-slim
WORKDIR /usr/app
COPY ./ /usr/app
# Install dependencies and build the project.
RUN npm install
RUN npm run build
# Run the web service on container startup.
CMD ["node", "dist/server.js"]
- এই কনফিগারেশনটি Node.js সেট আপ করে এবং প্রজেক্টটি কপি ও বিল্ড করে। কন্টেইনারটি চালু হলে, নিচের কমান্ডটি সার্ভিসটি চালু করে।
node dist/server.js
- নতুন ক্লাউড রান ডেপ্লয়মেন্ট শুরু করতে, বাম সাইডবারে থাকা ক্লাউড রান আইকনে ক্লিক করুন:

- তারপর, Deploy to Cloud Run আইকনটিতে ক্লিক করুন:

- পরিষেবা কনফিগারেশনটি নিম্নরূপভাবে পূরণ করুন:
- পরিষেবার নাম: নোড-এক্সপ্রেস-এপিআই
- ডেপ্লয়মেন্ট প্ল্যাটফর্ম: ক্লাউড রান (সম্পূর্ণ পরিচালিত)
- অঞ্চল: লেটেন্সি কমাতে আপনার ডাটাবেস অঞ্চলের কাছাকাছি একটি অঞ্চল নির্বাচন করুন।
- প্রমাণীকরণ: প্রমাণীকরণবিহীন আহ্বানের অনুমতি দিন
- রিভিশন সেটিংস-এর অধীনে, অ্যাডভান্সড সেটিংস প্রসারিত করতে 'শো অ্যাডভান্সড সেটিংস'-এ ক্লিক করুন:
- কন্টেইনার বন্দর: ৫২০০
- এনভায়রনমেন্ট ভেরিয়েবল। নিম্নলিখিত কী-ভ্যালু পেয়ারটি যোগ করুন এবং আপনার নিজের MongoDB Atlas ডেপ্লয়মেন্টের জন্য কানেকশন স্ট্রিংটিও যোগ করা নিশ্চিত করুন:
ATLAS_URI:mongodb+srv:/<username>:<password>@sandbox.pv0l7.mongodb.net/meanStackExample?retryWrites=true&w=majority
- বিল্ড এনভায়রনমেন্টের জন্য ক্লাউড বিল্ড নির্বাচন করুন।
- অবশেষে, বিল্ড সেটিংস বিভাগে, নির্বাচন করুন:
- নির্মাতা: ডকার
- ডকার: mean-stack-example/server/Dockerfile
- আপনার প্রথম ক্লাউড রান সার্ভিসের ডেপ্লয়মেন্ট অনুসরণ করতে ডেপ্লয় বাটনে ক্লিক করুন এবং তারপরে শো ডিটেইলড লগস-এ ক্লিক করুন!
- বিল্ড সম্পন্ন হওয়ার পর, আপনি ডেপ্লয় করা সার্ভিসটির URL দেখতে পাবেন:

- URL-টি খুলুন এবং এর শেষে '/employees' যুক্ত করুন।
- আপনি একটি খালি অ্যারে দেখতে পাবেন, কারণ বর্তমানে ডাটাবেসে কোনো ডকুমেন্ট নেই।
চলুন ইউজার ইন্টারফেসটি ডেপ্লয় করি, যাতে আমরা কিছু যোগ করতে পারি!
৭. অ্যাঙ্গুলার ওয়েব অ্যাপ্লিকেশনটি ডিপ্লয় করুন
আমাদের অ্যাঙ্গুলার অ্যাপ্লিকেশনটি ক্লায়েন্ট ডিরেক্টরিতে রয়েছে। এটি ডেপ্লয় করার জন্য আমরা এনজিনক্স সার্ভার এবং ডকার ব্যবহার করব। একটি বিষয় উল্লেখ্য যে, আপনার অ্যাঙ্গুলার অ্যাপ্লিকেশন ডেপ্লয়মেন্টের জন্য ফায়ারবেস হোস্টিং ব্যবহার করারও একটি বিকল্প রয়েছে, কারণ সেক্ষেত্রে আপনি সরাসরি একটি সিডিএন (কন্টেন্ট ডেলিভারি নেটওয়ার্ক)-এ আপনার কন্টেন্ট পরিবেশন করতে পারেন।
কনফিগারেশন ফাইল
চলুন কনফিগারেশন ফাইলগুলো দেখে নেওয়া যাক:
mean-stack-example/client/nginx.conf
events{}
http {
include /etc/nginx/mime.types;
server {
listen 8080;
server_name 0.0.0.0;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
}
- Nginx কনফিগারেশনে, আমরা ডিফল্ট পোর্ট—8080, এবং শুরুর ফাইল— index.html নির্দিষ্ট করে দিই।
mean-stack-example/client/Dockerfile
FROM node:17-slim AS build
WORKDIR /usr/src/app
COPY package.json package-lock.json ./
# Install dependencies and copy them to the container
RUN npm install
COPY . .
# Build the Angular application for production
RUN npm run build --prod
# Configure the nginx web server
FROM nginx:1.17.1-alpine
COPY nginx.conf /etc/nginx/nginx.conf
COPY --from=build /usr/src/app/dist/client /usr/share/nginx/html
# Run the web service on container startup.
CMD ["nginx", "-g", "daemon off;"]
- ডকার কনফিগারেশনে, আমরা Node.js ডিপেন্ডেন্সিগুলো ইনস্টল করি এবং প্রজেক্টটি বিল্ড করি। এরপর, বিল্ড করা ফাইলগুলো কন্টেইনারে কপি করে Nginx সার্ভিসটি কনফিগার ও স্টার্ট করি।
- অবশেষে, আমাদের REST API-এর URL-টি কনফিগার করতে হবে, যাতে আমাদের ক্লায়েন্ট অ্যাপ্লিকেশনটি সেখানে রিকোয়েস্ট পাঠাতে পারে। যেহেতু আমরা প্রজেক্টের শুধুমাত্র একটি ফাইলে URL-টি ব্যবহার করছি, তাই আমরা URL-টি হার্ডকোড করে দেব। বিকল্পভাবে, আপনি উইন্ডো অবজেক্টের সাথে এনভায়রনমেন্ট ভেরিয়েবলটি যুক্ত করে সেখান থেকে এটি অ্যাক্সেস করতে পারেন।
mean-stack-example/client/src/app/employee.service.ts
...
@Injectable({
providedIn: 'root'
})
export class EmployeeService {
// Replace with the URL of your REST API
private url = 'https://node-express-api-vsktparjta-uc.a.run.app';
...
- আমরা ক্লাউড রান-এ ডেপ্লয় করার জন্য প্রস্তুত! নিম্নলিখিত কনফিগারেশন সেটিংস সহ একটি নতুন ডেপ্লয়মেন্ট শুরু করুন:
- Service Settings: Create a service - পরিষেবার নাম: অ্যাঙ্গুলার-ওয়েব-অ্যাপ
- ডেপ্লয়মেন্ট প্ল্যাটফর্ম: ক্লাউড রান (সম্পূর্ণ পরিচালিত)
- প্রমাণীকরণ: প্রমাণীকরণবিহীন আহ্বানের অনুমতি দিন
- বিল্ড এনভায়রনমেন্টের জন্য ক্লাউড বিল্ড নির্বাচন করুন।
- অবশেষে, বিল্ড সেটিংস বিভাগে, নির্বাচন করুন:
- নির্মাতা: ডকার
- ডকার: mean-stack-example/client/Dockerfile
- আবার সেই Deploy বাটনটিতে ক্লিক করুন এবং আপনার অ্যাপটি ক্লাউডে পাঠানো পর্যন্ত লগগুলো দেখুন! ডেপ্লয়মেন্ট সম্পূর্ণ হলে, আপনি ক্লায়েন্ট অ্যাপের URL দেখতে পাবেন।

- ইউআরএলটি খুলুন এবং আপনার অ্যাপ্লিকেশনটি নিয়ে পরীক্ষা-নিরীক্ষা করুন!

৮. পরিষ্কার করুন
এই পোস্টে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে, এই ধাপগুলো অনুসরণ করুন।
MongoDB ইনস্ট্যান্সগুলি বন্ধ করুন
- MongoDB ইনস্ট্যান্স ক্লাস্টারগুলিতে যান
- আপনার তৈরি করা ক্লাস্টার, ইনস্ট্যান্সটি নির্বাচন করুন।
- ক্লাস্টারের নামের পাশে থাকা ডট ডট চিহ্নে ক্লিক করুন এবং তালিকা থেকে Terminate নির্বাচন করুন।
ক্লাউড রান ডিপ্লয়মেন্টগুলি মুছে ফেলুন
- গুগল ক্লাউড কনসোলের ক্লাউড রান পৃষ্ঠায় যান
- যে ক্লাউড রান পরিষেবাটি আপনি মুছতে চান তা নির্বাচন করুন।
- কনসোলের উপরে থাকা ডিলিট আইকনটিতে ক্লিক করুন।
৯. অভিনন্দন
অভিনন্দন, আপনি ক্লাউড রান-এ সফলভাবে MEAN স্ট্যাক ওয়েব অ্যাপ্লিকেশন তৈরি করেছেন!