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

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

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

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

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

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

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

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

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

জরিপ

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

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

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

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

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

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

2. পটভূমি

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

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

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

এই কোডল্যাবে, আপনি শিখবেন কিভাবে কনটেইনার তৈরি এবং স্থাপন করতে হয়। আপনি শিখবেন কীভাবে আপনার অ্যাপটিকে একটি ডকারফাইল দিয়ে কনটেইনারাইজ করতে হয়, অ্যাপ ইঞ্জিন কনফিগারেশন থেকে দূরে সরে যেতে হয় এবং (ঐচ্ছিকভাবে) ক্লাউড বিল্ডের জন্য বিল্ড ধাপগুলি সংজ্ঞায়িত করতে হয়। এর মধ্যে কিছু অ্যাপ ইঞ্জিনের নির্দিষ্ট বৈশিষ্ট্য থেকে দূরে সরে যাওয়া জড়িত। আপনি যদি এই পথটি অনুসরণ না করতে পছন্দ করেন, তবে আপনি অ্যাপ ইঞ্জিনে আপনার অ্যাপগুলি রেখে জাভা 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>

স্প্রিং বুট ডিফল্টরূপে একটি টমক্যাট সার্ভার এম্বেড করে, কিন্তু এই নমুনাটি সেই শিল্পকর্মটি বাদ দেবে এবং মাইগ্রেশনের পরে ডিফল্ট আচরণে পার্থক্য কমাতে জেটির সাথে লেগে থাকবে।

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) প্রয়োজন হয় না। আমরা সহজভাবে একটি সূচনা পয়েন্ট হিসাবে একটি ন্যূনতম ডকারফাইল সংজ্ঞায়িত করতে পারি:

গ্রহন-টেমুরিন থেকে

ARG JAR_FILE=JAR_FILE_MUST_BE_SPECIFIED_AS_BUILD_ARG

${JAR_FILE} app.jar কপি করুন

ENTRYPOINT ["java", "-jar","/app.jar"]

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

2**। নির্মাণ প্রক্রিয়া চালান**

এখন যেহেতু আপনি ক্লাউড বিল্ডকে পছন্দসই বিল্ড ধাপ সম্পর্কে অবহিত করেছেন, আপনি এক-ক্লিক স্থাপনের জন্য প্রস্তুত৷

নিম্নলিখিত কমান্ড চালান:

gcloud builds submit --tag LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE_NAME

উপরের কমান্ডে স্থানধারক মানগুলিকে নিম্নলিখিতগুলির সাথে প্রতিস্থাপন করুন:

  • অবস্থান: আপনার সংগ্রহস্থলের জন্য আঞ্চলিক বা বহু-আঞ্চলিক অবস্থান।
  • PROJECT_ID: আপনার ক্লাউড প্রকল্প আইডি।
  • সংগ্রহস্থল: আপনার আর্টিফ্যাক্ট রেজিস্ট্রি সংগ্রহস্থলের নাম।
  • IMAGE_NAME: আপনার কন্টেইনার ছবির নাম।

প্রক্রিয়াটি শেষ হয়ে গেলে, আপনার ধারক চিত্র তৈরি করা হয়েছে, আর্টিফ্যাক্ট রেজিস্ট্রিতে সংরক্ষণ করা হয়েছে এবং ক্লাউড রানে স্থাপন করা হয়েছে।

এই কোডল্যাবের শেষে, আপনার অ্যাপটি mod4-migrate-to-Cloud-run ফোল্ডারের মতো দেখতে হবে।

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

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

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

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

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

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

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

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

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

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

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

অনলাইন সম্পদ

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

অ্যাপ ইঞ্জিন

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

ভিডিও

লাইসেন্স

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