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

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

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

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

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

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

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

  • अपने Spring बूट ऐप्लिकेशन में 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 में बिलिंग चालू करनी होगी. इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. इस ट्यूटोरियल के अलावा, बिलिंग से बचने के लिए संसाधनों को बंद करें. इसके लिए, अपने बनाए गए संसाधनों को मिटाएं या प्रोजेक्ट को मिटाएं. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.

Cloud Shell चालू करें

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

55efc1aaa7a4d3ad.png

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

9c92662c6a846a5c.png

प्रावधान करने और Cloud Shell से कनेक्ट होने में कुछ ही समय लगेगा.

9f0e51b578fecce5.png

इस वर्चुअल मशीन में डेवलपमेंट के सभी ज़रूरी टूल मौजूद हैं. इसमें लगातार पांच जीबी की होम डायरेक्ट्री मिलती है और यह 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. 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 बूट ऐप्लिकेशन को कॉन्फ़िगर करने में करेंगे.
$ 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. पालतू जानवरों के लिए Cloud SQL का इस्तेमाल करना

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

यहां बताए गए तरीके से, pom.xml फ़ाइल को अपडेट करें. स्टार्टर, आपके Cloud SQL डेटाबेस से कनेक्ट करने के लिए अपने-आप कॉन्फ़िगर होने वाला DataSource ऑब्जेक्ट देता है. फ़ाइल में बदलाव करने के लिए Vim, नैनो या 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>

ऐप्लिकेशन-mysql.property अपडेट करें

  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. आखिर में, mysql को application.properties में जोड़कर, स्प्रिंग बूट ऐप्लिकेशन में Cloud SQL for MySQL प्रोफ़ाइल को चालू करें spring.profiles.active प्रॉपर्टी:

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 बूट प्लगिन से Spring बूट ऐप्लिकेशन को सामान्य रूप से शुरू कर सकते हैं:
$ ./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 बूट ऐप्लिकेशन में Cloud SQL से कनेक्ट करने का तरीका सीखा है!

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