১. ভূমিকা
আপনি কি বই পড়তে ভালোবাসেন কিন্তু পছন্দের বিশাল সম্ভার দেখে দিশেহারা হয়ে পড়েন? এমন একটি এআই-চালিত অ্যাপের কথা ভাবুন যা শুধু আপনার জন্য সেরা বইয়ের সুপারিশই করে না, বরং আপনার পছন্দের জনরার ওপর ভিত্তি করে একটি সংক্ষিপ্ত সারাংশও প্রদান করে, যা আপনাকে বইটির মূলভাব সম্পর্কে একটি ধারণা দেয়। এই কোডল্যাবে, আমি আপনাকে Gemini-এর সহায়তায় BigQuery, Vertex AI এবং Cloud Run ব্যবহার করে এমনই একটি অ্যাপ্লিকেশন তৈরি করার পদ্ধতি ধাপে ধাপে দেখাব।
প্রকল্পের সংক্ষিপ্ত বিবরণ
আমাদের ব্যবহারের ক্ষেত্রটি এই ৪টি মূল উপাদানকে কেন্দ্র করে গড়ে উঠেছে:
- বইয়ের ডেটাবেস: ইন্টারনেট আর্কাইভের বইয়ের বিশাল BigQuery পাবলিক ডেটাসেটটি আমাদের পূর্ণাঙ্গ বইয়ের ক্যাটালগ হিসেবে কাজ করবে।
- এআই সামারাইজেশন ইঞ্জিন: জেমিনি-প্রো ল্যাঙ্গুয়েজ মডেল দ্বারা সজ্জিত গুগল ক্লাউড ফাংশনস, ব্যবহারকারীর অনুরোধ অনুযায়ী তথ্যবহুল সারাংশ তৈরি করবে।
- BigQuery ইন্টিগ্রেশন: BigQuery-এর অভ্যন্তরে একটি রিমোট ফাংশন, যা চাহিদা অনুযায়ী বইয়ের সারাংশ এবং থিম সরবরাহ করার জন্য আমাদের ক্লাউড ফাংশনকে কল করে।
- ইউজার ইন্টারফেস: ক্লাউড রান-এ হোস্ট করা একটি ওয়েব অ্যাপ, যা ব্যবহারকারীদের ফলাফল দেখার জন্য একটি ওয়েব অ্যাপ্লিকেশন প্রদান করবে।
আমরা সম্পূর্ণ প্রজেক্ট বাস্তবায়নকে ৩টি কোডল্যাবে ভাগ করেছি, এবং এই কোডল্যাবটি নিচের তালিকায় থাকা কোডল্যাব ৩-কে অন্তর্ভুক্ত করে:
কোডল্যাব ১: জেমিনি ব্যবহার করে একটি জেমিনি অ্যাপ্লিকেশনের জন্য একটি জাভা ক্লাউড ফাংশন তৈরি করুন।
কোডল্যাব ২: BigQuery ব্যবহার করে Gemini-এর মাধ্যমে শুধুমাত্র SQL-ভিত্তিক জেনারেটিভ এআই অ্যাপ্লিকেশন তৈরি করুন।
কোডল্যাব ৩: Gemini ব্যবহার করে একটি Java Spring Boot ওয়েব অ্যাপ্লিকেশন তৈরি করুন যা BigQuery-এর সাথে ইন্টারঅ্যাক্ট করে।
২. Gemini ব্যবহার করে BigQuery সহ একটি Spring Boot ওয়েব অ্যাপ্লিকেশন তৈরি করুন।
আপনি যা তৈরি করবেন
- প্রয়োজনীয় BigQuery ডেটাসেট এবং টেবিল তৈরি করুন।
- জাভা স্প্রিং বুট ওয়েব অ্যাপ্লিকেশন যা BigQuery-এর মাধ্যমে বইয়ের ডেটা সংগ্রহ করে এবং ওয়েবে তা প্রদর্শন করে।
- এই অ্যাপটি ক্লাউড রান-এ ডেপ্লয় করা হয়েছে।
- আপনি মিথুন রাশির সাহায্যে এই পদক্ষেপগুলো বাস্তবায়ন করবেন।
৩. প্রয়োজনীয়তা
- ক্রোম বা ফায়ারফক্সের মতো একটি ব্রাউজার
- বিলিং সক্ষম একটি গুগল ক্লাউড প্রজেক্ট
- পার্ট ১ কোডল্যাব " Use a Java Cloud Function for a Generative AI application" এর অংশ হিসেবে ক্লাউড ফাংশনটি ডেপ্লয় করা থাকলে তা সহায়ক হবে।
- শর্তসাপেক্ষ: এই মুহূর্তে যদি আপনার কাছে বিনামূল্যে গুগল ক্লাউড ক্রেডিট লিঙ্কের অ্যাক্সেস থাকে (যা কর্মশালার আয়োজক আপনাকে দিয়ে থাকতে পারেন), তাহলে আগে থেকেই ক্রেডিট অ্যাক্টিভেশন এবং প্রজেক্ট তৈরির ধাপগুলো সম্পন্ন করতে নিচের পৃষ্ঠার নির্দেশাবলী ব্যবহার করুন। যদি আপনার কাছে এই লিঙ্কটি না থাকে, তাহলে নিচে দেওয়া প্রজেক্ট এবং বিলিংয়ের পূর্বশর্তের ধাপগুলো অনুসরণ করুন:
আপনার প্রকল্প তৈরি করুন
আপনি যদি উপরের শর্তসাপেক্ষ ধাপে উল্লিখিত লিঙ্কটি ব্যবহার করে ইতিমধ্যেই একটি বিলিং অ্যাকাউন্ট সক্রিয় করে থাকেন এবং একটি প্রজেক্ট তৈরি করে থাকেন, তাহলে আপনি নীচের ধাপগুলি এড়িয়ে যেতে পারেন।
- গুগল ক্লাউড কনসোলের প্রজেক্ট সিলেক্টর পেজে, একটি গুগল ক্লাউড প্রজেক্ট নির্বাচন করুন বা তৈরি করুন।
- আপনার ক্লাউড প্রোজেক্টের জন্য বিলিং চালু আছে কিনা তা নিশ্চিত করুন। কোনো প্রোজেক্টে বিলিং চালু আছে কিনা তা কীভাবে পরীক্ষা করবেন, তা জেনে নিন।
ক্লাউড শেল সক্রিয় করুন
- আপনি ক্লাউড শেল ব্যবহার করবেন, যা গুগল ক্লাউডে চালিত একটি কমান্ড-লাইন পরিবেশ এবং এতে bq আগে থেকেই লোড করা থাকে।
ক্লাউড কনসোল থেকে, উপরের ডান কোণায় থাকা ‘Activate Cloud Shell’-এ ক্লিক করুন:

- ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি দেখতে পাবেন যে আপনি ইতিমধ্যেই প্রমাণীকৃত এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে। আপনি যে প্রমাণীকৃত, তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list
- gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান।
gcloud config list project
- আপনার প্রজেক্টটি সেট করা না থাকলে, এটি সেট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
gcloud config set project <YOUR_PROJECT_ID>
gcloud কমান্ড ও তার ব্যবহারবিধি জানতে ডকুমেন্টেশন দেখুন।
৪. জেমিনি এবং প্রয়োজনীয় এপিআই সক্রিয় করা
মিথুন রাশি সক্রিয় করুন
- এপিআই (API) সক্রিয় করতে জেমিনি মার্কেটপ্লেসে যান। এছাড়াও আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:
gcloud services enable cloudaicompanion.googleapis.com --project PROJECT_ID
- জেমিনি পেজটিতে যান এবং 'চ্যাটিং শুরু করুন'-এ ক্লিক করুন।
অন্যান্য প্রয়োজনীয় এপিআই সক্রিয় করুন
আমরা সেটা কীভাবে করব? চলুন, জেমিনিকে সেটাই জিজ্ঞেস করি, কেমন? কিন্তু তার আগে মনে রাখবেন:
দ্রষ্টব্য: এলএলএম (LLM) অনির্দিষ্ট। তাই আপনি যখন এই প্রম্পটগুলো চেষ্টা করবেন, তখন আপনি যে প্রতিক্রিয়া পাবেন তা আমার স্ক্রিনশটের প্রতিক্রিয়াগুলো থেকে ভিন্ন হতে পারে।
গুগল ক্লাউড কনসোলের সার্চ বারের পাশে উপরের ডান কোণায় থাকা 'ওপেন জেমিনি' আইকনটিতে ক্লিক করে জেমিনি চ্যাট কনসোলে যান।

এই প্রশ্নটি 'এখানে একটি প্রম্পট লিখুন' বিভাগে টাইপ করুন:
How do I enable the BigQuery and Cloud Run apis using gcloud command?
আপনি নিচের ছবিতে দেখানো প্রতিক্রিয়াটি পাবেন:

এটি কপি করুন (আপনি কমান্ড স্নিপেটের উপরে থাকা কপি আইকনটি ব্যবহার করতে পারেন) এবং সংশ্লিষ্ট সার্ভিসগুলো চালু করতে ক্লাউড শেল টার্মিনালে এটি চালান:
- bigquery.googleapis.com
- run.googleapis.com
৫. বইয়ের তথ্যের জন্য BigQuery পাবলিক ডেটাসেটটি অন্বেষণ করুন।
অসংখ্য ইন্টারনেট আর্কাইভ বইয়ের তথ্য সম্বলিত BigQuery পাবলিক ডেটাসেটটির সাথে পরিচিত হওয়ার মাধ্যমে শুরু করুন। যদি আপনি এই লিঙ্ক থেকে internetarchivebooks ডেটাসেটটিতে যেতে না পারেন, তবে ডেটাসেটটি অন্বেষণ করতে নিচের ধাপগুলো অনুসরণ করতে পারেন অথবা বিকল্পভাবে এই ডকুমেন্টেশনটি অনুসরণ করুন:
আপনি এই পাবলিক ডেটাসেটটি BigQuery এক্সপ্লোরার প্যানে খুঁজে পাবেন। BigQuery কনসোলে প্রবেশ করলে আপনি এটি বাম দিকে দেখতে পাবেন।

সার্চ বারে "gdelt-bq" বা "internetarchivebooks" টাইপ করুন এবং 'সার্চ অল প্রজেক্টস'-এ ক্লিক করুন। ফলাফলটি এক্সপ্যান্ড করুন এবং নিচের ছবিতে দেখানো অনুযায়ী ইন্টারনেট আর্কাইভ বইগুলোকে স্টার চিহ্ন দিয়ে চিহ্নিত করুন:
.
ডেটা সেটটি প্রসারিত করুন, gdelt-bq.internetarchivebooks-এ ক্লিক করুন এবং তারপরে 1920 টেবিলের ডেটা প্রিভিউ করুন। এই টেবিলে 1920 সালের আর্কাইভ করা বইগুলো অন্তর্ভুক্ত রয়েছে।
পরবর্তী বিভাগগুলিতে আমরা যে স্কিমাটি ব্যবহার করব তা দেখতে, নিম্নলিখিত কোয়েরিটি চালান:
select * from `gdelt-bq.internetarchivebooks.1920` limit 5;
আমরা আমাদের কোডল্যাবের জন্য নিম্নলিখিত তিনটি ফিল্ড ব্যবহার করব:
- BookMeta_Title (শিরোনাম)
- থিমসমূহ (থিমগুলো সেমিকোলন (;) দ্বারা পৃথক করা)
- BookMeta_FullText (বইটির সম্পূর্ণ পাঠ্য)
৬. জেমিনি ব্যবহার করে বেসিক জাভা ক্লাউড রান টেমপ্লেট তৈরি করুন।
আপনার ক্লাউড শেল টার্মিনালের উপরের ডান কোণায় থাকা ওপেন এডিটর আইকনে ক্লিক করে ক্লাউড শেল এডিটর খুলুন (আমি সাধারণত টার্মিনাল এবং এডিটর সমান্তরালভাবে আলাদা ট্যাবে খুলতে পছন্দ করি, যাতে আমরা একটিতে কোড লিখতে এবং অন্যটিতে বিল্ড করতে পারি)।

এডিটরটি খোলার পর, নিশ্চিত করুন যে এডিটর কনসোলের নিচের ডান কোণায় থাকা জেমিনি লোগোটি সক্রিয় আছে (এবং বাতিল করা নেই)। এছাড়াও নিশ্চিত করুন যে নিচের বাম কোণায় থাকা আপনার গুগল ক্লাউড প্রজেক্টটি আপনার বর্তমান সক্রিয় প্রজেক্টটির দিকে নির্দেশ করছে, যেটি নিয়ে আপনি কাজ করতে চান। যদি সেগুলি নিষ্ক্রিয় থাকে, তবে সেগুলিতে ক্লিক করুন, অনুমোদন দিন, যে গুগল ক্লাউড প্রজেক্টটির দিকে এটি নির্দেশ করতে চান সেটি নির্বাচন করুন এবং সেগুলিকে সক্রিয় করে নিন।
উভয়টি সক্রিয় হয়ে গেলে, নিচের বাম কোণায় থাকা প্রজেক্টের নামে ক্লিক করুন এবং খুলে যাওয়া "Cloud Code" শিরোনামের পপ-আপ তালিকাটিতে, নিচে স্ক্রল করে "New Application" পর্যন্ত যান।

সেই তালিকা থেকে ক্লাউড রান অ্যাপ্লিকেশনটি নির্বাচন করুন। যে তালিকাটি পপ-আপ হবে, সেখান থেকে জাভা নির্বাচন করুন:

প্রাপ্ত তালিকায়, helloworld-এর পরিবর্তে প্রজেক্টের নাম 'bookshelf-web' টাইপ করুন এবং OK-তে ক্লিক করুন।

দারুণ! আপনি জেমিনি দিয়ে আপনার সাধারণ জাভা ক্লাউড রান অ্যাপ্লিকেশনটি বুটস্ট্র্যাপ করেছেন এবং এনাবল ও অ্যাক্টিভেশন কনফিগারেশন ছাড়া আর তেমন কিছুই করেননি, তাই না?
প্রকল্পের কাঠামোটি আপনার দেখা উচিত:

এই মুহূর্তে আপনি অ্যাপ্লিকেশনটি ডেপ্লয় করার জন্য প্রস্তুত। কিন্তু আমরা এই কারণে এটি শুরু করিনি। আমাদের এখনও ওয়েব অ্যাপ্লিকেশনটির মূল কার্যকারিতা অন্তর্ভুক্ত করতে হবে, যা হলো BigQuery ডাটাবেস থেকে অ্যানালিটিক্স ডেটা সংগ্রহ করে ওয়েবে প্রদর্শন করা।
এটি করার জন্য, আপনি জেমিনির সাহায্যে আরও প্রম্পট যোগ করে আপনার কোড পর্যায়ক্রমে উন্নত করতে পারেন অথবা নিজের মতো করে লজিক লিখতে পারেন। আমি দুটোরই মিশ্রণ করতে যাচ্ছি।
৭. ওয়েব অ্যাপে BigQuery ব্যবহার করার জন্য ডিপেন্ডেন্সিগুলো যোগ করুন।
এখন যেহেতু অ্যাপ্লিকেশনটি বুটস্ট্র্যাপ করা হয়ে গেছে, আমরা অ্যাপ্লিকেশন সোর্স এবং প্রোপার্টিজে পরিবর্তন আনার জন্য প্রস্তুত। প্রথমে, চলুন ডিপেন্ডেন্সিগুলো যোগ করি। এর জন্য জেমিনিকে সুপারিশ করতে বলা যাক।
ক্লাউড কোড এডিটরে, নিশ্চিত করুন যে স্ট্যাটাস বারের নিচের ডান কোণায় ‘Gemini active’ এবং নিচের বাম কোণায় সক্রিয় গুগল ক্লাউড প্রজেক্টটি নির্বাচিত দেখাচ্ছে।
ক্লাউড কোড এডিটরে pom.xml ফাইলে যান, </dependencies> ট্যাগের ঠিক উপরে, নিম্নলিখিত প্রম্পট কমেন্টটি টাইপ করুন:

<!-- What maven dependency should I include to access BigQuery in the app-->
আমি নিচের ছবিতে দেখানো এই ফলাফলটি পেয়েছি:

সুবিধার জন্য ডিপেন্ডেন্সিটি এখানে পেস্ট করছি। যদি আপনার ক্ষেত্রে সাজেশনটি একটি ভার্সন ট্যাগসহ আসে, তবে আপনি সেটি উপেক্ষা করতে পারেন।
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-bigquery</artifactId>
</dependency>
৮. বুকশেলফের ডেটা ওয়েবে আনার জন্য উৎস আপডেট করুন।
HelloWorldController.java কোডটি নিম্নলিখিত কোড দিয়ে প্রতিস্থাপন করুন:
package cloudcode.helloworld.web;
import java.util.UUID;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.JobId;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobInfo;
import com.google.cloud.bigquery.QueryJobConfiguration;
import com.google.cloud.bigquery.TableResult;
import com.google.cloud.bigquery.FieldValueList;
@RestController
public final class HelloWorldController {
/**
* Create an endpoint for the landing page
* @return the BigQuery analytics results string to the web
*/
@GetMapping("/")
public String helloWorld() throws Exception {
/* Connect to bigquery and write a select SQL to fetch Title, Theme and Summary fields from the table `bookshelf.bookshelf_theme` if you have executed the codelab 1 of this series, if not just directly use records from gdelt-bq.internetarchivebooks.1920 table */
String query = "SELECT BookMeta_Title || ' (' || Themes || ') ' as summary from gdelt-bq.internetarchivebooks.1920 limit 10 ";
BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
QueryJobConfiguration queryConfig =
QueryJobConfiguration.newBuilder(query)
.setUseLegacySql(false)
.build();
// Create a job ID so that we can safely retry.
JobId jobId = JobId.of(UUID.randomUUID().toString());
Job queryJob = bigquery.create(JobInfo.newBuilder(queryConfig).setJobId(jobId).build());
// Wait for the query to complete.
queryJob = queryJob.waitFor();
// Check for errors
if (queryJob == null) {
throw new RuntimeException("Job no longer exists");
} else if (queryJob.getStatus().getError() != null) {
throw new RuntimeException(queryJob.getStatus().getError().toString());
}
// Get the results.
TableResult result = queryJob.getQueryResults();
String responseString = "";
// Print all pages of the results.
for (FieldValueList row : result.iterateAll()) {
responseString += row.get("summary").getStringValue() + ". \n";
System.out.printf("%s\n", row.get("summary").getStringValue());
}
return responseString;
}
}
আমরা সোর্স ফাইলগুলিতে নিম্নলিখিত পরিবর্তনগুলি করেছি:
- HelloWorldController.java- তে @Controller-কে @RestController-এ আপডেট করা হয়েছে।
- বইটির শিরোনাম এবং থিমগুলির তালিকা তৈরির জন্য ডেটা আনার কোয়েরিটি কার্যকর করতে, helloWorld() মেথডের বিষয়বস্তু পরিবর্তন করে তাতে BigQuery-কে কল করার ব্যবস্থা অন্তর্ভুক্ত করা হয়েছে।
- লোড হওয়ার সময় ইনডেক্স ভিউ টেমপ্লেট ফেরত দেওয়ার পরিবর্তে, এটিকে আপডেট করে ওয়েবে রেসপন্সটি একটি স্ট্রিং হিসেবে ফেরত পাঠানো হয়।
গুরুত্বপূর্ণ দ্রষ্টব্য: নিচের বিষয়গুলো আপডেট করতে মনে রাখবেন।
- HelloWorldControllerTests.Java ফাইলটি আপডেট করে বর্তমান mvc.perform(...) কলটি কমেন্ট আউট করুন।
কোড ব্যাখ্যার জন্য মিথুন রাশি
আমরা আপনাকে কোডটি দিয়েছি এবং সোর্স ফাইলগুলোতে যে পরিবর্তনগুলো করেছি, তা বর্ণনা করেছি। প্রয়োজন অনুযায়ী কোডের ব্যাখ্যা এবং/অথবা কোড কমেন্ট পাওয়ার জন্য আপনি জেমিনিও ব্যবহার করতে পারতেন। এখানে কয়েকটি বিষয় দেওয়া হলো যা আপনি চেষ্টা করে দেখতে পারেন:
- IDE-তে HelloWorldController.java ফাইলটি খোলা রেখে, IDE-র চ্যাট প্যানেলে যান এবং নিম্নলিখিত প্রম্পটটি দিন: Explain this (এটি ব্যাখ্যা করুন )। Gemini যে বিস্তারিত ব্যাখ্যাটি দেয়, তা দেখে নিন। কোডটি সম্পর্কে ব্যাখ্যা পেতে আপনি এটি যেকোনো সময় ব্যবহার করতে পারেন।
- আপনি কোডের যেকোনো নির্দিষ্ট অংশ বা লাইন (যেমন @GetMapping("/") ) হাইলাইট করতে পারেন এবং তারপর নিম্নলিখিত প্রম্পটটি ব্যবহার করতে পারেন: এটি ব্যাখ্যা করুন। এটি শুধুমাত্র আপনার নির্বাচিত কোডের লাইন বা অংশটির উপর একটি বিস্তারিত ব্যাখ্যা প্রদান করবে।
- আপনি এমন কিছু কোয়েরিও চেষ্টা করে দেখতে পারেন যা কোড সম্পর্কে ভিন্নভাবে অনুসন্ধান করে। উদাহরণস্বরূপ, আপনি কোডের নিম্নলিখিত লাইনটি নির্বাচন করতে পারেন।
BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
এবং নিম্নলিখিত কোয়েরিটি জিজ্ঞাসা করুন "bigquery ভেরিয়েবলটি null হলে কী হবে?" ৪. আপনি Gemini-এর সাহায্যে কোডের উন্নতি বা রিফ্যাক্টরিং করার জন্যও অনুরোধ করতে পারেন। উদাহরণস্বরূপ, আপনি helloWorld() মেথডের সম্পূর্ণ কোডটি সিলেক্ট করে নিম্নলিখিত প্রম্পটটি দিতে পারেন: "আমি কীভাবে এই কোডটির উন্নতি বা রিফ্যাক্টর করতে পারি?" । Gemini যে সাজেশনগুলো দেয়, সেগুলো দেখুন।
৯. নির্মাণ ও স্থাপন
ক্লাউড শেল টার্মিনালে যান। নিশ্চিত করুন যে টার্মিনালটি আপনার প্রজেক্ট আইডি নির্দেশ করছে।

cd কমান্ড ব্যবহার করে প্রজেক্ট ডিরেক্টরিতে প্রবেশ করুন:
cd bookshelf-web
আপনার অ্যাপটি স্থানীয়ভাবে চলছে কিনা তা নিশ্চিত করতে নিচের কমান্ডগুলো এক এক করে চালান।
mvn package
mvn spring-boot:run
এখন, নিচে দেখানো অনুযায়ী 'Web Preview' বাটনে ক্লিক করুন এবং 'Preview on port 8080' অপশনটিতে ক্লিক করুন:

নিশ্চিত করুন যে আপনি আপনার ক্লাউড শেল মেশিনে অ্যাপটি স্থানীয়ভাবে চলতে দেখতে পাচ্ছেন।
এখন, ক্লাউড রানে এই ওয়েব অ্যাপ্লিকেশনটি কীভাবে ডেপ্লয় করতে হয়, তা জেমিনিকে জিজ্ঞাসা করা যাক। গুগল ক্লাউড কনসোলে থাকা 'ওপেন জেমিনি' বোতামে ক্লিক করে জেমিনি চ্যাটে যান।
এটাই আমার নির্দেশ:
What is the gcloud command to deploy my app to cloud run without having to containerize, only by giving the source file?
নিম্নে প্রতিক্রিয়াটি দেওয়া হলো:

চলুন, নিচের কোড স্নিপেটে দেখানো অনুযায়ী gcloud কমান্ডের সার্ভিস নেম এবং রিজিয়ন প্লেসহোল্ডারগুলো প্রতিস্থাপন করি:
gcloud run deploy bookshelf-web --source . --allow-unauthenticated --region $REGION
ক্লাউড শেল টার্মিনাল থেকে এই কমান্ডটি চালান। আপনি কয়েকটি ফলো-আপ প্রশ্ন দেখতে পাবেন, উপযুক্ত উত্তরগুলো নির্বাচন করুন এবং আপনি ডেপ্লয়মেন্টটি চলমান অবস্থায় দেখতে সক্ষম হবেন:

কয়েক মিনিট সময় লাগে এবং অ্যাপটি গুগল ক্লাউড সার্ভারবিহীনভাবে ডেপ্লয় করা হয়। ক্লাউড রান-এ ডেপ্লয় করা অ্যাপটিতে ক্লিক করুন এবং ওয়েবে ফলাফলটি দেখুন:

১০. অভিনন্দন
অভিনন্দন! আমরা জেমিনি ব্যবহার করে বুকশেলফ অ্যানালিটিক্স করার জন্য একটি জাভা ক্লাউড রান ওয়েব অ্যাপ্লিকেশন সফলভাবে তৈরি, ডেপ্লয় এবং পরীক্ষা করেছি। পরবর্তী কাজ হিসেবে, গুগল ক্লাউড কনসোল থেকে ডেপ্লয় করা ক্লাউড রান সার্ভিসটি কীভাবে ডিলিট করতে হয় তা জেমিনিকে জিজ্ঞাসা করুন এবং রিসোর্সটি পরিষ্কার করার জন্য এর দেওয়া ধাপগুলো অনুসরণ করুন।