ব্যাটল পিচ - একটি মাইক্রোসার্ভিসেস ব্যাটল গ্রাউন্ড

1. ভূমিকা

শেষ আপডেট: 2020-02-12

Microservices Battle Arena

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

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

অবশ্যই লক্ষ্য জয় করা, কিন্তু পথ ধরে আপনি Google ক্লাউডে মাইক্রোসার্ভিস তৈরি এবং স্থাপন করা সম্পর্কে শিখবেন।

কিভাবে এটা কাজ করে

আপনি যে কোনো প্রযুক্তির সাহায্যে একটি মাইক্রোসার্ভিস তৈরি করবেন (বা Java, Kotlin, বা Scala starters থেকে বেছে নিন) এবং তারপর Google Cloud-এ মাইক্রোসার্ভিস স্থাপন করবেন। একবার স্থাপন করা হলে, আপনি একটি ফর্ম পূরণ করবেন যাতে আপনার মাইক্রোসার্ভিসের URLটি আমাদের জানাতে পারেন এবং তারপরে আমরা এটিকে অঙ্গনে যোগ করব৷

ক্ষেত্রটিতে একটি প্রদত্ত যুদ্ধের জন্য সমস্ত খেলোয়াড় রয়েছে। DevNexus সম্মেলনের জন্য প্রতিটি দিনের জন্য একটি ক্ষেত্র থাকবে। প্রতিটি খেলোয়াড় একটি মাইক্রোসার্ভিসের প্রতিনিধিত্ব করে যা ঘুরে বেড়ায় এবং অন্যান্য খেলোয়াড়দের দিকে পীচ ছুড়ে দেয়।

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

তিনজন মেক আপ প্লেয়ারের সাথে এরিনাটি কেমন দেখায় তা এখানে:

9e4775d13ff18d4d.png

উদাহরণ যুদ্ধ পীচ ক্ষেত্র

ঘূর্ণায়মান দ্বন্দ্ব

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

যুদ্ধ দেখছি

যুদ্ধে আপনার মাইক্রোসার্ভিস কেমন করছে তা দেখতে, লাইভ অ্যারেনা দেখুন !

ব্যাটল এপিআই

আমাদের অ্যারেনা ম্যানেজারের সাথে কাজ করার জন্য, আপনার মাইক্রোসার্ভিসকে অ্যারেনায় অংশগ্রহণ করার জন্য একটি নির্দিষ্ট API প্রয়োগ করতে হবে। এরিনা ম্যানেজার একটি HTTP POST-এ আপনার দেওয়া ইউআরএলে নিম্নলিখিত JSON কাঠামো সহ বর্তমান এরেনা অবস্থা পাঠাবে:

{
  "_links": {
    "self": {
      "href": "https://YOUR_SERVICE_URL"
    }
  },
  "arena": {
    "dims": [4,3], // width, height
    "state": {
      "https://A_PLAYERS_URL": {
        "x": 0, // zero-based x position, where 0 = left
        "y": 0, // zero-based y position, where 0 = top
        "direction": "N", // N = North, W = West, S = South, E = East
        "wasHit": false,
        "score": 0
      }
      ... // also you and the other players
    }
  }
}

আপনার HTTP প্রতিক্রিয়া অবশ্যই স্ট্যাটাস কোড 200 (ঠিক আছে) হতে হবে একটি প্রতিক্রিয়া বডি সহ আপনার পরবর্তী পদক্ষেপ সহ, একটি একক বড় হাতের অক্ষর হিসাবে এনকোড করা হয়েছে:

F <- move Forward
R <- turn Right
L <- turn Left
T <- Throw

যে এটা আছে সব! আসুন ক্লাউড রানে একটি মাইক্রোসার্ভিস স্থাপনের মাধ্যমে চলুন, মাইক্রোসার্ভিস এবং অন্যান্য অ্যাপ্লিকেশন চালানোর জন্য একটি Google ক্লাউড পরিষেবা৷

2. আপনার মাইক্রোসার্ভিস স্থাপন করা হচ্ছে

আপনি যেকোনো প্রযুক্তির সাহায্যে আপনার মাইক্রোসার্ভিস তৈরি করতে পারেন এবং যতক্ষণ পর্যন্ত এটি সর্বজনীনভাবে পৌঁছানো যায় এবং ব্যাটল এপিআই-এর সাথে সামঞ্জস্য হয় ততক্ষণ পর্যন্ত এটিকে যে কোনো জায়গায় স্থাপন করতে পারেন। জিনিসগুলি সহজ করার জন্য আপনি একটি নমুনা প্রকল্প দিয়ে শুরু করতে পারেন যা কেবল একটি র্যান্ডম কমান্ড বাছাই করে।

শুরু করতে আপনার নমুনা বাছুন

তিনটি যুদ্ধের মাইক্রোসার্ভিস নমুনা রয়েছে যা থেকে আপনি শুরু করতে পারেন:

জাভা এবং স্প্রিং বুট

উৎস

ক্লাউড রানে স্থাপন করুন

জাভা এবং কোয়ার্কাস

উৎস

ক্লাউড রানে স্থাপন করুন

কোটলিন এবং মাইক্রোনট

উৎস

ক্লাউড রানে স্থাপন করুন

কোটলিন ও কোয়ার্কাস

উৎস

ক্লাউড রানে স্থাপন করুন

স্কালা এবং প্লে ফ্রেমওয়ার্ক

উৎস

ক্লাউড রানে স্থাপন করুন

যাও

উৎস

ক্লাউড রানে স্থাপন করুন

আপনি কোন নমুনা দিয়ে শুরু করবেন তা স্থির করার পরে, উপরের "ক্লাউড রানে স্থাপন করুন" বোতামটি ক্লিক করুন৷ এটি ক্লাউড শেল (ক্লাউডের একটি ভার্চুয়াল মেশিনে একটি ওয়েব-ভিত্তিক কনসোল) চালু করবে যেখানে উত্সটি ক্লোন করা হবে, তারপরে একটি স্থাপনযোগ্য প্যাকেজ (একটি ডকার কন্টেইনার চিত্র) তৈরি করা হবে, যা পরে Google কন্টেইনার রেজিস্ট্রিতে আপলোড করা হয়, এবং তারপর ক্লাউড রানে স্থাপন করা হয়।

জিজ্ঞাসা করা হলে, us-central1 অঞ্চল উল্লেখ করুন।

নীচের স্ক্রিনশটটি মাইক্রোসার্ভিস বিল্ড এবং স্থাপনার জন্য ক্লাউড শেল আউটপুট দেখায়

d88e40430706a32b.png

মাইক্রোসার্ভিস কাজগুলি যাচাই করুন

ক্লাউড শেলে আপনি আপনার নতুন নিয়োজিত মাইক্রোসার্ভিসের কাছে একটি অনুরোধ করতে পারেন, আপনার পরিষেবার URL দিয়ে YOUR_SERVICE_URL প্রতিস্থাপন করতে পারেন (যা "আপনার অ্যাপ্লিকেশন এখন এখানে লাইভ" লাইনের পরে ক্লাউড শেলে রয়েছে):

curl -d '{
  "_links": {
    "self": {
      "href": "https://foo.com"
    }
  },
  "arena": {
    "dims": [4,3],
    "state": {
      "https://foo.com": {
        "x": 0,
        "y": 0,
        "direction": "N",
        "wasHit": false,
        "score": 0
      }
    }
  }
}' -H "Content-Type: application/json" -X POST -w "\n" \
  https://YOUR_SERVICE_URL

আপনি F, L, R, বা T এর প্রতিক্রিয়া স্ট্রিং দেখতে পাবেন।

অ্যারেনা অন্তর্ভুক্তির অনুরোধ করুন

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

পরিবর্তন করুন এবং স্থাপন করুন

পরিবর্তন করার আগে আপনাকে GCP প্রকল্প এবং আপনার ব্যবহৃত নমুনা সম্পর্কে ক্লাউড শেল-এ কিছু তথ্য সেটআপ করতে হবে। প্রথমে আপনার GCP প্রকল্পের তালিকা করুন:

gcloud projects list

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

export PROJECT_ID=YOUR_PROJECT_ID

এখন আপনি যে নমুনা ব্যবহার করেছেন তার জন্য অন্য পরিবেশ পরিবর্তনশীল সেট করুন যাতে পরবর্তী কমান্ডগুলিতে আমরা সঠিক ডিরেক্টরি এবং পরিষেবার নাম নির্দিষ্ট করতে পারি:

# Copy and paste ONLY ONE of these
export SAMPLE=java-springboot
export SAMPLE=kotlin-micronaut
export SAMPLE=scala-play

এখন, আপনি ক্লাউড শেল থেকে আপনার মাইক্রোসার্ভিসের উৎস সম্পাদনা করতে পারেন। ক্লাউড শেল ওয়েব-ভিত্তিক সম্পাদক খুলতে, এই কমান্ডটি চালান:

cloudshell edit cloudbowl-microservice-game/samples/$SAMPLE/README.md

তারপরে আপনি পরিবর্তন করার জন্য আরও নির্দেশাবলী দেখতে পাবেন।

f910c9ef7b51c406.png

ক্লাউড শেল সম্পাদকের সাথে নমুনা প্রকল্প খোলা

আপনার পরিবর্তনগুলি সংরক্ষণ করার পরে, pack কমান্ড ব্যবহার করে ক্লাউড শেলে আপনার প্রকল্প তৈরি করুন। এই কমান্ডটি প্রজেক্টের ধরন সনাক্ত করতে, এটি কম্পাইল করতে এবং স্থাপনযোগ্য আর্টিফ্যাক্ট (একটি ডকার কন্টেইনার ইমেজ) তৈরি করতে Buildpacks ব্যবহার করে।

pack build gcr.io/$PROJECT_ID/$SAMPLE \
  --path cloudbowl-microservice-game/samples/$SAMPLE \
  --builder heroku/buildpacks

এখন আপনার কন্টেইনার ইমেজ তৈরি করা হয়েছে, ডকার কমান্ডটি ব্যবহার করুন (ক্লাউড শেলে) কনটেইনার ইমেজটিকে Google কন্টেইনার রেজিস্ট্রিতে পুশ করার জন্য যাতে এটি ক্লাউড রান দ্বারা অ্যাক্সেস করা যায়:

docker push gcr.io/$PROJECT_ID/$SAMPLE

এখন ক্লাউড রানে নতুন সংস্করণ স্থাপন করুন:

gcloud run deploy $SAMPLE\
          --project=$PROJECT_ID\
          --platform=managed\
          --region=us-central1\
          --image=gcr.io/$PROJECT_ID/$SAMPLE\
          --memory=512Mi\
          --allow-unauthenticated

এখন আখড়া আপনার নতুন সংস্করণ ব্যবহার করবে!

3. অভিনন্দন

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

এরপর কি?

রেফারেন্স ডক্স