MongoDB Atlas और Cloud Run पर बिना सर्वर वाला MEAN स्टैक ऐप्लिकेशन

1. परिचय

हम इस पोस्ट में देखेंगे कि Cloud Run और MongoDB, बिना सर्वर वाले MEAN स्टैक ऐप्लिकेशन डेवलपमेंट का अनुभव देने के लिए, एक साथ कैसे काम करते हैं. हम Cloud Run और MongoDB Atlas की मदद से, बिना सर्वर वाला MEAN ऐप्लिकेशन बनाने का तरीका सीखेंगे. यह MogoDB का मल्टी-क्लाउड ऐप्लिकेशन डेटा प्लैटफ़ॉर्म है.

Cloud Run क्या है?

Cloud Run की मदद से, पूरी तरह से मैनेज किए जा रहे प्लैटफ़ॉर्म पर किसी भी भाषा (इनमें Go, Python, Java, Node.js, .NET, और Ruby शामिल हैं) में लिखे गए स्केलेबल ऐप्लिकेशन बनाए और डिप्लॉय किए जा सकते हैं. Cloud Run सबसे अलग दिखता है, क्योंकि इसकी मदद से हम:

  • एक से ज़्यादा स्टेटलेस कंटेनर में पैकेज कोड, जिसे अनुरोध की जानकारी है और जिसे एचटीटीपी अनुरोधों के ज़रिए शुरू किया गया है
  • सिर्फ़ उन संसाधनों के लिए ही शुल्क लें जिनका आपने इस्तेमाल किया है
  • अपनी पसंद की किसी भी प्रोग्रामिंग भाषा, ऑपरेटिंग सिस्टम की लाइब्रेरी या किसी बाइनरी का इस्तेमाल किया जा सकता है

पूरी जानकारी के साथ ज़्यादा सुविधाओं के बारे में जानने के लिए, यह लिंक देखें.

MongoDB Atlas के साथ बिना सर्वर वाला डेटाबेस

MongoDB ने बिना सर्वर वाले इंस्टेंस लॉन्च किए. यह इस समस्या को हल करने के लिए, Atlas में पूरी तरह से मैनेज किया जाने वाला नया डेटाबेस डिप्लॉयमेंट है. बिना सर्वर वाले इंस्टेंस की मदद से, आपको इन्फ़्रास्ट्रक्चर के बारे में कभी नहीं सोचना पड़ता. बस अपने डेटाबेस को डिप्लॉय करें. यह ज़रूरत के हिसाब से, आसानी से बड़ा और छोटा हो जाएगा. इसके लिए, आपको मैन्युअल तरीके से मैनेजमेंट की ज़रूरत नहीं होती. अच्छी बात यह है कि आपको सिर्फ़ अपनी सेवाओं के लिए शुल्क देना होगा. अपने आर्किटेक्चर को सर्वरलेस बनाने के लिए, हम Cloud Run और MongoDB Atlas की सुविधाओं का इस्तेमाल करेंगे.

MEAN स्टैक

MEAN स्टैक एक टेक्नोलॉजी स्टैक है, जिसका इस्तेमाल पूरी तरह से JavaScript और JSON का इस्तेमाल करके, फ़ुल स्टैक वेब ऐप्लिकेशन बनाने के लिए किया जाता है. MEAN स्टैक चार मुख्य कॉम्पोनेंट से बना होता है: MongoDB, Express, Angular, और Node.js.

  • MongoDB, डेटा को सेव करने के लिए ज़िम्मेदार है.
  • Express.js, एपीआई बनाने के लिए Node.js वेब ऐप्लिकेशन फ़्रेमवर्क है.
  • Angular एक क्लाइंट-साइड JavaScript प्लैटफ़ॉर्म है.
  • Node.js सर्वर साइड JavaScript रनटाइम एनवायरमेंट है. सर्वर, डेटाबेस से कनेक्ट करने और डेटा वापस पाने और स्टोर करने के लिए MongoDB Node.js ड्राइवर का इस्तेमाल करता है.

आपको क्या बनाना होगा

आपको MongoDB, Express JS, Angular JS, और Node JS में फ़ुल स्टैक कर्मचारी-नौकरी की भूमिका वाला ऐप्लिकेशन लिखना होगा. इसमें ये चीज़ें शामिल हैं:

  • नोड JS और एक्सप्रेस JS में एक सर्वर ऐप्लिकेशन, जिसे कंटेनर बनाया गया है
  • AngularJS में क्लाइंट ऐप्लिकेशन का बिल्ड, कंटेनर के मुताबिक बनाया गया है
  • दोनों ऐप्लिकेशन, Cloud Run में डिप्लॉय किए जाते हैं
  • सर्वर ऐप्लिकेशन, MongoDB NodeJS ड्राइवर का इस्तेमाल करके Serverless MongoDB इंस्टेंस से कनेक्ट होता है
  • Server API, डेटाबेस के साथ रीड-राइट इंटरैक्शन करता है
  • क्लाइंट ऐप्लिकेशन, कर्मचारी की नौकरी के आवेदन के लिए यूज़र इंटरफ़ेस है

आप इन चीज़ों के बारे में जानेंगे

  • बिना सर्वर वाले MongoDB इंस्टेंस बनाने का तरीका
  • Cloud Run प्रोजेक्ट सेट अप करने का तरीका
  • Google Cloud Run में वेब ऐप्लिकेशन डिप्लॉय करने का तरीका
  • MEAN स्टैक ऐप्लिकेशन बनाने और डिप्लॉय करने का तरीका

2. ज़रूरी शर्तें

  • Chrome या Firefox जैसा ब्राउज़र
  • Google Cloud Platform प्रोजेक्ट जिसमें आपका Cloud Run और MongoDB Atlas इंस्टेंस शामिल है
  • अगले सेक्शन में MEAN स्टैक ऐप्लिकेशन बनाने का तरीका बताया गया है

3. MongoDB Serverless इंस्टेंस और डेटाबेस बनाएं

e5cc775a49f2fb0.png

  • साइन अप करने के बाद, "डेटाबेस बनाएं" पर क्लिक करें बिना सर्वर वाला नया इंस्टेंस बनाने के लिए बटन. नीचे दिया गया कॉन्फ़िगरेशन चुनें:

fca10bf6f031af7a.png

  • बिना सर्वर वाले इंस्टेंस का प्रावधान हो जाने के बाद, आपको यह काम करते हुए दिखेगा

d13c4b8bdd9569fd.png

  • "कनेक्ट करें" पर क्लिक करें कनेक्शन आईपी पता और डेटाबेस उपयोगकर्ता जोड़ने के लिए बटन
  • इस कोडलैब के लिए, हम "कहीं से भी ऐक्सेस करने की अनुमति दें" का इस्तेमाल करेंगे सेटिंग. MongoDB Atlas में सुरक्षा और ऐक्सेस से जुड़ी कई सुविधाएं होती हैं. सुरक्षा से जुड़ी सुविधाओं के दस्तावेज़ वाले लेख में, इन सुविधाओं के बारे में ज़्यादा जानकारी मिल सकती है
  • डेटाबेस उपयोगकर्ता नाम और पासवर्ड के लिए अपनी पसंद के क्रेडेंशियल का इस्तेमाल करें. इन चरणों को पूरा करने के बाद, आपको ये चीज़ें दिखेंगी:

bffeef16de1d1cd2.png

  • "कनेक्शन का तरीका चुनें" पर क्लिक करके आगे बढ़ें बटन पर क्लिक करें और फिर "अपना ऐप्लिकेशन कनेक्ट करें" चुनें

75771e64427acd5e.png

  • आपको दिख रही कनेक्शन स्ट्रिंग को कॉपी करें और पासवर्ड को अपनी कनेक्शन स्ट्रिंग से बदलें. हम उस स्ट्रिंग का इस्तेमाल करके, नीचे दिए गए सेक्शन में अपने डेटाबेस से कनेक्ट करेंगे

4. Cloud Run प्रोजेक्ट सेट अप करना

  • सबसे पहले, Cloud Console में साइन इन करें, नया प्रोजेक्ट बनाएं या मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें
  • अपने बनाए प्रोजेक्ट का प्रोजेक्ट आईडी याद रखें
  • नीचे एक इमेज दी गई है, जिसमें नया प्रोजेक्ट पेज दिखाया गया है. इसमें प्रोजेक्ट आईडी बनाते समय, उसे देखा जा सकता है

f32dbd4eb2b7501e.png

  • इसके बाद, Cloud Shell से Cloud Run API चालू करें:
  • Cloud Console से Cloud Shell को चालू करें. बस Cloud Shell को चालू करें पर क्लिक करें
  • Cloud Shell से कनेक्ट करने के बाद, आपको दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है और प्रोजेक्ट पहले से ही आपके प्रोजेक्ट आईडी पर सेट है. अगर किसी कारण से, प्रोजेक्ट सेट नहीं है, तो बस निम्न आदेश जारी करें:
gcloud config set project PROJECT_ID

3da173210a016316.png

  • नीचे दिए गए निर्देश का इस्तेमाल करें:
gcloud services enable run.googleapis.com
  • हम कोड रेफ़रंस के लिए, Cloud Shell और Cloud Shell Editor का इस्तेमाल करेंगे. Cloud Shell Editor को ऐक्सेस करने के लिए, Cloud Shell Terminal में, Editor खोलें पर क्लिक करें:

83793a577f08e4d4.png

5. क्लोन MEAN स्टैक प्रोजेक्ट

  • हम कर्मचारी मैनेजमेंट से जुड़ा वेब ऐप्लिकेशन डिप्लॉय करेंगे. REST API को Express और Node.js की मदद से बनाया गया है; ऐंग्युलर के साथ वेब इंटरफ़ेस; साथ ही, डेटा को MongoDB Atlas के इंस्टेंस में सेव किया जाएगा, जिसे हमने पहले बनाया था
  • Cloud Shell टर्मिनल में इस निर्देश को एक्ज़ीक्यूट करके, प्रोजेक्ट रिपॉज़िटरी का क्लोन बनाएं:
git clone https://github.com/mongodb-developer/mean-stack-example.git

6. Express और Node.js REST API को डिप्लॉय करें

Docker कॉन्फ़िगरेशन फ़ाइल

  • सबसे पहले, हम Express REST API के लिए Cloud Run सेवा डिप्लॉय करेंगे. हमारे डिप्लॉयमेंट के लिए सबसे ज़रूरी फ़ाइल Docker कॉन्फ़िगरेशन फ़ाइल है. आइए इस पर एक नज़र डालें:

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
  • नया Cloud Run डिप्लॉयमेंट शुरू करने के लिए, बाईं ओर साइडबार पर Cloud Run आइकॉन पर क्लिक करें:

48c73bda3aa4ea02.png

  • फिर, Cloud Run पर डिप्लॉय करें आइकॉन पर क्लिक करें:

cde124ba8ec23b34.png

  • सेवा कॉन्फ़िगरेशन को इस तरह से भरें:
  • सेवा का नाम: node-expression-api
  • डिप्लॉयमेंट प्लैटफ़ॉर्म: Cloud Run (पूरी तरह से मैनेज किया गया)
  • क्षेत्र: इंतज़ार का समय कम करने के लिए, अपने डेटाबेस के आस-पास का इलाका चुनें
  • पुष्टि करना: उन अनुरोधों को अनुमति दें जिनकी पुष्टि नहीं की गई है
  • रिविज़न सेटिंग में जाकर, उन्हें बड़ा करने के लिए 'बेहतर सेटिंग दिखाएँ' पर क्लिक करें:
  • कंटेनर पोर्ट: 5200
  • एनवायरमेंट वैरिएबल. यहां दिए गए की-वैल्यू पेयर को जोड़ें और पक्का करें कि आपने अपने MongoDB Atlas डिप्लॉयमेंट के लिए कनेक्शन स्ट्रिंग जोड़ी हो:
ATLAS_URI:mongodb+srv:/<username>:<password>@sandbox.pv0l7.mongodb.net/meanStackExample?retryWrites=true&w=majority
  • बिल्ड एनवायरमेंट के लिए, Cloud Build को चुनें
  • आखिर में, बिल्ड सेटिंग सेक्शन में, इन्हें चुनें:
  • बिल्डर: डॉकर
  • Docker: माध्य-stack-example/server/Dockerfile
  • अपनी पहली Cloud Run सेवा के डिप्लॉयमेंट के बाद, 'डिप्लॉय करें' बटन पर क्लिक करें और फिर पूरी जानकारी वाले लॉग दिखाएं!
  • बिल्ड पूरा होने के बाद, आपको डिप्लॉय की गई सेवा का यूआरएल दिखेगा:

759c69ba52a85b10.png

  • यूआरएल खोलें और ‘/कर्मचारी' जोड़ें आखिर तक
  • आपको एक खाली अरे दिखेगा, क्योंकि फ़िलहाल डेटाबेस में कोई दस्तावेज़ नहीं है.

चलिए यूज़र इंटरफ़ेस डिप्लॉय करते हैं, ताकि हम इसमें कुछ जोड़ सकें!

7. Angular वेब ऐप्लिकेशन को डिप्लॉय करें

हमारा Angular ऐप्लिकेशन क्लाइंट डायरेक्ट्री में है. इसे डिप्लॉय करने के लिए, हम Nginx सर्वर और Docker का इस्तेमाल करेंगे. एक आइडिया, आपके Angular ऐप्लिकेशन डिप्लॉयमेंट के लिए Firebase होस्टिंग का इस्तेमाल करने का एक विकल्प भी है, क्योंकि आप अपनी सामग्री को सीधे सीडीएन (कॉन्टेंट डिलीवरी नेटवर्क) पर भेज सकते हैं.

कॉन्फ़िगरेशन फ़ाइलें

कॉन्फ़िगरेशन फ़ाइलों पर एक नज़र डालें:

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;
       }
   }
}
  • Ngenx कॉन्फ़िगरेशन में, हम डिफ़ॉल्ट पोर्ट—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;"]
  • Docker कॉन्फ़िगरेशन में, हम Node.js डिपेंडेंसी इंस्टॉल करते हैं और प्रोजेक्ट बनाते हैं. इसके बाद, हम बनाई गई फ़ाइलों को कंटेनर में कॉपी करते हैं, कॉन्फ़िगर करते हैं, और Nginx सेवा को शुरू करते हैं
  • आखिर में, हमें यूआरएल को REST API से कॉन्फ़िगर करना होगा, ताकि हमारा क्लाइंट ऐप्लिकेशन उस यूआरएल को अनुरोध भेज सके. हम प्रोजेक्ट में सिर्फ़ एक फ़ाइल में यूआरएल का इस्तेमाल कर रहे हैं, इसलिए हम यूआरएल को हार्डकोड कर देंगे. इसके अलावा, आपके पास विंडो ऑब्जेक्ट में एनवायरमेंट वैरिएबल अटैच करने और उसे वहां से ऐक्सेस करने का विकल्प भी होता है.

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'; 
...
  • हम Cloud Run पर डिप्लॉय करने के लिए तैयार हैं! इन कॉन्फ़िगरेशन सेटिंग के साथ नया डिप्लॉयमेंट शुरू करें:
      - Service Settings: Create a service
    
  • सेवा का नाम: angular-web-app
  • डिप्लॉयमेंट प्लैटफ़ॉर्म: Cloud Run (पूरी तरह से मैनेज किया गया)
  • पुष्टि करना: उन अनुरोधों को अनुमति दें जिनकी पुष्टि नहीं की गई है
  • बिल्ड एनवायरमेंट के लिए, Cloud Build को चुनें
  • आखिर में, बिल्ड सेटिंग सेक्शन में, इन्हें चुनें:
  • बिल्डर: डॉकर
  • Docker: माध्य-stack-example/client/Dockerfile
  • उस 'डिप्लॉय करें' बटन पर फिर से क्लिक करें और क्लाउड पर अपने ऐप्लिकेशन के शिप होते ही लॉग देखें! डिप्लॉयमेंट पूरा होने के बाद, आपको क्लाइंट ऐप्लिकेशन का यूआरएल दिखेगा

5da1d7defc1082fc.png

  • यूआरएल खोलें और अपने ऐप्लिकेशन के साथ खेलें!

db154f1cd57e38f0.png

8. व्यवस्थित करें

इस पोस्ट में इस्तेमाल किए गए संसाधनों के लिए, आपके Google Cloud खाते पर शुल्क न लगे, इसके लिए यह तरीका अपनाएं.

MongoDB इंस्टेंस खत्म करें

  1. MongoDB इंस्टेंस क्लस्टर पर जाएं
  2. अपने बनाए गए क्लस्टर को चुनें
  3. क्लस्टर के नाम के बगल में दिए गए एलिप्स पर क्लिक करें और सूची से 'हटाएं' चुनें

Cloud Run डिप्लॉयमेंट मिटाना

  1. Google Cloud Console में, Cloud Run पेज पर जाएं
  2. वह Cloud Run सेवा चुनें जिसे आप मिटाना चाहते हैं
  3. कंसोल में सबसे ऊपर मौजूद, 'मिटाएं' आइकॉन पर क्लिक करें

9. बधाई हो

बधाई हो, आपने Cloud Run पर MEAN Stack Web ऐप्लिकेशन बना लिया है!