Spring बूट ऐप्लिकेशन को App Engine स्टैंडर्ड एनवायरमेंट में डिप्लॉय करें

1. शुरू करने से पहले

App Engine ऐप्लिकेशन बनाना, उन्हें बनाए रखना, और ट्रैफ़िक और डेटा स्टोरेज की ज़रूरतें बदलने पर उन्हें स्केल करना आसान है. App Engine के साथ, सर्वर को बनाए रखने की ज़रूरत नहीं होती. आपको बस अपना ऐप्लिकेशन अपलोड करना होता है और वह इस्तेमाल के लिए तैयार हो जाता है.

App Engine ऐप्लिकेशन, आने वाले ट्रैफ़िक के आधार पर अपने-आप स्केल होते हैं. लोड बैलेंसिंग, माइक्रोसेवाएं, अनुमति, SQL और NoSQL डेटाबेस, मेमोरी कैशिंग, ट्रैफ़िक स्प्लिटिंग, लॉगिंग, खोज, वर्शनिंग, रोलआउट और रोलबैक, और सुरक्षा स्कैनिंग, ये सभी सुविधाएं मूल रूप से उपलब्ध हैं और इन्हें अपनी ज़रूरत के हिसाब से बदला जा सकता है.

App Engine स्टैंडर्ड एनवायरमेंट और App Engine फ़्लेक्सिबल एनवायरमेंट, Java, Python, PHP, NodeJS, और Go जैसी कई प्रोग्रामिंग भाषाओं के साथ काम करते हैं. इन दोनों एनवायरमेंट की मदद से, डेवलपर अपने ऐप्लिकेशन के काम करने के तरीके में ज़्यादा से ज़्यादा बदलाव कर सकते हैं. हर एनवायरमेंट की अपनी कुछ खासियतें होती हैं. ज़्यादा जानकारी के लिए, App Engine एनवायरमेंट चुनना लेख पढ़ें.

यहां हम App Engine स्टैंडर्ड एनवायरमेंट में Spring Boot ऐप्लिकेशन डिप्लॉय करने के बारे में जानेंगे. जब कोई व्यक्ति इसका इस्तेमाल नहीं कर रहा होता है, तो स्टैंडर्ड एनवायरमेंट को शून्य इंस्टेंस तक स्केल किया जा सकता है. साथ ही, ज़रूरत पड़ने पर इसे अपने-आप स्केल किया जा सकता है!

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

  • Java प्रोग्रामिंग लैंग्वेज और टूल के बारे में जानकारी होना
  • Vim, Emacs, और nano जैसे स्टैंडर्ड Linux टेक्स्ट एडिटर के बारे में जानकारी होना

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

  • App Engine पर Spring Boot Java ऐप्लिकेशन बनाने का तरीका

आपको इन चीज़ों की ज़रूरत होगी

  • Google Cloud प्रोजेक्ट
  • Google Chrome जैसा ब्राउज़र

2. सेटअप और ज़रूरी शर्तें

अपनी ज़रूरत के हिसाब से एनवायरमेंट सेट अप करना

  1. Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.

b35bf95b8bf3d5d8.pnga99b7ace416376c4.pngbd84a6d3004737c5.png

  • प्रोजेक्ट का नाम , इस प्रोजेक्ट में शामिल लोगों के लिए डिसप्ले नेम होता है. यह एक कैरेक्टर स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी , सभी Google Cloud प्रोजेक्ट के लिए यूनीक होता है. इसे बदला नहीं जा सकता. यानी, सेट करने के बाद इसे बदला नहीं जा सकता. Cloud Console, यूनीक स्ट्रिंग अपने-आप जनरेट करता है. आम तौर पर, आपको इस बारे में चिंता करने की ज़रूरत नहीं होती कि यह क्या है. ज़्यादातर कोडलैब में, आपको अपने प्रोजेक्ट आईडी का रेफ़रंस देना होगा. इसे आम तौर पर PROJECT_ID के तौर पर पहचाना जाता है. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट किया जा सकता है. इसके अलावा, अपना आईडी भी आज़माया जा सकता है और देखा जा सकता है कि वह उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट की अवधि तक बना रहता है.
  • आपकी जानकारी के लिए बता दें कि एक तीसरी वैल्यू भी होती है. यह प्रोजेक्ट नंबर है, जिसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
  1. इसके बाद, Cloud के संसाधनों/एपीआई का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. इस ट्यूटोरियल के बाद, बिलिंग से बचने के लिए, संसाधनों को शट डाउन करें या प्रोजेक्ट को मिटा दें. Google Cloud के नए उपयोगकर्ताओं को, 300 डॉलर का क्रेडिट मुफ़्त में मिलेगा.

Cloud Shell

यहां हम Cloud Shell का इस्तेमाल करेंगे. यह Google Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है.

Cloud Shell चालू करें

  1. Cloud Console में, Cloud Shell चालू करें 853e55310c205094.png पर क्लिक करें.

55efc1aaa7a4d3ad.png

अगर Cloud Shell को पहली बार शुरू किया जा रहा है, तो आपको एक इंटरमीडिएट स्क्रीन दिखेगी. इसमें Cloud Shell के बारे में बताया गया होगा. अगर आपको इंटरमीडिएट स्क्रीन दिखती है, तो जारी रखें पर क्लिक करें.

9c92662c6a846a5c.png

Cloud Shell को सेट अप करने और उससे कनेक्ट होने में कुछ सेकंड लगेंगे.

9f0e51b578fecce5.png

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल लोड किए गए हैं. इसमें 5 जीबी की परसिस्टेंट होम डायरेक्ट्री मिलती है. यह Google Cloud में चलती है. इससे नेटवर्क परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में ज़्यादातर काम ब्राउज़र से किया जा सकता है.

Cloud Shell से कनेक्ट होने के बाद, आपको दिखेगा कि आपकी पुष्टि हो गई है और प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर सेट कर दिया गया है.

  1. पुष्टि करने के लिए, Cloud Shell में यह कमांड चलाएं कि आपकी पुष्टि हो गई है या नहीं:
gcloud auth list

कमांड का आउटपुट

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. पुष्टि करने के लिए, Cloud Shell में यह कमांड चलाएं कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है या नहीं:
gcloud config list project

कमांड का आउटपुट

[core]
project = <PROJECT_ID>

अगर ऐसा नहीं है, तो इस कमांड से इसे सेट किया जा सकता है:

gcloud config set project <PROJECT_ID>

कमांड का आउटपुट

Updated property [core/project].

3. नया Spring Boot वेब ऐप्लिकेशन बनाना

Cloud Shell लॉन्च होने के बाद, Spring Initializr की मदद से नया Spring Boot ऐप्लिकेशन जनरेट करने के लिए, कमांड लाइन का इस्तेमाल किया जा सकता है.

$ curl https://start.spring.io/starter.tgz \
  -d bootVersion=3.0.5 \
  -d dependencies=web \
  -d type=maven-project \
  -d baseDir=gae-standard-example | tar -xzvf -
$ cd gae-standard-example

4. Maven pom.xml को अपडेट करना

Java सर्वर ऐप्लिकेशन को डिप्लॉय करने के दो तरीके हैं. पहला, Maven App Engine प्लग-इन या Gradle App Engine प्लग-इन का इस्तेमाल करके. दूसरा, war पैकेज डायरेक्ट्री को डिप्लॉय करके. ऐप्लिकेशन को डिप्लॉय करने के लिए, Maven App Engine प्लग-इन का इस्तेमाल किया जाएगा.

Maven App Engine प्लग-इन जोड़ना

डिप्लॉयमेंट की प्रोसेस को आसान बनाने के लिए, pom.xml को अपडेट करके उसमें Google Cloud प्लग-इन शामिल करें. फ़ाइल में बदलाव करने के लिए, Vim, nano या Emacs का इस्तेमाल किया जा सकता है.

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
  ...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>appengine-maven-plugin</artifactId>
        <version>2.4.4</version>
        <configuration>
          <version>1</version>
          <projectId>GCLOUD_CONFIG</projectId>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
</project>

5. App Engine डिस्क्रिप्टर जोड़ना

  1. ऐप्लिकेशन को App Engine स्टैंडर्ड एनवायरमेंट में डिप्लॉय करने के लिए, आपको नया src/main/appengine/app.yaml डिस्क्रिप्टर फ़ाइल बनानी होगी.
$ mkdir -p src/main/appengine/
$ touch src/main/appengine/app.yaml
  1. src/main/appengine/app.yaml फ़ाइल में बदलाव करें और यह कॉन्टेंट जोड़ें:

src/main/appengine/app.yaml

runtime: java17
instance_class: F1

6. कंट्रोलर जोड़ना

DemoApplication.java में एक नया कंट्रोलर जोड़ें, जो "hello world!" दिखाता है.

src/main/java/com/example/demo/DemoApplication.java

package com.example.demo;

...

// Add imports
import org.springframework.web.bind.annotation.*;

@SpringBootApplication
public class DemoApplication {
  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }
}

// Add the controller.
@RestController
class HelloWorldController {
  @GetMapping("/")
  public String hello() {
    return "hello world!";
  }
}

7. ऐप्लिकेशन को स्थानीय तौर पर चलाना

  1. पक्का करें कि JAVA_HOME को सही जेडीके वर्शन पर सेट किया गया हो:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
  1. Spring Boot प्लग-इन की मदद से, Spring Boot ऐप्लिकेशन शुरू किया जा सकता है:
$ ./mvnw -DskipTests spring-boot:run
  1. ऐप्लिकेशन शुरू होने के बाद, Cloud Shell टूलबार में वेब की झलक 1a94d5bd10bfc072.pngपर क्लिक करें और पोर्ट 8080 पर झलक देखें को चुनें.

3aca52f76c6c22a3.png

आपके ब्राउज़र में एक टैब खुलता है और उस सर्वर से कनेक्ट होता है जिसे आपने शुरू किया था.

7b0d8494f647822a.png

8. ऐप्लिकेशन को App Engine पर डिप्लॉय करना

  1. सबसे पहले, प्रोजेक्ट को शुरू करें, ताकि App Engine ऐप्लिकेशन चलाए जा सकें. इसके अलावा, प्रोजेक्ट को अमेरिका के मध्य इलाके में चलाने के लिए भी शुरू करें.
$ gcloud app create --region us-central
You are creating an app for project [...].
WARNING: Creating an App Engine application for a project is irreversible and the region
cannot be changed. More information about regions is at
https://cloud.google.com/appengine/docs/locations
  1. इसके बाद, mvn appengine:deploy चलाकर, अपने ऐप्लिकेशन को App Engine स्टैंडर्ड एनवायरमेंट में डिप्लॉय करें.
$ ./mvnw -DskipTests package appengine:deploy
... first time deploy may take a couple of minutes
  1. ऐप्लिकेशन डिप्लॉय होने के बाद, इसे अपने वेब ब्राउज़र में http://<project-id>.appspot.com खोलकर देखा जा सकता है. इसके अलावा, Cloud Shell में यह कमांड भी इस्तेमाल किया जा सकता है:
$ gcloud app browse
... [It may print out the URL for your app]

9. साफ़-सफ़ाई सेवा

App Engine ऐप्लिकेशन को मिटाया नहीं जा सकता, लेकिन उसे बंद किया जा सकता है.

Google Cloud Console में App Engine और Settings पर जाएं. इसके बाद, Disable Application को चुनें:

8052c1e4ad73d70e.png

इसके अलावा, पूरे प्रोजेक्ट को मिटाया जा सकता है:

$ gcloud projects delete YOUR-PROJECT-ID

10. बधाई हो

आपने अपना पहला App Engine वेब ऐप्लिकेशन बनाना सीख लिया है!

ज़्यादा जानें