ক্লাউড এসকিউএল-এ একটি স্প্রিং বুট অ্যাপ সংযুক্ত করুন

১. শুরু করার আগে

ক্লাউড এসকিউএল একটি সম্পূর্ণভাবে পরিচালিত ডাটাবেস পরিষেবা, যা গুগল ক্লাউডে আপনার রিলেশনাল ডাটাবেসগুলো সেট আপ, রক্ষণাবেক্ষণ, পরিচালনা এবং অ্যাডমিনিস্টার করা সহজ করে তোলে। আপনি ক্লাউড এসকিউএল ফর মাইএসকিউএল (Cloud SQL for MySQL) অথবা ক্লাউড এসকিউএল ফর পোস্টজিআরইএসকিউএল (Cloud SQL for PostgreSQL) উভয়ের সাথেই ক্লাউড এসকিউএল ব্যবহার করতে পারেন।

এই কোডল্যাবে, আপনি শিখবেন কীভাবে একটি Cloud SQL for MySQL ইনস্ট্যান্স সেট আপ করতে হয় এবং তারপর একটি Spring Boot অ্যাপকে আপডেট করে সেই Cloud SQL ইনস্ট্যান্সটিকে তার ব্যাকএন্ড স্টোরেজ হিসেবে ব্যবহার করতে হয়। Spring Boot Starter for Google Cloud SQL একটি স্বয়ংক্রিয়ভাবে কনফিগার করা DataSource প্রদান করে, যা আপনাকে আপনার কোডে ন্যূনতম পরিবর্তন করে সহজেই Cloud SQL-এর সুবিধা নিতে সাহায্য করে। এই কোডল্যাবটিতে Spring Petclinic সোর্স কোড ব্যবহার করা হয়েছে।

পূর্বশর্ত

  • জাভা প্রোগ্রামিং ভাষা এবং টুলস সম্পর্কে পরিচিতি
  • Vim, Emacs, এবং nano-এর মতো প্রচলিত লিনাক্স টেক্সট এডিটর সম্পর্কে জ্ঞান।

আপনি যা করবেন

  • আপনার Spring Boot অ্যাপে Cloud SQL ব্যবহার করুন।

আপনার যা যা লাগবে

২. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিতে পরিবেশ সেটআপ

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রজেক্ট আইডি উল্লেখ করতে হবে (যা সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি আপনার নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে।
  • আপনার অবগতির জন্য জানাচ্ছি যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নম্বর , এবং কিছু এপিআই এটি ব্যবহার করে থাকে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
  1. এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হবে না, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর বিলিং এড়াতে রিসোর্সগুলো বন্ধ করার জন্য, আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা প্রজেক্টটি ডিলিট করে দিতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, Activate Cloud Shell-এ ক্লিক করুন। 853e55310c205094.png .

55efc1aaa7a4d3ad.png

আপনি যদি প্রথমবারের মতো ক্লাউড শেল চালু করেন, তাহলে এটি কী তা বর্ণনা করে একটি মধ্যবর্তী স্ক্রিন আপনার সামনে আসবে। যদি একটি মধ্যবর্তী স্ক্রিন আসে, তাহলে 'চালিয়ে যান' (Continue) এ ক্লিক করুন।

9c92662c6a846a5c.png

ক্লাউড শেল প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত।

9f0e51b578fecce5.png

এই ভার্চুয়াল মেশিনটিতে প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার প্রায় সমস্ত কাজই একটি ব্রাউজার দিয়ে করা সম্ভব।

ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি দেখতে পাবেন যে আপনাকে প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে।

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
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 কমান্ডটি আপনার প্রজেক্ট সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি তা না থাকে, তবে আপনি এই কমান্ডটি দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

৩. একটি Cloud SQL for MySQL ইনস্ট্যান্স সেট আপ করুন

  1. ক্লাউড শেল চালু হওয়ার পর, আপনি কমান্ড লাইন ব্যবহার করে একটি নতুন ক্লাউড এসকিউএল ইনস্ট্যান্স তৈরি করতে পারেন:
$ gcloud sql instances create my-instance

এই অপারেশনটি সম্পন্ন হলে, আপনার ইনস্ট্যান্সটি ব্যবহারের জন্য প্রস্তুত হয়ে যাবে।

  1. এখন একটি ডেটাবেস তৈরি করুন যা আপনি পেটক্লিনিক অ্যাপের জন্য ব্যবহার করবেন:
$ gcloud sql databases create petclinic --instance my-instance

এছাড়াও আপনি ক্লাউড কনসোলের মাধ্যমে ইনস্ট্যান্সটি অ্যাক্সেস এবং কনফিগার করতে পারেন।

  1. নিম্নলিখিত কমান্ডটি চালিয়ে project-id:zone-id:instance-id ফরম্যাটে ইনস্ট্যান্স কানেকশন নামটি সংগ্রহ করুন। পরবর্তীতে আপনার স্প্রিং বুট অ্যাপ কনফিগার করার সময় এটি ব্যবহার করতে হবে।
$ gcloud sql instances describe my-instance | grep connectionName

৪. পেটক্লিনিক অ্যাপটি ক্লোন করে স্থানীয়ভাবে পরীক্ষা করুন।

  1. এখন আপনি Petclinic অ্যাপটি স্থানীয়ভাবে ক্লোন করবেন।
$ git clone https://github.com/spring-projects/spring-petclinic

$ cd spring-petclinic
  1. সঠিক জাভা সংস্করণ সেট করা আছে কিনা তা নিশ্চিত করুন এবং স্থানীয়ভাবে পেটক্লিনিক অ্যাপটি চালান।
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/

$ ./mvnw spring-boot:run
  1. ওয়েব প্রিভিউতে ক্লিক করুন 1a94d5bd10bfc072.png ক্লাউড শেল-এ, এরপর পোর্ট ৮০৮০-তে প্রিভিউ নির্বাচন করুন।

3aca52f76c6c22a3.png

আপনার ব্রাউজারে এখানে দেখানো Petclinic হোমপেজটি দেখতে পাবেন:

34e0d4f1e1765560.png

  1. অ্যাপটি ব্যবহার করে দেখুন এবং ডেটা যোগ করুন। অ্যাপটি একটি ইন-মেমরি হাইপারএসকিউএল (HyperSQL) ডেটাবেস ব্যবহার করে। আপনি এখন আপনার ডেটাবেস হিসেবে হাইপারএসকিউএল-এর পরিবর্তে ক্লাউড এসকিউএল (Cloud SQL) ব্যবহার শুরু করবেন।

৫. পেটক্লিনিকে ক্লাউড এসকিউএল ব্যবহার করুন

Maven pom.xml ফাইলটি আপডেট করুন।

এখানে দেখানো অনুযায়ী pom.xml ফাইলটি আপডেট করুন। স্টার্টারটি আপনার ক্লাউড 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. অবশেষে, application.properties ফাইলের spring.profiles.active প্রপার্টিতে mysql যোগ করে Spring Boot অ্যাপে একটি Cloud SQL for 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

৬. ক্লাউড শেলে অ্যাপটি চালান।

  1. আপনি Spring Boot প্লাগইন ব্যবহার করে স্বাভাবিকভাবে Spring Boot অ্যাপটি চালু করতে পারেন:
$ ./mvnw -DskipTests spring-boot:run
  1. অ্যাপটি চালু হয়ে গেলে, ওয়েব প্রিভিউ-তে ক্লিক করুন। 1a94d5bd10bfc072.png ক্লাউড শেল টুলবারে, তারপর পোর্ট 8080-এ প্রিভিউ নির্বাচন করুন।

3aca52f76c6c22a3.png

আপনার ব্রাউজারে এখানে দেখানো ছবির মতো স্প্রিং পেটক্লিনিকের হোমপেজটি আবার দেখতে পাবেন:

34e0d4f1e1765560.png

  1. পোষ্য মালিকের একটি তথ্য যোগ করুন।

ঐচ্ছিক: যাচাই করুন যে ক্লাউড এসকিউএল ডেটা সংরক্ষণ করেছে।

এখানে দেখানো অনুযায়ী, আপনার প্রবেশ করানো ডেটা ক্লাউড এসকিউএল-এ সংরক্ষিত হয়েছে কিনা তা যাচাই করতে পারেন। পাসওয়ার্ড চাওয়া হলে এন্টার চাপুন।

$ 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;

ঐচ্ছিক: আপনার ক্লাউড SQL ইনস্ট্যান্সটি মুছে ফেলুন

আপনার অ্যাপটি বন্ধ করার পরে, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করে ক্লাউড এসকিউএল ইনস্ট্যান্সটি মুছে ফেলতে পারেন:

$ gcloud sql instances delete my-instance

৭. অভিনন্দন

আপনি আপনার Spring Boot অ্যাপে Cloud SQL-এর সাথে সংযোগ স্থাপন করতে শিখেছেন!

আরও জানুন