একটি স্প্রিং বুট কোটলিন অ্যাপ ধারণ করুন এবং এটিকে ক্লাউড রানে স্থাপন করুন

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

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

এই কোডল্যাবটি আপনাকে কোটলিনে একটি সাধারণ অ্যাপ সেট আপ করার পদ্ধতি দেখাবে, যেখানে জিব (Jib), কন্টেইনার রেজিস্ট্রি (Container Registry) , এবং ক্লাউড রান (Cloud Run )-সহ গুগল ক্লাউডের বিভিন্ন পরিষেবা ও টুলের ব্যবহার প্রদর্শন করা হয়েছে।

পূর্বশর্ত

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

আপনি যা করবেন

  • একটি Spring Boot Kotlin অ্যাপ তৈরি করুন।
  • একটি অপ্টিমাইজড ডকার ইমেজ তৈরি করুন।
  • ইমেজটি কন্টেইনার রেজিস্ট্রি-তে প্রকাশ করুন।
  • ক্লাউড রান-এ কন্টেইনারাইজড অ্যাপটি চালান।

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

  • একটি গুগল ক্লাউড প্রকল্প
  • একটি ব্রাউজার, যেমন গুগল ক্রোম

২. প্রস্তুতি গ্রহণ

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

প্রজেক্ট আইডিটি মনে রাখবেন, যা সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে ব্যবহৃত হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এই কোডল্যাবে এটিকে পরবর্তীতে PROJECT_ID হিসাবে উল্লেখ করা হবে।

  1. এরপরে, গুগল ক্লাউড রিসোর্স ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে।

এই কোডল্যাবটি চালাতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। "পরিষ্কার-পরিচ্ছন্নতা" (Cleaning up) বিভাগে দেওয়া নির্দেশাবলী অবশ্যই অনুসরণ করবেন, যেখানে রিসোর্স বন্ধ করার পরামর্শ দেওয়া হয়েছে, যাতে এই টিউটোরিয়ালের বাইরে আপনার কোনো বিল না আসে। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি ক্লাউড শেল ব্যবহার করবেন, যা গুগল ক্লাউডে চালিত একটি কমান্ড-লাইন পরিবেশ।

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

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

bce75f34b2c53987.png

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

70f315d7b402b476.png

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

fbe3a0674c982259.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].

৩. একটি Spring Boot অ্যাপ চালু করুন

  1. Spring Initializr ব্যবহার করে একটি নতুন Spring Boot অ্যাপ তৈরি করুন।
$ curl https://start.spring.io/starter.tgz \
    -d language=kotlin \
    -d dependencies=web \
    -d baseDir=kotlin-jib-cloud-run | tar -xzvf -

মনে রাখবেন যে ইনিশিয়ালাইজার স্বয়ংক্রিয়ভাবে টেমপ্লেট অ্যাপের pom.xml এ আপনার ডিপেন্ডেন্সিতে spring-boot-starter-web যোগ করে দেবে।

  1. টেমপ্লেট অ্যাপের ডিরেক্টরিতে যান।
$ cd kotlin-jib-cloud-run
  1. Maven ব্যবহার করে অ্যাপটি বিল্ড ও রান করুন।
$ ./mvnw -DskipTests spring-boot:run
  1. একবার চালু হলে, অ্যাপটি ৮০৮০ পোর্টে শোনা শুরু করবে। ওয়েব প্রিভিউ-তে ক্লিক করুন। 396bfd51f55afb5d.png অ্যাপটি অ্যাক্সেস করতে ক্লাউড শেল টুলবারে থাকা প্রিভিউ (Preview) অপশনটি নির্বাচন করে পোর্ট ৮০৮০-তে ক্লিক করুন।

4172e1e141daf0c1.png

  1. আপনি একটি 404 প্রতিক্রিয়া পাবেন, কারণ অ্যাপটি এখনও কোনো দরকারি কাজ করে না। Control+C চেপে অ্যাপটি বন্ধ করুন।

৪. একটি ওয়েব কন্ট্রোলার যোগ করুন

  1. demo প্যাকেজে নিম্নলিখিত Controller ক্লাসটি তৈরি করুন:
$ vi src/main/kotlin/com/example/demo/Controller.kt
    or
$ nano src/main/kotlin/com/example/demo/Controller.kt

src/main/kotlin/com/example/demo/Controller.kt

package com.example.demo

import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController

@RestController
class Controller {
  
  @GetMapping("/")
  fun saySomething(): String {
    return "Kotlin app on Cloud Run, containerized by Jib!"
  }
}
  1. অ্যাপটি পুনর্নির্মাণ করে চালান।
$ ./mvnw spring-boot:run
  1. ওয়েব প্রিভিউ ব্যবহার করে অ্যাপটি আবার যাচাই করুন। a6cfcaa1d2119c52.png এবার আপনি " Kotlin app on Cloud Run, containerized by Jib! " মেসেজটি দেখতে পাবেন। Control+C চেপে অ্যাপটি বন্ধ করুন।

৫. আপনার অ্যাপটিকে কন্টেইনারাইজ করুন এবং কন্টেইনার রেজিস্ট্রি-তে প্রকাশ করুন।

Jib-এর সাহায্যে, আপনি Docker ছাড়াই আপনার অ্যাপকে অপ্টিমাইজড উপায়ে কন্টেইনারাইজ করতে পারেন এবং যেকোনো কন্টেইনার রেজিস্ট্রি-তে প্রকাশ করতে পারেন।

  1. এগিয়ে যাওয়ার আগে, আপনাকে কন্টেইনার রেজিস্ট্রি এপিআই (Container Registry API) সক্রিয় করতে হবে। এপিআই-টিকে ব্যবহারযোগ্য করার জন্য প্রতিটি প্রজেক্টের ক্ষেত্রে এটি শুধুমাত্র একবারই করতে হবে।
$ gcloud services enable containerregistry.googleapis.com
  1. একটি ডকার ইমেজ তৈরি করতে এবং কন্টেইনার রেজিস্ট্রি-তে প্রকাশ করতে Jib চালান।
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:3.1.1:build \
    -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/kotlin-jib-cloud-run

অবশেষে, আপনি নিম্নলিখিত বার্তাটি দেখতে পাবেন যে অ্যাপটি কন্টেইনারাইজ করা হয়েছে এবং আপনার কন্টেইনার রেজিস্ট্রি-তে পুশ করা হয়েছে।

[INFO] Built and pushed image as gcr.io/PROJECT_ID/kotlin-jib-cloud-run
...
[INFO] BUILD SUCCESS

যদি কোনো ত্রুটি দেখতে পান, তাহলে $GOOGLE_CLOUD_PROJECT আপনার Google Cloud প্রজেক্ট আইডি ( PROJECT_ID )-তে সঠিকভাবে সেট করা আছে কিনা তা পুনরায় যাচাই করুন।

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

6421550ba806beab.png

38ae0ca573c3dcd.png

আপনি দেখতে পাবেন যে আপনার ছবিটি সফলভাবে প্রকাশিত হয়েছে।

c9086605411691c3.png

৬. ক্লাউড রান-এ কন্টেইনারাইজড অ্যাপটি চালান।

ক্লাউড রান কন্টেইনারে সার্ভারলেস প্রযুক্তি নিয়ে আসে এবং আপনার স্টেটলেস কন্টেইনারগুলোকে স্বয়ংক্রিয়ভাবে স্কেল করে।

  1. নেভিগেশন মেনুতে ক্লিক করুন c8b4ea3c68f4c1e3.png আবার ক্লাউড রান নির্বাচন করুন।

812c7c87527ebe4a.png

আপনি যদি প্রথমবারের মতো ক্লাউড রান ব্যবহার করেন, তাহলে এককালীন সেটআপের জন্য নিম্নলিখিত ডায়ালগ বক্সটি দেখতে পাবেন। যদি এটি প্রদর্শিত হয়, তাহলে 'স্টার্ট ইউজিং ক্লাউড রান'-এ ক্লিক করুন।

1b2bf05712f6150a.png

  1. Cloud Run পেজে, Create Service-এ ক্লিক করুন।

c0b4b980662f7807.png

  1. পরবর্তী স্ক্রিনে, ‘Source’-এর নিচে ‘Select’-এ ক্লিক করুন। সোর্স হলো সেই ইমেজটি যা আপনি ক্লাউড রান-এ চালাতে চান।

2049621ae97d62ee.png

  1. ডায়ালগ বক্সে আপনার পূর্বে তৈরি করা ছবিটি দেখানো হবে। ছবিটি নির্বাচন করুন এবং ' চালিয়ে যান' (Continue ) বোতামে ক্লিক করুন।

564367bc65caefbf.png

  1. এখন মাত্র কয়েকটি ক্লিকেই আপনি অ্যাপটি ডেপ্লয় করতে পারবেন। ডেপ্লয়মেন্ট প্ল্যাটফর্ম-এর অধীনে, গুগল ক্লাউডে সার্ভিসটি সম্পূর্ণভাবে পরিচালিত করার জন্য ক্লাউড রান (সম্পূর্ণরূপে পরিচালিত) বেছে নিন। আপনার অবস্থানের জন্য উপযুক্ত একটি অঞ্চল বেছে নিন, ‘অনুমোদনবিহীন আহ্বানের অনুমতি দিন’ নির্বাচন করুন এবং ‘তৈরি করুন’-এ ক্লিক করুন। ব্যাস!

3eb0f51d15326cac.png

ইমেজটি সম্পূর্ণরূপে ডেপ্লয় হয়ে গেলে, ক্লাউড রান পেজে অ্যাপটি অ্যাক্সেস করার জন্য একটি ইউআরএল দেখা যাবে। দেখে নিন!

8bf800dd6e2f44f2.png

অবশেষে, আপনি অ্যাপটি থেকে প্রত্যাশিত বার্তাটি দেখতে পাবেন।

Kotlin app on Cloud Run, containerized by Jib!

ব্যাস! ভবিষ্যতে যদি আপনার অ্যাপের নতুন সংস্করণ ডেপ্লয় করার প্রয়োজন হয়, তাহলে পেজটিতে থাকা ‘Deploy New Revision’ বাটনে ক্লিক করে তা করতে পারবেন।

৭. পরিষ্কার করুন

  1. আপনার পরিবেশ পরিষ্কার করতে, আপনাকে ক্লাউড রান-এ ডেপ্লয় করা অ্যাপ এবং কন্টেইনার রেজিস্ট্রি-তে প্রকাশিত ইমেজটি ডিলিট করতে হবে। ক্লাউড রান- এ যান, অ্যাপটি সিলেক্ট করুন এবং ডিলিট-এ ক্লিক করুন।

1dfc2f51c1b5f6e.png

  1. একইভাবে, কন্টেইনার রেজিস্ট্রি পৃষ্ঠায় গিয়ে ইমেজটি মুছে দিন।

1b724136c1655935.png

৮. অভিনন্দন

অভিনন্দন! আপনি সফলভাবে আপনার Spring Boot Kotlin অ্যাপটিকে কন্টেইনারাইজ করে Cloud Run-এ ডেপ্লয় করেছেন!

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

আরও জানুন