গুগল অ্যাপ ইঞ্জিন জাভা অ্যাপ থেকে জিব দিয়ে ক্লাউড রানে স্থানান্তর করা হচ্ছে

1। সংক্ষিপ্ত বিবরণ

কোডল্যাবগুলির এই সিরিজের (স্ব-গতিসম্পন্ন, হাতে-কলমে টিউটোরিয়াল) লক্ষ্য হল Google অ্যাপ ইঞ্জিন (স্ট্যান্ডার্ড) জাভা ডেভেলপারদের তাদের অ্যাপগুলিকে একাধিক মাইগ্রেশনের মাধ্যমে গাইড করে তাদের আধুনিকীকরণে সহায়তা করা। এই পদক্ষেপগুলি অনুসরণ করে, আপনি আপনার অ্যাপটিকে আরও পোর্টেবল হওয়ার জন্য আপডেট করতে পারেন এবং ক্লাউড রান , অ্যাপ ইঞ্জিনে Google ক্লাউডের কন্টেইনার-হোস্টিং বোন পরিষেবা এবং অন্যান্য কন্টেইনার-হোস্টিং পরিষেবাগুলির জন্য ধারক করার সিদ্ধান্ত নিতে পারেন৷

এই টিউটোরিয়ালটি আপনাকে শেখায় কিভাবে Jib ব্যবহার করে ক্লাউড রান সম্পূর্ণ-পরিচালিত পরিষেবাতে মোতায়েন করার জন্য একটি অ্যাপ ইঞ্জিন অ্যাপ কন্টেইনারাইজ করতে হয়। জিবের সাহায্যে, আপনি ডকার ইমেজ তৈরি করতে পারেন, যা পাত্রে অ্যাপ্লিকেশন বিকাশ, শিপিং এবং চালানোর জন্য শিল্পের একটি সুপরিচিত প্ল্যাটফর্ম।

অ্যাপ ইঞ্জিন থেকে ক্লাউড রানে যাওয়ার প্রয়োজনীয় পদক্ষেপগুলি শেখানোর পাশাপাশি, আপনি জাভা 8 অ্যাপ ইঞ্জিন অ্যাপকে জাভা 17 এ আপগ্রেড করতে শিখবেন।

যদি আপনার অ্যাপ্লিকেশনটি অ্যাপ ইঞ্জিনের লিগ্যাসি বান্ডেল করা পরিষেবাগুলি বা অন্যান্য অ্যাপ ইঞ্জিন বৈশিষ্ট্যগুলির ব্যাপক ব্যবহার করে, আমরা ক্লাউড রানে যাওয়ার আগে সেই বান্ডিল পরিষেবাগুলিকে স্থানান্তরিত করার বা সেই বৈশিষ্ট্যগুলি প্রতিস্থাপন করার পরামর্শ দিই৷ আপনার মাইগ্রেশন বিকল্পগুলি তদন্ত করার জন্য যদি আপনার আরও সময়ের প্রয়োজন হয় বা আপাতত লিগ্যাসি বান্ডেল করা পরিষেবাগুলি ব্যবহার করা চালিয়ে যেতে চান, আপনি একটি নতুন রানটাইমে আপগ্রেড করার সময় Java 11/17-এর জন্য অ্যাপ ইঞ্জিন বান্ডিল পরিষেবাগুলি অ্যাক্সেস করা চালিয়ে যেতে পারেন৷ যখন আপনার অ্যাপটি আরও পোর্টেবল হয়, তখন আপনার অ্যাপে নির্দেশাবলী কীভাবে প্রয়োগ করবেন তা শিখতে এই কোডল্যাবে ফিরে আসুন।

আপনি কিভাবে শিখবেন

  • ক্লাউড শেল ব্যবহার করুন
  • ক্লাউড রান, আর্টিফ্যাক্ট রেজিস্ট্রি এবং ক্লাউড বিল্ড এপিআই সক্ষম করুন
  • জিব, এবং ক্লাউড বিল্ড ব্যবহার করে আপনার অ্যাপ কন্টেইনারাইজ করুন
  • ক্লাউড রানে আপনার কন্টেইনার ইমেজ স্থাপন করুন

আপনি কি প্রয়োজন হবে

জরিপ

আপনি কিভাবে এই টিউটোরিয়াল ব্যবহার করবেন?

শুধুমাত্র মাধ্যমে এটি পড়ুন এটি পড়ুন এবং ব্যায়াম সম্পূর্ণ করুন

জাভা নিয়ে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী দক্ষ

আপনি Google ক্লাউড পরিষেবাগুলি ব্যবহার করার সাথে আপনার অভিজ্ঞতাকে কীভাবে মূল্যায়ন করবেন?

নবজাতক মধ্যবর্তী দক্ষ

2. পটভূমি

অ্যাপ ইঞ্জিন এবং ক্লাউড ফাংশনগুলির মতো পরিষেবা হিসাবে প্ল্যাটফর্ম (PaaS) সিস্টেমগুলি আপনার দল এবং অ্যাপ্লিকেশনের জন্য অনেক সুবিধা প্রদান করে, যেমন SysAdmins এবং Devops কে বিল্ডিং সমাধানগুলিতে ফোকাস করতে সক্ষম করা৷ বিচ্ছিন্ন প্ল্যাটফর্মের সাহায্যে, আপনার অ্যাপটি প্রয়োজন অনুযায়ী অটোস্কেল করতে পারে, খরচ নিয়ন্ত্রণে সাহায্য করার জন্য প্রতি-ব্যবহারের বিলিংয়ের মাধ্যমে শূন্যে নামিয়ে আনতে পারে এবং বিভিন্ন সাধারণ উন্নয়ন ভাষা ব্যবহার করতে পারে।

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

ক্লাউড রান কীভাবে ব্যবহার করতে হয় তা শেখা এই কোডল্যাবের সুযোগের মধ্যে নেই; যেটি ক্লাউড রান ডকুমেন্টেশন দ্বারা আচ্ছাদিত। ক্লাউড রান (বা অন্যান্য কন্টেইনার-হোস্টেড পরিষেবা) এর জন্য আপনার অ্যাপ ইঞ্জিন অ্যাপকে কীভাবে কনটেইনারাইজ করতে হয় সে সম্পর্কে আপনার পরিচিত হওয়া এখানে লক্ষ্য। এগিয়ে যাওয়ার আগে আপনার কিছু জিনিস জানা উচিত, প্রাথমিকভাবে আপনার ব্যবহারকারীর অভিজ্ঞতা কিছুটা আলাদা হবে৷

এই কোডল্যাবে, আপনি শিখবেন কিভাবে কনটেইনার তৈরি এবং স্থাপন করতে হয়। আপনি কিভাবে শিখবেন:

  • Jib এর সাথে আপনার অ্যাপ কন্টেইনারাইজ করুন
  • অ্যাপ ইঞ্জিন কনফিগারেশন থেকে দূরে সরে যান
  • এবং, ঐচ্ছিকভাবে, ক্লাউড বিল্ডের জন্য বিল্ড ধাপগুলি সংজ্ঞায়িত করুন।

এর মধ্যে কিছু অ্যাপ ইঞ্জিনের নির্দিষ্ট বৈশিষ্ট্য থেকে দূরে সরে যাওয়া জড়িত। আপনি যদি এই পথটি অনুসরণ না করতে পছন্দ করেন, তবে আপনি অ্যাপ ইঞ্জিনে আপনার অ্যাপগুলি রেখে জাভা 11/17 রানটাইমে আপগ্রেড করতে পারেন।

3. সেটআপ/প্রিওয়ার্ক

1. সেটআপ প্রকল্প

এই টিউটোরিয়ালের জন্য, আপনি একটি নতুন প্রকল্পে appengine-java-migration-samples repository থেকে একটি নমুনা অ্যাপ ব্যবহার করবেন। প্রকল্পের একটি সক্রিয় বিলিং অ্যাকাউন্ট আছে তা নিশ্চিত করুন।

আপনি যদি একটি বিদ্যমান অ্যাপ ইঞ্জিন অ্যাপ্লিকেশনটিকে ক্লাউড রানে স্থানান্তর করতে চান তবে আপনি পরিবর্তে অনুসরণ করতে সেই অ্যাপ্লিকেশনটি ব্যবহার করতে পারেন।

আপনার প্রকল্পের জন্য প্রয়োজনীয় API গুলি সক্ষম করতে নিম্নলিখিত কমান্ডটি চালান:

gcloud services enable artifactregistry.googleapis.com cloudbuild.googleapis.com run.googleapis.com

2. বেসলাইন নমুনা অ্যাপ পান

আপনার নিজের মেশিনে বা ক্লাউড শেল থেকে নমুনা অ্যাপটি ক্লোন করুন, তারপর বেসলাইন ফোল্ডারে নেভিগেট করুন।

নমুনাটি একটি জাভা 8, সার্ভলেট-ভিত্তিক ডেটাস্টোর অ্যাপ যা অ্যাপ ইঞ্জিনে স্থাপনার উদ্দেশ্যে। অ্যাপ ইঞ্জিন স্থাপনের জন্য এই অ্যাপটি কীভাবে প্রস্তুত করবেন সে সম্পর্কে README-এর নির্দেশাবলী অনুসরণ করুন।

3. (ঐচ্ছিক) বেসলাইন অ্যাপ স্থাপন করুন

আমরা ক্লাউড রানে স্থানান্তরিত করার আগে অ্যাপটি অ্যাপ ইঞ্জিনে কাজ করে কিনা তা নিশ্চিত করতে চাইলেই নিম্নলিখিতগুলি প্রয়োজনীয়৷

README.md-এর ধাপগুলি পড়ুন:

  1. gcloud CLI এর সাথে নিজেকে ইনস্টল/পুনরায় পরিচিত করুন
  2. gcloud init দিয়ে আপনার প্রকল্পের জন্য gcloud CLI আরম্ভ করুন
  3. gcloud app create করে অ্যাপ ইঞ্জিন প্রকল্প তৈরি করুন
  4. অ্যাপ ইঞ্জিনে নমুনা অ্যাপটি স্থাপন করুন
./mvnw package appengine:deploy -Dapp.projectId=$PROJECT_ID
  1. অ্যাপটি অ্যাপ ইঞ্জিনে কোন সমস্যা ছাড়াই চলে তা নিশ্চিত করুন

4. একটি আর্টিফ্যাক্ট রেজিস্ট্রি সংগ্রহস্থল তৈরি করুন

আপনার অ্যাপ কন্টেইনারাইজ করার পরে, আপনার ছবিগুলি পুশ এবং সংরক্ষণ করার জন্য আপনার কোথাও প্রয়োজন হবে৷ Google ক্লাউডে এটি সম্পর্কে যাওয়ার প্রস্তাবিত উপায় হল আর্টিফ্যাক্ট রেজিস্ট্রি

এইভাবে gcloud দিয়ে migration নামের সংগ্রহস্থল তৈরি করুন:

gcloud artifacts repositories create migration --repository-format=docker \
--description="Docker repository for the migrated app" \
--location="northamerica-northeast1"

মনে রাখবেন যে এই সংগ্রহস্থলটি docker ফর্ম্যাট টাইপ ব্যবহার করে, তবে বিভিন্ন ধরনের সংগ্রহস্থল উপলব্ধ রয়েছে।

এই মুহুর্তে, আপনার কাছে আপনার বেসলাইন অ্যাপ ইঞ্জিন অ্যাপ রয়েছে এবং আপনার Google ক্লাউড প্রকল্প এটিকে ক্লাউড রানে স্থানান্তর করার জন্য প্রস্তুত।

4. অ্যাপ্লিকেশন ফাইলগুলি সংশোধন করুন৷

যে ক্ষেত্রে আপনার অ্যাপটি অ্যাপ ইঞ্জিনের লিগ্যাসি বান্ডেল করা পরিষেবা, কনফিগারেশন, বা অন্যান্য অ্যাপ ইঞ্জিন শুধুমাত্র বৈশিষ্ট্যগুলির ব্যাপক ব্যবহার করে, আমরা নতুন রানটাইমে আপগ্রেড করার সময় সেই পরিষেবাগুলি অ্যাক্সেস করা চালিয়ে যাওয়ার পরামর্শ দিই৷ এই কোডল্যাবটি এমন অ্যাপ্লিকেশনগুলির জন্য একটি মাইগ্রেশন পথ প্রদর্শন করে যেগুলি ইতিমধ্যেই স্বতন্ত্র পরিষেবাগুলি ব্যবহার করে, বা এটি করার জন্য সম্ভাব্যভাবে রিফ্যাক্টর করা যেতে পারে।

1. জাভা 17 এ আপগ্রেড করা হচ্ছে

যদি আপনার অ্যাপ জাভা 8-এ থাকে, তাহলে নিরাপত্তা আপডেটগুলি বজায় রাখতে এবং নতুন ভাষার বৈশিষ্ট্যগুলিতে অ্যাক্সেস পেতে 11 বা 17-এর মতো পরবর্তী LTS প্রার্থীতে আপগ্রেড করার কথা বিবেচনা করুন।

নিম্নলিখিতগুলি অন্তর্ভুক্ত করতে আপনার pom.xml এর বৈশিষ্ট্যগুলি আপডেট করে শুরু করুন:

<properties>
    <java.version>17</java.version>
    <maven.compiler.source>17</maven.compiler.source>
    <maven.compiler.target>17</maven.compiler.target>
</properties>

এটি প্রকল্প সংস্করণটিকে 17 এ সেট করবে, কম্পাইলার প্লাগইনকে জানাবে যে আপনি java 17 ভাষার বৈশিষ্ট্যগুলিতে অ্যাক্সেস চান এবং কম্পাইল করা ক্লাসগুলি Java 17 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>

3. স্প্রিং বুট সেটআপ

স্প্রিং বুট পরিবর্তন ছাড়াই আপনার সার্লেটগুলি পুনরায় ব্যবহার করতে সক্ষম হবে, এটি আবিষ্কারযোগ্যতার জন্য কিছু কনফিগারেশনের প্রয়োজন হবে।

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 এর জন্য (ডিফল্টরূপে বর্তমান প্যাকেজে ) দেখাবে এবং সেগুলিকে প্রত্যাশিত হিসাবে উপলব্ধ করবে।

4. একটি JAR হিসাবে অ্যাপ্লিকেশন প্যাকেজিং

যদিও যুদ্ধ থেকে শুরু করে আপনার অ্যাপটিকে জিব দিয়ে কন্টেইনারাইজ করা সম্ভব, আপনি যদি আপনার অ্যাপটিকে এক্সিকিউটেবল 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>

5. অ্যাপ ইঞ্জিন কনফিগারেশন, পরিষেবা এবং নির্ভরতা থেকে দূরে সরে যাওয়া৷

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

নমুনা অ্যাপটি লিগ্যাসি বান্ডিল করা পরিষেবাগুলি ব্যবহার করে না, তবে ব্যবহারকারীরা যাদের অ্যাপগুলি করে তারা নিম্নলিখিত নির্দেশিকাগুলি উল্লেখ করতে পারেন:

যেহেতু আপনি এখন থেকে ক্লাউড রানে স্থাপন করবেন, 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>

5. কন্টেইনারাইজ অ্যাপ্লিকেশন

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

বিকল্পভাবে, আপনার অ্যাপটি যেভাবে মোতায়েন করা হয়েছে তার উপর যদি আপনার আরও নিয়ন্ত্রণের প্রয়োজন হয়, তাহলে আপনি একটি cloudbuild.yaml ফাইল সংজ্ঞায়িত করে তা অর্জন করতে পারেন যা স্পষ্টভাবে আপনার অভিপ্রেত বিল্ডের ধাপগুলিকে বর্ণনা করে:

1. একটি 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']

একবার আমরা ক্লাউড বিল্ডকে এই পদক্ষেপগুলি অনুসরণ করতে বলি, এটি হবে:

  1. ./mvnw test দিয়ে আপনার পরীক্ষা চালান
  2. জিবের সাথে আর্টিফ্যাক্ট রেজিস্ট্রিতে আপনার ছবি তৈরি করুন, পুশ করুন এবং ট্যাগ করুন
  3. gcloud run deploy দিয়ে আপনার ইমেজ ক্লাউড রানে স্থাপন করুন

মনে রাখবেন যে 'visitors' ক্লাউড রানে কাঙ্ক্ষিত পরিষেবার নাম হিসাবে সরবরাহ করা হয়। –allow-unauthenticated পতাকা ব্যবহারকারীদের প্রমাণীকরণের প্রয়োজন ছাড়াই ওয়েবঅ্যাপ পরিদর্শন করতে সক্ষম করে। PROJECT_ID আপনার প্রকল্পের ID দিয়ে cloudbuild.yaml ফাইলে প্রতিস্থাপন করা নিশ্চিত করুন।

এর পরে, আর্টিফ্যাক্ট রেজিস্ট্রিতে ক্লাউড বিল্ড পরিষেবা অ্যাকাউন্টকে অনুমতি দেওয়ার জন্য নিম্নলিখিত 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-এর মতো দেখতে হবে।

এবং সেখানে আপনি এটা আছে! আপনি জাভা 17 এবং ক্লাউড রানে একটি Java 8 অ্যাপ ইঞ্জিন অ্যাপ সফলভাবে স্থানান্তরিত করেছেন, এবং এখন হোস্টিং বিকল্পগুলির মধ্যে স্যুইচ করার এবং বেছে নেওয়ার সময় জড়িত কাজের বিষয়ে আরও স্পষ্ট ধারণা রয়েছে৷

6. সারাংশ/পরিষ্কার

অভিনন্দন, আপনি আপগ্রেড করেছেন, কন্টেইনারাইজ করেছেন, স্থানান্তর করেছেন এবং আপনার অ্যাপ, যা এই টিউটোরিয়ালটি শেষ করেছে!

এখান থেকে, পরবর্তী ধাপ হল CI/CD এবং সফ্টওয়্যার সাপ্লাই চেইন সুরক্ষা বৈশিষ্ট্যগুলি সম্পর্কে আরও জানতে যা এখন নাগালের মধ্যে রয়েছে যা আপনি ক্লাউড বিল্ডের সাথে স্থাপন করতে পারেন:

ঐচ্ছিক: পরিষ্কার করুন এবং/অথবা পরিষেবা অক্ষম করুন

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

অন্যদিকে, আপনি যদি মাইগ্রেশন চালিয়ে যেতে না চান এবং সবকিছু সম্পূর্ণরূপে মুছে ফেলতে চান, আপনি হয় আপনার পরিষেবা মুছে ফেলতে পারেন বা আপনার প্রকল্প সম্পূর্ণরূপে বন্ধ করে দিতে পারেন

7. অতিরিক্ত সম্পদ

অ্যাপ ইঞ্জিন মাইগ্রেশন মডিউল কোডল্যাব সমস্যা/প্রতিক্রিয়া

আপনি যদি এই কোডল্যাবের সাথে কোনো সমস্যা খুঁজে পান, অনুগ্রহ করে ফাইল করার আগে প্রথমে আপনার সমস্যাটি অনুসন্ধান করুন। অনুসন্ধান এবং নতুন সমস্যা তৈরি করার লিঙ্ক:

মাইগ্রেশন সম্পদ

অনলাইন সম্পদ

নীচে অনলাইন সংস্থান রয়েছে যা এই টিউটোরিয়ালের জন্য প্রাসঙ্গিক হতে পারে:

অ্যাপ ইঞ্জিন

অন্যান্য ক্লাউড তথ্য

ভিডিও

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন 2.0 জেনেরিক লাইসেন্সের অধীনে লাইসেন্সপ্রাপ্ত।