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

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

अपने हिसाब से एनवायरमेंट सेट अप करना

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

प्रोजेक्ट आईडी याद रखें. यह सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होता है. ऊपर दिया गया नाम पहले ही इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. माफ़ करें! इस कोड लैब में इसे बाद में PROJECT_ID के तौर पर दिखाया जाएगा.

  1. इसके बाद, Google Cloud के संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग चालू करनी होगी.

इस कोडलैब को पूरा करने में आपको कुछ डॉलर से ज़्यादा खर्च नहीं करने पड़ेंगे. हालांकि, अगर ज़्यादा संसाधनों का इस्तेमाल किया जाता है या उन्हें चालू रखा जाता है, तो यह खर्च बढ़ सकता है.

Google Cloud के नए उपयोगकर्ता, 300 डॉलर के क्रेडिट के साथ मुफ़्त में आज़माने की सुविधा पा सकते हैं.

Cloud Shell

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

Cloud Shell चालू करें

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

अगर आपने Cloud Shell का इस्तेमाल पहले कभी नहीं किया है, तो आपको एक इंटरमीडिएट स्क्रीन दिखेगी. यह स्क्रीन, फ़ोल्ड के नीचे दिखेगी. इसमें Cloud Shell के बारे में जानकारी दी गई होगी. अगर ऐसा है, तो जारी रखें पर क्लिक करें. इसके बाद, आपको यह स्क्रीन कभी नहीं दिखेगी. एक बार दिखने वाली स्क्रीन ऐसी दिखती है:

Cloud Shell को चालू करने और उससे कनेक्ट होने में सिर्फ़ कुछ सेकंड लगेंगे.

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

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`
gcloud config list project

कमांड आउटपुट

[core]
project = <PROJECT_ID>

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

gcloud config set project <PROJECT_ID>

कमांड आउटपुट

Updated property [core/project].

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

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

Java सर्वर ऐप्लिकेशन को डिप्लॉय करने के दो तरीके हैं. पहला, Maven App Engine Plugin या Gradle App Engine Plugin का इस्तेमाल करके. दूसरा, 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.1.0</version>
        <configuration>
          <version>1</version>
          <projectId>GCLOUD_CONFIG</projectId>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
</project>
  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: java11
instance_class: F4

एक नया कंट्रोलर जोड़ें, जो 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
@RestController
public class DemoApplication {
  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }

  @GetMapping("/")
  public String hello() {
    return "hello world!";
  }
}
  1. Spring Boot प्लगिन की मदद से, Spring Boot ऐप्लिकेशन शुरू किया जा सकता है:
$ ./mvnw -DskipTests spring-boot:run
  1. ऐप्लिकेशन शुरू होने के बाद, Cloud Shell टूलबार में वेब की झलक पर क्लिक करें. इसके बाद, पोर्ट 8080 पर झलक देखें को चुनें.

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

  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]

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

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