1. সংক্ষিপ্ত বিবরণ
এই কোডল্যাব সিরিজের (স্ব-গতিসম্পন্ন, হাতে-কলমে টিউটোরিয়াল) লক্ষ্য হল গুগল অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড) জাভা ডেভেলপারদের তাদের অ্যাপগুলিকে আধুনিকীকরণে সহায়তা করা, তাদের একাধিক মাইগ্রেশনের মাধ্যমে পরিচালনা করা। এই পদক্ষেপগুলি অনুসরণ করে, আপনি আপনার অ্যাপটিকে আরও পোর্টেবল করে আপডেট করতে পারেন এবং ক্লাউড রান , অ্যাপ ইঞ্জিনের গুগল ক্লাউডের কন্টেইনার-হোস্টিং বোন পরিষেবা এবং অন্যান্য কন্টেইনার-হোস্টিং পরিষেবার জন্য কন্টেইনারাইজ করার সিদ্ধান্ত নিতে পারেন।
এই টিউটোরিয়ালটি আপনাকে শেখাবে কিভাবে Jib ব্যবহার করে ক্লাউড রান সম্পূর্ণরূপে পরিচালিত পরিষেবাতে স্থাপনের জন্য একটি অ্যাপ ইঞ্জিন অ্যাপকে কন্টেইনারাইজ করতে হয়। Jib ব্যবহার করে, আপনি ডকার ইমেজ তৈরি করতে পারেন, যা কন্টেইনারে অ্যাপ্লিকেশন তৈরি, শিপিং এবং চালানোর জন্য শিল্পে একটি সুপরিচিত প্ল্যাটফর্ম।
অ্যাপ ইঞ্জিন থেকে ক্লাউড রানে যাওয়ার জন্য প্রয়োজনীয় পদক্ষেপগুলি শেখানোর পাশাপাশি, আপনি জাভা 8 অ্যাপ ইঞ্জিন অ্যাপটি জাভা 17 এ আপগ্রেড করার পদ্ধতিও শিখবেন।
যদি আপনার অ্যাপ্লিকেশনটি অ্যাপ ইঞ্জিনের লিগ্যাসি বান্ডেলড পরিষেবা বা অন্যান্য অ্যাপ ইঞ্জিন বৈশিষ্ট্যগুলি প্রচুর পরিমাণে ব্যবহার করে, তাহলে আমরা আপনাকে ক্লাউড রানে যাওয়ার আগে সেই বান্ডেলড পরিষেবাগুলি থেকে মাইগ্রেট করার বা সেই বৈশিষ্ট্যগুলি প্রতিস্থাপন করার পরামর্শ দিচ্ছি। আপনার মাইগ্রেশন বিকল্পগুলি তদন্ত করার জন্য যদি আরও সময়ের প্রয়োজন হয় বা আপাতত লিগ্যাসি বান্ডেলড পরিষেবাগুলি ব্যবহার চালিয়ে যেতে চান, তাহলে নতুন রানটাইমে আপগ্রেড করার সময় আপনি জাভা 11/17 এর জন্য অ্যাপ ইঞ্জিন বান্ডেলড পরিষেবাগুলি অ্যাক্সেস করতে পারেন। যখন আপনার অ্যাপটি আরও পোর্টেবল হয়, তখন আপনার অ্যাপে নির্দেশাবলী কীভাবে প্রয়োগ করবেন তা শিখতে এই কোডল্যাবে ফিরে আসুন।
তুমি শিখবে কিভাবে
- ক্লাউড শেল ব্যবহার করুন
- ক্লাউড রান, আর্টিফ্যাক্ট রেজিস্ট্রি এবং ক্লাউড বিল্ড এপিআই সক্ষম করুন
- জিব এবং ক্লাউড বিল্ড ব্যবহার করে আপনার অ্যাপটি কনটেইনারাইজ করুন
- আপনার কন্টেইনারের ছবিগুলি ক্লাউড রানে স্থাপন করুন
তোমার যা লাগবে
- একটি সক্রিয় GCP বিলিং অ্যাকাউন্ট এবং অ্যাপ ইঞ্জিন সক্ষম সহ একটি Google ক্লাউড প্ল্যাটফর্ম প্রকল্প
- সাধারণ লিনাক্স কমান্ডের কার্যকরী জ্ঞান
- অ্যাপ ইঞ্জিন অ্যাপ তৈরি এবং স্থাপনের প্রাথমিক জ্ঞান।
- একটি জাভা ৮ সার্ভলেট অ্যাপ যা আপনি জাভা ১৭ এ মাইগ্রেট করে ক্লাউড রানে স্থাপন করতে চান (এটি অ্যাপ ইঞ্জিনের একটি অ্যাপ হতে পারে অথবা শুধুমাত্র উৎস হতে পারে)
জরিপ
আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?
জাভা ব্যবহারে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?
গুগল ক্লাউড পরিষেবা ব্যবহারের অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?
2. পটভূমি
অ্যাপ ইঞ্জিন এবং ক্লাউড ফাংশনের মতো প্ল্যাটফর্ম অ্যাজ আ সার্ভিস (PaaS) সিস্টেমগুলি আপনার টিম এবং অ্যাপ্লিকেশনের জন্য অনেক সুবিধা প্রদান করে, যেমন SysAdmins এবং Devops কে সমাধান তৈরিতে মনোনিবেশ করতে সক্ষম করা। সেভারলেস প্ল্যাটফর্মের সাহায্যে, আপনার অ্যাপটি প্রয়োজন অনুসারে স্বয়ংক্রিয়ভাবে স্কেল আপ করতে পারে, খরচ নিয়ন্ত্রণে সহায়তা করার জন্য পে-পার-ইউজ বিলিং সহ শূন্যে স্কেল করতে পারে এবং বিভিন্ন সাধারণ ডেভেলপমেন্ট ভাষা ব্যবহার করতে পারে।
তবে, কন্টেইনারগুলির নমনীয়তাও আকর্ষণীয়। যেকোনো ভাষা, যেকোনো লাইব্রেরি এবং যেকোনো বাইনারি বেছে নেওয়ার ক্ষমতা সহ, কন্টেইনারগুলি আপনাকে উভয় জগতের সেরাটি দেয়: সার্ভারলেস ব্যবহারের সুবিধা এবং কন্টেইনারগুলির নমনীয়তা। ক্লাউড রানের মূল কথাটি এটাই।
ক্লাউড রান ব্যবহার শেখা এই কোডল্যাবের আওতাভুক্ত নয়; এটি ক্লাউড রান ডকুমেন্টেশন দ্বারা আচ্ছাদিত। এখানে লক্ষ্য হল ক্লাউড রান (অথবা অন্যান্য কন্টেইনার-হোস্টেড পরিষেবা) এর জন্য আপনার অ্যাপ ইঞ্জিন অ্যাপটি কীভাবে কন্টেইনারাইজ করবেন তার সাথে পরিচিত হওয়া। এগিয়ে যাওয়ার আগে আপনার কয়েকটি জিনিস জানা উচিত, প্রাথমিকভাবে আপনার ব্যবহারকারীর অভিজ্ঞতা কিছুটা আলাদা হবে।
এই কোডল্যাবে, আপনি শিখবেন কিভাবে কন্টেইনার তৈরি এবং স্থাপন করতে হয়। আপনি শিখবেন কিভাবে:
- জিব দিয়ে আপনার অ্যাপটি কনটেইনারাইজ করুন
- অ্যাপ ইঞ্জিন কনফিগারেশন থেকে দূরে সরে যান
- এবং, ঐচ্ছিকভাবে, ক্লাউড বিল্ডের জন্য বিল্ড ধাপগুলি সংজ্ঞায়িত করুন।
এর জন্য অ্যাপ ইঞ্জিনের নির্দিষ্ট কিছু বৈশিষ্ট্য থেকে দূরে সরে যাওয়া জড়িত। যদি আপনি এই পথ অনুসরণ না করতে চান, তাহলেও আপনি আপনার অ্যাপগুলিকে অ্যাপ ইঞ্জিনে রেখে জাভা ১১/১৭ রানটাইমে আপগ্রেড করতে পারেন।
৩. সেটআপ/প্রিওয়ার্ক
১. সেটআপ প্রকল্প
এই টিউটোরিয়ালের জন্য, আপনি একটি নতুন প্রকল্পে appengine-java-migration-samples সংগ্রহস্থল থেকে একটি নমুনা অ্যাপ ব্যবহার করবেন। নিশ্চিত করুন যে প্রকল্পটির একটি সক্রিয় বিলিং অ্যাকাউন্ট আছে।
যদি আপনি একটি বিদ্যমান অ্যাপ ইঞ্জিন অ্যাপকে ক্লাউড রানে স্থানান্তর করতে চান, তাহলে আপনি সেই অ্যাপটি ব্যবহার করে অনুসরণ করতে পারেন।
আপনার প্রকল্পের জন্য প্রয়োজনীয় API গুলি সক্রিয় করতে নিম্নলিখিত কমান্ডটি চালান:
gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com run.googleapis.com
2. বেসলাইন নমুনা অ্যাপ পান
আপনার নিজের মেশিনে অথবা Cloud Shell এ নমুনা অ্যাপটি ক্লোন করুন, তারপর বেসলাইন ফোল্ডারে নেভিগেট করুন।
নমুনাটি হল একটি জাভা 8, সার্ভলেট-ভিত্তিক ডেটাস্টোর অ্যাপ যা অ্যাপ ইঞ্জিনে স্থাপনের জন্য তৈরি। অ্যাপ ইঞ্জিন স্থাপনের জন্য এই অ্যাপটি কীভাবে প্রস্তুত করবেন সে সম্পর্কে README-তে দেওয়া নির্দেশাবলী অনুসরণ করুন।
৩. (ঐচ্ছিক) বেসলাইন অ্যাপ স্থাপন করুন
ক্লাউড রানে মাইগ্রেট করার আগে অ্যাপটি অ্যাপ ইঞ্জিনে কাজ করছে কিনা তা নিশ্চিত করতে হলে নিম্নলিখিতগুলি শুধুমাত্র তখনই প্রয়োজনীয়।
README.md-এর ধাপগুলি দেখুন:
-
gcloudCLI ইনস্টল করুন/পুনরায় পরিচিত হন -
gcloud initদিয়ে আপনার প্রোজেক্টের জন্য gcloud CLI আরম্ভ করুন। -
gcloud app createমাধ্যমে অ্যাপ ইঞ্জিন প্রকল্প তৈরি করুন - অ্যাপ ইঞ্জিনে নমুনা অ্যাপটি স্থাপন করুন
./mvnw package appengine:deploy -Dapp.projectId=$PROJECT_ID
- অ্যাপ ইঞ্জিনে কোনও সমস্যা ছাড়াই অ্যাপটি চলছে কিনা তা নিশ্চিত করুন
৪. একটি আর্টিফ্যাক্ট রেজিস্ট্রি সংগ্রহস্থল তৈরি করুন
আপনার অ্যাপটি কন্টেইনারাইজ করার পরে, আপনার ছবিগুলি পুশ এবং সংরক্ষণ করার জন্য কোথাও প্রয়োজন হবে। গুগল ক্লাউডে এটি করার প্রস্তাবিত উপায় হল আর্টিফ্যাক্ট রেজিস্ট্রি ।
gcloud দিয়ে migration নামের একটি রিপোজিটরি তৈরি করুন এভাবে:
gcloud artifacts repositories create migration --repository-format=docker \
--description="Docker repository for the migrated app" \
--location="northamerica-northeast1"
মনে রাখবেন যে এই সংগ্রহস্থলটি docker ফর্ম্যাট টাইপ ব্যবহার করে, তবে বেশ কয়েকটি সংগ্রহস্থলের ধরণ উপলব্ধ।
এই মুহুর্তে, আপনার বেসলাইন অ্যাপ ইঞ্জিন অ্যাপটি আছে, এবং আপনার গুগল ক্লাউড প্রজেক্টটি ক্লাউড রানে স্থানান্তরিত করার জন্য প্রস্তুত।
৪. অ্যাপ্লিকেশন ফাইল পরিবর্তন করুন
যেসব ক্ষেত্রে আপনার অ্যাপ অ্যাপ ইঞ্জিনের লিগ্যাসি বান্ডেলড পরিষেবা, কনফিগারেশন, অথবা অন্যান্য অ্যাপ ইঞ্জিন-ভিত্তিক বৈশিষ্ট্যগুলি প্রচুর পরিমাণে ব্যবহার করে, আমরা নতুন রানটাইমে আপগ্রেড করার সময় সেই পরিষেবাগুলি অ্যাক্সেস করা চালিয়ে যাওয়ার পরামর্শ দিচ্ছি। এই কোডল্যাবটি এমন অ্যাপ্লিকেশনগুলির জন্য একটি মাইগ্রেশন পাথ প্রদর্শন করে যা ইতিমধ্যেই স্বতন্ত্র পরিষেবা ব্যবহার করে, অথবা এটি করার জন্য সম্ভাব্যভাবে রিফ্যাক্টর করা যেতে পারে।
১. জাভা ১৭ তে আপগ্রেড করা হচ্ছে
যদি আপনার অ্যাপটি জাভা ৮-এ থাকে, তাহলে নিরাপত্তা আপডেটের সাথে তাল মিলিয়ে চলতে এবং নতুন ভাষার বৈশিষ্ট্যগুলিতে অ্যাক্সেস পেতে পরবর্তী LTS ক্যান্ডিডেট যেমন ১১ বা ১৭-তে আপগ্রেড করার কথা বিবেচনা করুন।
আপনার pom.xml এর বৈশিষ্ট্যগুলি আপডেট করে শুরু করুন যাতে নিম্নলিখিতগুলি অন্তর্ভুক্ত থাকে:
<properties>
<java.version>17</java.version>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
</properties>
এটি প্রজেক্ট সংস্করণটিকে ১৭ এ সেট করবে, কম্পাইলার প্লাগইনকে জানাবে যে আপনি জাভা ১৭ ভাষার বৈশিষ্ট্যগুলিতে অ্যাক্সেস চান এবং কম্পাইল করা ক্লাসগুলিকে জাভা ১৭ JVM এর সাথে সামঞ্জস্যপূর্ণ করতে চান।
2. একটি ওয়েব সার্ভার সহ
অ্যাপ ইঞ্জিন এবং ক্লাউড রানের মধ্যে বেশ কিছু পার্থক্য রয়েছে যা এগুলির মধ্যে স্থানান্তর করার সময় বিবেচনা করা উচিত। একটি পার্থক্য হল অ্যাপ ইঞ্জিনের জাভা 8 রানটাইম এটি হোস্ট করা অ্যাপগুলির জন্য একটি জেটি সার্ভার সরবরাহ এবং পরিচালনা করে, ক্লাউড রান তা করে না। আমরা একটি ওয়েব সার্ভার এবং সার্ভলেট কন্টেইনার সরবরাহ করতে স্প্রিং বুট ব্যবহার করব।
নিম্নলিখিত নির্ভরতা যোগ করুন:
<dependencies>
<!-- ... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.6.6</version>
<exclusions>
<!-- Exclude the Tomcat dependency -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Use Jetty instead -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
<version>2.6.6</version>
</dependency>
<!-- ... -->
</dependencies>
স্প্রিং বুট ডিফল্টভাবে একটি টমক্যাট সার্ভার এম্বেড করে, কিন্তু এই নমুনাটি সেই আর্টিফ্যাক্টটি বাদ দেবে এবং মাইগ্রেশনের পরে ডিফল্ট আচরণের পার্থক্য কমাতে জেটির সাথে লেগে থাকবে। আমরা অ্যাপ ইঞ্জিন যে সংস্করণটি সরবরাহ করে তার সাথে মেলে জেটির সংস্করণটিও কনফিগার করতে পারি।
<properties>
<java.version>17</java.version>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<jetty.version>9.4.46.v20220331</jetty.version>
</properties>
৩. স্প্রিং বুট সেটআপ
যদিও স্প্রিং বুট আপনার সার্ভলেটগুলিকে কোনও পরিবর্তন ছাড়াই পুনরায় ব্যবহার করতে সক্ষম হবে, তবে আবিষ্কারযোগ্যতার জন্য কিছু কনফিগারেশনের প্রয়োজন হবে।
com.example.appengine প্যাকেজে নিম্নলিখিত MigratedServletApplication.java ক্লাস তৈরি করুন:
package com.example.appengine;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@ServletComponentScan
@SpringBootApplication
@EnableAutoConfiguration
public class MigratedServletApplication {
public static void main(String[] args) {
SpringApplication.run(MigratedServletApplication.class, args);
}
}
মনে রাখবেন যে এর মধ্যে @ServletComponentScan অ্যানোটেশন অন্তর্ভুক্ত রয়েছে, যা ( বর্তমান প্যাকেজে ডিফল্টরূপে) যেকোনো @WebServlets এর জন্য দেখাবে এবং প্রত্যাশা অনুযায়ী উপলব্ধ করবে।
৪. অ্যাপটিকে JAR হিসেবে প্যাকেজ করা
যদিও Jib দিয়ে আপনার অ্যাপটিকে war থেকে শুরু করে কন্টেইনারাইজ করা সম্ভব, তবে আপনি যদি আপনার অ্যাপটিকে একটি এক্সিকিউটেবল JAR হিসেবে প্যাকেজ করেন তবে এটি আরও সহজ হয়ে যায়। এর জন্য খুব বেশি কনফিগারেশনের প্রয়োজন হবে না, বিশেষ করে Maven কে বিল্ড টুল হিসেবে ব্যবহার করা প্রকল্পগুলির জন্য - কারণ jar প্যাকেজিং হল ডিফল্ট আচরণ।
pom.xml ফাইলের packaging ট্যাগটি সরান:
<packaging>war</packaging>
এরপর, spring-boot-maven-plugin যোগ করুন:
<plugins>
<!-- ... -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.6.6</version>
</plugin>
<!-- ... -->
</plugins>
৫. অ্যাপ ইঞ্জিন কনফিগারেশন, পরিষেবা এবং নির্ভরতা থেকে দূরে সরে যাওয়া
কোডল্যাবের শুরুতে যেমন উল্লেখ করা হয়েছে, ক্লাউড রান এবং অ্যাপ ইঞ্জিন বিভিন্ন ব্যবহারকারীর অভিজ্ঞতা প্রদানের জন্য ডিজাইন করা হয়েছে। অ্যাপ ইঞ্জিন যে কিছু বৈশিষ্ট্য অফার করে - যেমন ক্রন এবং টাস্ক কিউ পরিষেবা - সেগুলি ম্যানুয়ালি পুনরায় তৈরি করতে হবে এবং পরবর্তী মডিউলগুলিতে আরও বিশদে আলোচনা করা হবে।
নমুনা অ্যাপটি লিগ্যাসি বান্ডেলড পরিষেবা ব্যবহার করে না, তবে যেসব ব্যবহারকারীর অ্যাপ ব্যবহার করে তারা নিম্নলিখিত নির্দেশিকাগুলি দেখতে পারেন:
- উপযুক্ত স্বতন্ত্র পরিষেবা খুঁজে পেতে বান্ডেলড পরিষেবা থেকে স্থানান্তরিত হচ্ছে ।
- অ্যাপ ইঞ্জিনে থাকাকালীন জাভা ১১/১৭ রানটাইমে মাইগ্রেট করা ব্যবহারকারীদের জন্য XML কনফিগারেশন ফাইলগুলিকে YAML এ মাইগ্রেট করা ।
যেহেতু আপনি এখন থেকে ক্লাউড রানে ডিপ্লয়মেন্ট করবেন, তাই appengine-maven-plugin সরানো যেতে পারে:
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<!-- can be set w/ -DprojectId=myProjectId on command line -->
<projectId>${app.projectId}</projectId>
<!-- set the GAE version or use "GCLOUD_CONFIG" for an autogenerated GAE version -->
<version>GCLOUD_CONFIG</version>
</configuration>
</plugin>
৫. কন্টেইনারাইজ অ্যাপ্লিকেশন
এই মুহুর্তে আপনি আপনার সোর্স কোড থেকে সরাসরি ক্লাউড রানে আপনার অ্যাপটি ম্যানুয়ালি স্থাপন করতে পারেন। এটি একটি চমৎকার বিকল্প যা পর্দার আড়ালে ক্লাউড বিল্ড ব্যবহার করে হাতের মুঠোয় স্থাপনের অভিজ্ঞতা প্রদান করে। আমরা পরবর্তী মডিউলগুলিতে সোর্স স্থাপন সম্পর্কে আরও বিস্তারিত আলোচনা করব।
বিকল্পভাবে, যদি আপনার অ্যাপটি কীভাবে স্থাপন করা হয় তার উপর আরও নিয়ন্ত্রণের প্রয়োজন হয়, তাহলে আপনি একটি cloudbuild.yaml ফাইল সংজ্ঞায়িত করে তা অর্জন করতে পারেন যা আপনার উদ্দেশ্যপ্রণোদিত নির্মাণের ধাপগুলি স্পষ্টভাবে বর্ণনা করে:
১. একটি cloudbuild.yaml ফাইল সংজ্ঞায়িত করুন
pom.xml এর সমান স্তরে নিম্নলিখিত cloudbuild.yaml ফাইলটি তৈরি করুন:
steps:
# Test your build
- name: maven:eclipse-temurin
entrypoint: mvn
args: ["test"]
# Build with Jib
- name: maven:eclipse-temurin
entrypoint: mvn
args: [ "compile", "com.google.cloud.tools:jib-maven-plugin:3.2.1:build", "-Dimage=northamerica-northeast1-docker.pkg.dev/PROJECT_ID/migration/visitors:jib"]
# Deploy to Cloud Run
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: gcloud
args: [ 'run', 'deploy', 'visitors', '--image', 'northamerica-northeast1-docker.pkg.dev/PROJECT_ID/migration/visitors:jib', '--region', 'northamerica-northeast1', '--allow-unauthenticated']
একবার আমরা ক্লাউড বিল্ডকে এই পদক্ষেপগুলি অনুসরণ করতে বললে, এটি করবে:
-
./mvnw testদিয়ে আপনার পরীক্ষা চালান - জিব দিয়ে আপনার ছবি তৈরি করুন, পুশ করুন এবং আর্টিফ্যাক্ট রেজিস্ট্রিতে ট্যাগ করুন
-
gcloud run deployব্যবহার করে আপনার ছবি Cloud Run-এ স্থাপন করুন।
মনে রাখবেন যে 'visitors' ক্লাউড রানে কাঙ্ক্ষিত পরিষেবার নাম হিসেবে সরবরাহ করা হয়েছে। –allow-unauthenticated ফ্ল্যাগ ব্যবহারকারীদের প্রমাণীকরণের প্রয়োজন ছাড়াই ওয়েবঅ্যাপটি দেখার সুযোগ করে দেয়। cloudbuild.yaml ফাইলে PROJECT_ID কে আপনার প্রোজেক্টের ID দিয়ে প্রতিস্থাপন করতে ভুলবেন না ।
এরপর, ক্লাউড বিল্ড সার্ভিস অ্যাকাউন্টকে আর্টিফ্যাক্ট রেজিস্ট্রিতে অনুমতি দেওয়ার জন্য নিম্নলিখিত IAM নীতি বাইন্ডিং যোগ করুন:
export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)" )
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \
--role=roles/run.admin \
--project=$PROJECT_ID
gcloud iam service-accounts add-iam-policy-binding $PROJECT_NUMBER-compute@developer.gserviceaccount.com \
--member=serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com \
--role roles/iam.serviceAccountUser --project=$PROJECT_ID
2. বিল্ড প্রক্রিয়াটি চালান
এখন যেহেতু আপনি ক্লাউড বিল্ডকে পছন্দসই বিল্ড ধাপগুলি সম্পর্কে অবহিত করেছেন, আপনি এক-ক্লিক স্থাপনের জন্য প্রস্তুত।
নিম্নলিখিত কমান্ডটি চালান:
gcloud builds submit
প্রক্রিয়াটি শেষ হয়ে গেলে, আপনার কন্টেইনার ইমেজ তৈরি করা হবে, আর্টিফ্যাক্ট রেজিস্ট্রিতে সংরক্ষণ করা হবে এবং ক্লাউড রানে স্থাপন করা হবে।
এই কোডল্যাবের শেষে, আপনার অ্যাপটি java17-and-cloud-run/finish এর মতো দেখতে হবে।
আর এই তো! আপনি জাভা ৮ অ্যাপ ইঞ্জিন অ্যাপটি জাভা ১৭ এবং ক্লাউড রানে সফলভাবে স্থানান্তরিত করেছেন, এবং এখন হোস্টিং বিকল্পগুলির মধ্যে স্যুইচ করার এবং নির্বাচন করার সময় জড়িত কাজ সম্পর্কে আরও স্পষ্ট ধারণা পেয়েছেন।
৬. সারাংশ/পরিষ্কারকরণ
অভিনন্দন, আপনি আপনার অ্যাপ আপগ্রেড, কন্টেইনারাইজ, মাইগ্রেট করেছেন, যার মাধ্যমে এই টিউটোরিয়ালটি শেষ হচ্ছে!
এখান থেকে, পরবর্তী ধাপ হল CI/CD এবং সফ্টওয়্যার সাপ্লাই চেইন সুরক্ষা বৈশিষ্ট্যগুলি সম্পর্কে আরও জানা যা এখন আপনার নাগালের মধ্যে রয়েছে কারণ আপনি ক্লাউড বিল্ডের সাথে এটি স্থাপন করতে পারেন:
- ক্লাউড বিল্ডের সাহায্যে কাস্টম বিল্ড ধাপ তৈরি করা
- বিল্ড ট্রিগার তৈরি এবং পরিচালনা করা
- আপনার ক্লাউড বিল্ড পাইপলাইনে অন-ডিমান্ড স্ক্যানিং ব্যবহার করা
ঐচ্ছিক: পরিষেবা পরিষ্কার করুন এবং/অথবা অক্ষম করুন
এই টিউটোরিয়াল চলাকালীন যদি আপনি অ্যাপ ইঞ্জিনে নমুনা অ্যাপটি স্থাপন করে থাকেন, তাহলে চার্জ এড়াতে অ্যাপটি নিষ্ক্রিয় করতে ভুলবেন না। যখন আপনি পরবর্তী কোডল্যাবে যাওয়ার জন্য প্রস্তুত হবেন, তখন আপনি এটি পুনরায় সক্ষম করতে পারবেন। অ্যাপ ইঞ্জিন অ্যাপগুলি নিষ্ক্রিয় থাকা সত্ত্বেও, চার্জ বহন করার জন্য তারা কোনও ট্র্যাফিক পাবে না, তবে ডেটাস্টোর ব্যবহার যদি তার বিনামূল্যের কোটা অতিক্রম করে তবে বিলযোগ্য হতে পারে, তাই সেই সীমার মধ্যে পড়ার জন্য যথেষ্ট ডিলিট করুন।
অন্যদিকে, যদি আপনি মাইগ্রেশন চালিয়ে যেতে না চান এবং সবকিছু সম্পূর্ণরূপে মুছে ফেলতে চান, তাহলে আপনি হয় আপনার পরিষেবা মুছে ফেলতে পারেন অথবা আপনার প্রকল্পটি সম্পূর্ণরূপে বন্ধ করে দিতে পারেন ।
৭. অতিরিক্ত সম্পদ
অ্যাপ ইঞ্জিন মাইগ্রেশন মডিউল কোডল্যাব সমস্যা/প্রতিক্রিয়া
এই কোডল্যাবে যদি কোনও সমস্যা খুঁজে পান, তাহলে ফাইল করার আগে অনুগ্রহ করে প্রথমে আপনার সমস্যাটি অনুসন্ধান করুন। নতুন সমস্যা অনুসন্ধান এবং তৈরি করার লিঙ্ক:
মাইগ্রেশন রিসোর্স
- অ্যাপ ইঞ্জিন পরিষেবাগুলি আনবান্ডেল করার জন্য মাইগ্রেশন বিকল্পগুলি
- ক্লাউড বিল্ডের জন্য বিল্ড ট্রিগার সেট আপ করা হচ্ছে
- জাভা ১১/১৭-এ স্থানান্তরিত হওয়ার বিষয়ে আরও তথ্য
অনলাইন রিসোর্স
এই টিউটোরিয়ালের জন্য প্রাসঙ্গিক হতে পারে এমন অনলাইন রিসোর্সগুলি নীচে দেওয়া হল:
অ্যাপ ইঞ্জিন
- অ্যাপ ইঞ্জিন ডকুমেন্টেশন
- অ্যাপ ইঞ্জিনের মূল্য এবং কোটার তথ্য
- প্রথম এবং দ্বিতীয় প্রজন্মের প্ল্যাটফর্মের তুলনা করা
- লিগ্যাসি রানটাইমের জন্য দীর্ঘমেয়াদী সহায়তা
অন্যান্য ক্লাউড তথ্য
- গুগল ক্লাউড "সর্বদা বিনামূল্যে" স্তর
- গুগল ক্লাউড সিএলআই (
gcloudসিএলআই) - সমস্ত গুগল ক্লাউড ডকুমেন্টেশন
ভিডিও
- সার্ভারলেস মাইগ্রেশন স্টেশন
- সার্ভারলেস অভিযান
- গুগল ক্লাউড টেক -এ সাবস্ক্রাইব করুন
- গুগল ডেভেলপারদের সাবস্ক্রাইব করুন
লাইসেন্স
এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।