গুগল কুবারনেটস ইঞ্জিনে মাইক্রোসার্ভিসেসে একটি মনোলিথিক ওয়েবসাইট স্থানান্তর করা

১. ভূমিকা

কেন একটি মনোলিথিক অ্যাপ্লিকেশন থেকে মাইক্রোসার্ভিসেস আর্কিটেকচারে স্থানান্তরিত হবেন? একটি অ্যাপ্লিকেশনকে মাইক্রোসার্ভিসেসে বিভক্ত করার নিম্নলিখিত সুবিধাগুলো রয়েছে; এর বেশিরভাগই এই কারণে হয়ে থাকে যে মাইক্রোসার্ভিসেসগুলো লুজলি কাপলড।

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

মনোলিথের তুলনায় কিছু অসুবিধা হলো:

  • যেহেতু একটি মাইক্রোসার্ভিস-ভিত্তিক অ্যাপ হলো বিভিন্ন সার্ভিসের একটি নেটওয়ার্ক, যেগুলো প্রায়শই এমনভাবে একে অপরের সাথে যোগাযোগ করে যা সহজে বোঝা যায় না, তাই সিস্টেমটির সামগ্রিক জটিলতা বেড়ে যাওয়ার প্রবণতা থাকে।
  • একটি মনোলিথের অভ্যন্তরীণ কাঠামোর বিপরীতে, মাইক্রোসার্ভিসগুলো একটি নেটওয়ার্কের মাধ্যমে যোগাযোগ করে। কিছু পরিস্থিতিতে, এটিকে একটি নিরাপত্তা ঝুঁকি হিসেবে দেখা যেতে পারে। Istio মাইক্রোসার্ভিসগুলোর মধ্যকার ট্র্যাফিক স্বয়ংক্রিয়ভাবে এনক্রিপ্ট করার মাধ্যমে এই সমস্যার সমাধান করে।
  • সার্ভিসগুলোর মধ্যেকার লেটেন্সির কারণে মনোলিথিক পদ্ধতির মতো একই মানের পারফরম্যান্স অর্জন করা কঠিন হতে পারে।
  • আপনার সিস্টেমের আচরণ কোনো একটিমাত্র সার্ভিসের কারণে নয়, বরং অনেকগুলো সার্ভিস এবং তাদের পারস্পরিক ক্রিয়ার ফলে ঘটে থাকে। একারণে, প্রোডাকশনে আপনার সিস্টেম কীভাবে আচরণ করে (এর অবজার্ভেবিলিটি) তা বোঝা আরও কঠিন হয়ে পড়ে। Istio এই সমস্যারও একটি সমাধান।

এই ল্যাবে আমরা গুগল কুবারনেটিস ইঞ্জিন (GKE)-এ মাইক্রোসার্ভিস চালাব। কুবারনেটিস হলো কন্টেইনার পরিচালনা, হোস্ট, স্কেল এবং ডেপ্লয় করার একটি প্ল্যাটফর্ম। কন্টেইনার হলো কোড প্যাকেজ এবং চালানোর একটি বহনযোগ্য উপায়। এগুলো মাইক্রোসার্ভিস প্যাটার্নের জন্য খুবই উপযুক্ত, যেখানে প্রতিটি মাইক্রোসার্ভিস তার নিজস্ব কন্টেইনারে চলতে পারে।

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

আমাদের মাইক্রোসার্ভিসগুলোর আর্কিটেকচার ডায়াগ্রাম

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

636a2d58588b2b87.png

আপনি যা শিখবেন

  • কীভাবে একটি মনোলিথকে মাইক্রোসার্ভিসে বিভক্ত করবেন
  • কীভাবে একটি গুগল কুবারনেটিস ইঞ্জিন ক্লাস্টার তৈরি করবেন
  • কিভাবে একটি ডকার ইমেজ তৈরি করবেন
  • কিভাবে কুবারনেটিসে ডকার ইমেজ ডেপ্লয় করবেন

পূর্বশর্ত

  • প্রজেক্ট তৈরি করার জন্য অ্যাডমিনিস্ট্রেটিভ অ্যাক্সেসসহ একটি গুগল ক্লাউড প্ল্যাটফর্ম অ্যাকাউন্ট অথবা প্রজেক্ট ওনার ভূমিকাসহ একটি প্রজেক্ট।
  • ডকার এবং কুবারনেটিস সম্পর্কে প্রাথমিক ধারণা

২. পরিবেশ সেটআপ

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

আপনার যদি আগে থেকে কোনো গুগল অ্যাকাউন্ট (জিমেইল বা গুগল অ্যাপস) না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে। গুগল ক্লাউড প্ল্যাটফর্ম কনসোলে ( console.cloud.google.com ) সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন:

53dad2cefdae71da.png

2016-02-10 12:45:26.png থেকে স্ক্রিনশট

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

এরপরে, গুগল ক্লাউড রিসোর্স ব্যবহার করতে এবং কন্টেইনার ইঞ্জিন এপিআই (Container Engine API) সক্রিয় করতে আপনাকে ডেভেলপার কনসোলে বিলিং চালু করতে হবে।

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

গুগল ক্লাউড প্ল্যাটফর্মের নতুন ব্যবহারকারীরা ৩০০ ডলারের একটি বিনামূল্যে ট্রায়ালের জন্য যোগ্য।

গুগল ক্লাউড শেল

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

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

  1. ক্লাউড কনসোল থেকে ক্লাউড শেল সক্রিয় করতে, কেবল 'Activate Cloud Shell'-এ ক্লিক করুন। fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (পরিবেশের জন্য ব্যবস্থা করতে এবং সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত)।

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Screen Shot 2017-06-14 at 10.13.43 PM.png

ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি দেখতে পাবেন যে আপনাকে ইতিমধ্যেই প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার PROJECT_ID তে সেট করা আছে।

gcloud auth list

কমান্ড আউটপুট

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি কোনো কারণে প্রজেক্টটি সেট করা না থাকে, তাহলে নিম্নলিখিত কমান্ডটি দিন:

gcloud config set project <PROJECT_ID>

আপনার PROJECT_ID খুঁজছেন? সেটআপের ধাপগুলিতে আপনি কোন আইডি ব্যবহার করেছিলেন তা দেখে নিন অথবা ক্লাউড কনসোল ড্যাশবোর্ডে এটি খুঁজে দেখুন:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqA BYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

ক্লাউড শেল ডিফল্টরূপে কিছু এনভায়রনমেন্ট ভেরিয়েবলও সেট করে, যা ভবিষ্যতে কমান্ড চালানোর সময় কাজে লাগতে পারে।

echo $GOOGLE_CLOUD_PROJECT

কমান্ড আউটপুট

<PROJECT_ID>
  1. অবশেষে, ডিফল্ট জোন এবং প্রজেক্ট কনফিগারেশন সেট করুন।
gcloud config set compute/zone us-central1-f

আপনি বিভিন্ন ধরনের জোন বেছে নিতে পারেন। আরও তথ্যের জন্য, অঞ্চল ও জোন দেখুন।

৩. সোর্স রিপোজিটরি ক্লোন করুন

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

আপনার ক্লাউড শেল ইনস্ট্যান্সে গিট রিপো ক্লোন করতে নিম্নলিখিত কমান্ডগুলো চালান এবং উপযুক্ত ডিরেক্টরিতে যান। আমরা নোডজেএস (NodeJS) ডিপেন্ডেন্সিগুলোও ইনস্টল করব, যাতে ডেপ্লয় করার আগে আমরা আমাদের মনোলিথ পরীক্ষা করতে পারি। এই স্ক্রিপ্টটি চলতে কয়েক মিনিট সময় লাগতে পারে।

cd ~
git clone https://github.com/googlecodelabs/monolith-to-microservices.git
cd ~/monolith-to-microservices
./setup.sh

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

৪. একটি GKE ক্লাস্টার তৈরি করুন

এখন যেহেতু আপনার কার্যকরী ডেভেলপার এনভায়রনমেন্ট তৈরি হয়ে গেছে, আমাদের মনোলিথ এবং পরবর্তীতে মাইক্রোসার্ভিসগুলো ডেপ্লয় করার জন্য একটি কুবারনেটিস ক্লাস্টার প্রয়োজন! ক্লাস্টার তৈরি করার আগে, আমাদের নিশ্চিত করতে হবে যে সঠিক API-গুলো এনাবল করা আছে। কন্টেইনার API এনাবল করতে নিম্নলিখিত কমান্ডটি চালান, যাতে আমরা গুগল কুবারনেটিস ইঞ্জিন ব্যবহার করতে পারি:

gcloud services enable container.googleapis.com

এখন আমরা আমাদের ক্লাস্টার তৈরি করার জন্য প্রস্তুত! ৩টি নোড সহ fancy-cluster নামের একটি GKE ক্লাস্টার তৈরি করতে নিচের কমান্ডটি চালান।

gcloud container clusters create fancy-cluster --num-nodes 3

ক্লাস্টারটি তৈরি হতে কয়েক মিনিট সময় লাগতে পারে। কমান্ডটি সম্পন্ন হয়ে গেলে, নিম্নলিখিত কমান্ডটি চালান এবং ক্লাস্টারের তিনটি ওয়ার্কার ভিএম ইনস্ট্যান্স দেখুন:

gcloud compute instances list

আউটপুট:

NAME                                          ZONE        MACHINE_TYPE   PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP    STATUS
gke-fancy-cluster-default-pool-ad92506d-1ng3  us-east4-a  n1-standard-1               10.150.0.7   XX.XX.XX.XX    RUNNING
gke-fancy-cluster-default-pool-ad92506d-4fvq  us-east4-a  n1-standard-1               10.150.0.5   XX.XX.XX.XX    RUNNING
gke-fancy-cluster-default-pool-ad92506d-4zs3  us-east4-a  n1-standard-1               10.150.0.6   XX.XX.XX.XX    RUNNING

আপনি গুগল ক্লাউড কনসোলেও আপনার কুবারনেটিস ক্লাস্টার এবং সম্পর্কিত তথ্য দেখতে পারেন। উপরের বাম দিকের মেনু বোতামে ক্লিক করুন, নিচে স্ক্রল করে কুবারনেটিস ইঞ্জিন (Kubernetes Engine) পর্যন্ত যান এবং ক্লাস্টারস (Clusters)-এ ক্লিক করুন। আপনি ফ্যান্সি-ক্লাস্টার (fancy-cluster ) নামের আপনার ক্লাস্টারটি দেখতে পাবেন।

795c794b03c5d2b0.png

6b394dfb8a6031f2.png

অভিনন্দন! আপনি এইমাত্র আপনার প্রথম Kubernetes ক্লাস্টার তৈরি করেছেন!

৫. বিদ্যমান মনোলিথ স্থাপন করুন

যেহেতু এই ল্যাবের মূল উদ্দেশ্য হলো একটি মনোলিথকে মাইক্রোসার্ভিসে বিভক্ত করার প্রক্রিয়াটি ধাপে ধাপে দেখা, তাই আমাদের একটি মনোলিথ অ্যাপ্লিকেশন চালু করতে হবে। এই ল্যাবের জন্য আমাদের GKE ক্লাস্টারে একটি মনোলিথ অ্যাপ্লিকেশন ডেপ্লয় করতে নিম্নলিখিত স্ক্রিপ্টটি চালান:

cd ~/monolith-to-microservices
./deploy-monolith.sh

মনোলিথে প্রবেশ

আমাদের মনোলিথ অ্যাপ্লিকেশনের এক্সটার্নাল আইপি অ্যাড্রেস খুঁজে বের করতে, নিম্নলিখিত কমান্ডটি চালান।

kubectl get service monolith

আপনি নিম্নলিখিতের অনুরূপ আউটপুট দেখতে পাবেন:

NAME         CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE
monolith     10.3.251.122    203.0.113.0     80:30877/TCP     3d

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

কয়েক মিনিট অপেক্ষা করুন এবং আবার চেষ্টা করুন <pending>

একবার আপনার মনোলিথের এক্সটার্নাল আইপি অ্যাড্রেসটি নির্ধারণ করে ফেললে, আইপি অ্যাড্রেসটি কপি করুন। আপনার মনোলিথটি অ্যাক্সেসযোগ্য কিনা তা পরীক্ষা করতে আপনার ব্রাউজারে এই ইউআরএল-টি (যেমন http://203.0.113.0) খুলুন।

9ed25c3f0cbe62fa.png

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

৬. অর্ডারগুলোকে মাইক্রোসার্ভিসে স্থানান্তর করুন

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

নতুন অর্ডার তৈরি করার মাইক্রোসার্ভিস

আমরা প্রথমে যে সার্ভিসটি আলাদা করব, সেটি হলো অর্ডারস সার্ভিস। আমরা প্রদত্ত আলাদা কোডবেসটি ব্যবহার করে এই সার্ভিসের জন্য একটি পৃথক ডকার কন্টেইনার তৈরি করব।

গুগল ক্লাউড বিল্ড দিয়ে ডকার কন্টেইনার তৈরি করুন

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

সাধারণত আপনাকে দুটি ধাপে কাজটি করতে হয়: একটি ডকার কন্টেইনার তৈরি করা এবং GKE-এর পুল করার জন্য ইমেজটি সংরক্ষণ করতে সেটিকে একটি রেজিস্ট্রি-তে পুশ করা। কিন্তু আমরা এই কাজটি আরও সহজ করে তুলতে পারি; আমরা গুগল ক্লাউড বিল্ড ব্যবহার করে একটিমাত্র কমান্ডের মাধ্যমেই ডকার কন্টেইনার তৈরি করতে এবং ইমেজটি গুগল ক্লাউড কন্টেইনার রেজিস্ট্রি-তে রাখতে পারি! এর ফলে আমরা একটিমাত্র কমান্ড দিয়েই আমাদের ইমেজটি বিল্ড করে কন্টেইনার রেজিস্ট্রি-তে স্থানান্তর করতে পারি। ডকার ফাইল তৈরি এবং পুশ করার ম্যানুয়াল প্রক্রিয়াটি দেখতে আপনি এখানে যেতে পারেন।

গুগল ক্লাউড বিল্ড ডিরেক্টরি থেকে ফাইলগুলোকে কম্প্রেস করে একটি গুগল ক্লাউড স্টোরেজ বাকেটে স্থানান্তর করবে। এরপর বিল্ড প্রসেসটি বাকেট থেকে সমস্ত ফাইল নিয়ে ডকারফাইল ব্যবহার করে ডকার বিল্ড প্রসেসটি চালাবে। যেহেতু আমরা ডকার ইমেজের জন্য হোস্ট হিসেবে gcr.io সহ --tag ফ্ল্যাগটি নির্দিষ্ট করেছি, তাই ফলস্বরূপ ডকার ইমেজটি গুগল ক্লাউড কন্টেইনার রেজিস্ট্রি-তে পুশ করা হবে।

আপনার ডকার কন্টেইনার তৈরি করতে এবং গুগল কন্টেইনার রেজিস্ট্রি-তে পুশ করতে নিম্নলিখিত কমান্ডগুলি চালান:

cd ~/monolith-to-microservices/microservices/src/orders
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/orders:1.0.0 .

এই প্রক্রিয়াটিতে কয়েক মিনিট সময় লাগবে, কিন্তু এটি সম্পন্ন হওয়ার পর টার্মিনালে নিম্নলিখিতের মতো আউটপুট দেখা যাবে:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ID                                    CREATE_TIME                DURATION  SOURCE                                                                                  IMAGES                              STATUS
1ae295d9-63cb-482c-959b-bc52e9644d53  2019-08-29T01:56:35+00:00  33S       gs://<PROJECT_ID>_cloudbuild/source/1567043793.94-abfd382011724422bf49af1558b894aa.tgz  gcr.io/<PROJECT_ID>/orders:1.0.0  SUCCESS

আপনার বিল্ড হিস্ট্রি দেখতে বা প্রক্রিয়াটি রিয়েল টাইমে পর্যবেক্ষণ করতে, আপনি গুগল ক্লাউড কনসোলে যেতে পারেন। উপরের বাম দিকের মেনু বোতামে ক্লিক করুন এবং নিচে স্ক্রল করে Tools → Cloud Build-এ গিয়ে History-তে ক্লিক করুন। এখানে আপনি আপনার পূর্ববর্তী সমস্ত বিল্ডের একটি তালিকা দেখতে পাবেন, যার মধ্যে আপনার এইমাত্র তৈরি করা বিল্ডটি ছাড়া আর কিছুই থাকার কথা নয়।

4c753ede203255f6.png

বিল্ড আইডিতে ক্লিক করলে আপনি লগ আউটপুট সহ সেই বিল্ডের সমস্ত বিবরণ দেখতে পাবেন।

বিল্ড ডিটেইলস পেজের বিল্ড ইনফরমেশন সেকশনে থাকা ইমেজের নামে ক্লিক করে আপনি তৈরি হওয়া কন্টেইনার ইমেজটি দেখতে পারেন।

6e88ed1643dfe629.png

GKE-তে কন্টেইনার স্থাপন করুন

এখন যেহেতু আমরা আমাদের ওয়েবসাইটটিকে কন্টেইনারাইজ করে গুগল কন্টেইনার রেজিস্ট্রি-তে কন্টেইনারটি পুশ করেছি, তাই কুবারনেটিসে ডিপ্লয় করার সময় এসেছে!

Kubernetes অ্যাপ্লিকেশনগুলোকে Pod হিসেবে উপস্থাপন করে, যা একটি কন্টেইনার (বা ঘনিষ্ঠভাবে সংযুক্ত কন্টেইনারের একটি গ্রুপ)-এর প্রতিনিধিত্বকারী ইউনিট। Pod হলো Kubernetes-এর ক্ষুদ্রতম স্থাপনযোগ্য ইউনিট। এই টিউটোরিয়ালে, প্রতিটি Pod-এ শুধুমাত্র আপনার মাইক্রোসার্ভিসেস কন্টেইনারটি রয়েছে।

একটি GKE ক্লাস্টারে অ্যাপ্লিকেশন ডেপ্লয় এবং ম্যানেজ করার জন্য, আপনাকে কুবারনেটিস ক্লাস্টার ম্যানেজমেন্ট সিস্টেমের সাথে যোগাযোগ করতে হবে। সাধারণত ক্লাউড শেলের ভেতর থেকে kubectl কমান্ড-লাইন টুল ব্যবহার করে এটি করা হয়ে থাকে।

প্রথমে আমরা একটি Deployment রিসোর্স তৈরি করব। Deployment আপনার অ্যাপ্লিকেশনের একাধিক কপি, যেগুলোকে রেপ্লিকা বলা হয়, পরিচালনা করে এবং আপনার ক্লাস্টারের প্রতিটি নোডে সেগুলো চালানোর জন্য সময়সূচী নির্ধারণ করে। এক্ষেত্রে, Deployment আপনার অ্যাপ্লিকেশনের শুধুমাত্র একটি Pod চালাবে। Deployment একটি ReplicaSet তৈরি করার মাধ্যমে এটি নিশ্চিত করে। নির্দিষ্ট সংখ্যক রেপ্লিকা যেন সবসময় চালু থাকে, তা নিশ্চিত করার দায়িত্ব ReplicaSet-এর।

নিচের kubectl create deployment কমান্ডটি আপনার ক্লাস্টারে Kubernetes-কে orders নামের একটি Deployment তৈরি করতে নির্দেশ দেয়, যেখানে ১টি রেপ্লিকা থাকবে।

আপনার অ্যাপ্লিকেশনটি ডেপ্লয় করতে নিম্নলিখিত কমান্ডটি চালান:

kubectl create deployment orders --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/orders:1.0.0

স্থাপন যাচাই করুন

ডিপ্লয়মেন্টটি সফলভাবে তৈরি হয়েছে কিনা তা যাচাই করতে, নিম্নলিখিত কমান্ডটি চালান; পডের স্ট্যাটাস 'Running' হতে কয়েক মুহূর্ত সময় লাগতে পারে:

kubectl get all

আউটপুট:

NAME                            READY   STATUS    RESTARTS   AGE
pod/monolith-779c8d95f5-dxnzl   1/1     Running   0          15h
pod/orders-5bc6969d76-kdxkk     1/1     Running   0          21s
NAME                 TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)        AGE
service/kubernetes   ClusterIP      10.39.240.1     <none>         443/TCP        19d
service/monolith     LoadBalancer   10.39.241.130   34.74.209.57   80:30412/TCP   15h
NAME                       READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/monolith   1/1     1            1           15h
deployment.apps/orders     1/1     1            1           21s
NAME                                  DESIRED   CURRENT   READY   AGE
replicaset.apps/monolith-779c8d95f5   1         1         1       15h
replicaset.apps/orders-5bc6969d76     1         1         1       21s

এই আউটপুটটি আমাদের বেশ কিছু বিষয় দেখাচ্ছে। আমরা আমাদের বর্তমান Deployment, কাঙ্ক্ষিত ১টি পড সহ ReplicaSet এবং চলমান Pod-টি দেখতে পাচ্ছি। দেখে মনে হচ্ছে সবকিছু সফলভাবে তৈরি হয়েছে!

GKE কন্টেইনার উন্মুক্ত করুন

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

যখন আমরা আমাদের Orders সার্ভিসটি ডেপ্লয় করেছিলাম, তখন আমরা এটিকে একটি Kubernetes ডেপ্লয়মেন্টের মাধ্যমে অভ্যন্তরীণভাবে ৮০৮১ পোর্টে উন্মুক্ত করেছিলাম। এই সার্ভিসটিকে বাহ্যিকভাবে উন্মুক্ত করার জন্য, আমাদের একটি LoadBalancer টাইপের Kubernetes সার্ভিস তৈরি করতে হবে, যা বাহ্যিকভাবে ৮০ পোর্ট থেকে Orders সার্ভিসের জন্য অভ্যন্তরীণ ৮০৮১ পোর্টে ট্র্যাফিক রাউট করবে। আপনার ওয়েবসাইটটি ইন্টারনেটে উন্মুক্ত করতে নিম্নলিখিত কমান্ডটি চালান:

kubectl expose deployment orders --type=LoadBalancer --port 80 --target-port 8081

পরিষেবাটি অ্যাক্সেস করা

GKE সার্ভিস রিসোর্সকে এক্সটার্নাল আইপি অ্যাড্রেস বরাদ্দ করে—ডিপ্লয়মেন্টকে নয়। আপনার অ্যাপ্লিকেশনের জন্য GKE যে এক্সটার্নাল আইপি সরবরাহ করেছে তা যদি আপনি জানতে চান, তাহলে আপনি kubectl get service কমান্ড দিয়ে সার্ভিসটি পরীক্ষা করতে পারেন:

kubectl get service orders

আউটপুট:

NAME         CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE
orders       10.3.251.122    203.0.113.0     80:30877/TCP     3d

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

মনোলিথ পুনর্গঠন করুন

যেহেতু আমরা মনোলিথ থেকে অর্ডারস সার্ভিসটি সরিয়ে দিয়েছি, তাই নতুন এক্সটার্নাল অর্ডারস মাইক্রোসার্ভিসটিকে নির্দেশ করার জন্য আমাদের মনোলিথটিকে পরিবর্তন করতে হবে।

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

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

cd ~/monolith-to-microservices/react-app
nano .env.monolith

যখন এডিটরটি খুলবে, আপনার ফাইলটি দেখতে এইরকম হবে:

REACT_APP_ORDERS_URL=/service/orders
REACT_APP_PRODUCTS_URL=/service/products

REACT_APP_ORDERS_URL আপনার Orders মাইক্রোসার্ভিসের IP অ্যাড্রেস দিয়ে নতুন ফরম্যাটে পরিবর্তন করুন, যাতে এটি নীচের সাথে মিলে যায়:

REACT_APP_ORDERS_URL=http://<ORDERS_IP_ADDRESS>/api/orders
REACT_APP_PRODUCTS_URL=/service/products

ন্যানো এডিটরে ফাইলটি সেভ করতে CTRL+O চাপুন, ENTER চাপুন, তারপর CTRL+X চাপুন।

এই ফাইলে আপনি যে URL-টি সেট করেছেন, সেখানে গিয়ে আপনার নতুন মাইক্রোসার্ভিসটি পরীক্ষা করতে পারেন। ওয়েবপেজটি আমাদের Orders মাইক্রোসার্ভিস থেকে একটি JSON রেসপন্স ফেরত দেবে।

এরপরে, আমাদের মনোলিথ ফ্রন্টএন্ড পুনর্নির্মাণ করতে হবে এবং মনোলিথের জন্য কন্টেইনার তৈরি করতে ও আমাদের GKE ক্লাস্টারে পুনরায় স্থাপন করতে বিল্ড প্রক্রিয়াটি পুনরাবৃত্তি করতে হবে। এই ধাপগুলি সম্পন্ন করতে নিম্নলিখিত কমান্ডগুলি চালান:

মনোলিথ কনফিগারেশন ফাইলগুলি পুনর্নির্মাণ করুন

npm run build:monolith

গুগল ক্লাউড বিল্ড দিয়ে ডকার কন্টেইনার তৈরি করুন

cd ~/monolith-to-microservices/monolith
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .

GKE-তে কন্টেইনার স্থাপন করুন

kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0

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

1cdd60bb0d4d1148.png

৭. প্রোডাক্টগুলোকে মাইক্রোসার্ভিসে স্থানান্তর করুন

নতুন পণ্য মাইক্রোসার্ভিস তৈরি করুন

এরপর প্রোডাক্টস সার্ভিসটি মাইগ্রেট করার মাধ্যমে আমরা আমাদের সার্ভিসগুলোকে আলাদা করার কাজ চালিয়ে যেতে পারি। আমরা আগের ধাপের মতোই একই প্রক্রিয়া অনুসরণ করব। একটি ডকার কন্টেইনার তৈরি করতে, আপনার কন্টেইনারটি ডেপ্লয় করতে এবং একটি কুবারনেটিস সার্ভিসের মাধ্যমে এটিকে উন্মুক্ত করতে নিম্নলিখিত কমান্ডগুলো চালান।

গুগল ক্লাউড বিল্ড দিয়ে ডকার কন্টেইনার তৈরি করুন

cd ~/monolith-to-microservices/microservices/src/products
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/products:1.0.0 .

GKE-তে কন্টেইনার স্থাপন করুন

kubectl create deployment products --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/products:1.0.0

GKE কন্টেইনার উন্মুক্ত করুন

kubectl expose deployment products --type=LoadBalancer --port 80 --target-port 8082

নিচের কমান্ডটি ব্যবহার করে, আমাদের Orders সার্ভিসের জন্য যেভাবে করেছিলাম, ঠিক সেভাবেই আমাদের Products সার্ভিসের পাবলিক আইপি খুঁজে বের করুন:

kubectl get service products

আউটপুট:

NAME         CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE
products     10.3.251.122    203.0.113.0     80:30877/TCP     3d

পরবর্তী ধাপে আমাদের মনোলিথকে নতুন প্রোডাক্টস মাইক্রোসার্ভিসের দিকে নির্দেশ করার জন্য পুনর্গঠন করার সময় আইপি অ্যাড্রেসটি সংরক্ষণ করুন।

মনোলিথ পুনর্গঠন করুন

ন্যানো এডিটর ব্যবহার করে লোকাল ইউআরএল-এর পরিবর্তে আমাদের নতুন প্রোডাক্টস মাইক্রোসার্ভিসগুলোর আইপি অ্যাড্রেসটি বসান:

cd ~/monolith-to-microservices/react-app
nano .env.monolith

যখন এডিটরটি খুলবে, আপনার ফাইলটি দেখতে এইরকম হবে:

REACT_APP_ORDERS_URL=http://<ORDERS_IP_ADDRESS>/api/orders
REACT_APP_PRODUCTS_URL=/service/products

REACT_APP_PRODUCTS_URL কে আপনার প্রোডাক্ট মাইক্রোসার্ভিসের আইপি অ্যাড্রেস দিয়ে নতুন ফরম্যাটে পরিবর্তন করুন, যাতে এটি নীচের সাথে মিলে যায়:

REACT_APP_ORDERS_URL=http://<ORDERS_IP_ADDRESS>/api/orders
REACT_APP_PRODUCTS_URL=http://<PRODUCTS_IP_ADDRESS>/api/products

ন্যানো এডিটরে ফাইলটি সেভ করতে CTRL+O চাপুন, ENTER চাপুন, তারপর CTRL+X চাপুন।

এই ফাইলে আপনি যে URL-টি সেট করেছেন, সেখানে গিয়ে আপনার নতুন মাইক্রোসার্ভিসটি পরীক্ষা করতে পারেন। ওয়েবপেজটি আমাদের Products মাইক্রোসার্ভিস থেকে একটি JSON রেসপন্স ফেরত দেবে।

এরপরে, আমাদের মনোলিথ ফ্রন্টএন্ড পুনর্নির্মাণ করতে হবে এবং মনোলিথের জন্য কন্টেইনার তৈরি করতে ও আমাদের GKE ক্লাস্টারে পুনরায় স্থাপন করতে বিল্ড প্রক্রিয়াটি পুনরাবৃত্তি করতে হবে। এই ধাপগুলি সম্পন্ন করতে নিম্নলিখিত কমান্ডগুলি চালান:

মনোলিথ কনফিগারেশন ফাইলগুলি পুনর্নির্মাণ করুন

npm run build:monolith

গুগল ক্লাউড বিল্ড দিয়ে ডকার কন্টেইনার তৈরি করুন

cd ~/monolith-to-microservices/monolith
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:3.0.0 .

GKE-তে কন্টেইনার স্থাপন করুন

kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:3.0.0

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

5389b29f4b8c7c69.png

৮. ফ্রন্টএন্ডকে মাইক্রোসার্ভিসে স্থানান্তর করুন

মাইগ্রেশন প্রক্রিয়ার শেষ ধাপ হলো ফ্রন্টএন্ড কোডকে একটি মাইক্রোসার্ভিসে স্থানান্তর করা এবং মনোলিথটি বন্ধ করে দেওয়া! এই ধাপটি সম্পন্ন হওয়ার পর, আমরা সফলভাবে আমাদের মনোলিথকে একটি মাইক্রোসার্ভিসেস আর্কিটেকচারে মাইগ্রেট করে ফেলব!

নতুন ফ্রন্টএন্ড মাইক্রোসার্ভিস তৈরি করুন

একটি নতুন ফ্রন্টএন্ড মাইক্রোসার্ভিস তৈরি করতে আগের দুটি ধাপের পদ্ধতিই অনুসরণ করা যাক।

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

cd ~/monolith-to-microservices/react-app
cp .env.monolith .env
npm run build

একবার সেটি সম্পন্ন হয়ে গেলে, আমরা আগের ধাপগুলোর মতোই একই প্রক্রিয়া অনুসরণ করব। একটি ডকার কন্টেইনার তৈরি করতে, আপনার কন্টেইনারটি ডেপ্লয় করতে এবং একটি কুবারনেটিস সার্ভিসের মাধ্যমে সেটিকে উন্মুক্ত করতে নিম্নলিখিত কমান্ডগুলো চালান।

গুগল ক্লাউড বিল্ড দিয়ে ডকার কন্টেইনার তৈরি করুন

cd ~/monolith-to-microservices/microservices/src/frontend
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/frontend:1.0.0 .

GKE-তে কন্টেইনার স্থাপন করুন

kubectl create deployment frontend --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/frontend:1.0.0

GKE কন্টেইনার উন্মুক্ত করুন

kubectl expose deployment frontend --type=LoadBalancer --port 80 --target-port 8080

মনোলিথটি মুছে ফেলুন

এখন যেহেতু আমাদের সমস্ত সার্ভিস মাইক্রোসার্ভিস হিসেবে চলছে, আমরা আমাদের মনোলিথ অ্যাপ্লিকেশনটি ডিলিট করে দিতে পারি! উল্লেখ্য, একটি প্রকৃত মাইগ্রেশনের ক্ষেত্রে, আমাদের অ্যাপ্লিকেশনের নতুন ফ্রন্টএন্ড মাইক্রোসার্ভিসগুলোর দিকে বিদ্যমান ডোমেইন নামগুলোকে নির্দেশ করার জন্য ডিএনএস (DNS) পরিবর্তন ইত্যাদিও করতে হবে। আমাদের মনোলিথটি ডিলিট করতে নিম্নলিখিত কমান্ডগুলো চালান:

kubectl delete deployment monolith
kubectl delete service monolith

আপনার কাজ পরীক্ষা করুন

সবকিছু ঠিকঠাক কাজ করছে কিনা তা যাচাই করতে, আপনার মনোলিথ সার্ভিসের পুরোনো আইপি অ্যাড্রেসটি কাজ করবে না এবং আপনার ফ্রন্টএন্ড সার্ভিসের নতুন আইপি অ্যাড্রেসটিতে নতুন অ্যাপ্লিকেশনটি হোস্ট হবে। সমস্ত সার্ভিস এবং আইপি অ্যাড্রেসের তালিকা দেখতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

kubectl get services

আপনার আউটপুটটি নিম্নলিখিতের অনুরূপ হওয়া উচিত:

NAME         TYPE           CLUSTER-IP      EXTERNAL-IP      PORT(S)        AGE
frontend     LoadBalancer   10.39.246.135   35.227.21.154    80:32663/TCP   12m
kubernetes   ClusterIP      10.39.240.1     <none>           443/TCP        18d
orders       LoadBalancer   10.39.243.42    35.243.173.255   80:32714/TCP   31m
products     LoadBalancer   10.39.250.16    35.243.180.23    80:32335/TCP   21m

একবার আপনার ফ্রন্টএন্ড মাইক্রোসার্ভিসের এক্সটার্নাল আইপি অ্যাড্রেস নির্ধারণ করে ফেললে, আইপি অ্যাড্রেসটি কপি করুন। আপনার ফ্রন্টএন্ড অ্যাক্সেসযোগ্য কিনা তা পরীক্ষা করতে আপনার ব্রাউজারকে এই ইউআরএল-এ (যেমন http://203.0.113.0) নিয়ে যান। মনোলিথটিকে মাইক্রোসার্ভিসে বিভক্ত করার আগে আপনার ওয়েবসাইটটি যেমন ছিল, এখনও ঠিক তেমনই থাকা উচিত!

৯. পরিচ্ছন্নতা

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

gcloud projects delete [PROJECT_ID]

অনুরোধ করা হলে 'Y' লিখে মুছে ফেলার বিষয়টি নিশ্চিত করুন।

১০. অভিনন্দন!

আপনি সফলভাবে আপনার মনোলিথিক অ্যাপ্লিকেশনটিকে মাইক্রোসার্ভিসে বিভক্ত করেছেন এবং সেগুলোকে গুগল কুবারনেটিস ইঞ্জিনে স্থাপন করেছেন!

পরবর্তী পদক্ষেপ

Kubernetes সম্পর্কে আরও জানতে নিম্নলিখিত কোডল্যাবগুলো দেখুন:

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