Spring बूट ऐप्लिकेशन को Cloud SQL से कनेक्ट करना

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

Cloud SQL, पूरी तरह से मैनेज की गई डेटाबेस सेवा है. इसकी मदद से, Google Cloud पर अपने मिलते-जुलते डेटाबेस को आसानी से सेट अप किया जा सकता है. साथ ही, उसे बनाए रखने, मैनेज करने, और सही तरीके से चलाने में भी मदद मिलती है. Cloud SQL का इस्तेमाल, Cloud SQL for MySQL या Cloud SQL for PostgreSQL के साथ किया जा सकता है.

इस कोडलैब में, Cloud SQL for MySQL इंस्टेंस को सेट अप करने का तरीका बताया गया है. इसके बाद, Spring Boot ऐप्लिकेशन को अपडेट करके, Cloud SQL इंस्टेंस को बैकएंड स्टोरेज के तौर पर इस्तेमाल करने का तरीका बताया गया है. Google Cloud SQL के लिए Spring Boot Starter, अपने-आप कॉन्फ़िगर होने वाला DataSource उपलब्ध कराता है. इससे, अपने कोड में कम से कम बदलाव करके, Cloud SQL का आसानी से फ़ायदा लिया जा सकता है. यह कोडलैब, Spring Petclinic के सोर्स कोड का इस्तेमाल करता है.

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

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

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

  • अपने Spring Boot ऐप्लिकेशन में Cloud SQL का इस्तेमाल करें.

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

  • Google Cloud प्रोजेक्ट
  • कोई ब्राउज़र, जैसे कि Google Chrome या Firefox

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 चालू करें

  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. Cloud SQL for MySQL इंस्टेंस सेट अप करना

  1. Cloud Shell लॉन्च होने के बाद, कमांड लाइन का इस्तेमाल करके नया Cloud SQL इंस्टेंस बनाया जा सकता है:
$ gcloud sql instances create my-instance

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

  1. अब एक ऐसा डेटाबेस बनाएं जिसका इस्तेमाल Petclinic ऐप्लिकेशन के लिए किया जाएगा:
$ gcloud sql databases create petclinic --instance my-instance

Cloud Console के ज़रिए भी इंस्टेंस को ऐक्सेस और कॉन्फ़िगर किया जा सकता है.

  1. यहां दी गई कमांड चलाकर, इंस्टेंस कनेक्शन का नाम project-id:zone-id:instance-id फ़ॉर्मैट में पाएं. इसका इस्तेमाल बाद में, Spring Boot ऐप्लिकेशन को कॉन्फ़िगर करने के लिए किया जाएगा.
$ gcloud sql instances describe my-instance | grep connectionName

4. Petclinic ऐप्लिकेशन को स्थानीय तौर पर क्लोन करना और उसकी जांच करना

  1. अब आपको Petclinic ऐप्लिकेशन को स्थानीय तौर पर क्लोन करना होगा.
$ git clone https://github.com/spring-projects/spring-petclinic

$ cd spring-petclinic
  1. पक्का करें कि Java का सही वर्शन सेट हो और Petclinic ऐप्लिकेशन को स्थानीय तौर पर चलाएं.
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/

$ ./mvnw spring-boot:run
  1. Cloud Shell में, वेब प्रीव्यू 1a94d5bd10bfc072.png पर क्लिक करें. इसके बाद, पोर्ट 8080 पर झलक देखें को चुनें.

3aca52f76c6c22a3.png

आपको अपने ब्राउज़र में, Petclinic का होम पेज इस तरह दिखेगा:

34e0d4f1e1765560.png

  1. डेटा जोड़ें और एक्सप्लोर करें. यह ऐप्लिकेशन, इन-मेमोरी HyperSQL डेटाबेस का इस्तेमाल करता है. अब आपको HyperSQL के बजाय Cloud SQL को अपने डेटाबेस के तौर पर इस्तेमाल करना होगा.

5. Petclinic में Cloud SQL का इस्तेमाल करना

Maven pom.xml फ़ाइल अपडेट करना

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

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
    ...
    <!-- Add Spring Cloud GCP Dependency BOM -->
    <dependencyManagement>
        <dependencies>
          <dependency>
          <groupId>com.google.cloud</groupId>
          <artifactId>spring-cloud-gcp-dependencies</artifactId>
          <version>4.1.4</version>
          <type>pom</type>
          <scope>import</scope>
          </dependency>
      </dependencies>
    </dependencyManagement>
    <dependencies>
      ...
      <!-- Add CloudSQL Starter for MySQL -->
      <dependency>
        <groupId>com.google.cloud</groupId>
        <artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
      </dependency>
      ...
    </dependencies>
</project>

application-mysql.properties फ़ाइल अपडेट करना

  1. src/main/resources/application-mysql.properties के कॉन्टेंट को इन प्रॉपर्टी से बदलें. आपको पिछले चरण में इंस्टेंस कनेक्शन का नाम सेट करना होगा.

src/main/resources/application-mysql.properties

database=mysql

spring.cloud.gcp.sql.database-name=petclinic
spring.cloud.gcp.sql.instance-connection-name=YOUR_CLOUD_SQL_INSTANCE_CONNECTION_NAME

# Initialize the database since the newly created Cloud SQL database has no tables. The following flag is for Spring Boot 2.5+.
spring.sql.init.mode=always  

  1. आखिर में, Spring Boot ऐप्लिकेशन में Cloud SQL for MySQL प्रोफ़ाइल चालू करें. इसके लिए, application.properties' spring.profiles.active प्रॉपर्टी में mysql जोड़ें:

src/main/resources/application.properties

# Keep the content of the file the same
...

# In the last line, add mysql to the spring.profiles.active property
spring.profiles.active=mysql

6. Cloud Shell में ऐप्लिकेशन चलाना

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

3aca52f76c6c22a3.png

आपको अपने ब्राउज़र में, Spring Petclinic का होम पेज फिर से दिखना चाहिए. यह ऐसा दिखता है:

34e0d4f1e1765560.png

  1. पालतू जानवर के मालिक की एंट्री जोड़ें.

ज़रूरी नहीं: पुष्टि करें कि Cloud SQL ने डेटा सेव कर लिया है

यहां दिखाए गए तरीके से, यह पुष्टि की जा सकती है कि आपने जो डेटा डाला है वह Cloud SQL में सेव हो गया है. जब आपसे पासवर्ड डालने के लिए कहा जाए, तब Enter दबाएं.

$ gcloud sql connect my-instance -u root
Whitelisting your IP for incoming connection for 5 minutes...done.
Enter password: <Press Enter, there is no password by default>
...
mysql> use petclinic;
mysql> select * from owners;

ज़रूरी नहीं: Cloud SQL इंस्टेंस मिटाना

ऐप्लिकेशन बंद करने के बाद, इस निर्देश का इस्तेमाल करके Cloud SQL इंस्टेंस मिटाया जा सकता है:

$ gcloud sql instances delete my-instance

7. बधाई हो

आपने Spring Boot ऐप्लिकेशन में Cloud SQL से कनेक्ट करने का तरीका सीखा!

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