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.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
  • प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे बदला नहीं जा सकता. Cloud Console, एक यूनीक स्ट्रिंग अपने-आप जनरेट करता है. आम तौर पर, आपको इससे कोई फ़र्क़ नहीं पड़ता कि यह क्या है. ज़्यादातर कोडलैब में, आपको अपने प्रोजेक्ट आईडी (आम तौर पर PROJECT_ID के तौर पर पहचाना जाता है) का रेफ़रंस देना होगा. अगर आपको जनरेट किया गया आईडी पसंद नहीं है, तो कोई दूसरा रैंडम आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास अपना नाम आज़माने का विकल्प भी है. इससे आपको पता चलेगा कि वह नाम उपलब्ध है या नहीं. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट की अवधि तक बना रहता है.
  • आपकी जानकारी के लिए बता दें कि एक तीसरी वैल्यू भी होती है, जिसे प्रोजेक्ट नंबर कहते हैं. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
  1. इसके बाद, आपको Cloud Console में बिलिंग चालू करनी होगी, ताकि Cloud संसाधनों/एपीआई का इस्तेमाल किया जा सके. इस कोडलैब को पूरा करने में ज़्यादा समय नहीं लगेगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, संसाधनों को बंद किया जा सकता है. इसके लिए, बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. 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. यह पुष्टि करने के लिए कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है, Cloud Shell में यह कमांड चलाएं:
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 Plugin का इस्तेमाल किया जाएगा.

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 को सही JDK वर्शन पर सेट किया गया हो:
$ 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 वेब ऐप्लिकेशन बनाना सीख लिया है!

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