ভূমিতে কর্মরত যানবাহন বহর থেকে প্রাপ্ত প্রায়-রিয়েল-টাইম সংকেতগুলো ব্যবসা প্রতিষ্ঠানগুলোর জন্য নানাভাবে উপকারী। উদাহরণস্বরূপ, ব্যবসা প্রতিষ্ঠানগুলো এগুলো ব্যবহার করতে পারে:
- তাদের নৌবহরের কর্মক্ষমতা পর্যবেক্ষণ করুন এবং সম্ভাব্য সমস্যাগুলো আগেভাগেই চিহ্নিত করুন।
- সঠিক আনুমানিক আগমনের সময় (ETA) এবং ট্র্যাকিং তথ্য প্রদানের মাধ্যমে গ্রাহক পরিষেবা উন্নত করুন।
- অদক্ষতা চিহ্নিত করে তার সমাধান করার মাধ্যমে খরচ কমান।
- চালকের আচরণ পর্যবেক্ষণ এবং সম্ভাব্য ঝুঁকি শনাক্তকরণের মাধ্যমে নিরাপত্তা উন্নত করুন।
- দক্ষতা বাড়াতে চালকদের রুট ও সময়সূচী অপ্টিমাইজ করুন।
- গাড়ির অবস্থান ও পরিষেবার সময় ট্র্যাক করে নিয়মকানুন মেনে চলুন।
এই ডকুমেন্টটিতে দেখানো হয়েছে কিভাবে ডেভেলপাররা গুগল ম্যাপস প্ল্যাটফর্মের " মোবিলিটি সার্ভিসেস " (" লাস্ট মাইল ফ্লিট সলিউশন" (LMFS) বা " অন-ডিমান্ড রাইডস অ্যান্ড ডেলিভারিস সলিউশন" (ODRD)) থেকে প্রাপ্ত সিগন্যালগুলোকে কার্যকরী কাস্টম ইভেন্টে পরিণত করতে পারেন। গিটহাবে উপলব্ধ ফ্লিট ইভেন্টস রেফারেন্স সলিউশনের মূল ধারণা এবং ডিজাইন সংক্রান্ত সিদ্ধান্তগুলোও এখানে আলোচনা করা হয়েছে।
এই নথিটি নিম্নলিখিত বিষয়ের সাথে প্রাসঙ্গিক:
- আর্কিটেক্টরা গুগল ম্যাপস প্ল্যাটফর্মের ' মোবিলিটি সার্ভিসেস ' এবং এর অন্যতম মূল উপাদান 'ফ্লিট ইঞ্জিন'-এর সাথে পরিচিত। যারা 'মোবিলিটি সার্ভিসেস'-এর সাথে নতুন, তাদের প্রয়োজন অনুযায়ী লাস্ট মাইল ফ্লিট সলিউশন এবং/অথবা অন-ডিমান্ড রাইডস অ্যান্ড ডেলিভারিস সলিউশন-এর সাথে পরিচিত হওয়ার পরামর্শ দেওয়া হচ্ছে।
- আর্কিটেক্টরা গুগল ক্লাউডের সাথে পরিচিত। যারা গুগল ক্লাউডে নতুন, তাদের জন্য ‘বিল্ডিং স্ট্রিমিং ডেটা পাইপলাইনস অন গুগল ক্লাউড’ বইটি আগে থেকে পড়ে নেওয়ার পরামর্শ দেওয়া হচ্ছে।
- আপনি যদি অন্য কোনো পরিবেশ বা সফটওয়্যার স্ট্যাককে লক্ষ্য করেন, তাহলে ফ্লিট ইঞ্জিনের ইন্টিগ্রেশন পয়েন্ট এবং মূল বিবেচ্য বিষয়গুলো বোঝার ওপর মনোযোগ দিন, যেগুলো সেক্ষেত্রেও প্রযোজ্য হওয়া উচিত।
- যারা নৌবহর থেকে বিভিন্ন ঘটনা কীভাবে তৈরি ও ব্যবহার করা যায়, তা অন্বেষণে সাধারণভাবে আগ্রহী।
এই ডকুমেন্টটির শেষে, একটি স্ট্রিমিং সিস্টেমের মূল উপাদান ও বিবেচ্য বিষয়গুলো সম্পর্কে আপনার একটি মৌলিক ধারণা তৈরি হবে। এর পাশাপাশি, গুগল ম্যাপস প্ল্যাটফর্ম এবং গুগল ক্লাউডের যে উপাদানগুলো দিয়ে ফ্লিট ইভেন্টস রেফারেন্স সলিউশন গঠিত, সে সম্পর্কেও আপনার ধারণা হবে।
ফ্লিট ইভেন্টস রেফারেন্স সলিউশন ওভারভিউ
ফ্লিট ইভেন্টস রেফারেন্স সলিউশন হলো একটি ওপেন সোর্স সমাধান যা মোবিলিটি গ্রাহক এবং অংশীদারদের ফ্লিট ইঞ্জিন এবং গুগল ক্লাউড কম্পোনেন্টগুলোর উপর ভিত্তি করে গুরুত্বপূর্ণ ইভেন্ট তৈরি করতে সক্ষম করে। বর্তমানে, এই রেফারেন্স সলিউশনটি লাস্ট মাইল ফ্লিট সলিউশন ব্যবহারকারী গ্রাহকদের সহায়তা করে এবং পরবর্তীতে অন-ডিমান্ড রাইডস ও ডেলিভারির জন্য সমর্থন যুক্ত করা হবে।
এই সলিউশনটি টাস্ক বা ট্রিপের সাথে সম্পর্কিত নির্দিষ্ট ডেটার পরিবর্তনের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে ইভেন্ট তৈরি করে। আপনি এই ইভেন্টগুলি ব্যবহার করে স্টেকহোল্ডারদের কাছে নিম্নলিখিতগুলির মতো নোটিফিকেশন পাঠাতে পারেন অথবা আপনার ফ্লিটের জন্য অন্যান্য অ্যাকশন ট্রিগার করতে পারেন।
- টাস্ক আগমনের আনুমানিক সময় পরিবর্তন
- টাস্ক আগমনের আপেক্ষিক ETA পরিবর্তন
- কাজটি পৌঁছানোর জন্য অবশিষ্ট সময়
- টাস্ক পৌঁছানোর জন্য অবশিষ্ট দূরত্ব
- টাস্কআউটকাম স্ট্যাটাস পরিবর্তন
রেফারেন্স সলিউশনের প্রতিটি উপাদান আপনার ব্যবসার প্রয়োজন অনুযায়ী কাস্টমাইজ করা যেতে পারে।
যৌক্তিক বিল্ডিং ব্লক
ডায়াগ্রাম : নিম্নলিখিত ডায়াগ্রামটি ফ্লিট ইভেন্টস রেফারেন্স সলিউশন গঠনকারী উচ্চ-স্তরের বিল্ডিং ব্লকগুলি দেখায়।
রেফারেন্স সলিউশনটিতে নিম্নলিখিত উপাদানগুলো রয়েছে:
- ইভেন্ট সোর্স : যেখান থেকে মূল ইভেন্ট স্ট্রিমটি আসে। " লাস্ট মাইল ফ্লিট সলিউশন" বা " অন-ডিমান্ড রাইডস অ্যান্ড ডেলিভারিস সলিউশন" উভয়েরই ক্লাউড লগিং-এর সাথে ইন্টিগ্রেশন রয়েছে, যা ফ্লিট ইঞ্জিন RPC কল লগগুলোকে ডেভেলপারদের জন্য উপলব্ধ ইভেন্ট স্ট্রিমে পরিণত করতে সাহায্য করে। এটিই ব্যবহারের মূল উৎস।
- প্রক্রিয়াকরণ : এই ব্লকের মধ্যে কাঁচা RPC কল লগগুলিকে স্টেট চেঞ্জ ইভেন্টে রূপান্তরিত করা হয়, যা লগ ইভেন্টের একটি স্ট্রিমের উপর গণনা করে। এই ধরনের পরিবর্তন শনাক্ত করার জন্য, এই কম্পোনেন্টটির একটি স্টেট স্টোর প্রয়োজন, যাতে নতুন আগত ইভেন্টগুলিকে পূর্ববর্তী ইভেন্টগুলির সাথে তুলনা করে পরিবর্তন সনাক্ত করা যায়। ইভেন্টগুলিতে সবসময় প্রয়োজনীয় সমস্ত তথ্য অন্তর্ভুক্ত নাও থাকতে পারে। সেক্ষেত্রে, এই ব্লকটি প্রয়োজন অনুযায়ী ব্যাকএন্ডগুলিতে লুকআপ কল করতে পারে।
- স্টেট স্টোর : কিছু প্রসেসিং ফ্রেমওয়ার্ক নিজস্বভাবে অন্তর্বর্তীকালীন ডেটা সংরক্ষণ করার সুবিধা দিয়ে থাকে। কিন্তু তা না হলে, নিজেরা স্টেট সংরক্ষণ করার জন্য, যেহেতু এই স্টেটগুলো একটি যানবাহন এবং ইভেন্টের ধরনের জন্য অনন্য হওয়া উচিত, একটি KV ধরনের ডেটা পারসিস্টেন্স সার্ভিস বেশ উপযুক্ত।
- সিঙ্ক (কাস্টম ইভেন্ট) : শনাক্তকৃত অবস্থার পরিবর্তন এমন যেকোনো অ্যাপ্লিকেশন বা পরিষেবার কাছে উপলব্ধ করা উচিত যা এর থেকে উপকৃত হতে পারে। তাই, পরবর্তী ব্যবহারের জন্য এই কাস্টম ইভেন্টটিকে একটি ইভেন্ট ডেলিভারি সিস্টেমে প্রকাশ করা একটি স্বাভাবিক পছন্দ।
- ডাউনস্ট্রিম সার্ভিস : এমন কোড যা তৈরি হওয়া ইভেন্টগুলো গ্রহণ করে এবং আপনার ব্যবহারের ক্ষেত্রের জন্য নির্দিষ্ট পদক্ষেপ নেয়।
পরিষেবা নির্বাচন
" লাস্ট মাইল ফ্লিট সলিউশন" বা " অন-ডিমান্ড রাইডস অ্যান্ড ডেলিভারিস সলিউশন" (যা ২০২৩ সালের তৃতীয় ত্রৈমাসিকের শেষের দিকে আসছে)-এর জন্য রেফারেন্স সলিউশন বাস্তবায়নের ক্ষেত্রে, "সোর্স" এবং "সিঙ্ক"-এর জন্য প্রযুক্তি নির্বাচন বেশ সহজ। অন্যদিকে, "প্রসেসিং"-এর জন্য রয়েছে বিভিন্ন ধরনের বিকল্প। রেফারেন্স সলিউশনটি নিম্নলিখিত গুগল পরিষেবাগুলো বেছে নিয়েছে।
ডায়াগ্রাম : নিম্নলিখিত ডায়াগ্রামটি রেফারেন্স সলিউশনটি বাস্তবায়নের জন্য গুগল ক্লাউড পরিষেবা দেখাচ্ছে।
ক্লাউড প্রকল্পের বিন্যাস
আমরা আপনাকে ডিফল্ট হিসেবে একটি মাল্টি-প্রজেক্ট ডেপ্লয়মেন্ট বেছে নেওয়ার পরামর্শ দিই। এর ফলে, গুগল ম্যাপস প্ল্যাটফর্ম এবং গুগল ক্লাউডের ব্যবহারকে সুস্পষ্টভাবে আলাদা করা যাবে এবং আপনার পছন্দের বিলিং ব্যবস্থার সাথে সংযুক্ত করা যাবে।
ঘটনার উৎস
"লাস্ট মাইল ফ্লিট সলিউশন" এবং " অন-ডিমান্ড রাইডস অ্যান্ড ডেলিভারিস সলিউশন" ক্লাউড লগিং -এ এপিআই রিকোয়েস্ট এবং রেসপন্স পেলোড লেখে। ক্লাউড লগিং পছন্দের এক বা একাধিক সার্ভিসে লগ সরবরাহ করে। এক্ষেত্রে ক্লাউড পাব/সাব-এ রাউটিং একটি চমৎকার পছন্দ এবং এটি কোডিং ছাড়াই লগগুলোকে একটি ইভেন্ট স্ট্রিমে রূপান্তর করার সুযোগ দেয়।
- লগিং | ফ্লিট পারফরম্যান্স (এলএমএফএস ব্যবহারকারীদের জন্য)
- লগিং | ট্রিপ এবং অর্ডারের অগ্রগতি (ODRD ব্যবহারকারীদের জন্য)
- পাব/সাব-এ পাঠানো লগগুলি দেখুন : লগিং → পাব/সাব ইন্টিগ্রেশন ওভারভিউ
সিঙ্ক
গুগল ক্লাউডে, ক্লাউড পাব/সাব হলো পছন্দের প্রায়-রিয়েল টাইম মেসেজ ডেলিভারি সিস্টেম। যেভাবে সোর্স থেকে ইভেন্টগুলো পাব/সাব-এ ডেলিভার করা হতো, ঠিক সেভাবেই কাস্টম ইভেন্টগুলোও পরবর্তী ব্যবহারের জন্য পাব/সাব-এ পাবলিশ করা হয়।
প্রক্রিয়াকরণ
ইভেন্ট প্রসেসিং-এ নিম্নলিখিত উপাদানগুলো ভূমিকা পালন করে। অন্যান্য বিল্ডিং ব্লকগুলোর মতোই, প্রসেসিং উপাদানগুলোও সম্পূর্ণ সার্ভারবিহীন এবং প্রয়োজন অনুযায়ী ছোট-বড় উভয় দিকেই ভালোভাবে স্কেল করতে পারে।
- প্রাথমিক রিলিজের জন্য কম্পিউট প্ল্যাটফর্ম হিসেবে ক্লাউড ফাংশন (*)
- সার্ভারবিহীন, খরচ ব্যবস্থাপনার জন্য স্কেলিং কন্ট্রোলের মাধ্যমে প্রয়োজন অনুযায়ী বাড়ানো বা কমানো যায়।
- ফ্লিট ইঞ্জিন সম্পর্কিত এপিআই-এর জন্য ক্লায়েন্ট লাইব্রেরি উপলব্ধ থাকায় প্রোগ্রামিং ভাষা হিসেবে জাভা ব্যবহার করা হয়, যা বাস্তবায়নকে সহজ করে তোলে।
- ক্লাউড ফায়ারস্টোর একটি স্টেট স্টোর হিসাবে
- সার্ভারবিহীন কী-ভ্যালু স্টোর
- আপস্ট্রিম এবং ডাউনস্ট্রিম উপাদানগুলির সাথে ইন্টিগ্রেশন পয়েন্ট হিসাবে ক্লাউড পাব/সাব
- শিথিলভাবে সংযুক্ত প্রায়-বাস্তব সময়ের একীকরণ
ফাংশনগুলো ডিফল্ট সেটিংস সহ সরাসরি ব্যবহার করা যায়, তবে এগুলোকে পুনর্বিন্যাসও করা সম্ভব। কনফিগারেশন প্যারামিটারগুলো ডিপ্লয়মেন্ট স্ক্রিপ্টের মাধ্যমে সেট করা হয় এবং সংশ্লিষ্ট টেরাফর্ম মডিউলের README-তে এগুলোর বিস্তারিত বিবরণ নথিভুক্ত করা থাকে।
দ্রষ্টব্য: এই রেফারেন্স সলিউশনটি বিভিন্ন চাহিদা মেটাতে সহায়ক বিকল্প বাস্তবায়ন প্রকাশের পরিকল্পনা করছে।
মোতায়েন
রেফারেন্স সলিউশন ডেপ্লয়মেন্ট প্রক্রিয়াকে পুনরাবৃত্তিযোগ্য, কাস্টমাইজযোগ্য, সোর্স কোড নিয়ন্ত্রণযোগ্য এবং সুরক্ষিত করার জন্য অটোমেশন টুল হিসেবে টেরাফর্মকে বেছে নেওয়া হয়েছে। টেরাফর্ম হলো একটি বহুল ব্যবহৃত IaC (ইনফ্রাস্ট্রাকচার অ্যাজ কোড) টুল, যা গুগল ক্লাউডকে ব্যাপকভাবে সমর্থন করে।
- গুগল ক্লাউড প্ল্যাটফর্ম প্রোভাইডার : "গুগল ক্লাউড প্ল্যাটফর্ম প্রোভাইডার" দ্বারা সমর্থিত রিসোর্সের ডকুমেন্টেশন
- টেরাফর্ম ব্যবহারের সেরা পদ্ধতি : গুগল ক্লাউডে এটি সবচেয়ে ভালোভাবে প্রয়োগ করার জন্য বিস্তারিত নির্দেশিকা
- টেরাফর্ম রেজিস্ট্রি : গুগল এবং কমিউনিটি দ্বারা সমর্থিত অতিরিক্ত মডিউলসমূহ
টেরাফর্ম মডিউল
একটি বিশাল একক রেফারেন্স সলিউশন ডেপ্লয়মেন্ট মডিউল তৈরি করার পরিবর্তে, অটোমেশনের পুনঃব্যবহারযোগ্য ব্লকগুলোকে টেরাফর্ম মডিউল হিসেবে প্রয়োগ করা হয়, যেগুলো স্বাধীনভাবে ব্যবহার করা যায়। মডিউলগুলোতে বিভিন্ন ধরনের কনফিগারযোগ্য ভ্যারিয়েবল থাকে, যেগুলোর বেশিরভাগেরই ডিফল্ট মান থাকে, ফলে আপনি দ্রুত কাজ শুরু করার পাশাপাশি আপনার প্রয়োজন ও পছন্দ অনুযায়ী কাস্টমাইজ করার নমনীয়তাও পান।
রেফারেন্স সলিউশনে অন্তর্ভুক্ত মডিউলসমূহ:
- ফ্লিট ইঞ্জিন লগিং কনফিগারেশন : ফ্লিট ইঞ্জিনের সাথে ব্যবহারের জন্য ক্লাউড লগিং সম্পর্কিত কনফিগারেশনগুলো স্বয়ংক্রিয় করুন। রেফারেন্স সলিউশনে, এটি ফ্লিট ইঞ্জিন সম্পর্কিত লগগুলোকে একটি নির্দিষ্ট পাব/সাব টপিকে রাউট করতে ব্যবহৃত হয়।
- ফ্লিট ইভেন্টস ক্লাউড ফাংশন ডেপ্লয়মেন্ট : এতে নমুনা ফাংশন কোড ডেপ্লয়মেন্ট রয়েছে এবং এটি নিরাপদ ক্রস-প্রজেক্ট ইন্টিগ্রেশনের জন্য প্রয়োজনীয় পারমিশন সেটিংসের অটোমেশনও পরিচালনা করে।
- সম্পূর্ণ রেফারেন্স সলিউশন ডেপ্লয়মেন্ট : পূর্ববর্তী দুটি মডিউলকে কল করে এবং পুরো সলিউশনটিকে র্যাপ করে।
নিরাপত্তা
ন্যূনতম বিশেষাধিকারের নীতিগুলো প্রয়োগ করার জন্য এবং সার্ভিস অ্যাকাউন্ট ইমপারসোনেশনের মতো গুগল ক্লাউডের নিরাপত্তা সংক্রান্ত সর্বোত্তম অনুশীলনগুলো অনুসরণ করতে IAM গ্রহণ করা হয়েছে। নিরাপত্তার উপর আপনাকে আরও বেশি নিয়ন্ত্রণ দিতে গুগল ক্লাউড কী কী সুবিধা প্রদান করে, তা আরও ভালোভাবে বোঝার জন্য নিম্নলিখিত নিবন্ধগুলো দেখুন।
পরবর্তী পদক্ষেপ
আপনি এখন ফ্লিট ইভেন্টস রেফারেন্স সলিউশনটি অ্যাক্সেস করতে এবং আরও বিশদভাবে অন্বেষণ করতে প্রস্তুত। শুরু করার জন্য গিটহাবে যান।
পরিশিষ্ট
আপনার প্রয়োজনীয়তাগুলো সংগ্রহ করুন।
আমরা পরামর্শ দিই যে আপনি প্রক্রিয়াটির শুরুতেই আপনার প্রয়োজনীয়তাগুলো সংগ্রহ করে নিন।
প্রথমে, আপনি কেন নিয়ার-রিয়েলটাইম ইভেন্ট ব্যবহার করতে আগ্রহী বা আপনার কেন এটি প্রয়োজন, তার বিস্তারিত বিবরণ সংগ্রহ করুন। আপনার প্রয়োজনগুলো স্পষ্ট করতে সাহায্য করার জন্য এখানে কিছু প্রশ্ন দেওয়া হলো।
- একটি ইভেন্ট স্ট্রিমকে কার্যকর হতে কী কী তথ্যের প্রয়োজন?
- ফলাফলটি কি শুধুমাত্র গুগল পরিষেবাগুলিতে সংগৃহীত বা উৎপাদিত ডেটা থেকে পাওয়া সম্ভব? নাকি, সমন্বিত বাহ্যিক সিস্টেমের মাধ্যমে ডেটা সমৃদ্ধকরণের প্রয়োজন আছে? যদি তাই হয়, তবে সেই সিস্টেমগুলি কী এবং সেগুলি কী ধরনের ইন্টিগ্রেশন ইন্টারফেস প্রদান করে?
- ব্যবসা হিসেবে আপনারা কোন কোন মেট্রিক পরিমাপ করতে চান? সেগুলো কীভাবে সংজ্ঞায়িত করা হয়?
- যদি আপনাকে বিভিন্ন ইভেন্টের মেট্রিক্স গণনা করতে হয়, তাহলে কী ধরনের অ্যাগ্রিগেশন প্রয়োজন হবে? যৌক্তিক ধাপগুলো সাজিয়ে বলার চেষ্টা করুন। (যেমন, সীমিত সম্পদের অধীনে পারফরম্যান্স গণনা করার জন্য, পিক আওয়ারে ফ্লিটের একটি উপাংশের ETA/ATA-এর সাথে SLO-এর তুলনা করুন।)
- আপনি ব্যাচ মডেলের পরিবর্তে ইভেন্ট-ভিত্তিক মডেলে কেন আগ্রহী? এর কারণ কি কম ল্যাটেন্সি (দ্রুত পদক্ষেপ গ্রহণের সময়) নাকি শিথিলভাবে সংযুক্ত ইন্টিগ্রেশন (চটপটে ভাব)?
- কম ল্যাটেন্সির জন্য হলে, "কম" বলতে কী বোঝায় তা নির্দিষ্ট করে বলুন। মিনিট? সেকেন্ড? এক সেকেন্ডেরও কম? আর ল্যাটেন্সির পরিমাণটা কত?
- আপনারা কি দল হিসেবে ইতিমধ্যেই কোনো টেকনোলজি স্ট্যাক এবং সংশ্লিষ্ট দক্ষতায় বিনিয়োগ করেছেন? যদি করে থাকেন, তাহলে সেটি কী এবং এর মাধ্যমে কী কী ইন্টিগ্রেশন পয়েন্ট পাওয়া যায়?
- এমন কোনো প্রয়োজনীয়তা আছে কি যা আপনার বর্তমান সিস্টেমগুলো পূরণ করতে পারে না, অথবা আপনার ফ্লিট থেকে আসা ইভেন্টগুলো প্রসেস করার ক্ষেত্রে সমস্যায় পড়তে পারে?
নকশার নীতিগুলি
অনুসরণ করার মতো একটি চিন্তাধারা থাকা সবসময়ই উপকারী। এটি ডিজাইনের ক্ষেত্রে সামঞ্জস্যপূর্ণ সিদ্ধান্ত নিতে সাহায্য করে, বিশেষ করে যখন বেছে নেওয়ার জন্য বিভিন্ন বিকল্প থাকে।
- ডিফল্ট হিসেবে সহজতর বিকল্পগুলো বেছে নিন।
- ডিফল্টভাবে কম সময়ে ভ্যালু পাওয়ার ব্যবস্থা। কোড কম, শেখার প্রক্রিয়াও সহজ।
- লেটেন্সি ও পারফরম্যান্সের ক্ষেত্রে, সর্বোচ্চ অপটিমাইজেশনের পরিবর্তে আপনার নির্ধারিত মান পূরণের লক্ষ্য রাখুন। এছাড়াও, অতিরিক্ত অপটিমাইজেশন পরিহার করুন, কারণ এটি প্রায়শই জটিলতা বাড়িয়ে তোলে।
- খরচের ক্ষেত্রেও একই কথা প্রযোজ্য। খরচ সুলভ রাখুন। আপনি হয়তো এখনও সেই পর্যায়ে পৌঁছাননি যে উচ্চ মানের কিন্তু তুলনামূলকভাবে বেশি ব্যয়বহুল পরিষেবা ব্যবহার করার সিদ্ধান্ত নিতে পারেন।
- পরীক্ষামূলক পর্যায়ে, পরিকাঠামো বড় করার মতোই ছোট করাও গুরুত্বপূর্ণ হতে পারে। এমন একটি প্ল্যাটফর্ম বিবেচনা করুন যা একটি নির্দিষ্ট সীমা পর্যন্ত বড় করার এবং ছোট করার (আদর্শগতভাবে শূন্য পর্যন্ত) সুবিধা দেয়, যাতে কোনো কাজ না করার সময়েও আপনার খরচ না হয়। যাত্রার পরবর্তী পর্যায়ে, যখন এর প্রয়োজনীয়তা সম্পর্কে আপনার আস্থা তৈরি হবে, তখন সর্বদা-সক্রিয় পরিকাঠামোসহ উচ্চ পারফরম্যান্সের বিষয়টি বিবেচনা করা যেতে পারে।
- পর্যবেক্ষণ ও পরিমাপ করুন, যাতে পরবর্তীতে কোথায় আরও কাজ করতে হবে তা শনাক্ত করতে পারেন।
- সার্ভিসগুলোকে শিথিলভাবে সংযুক্ত রাখুন। এতে পরবর্তীতে অংশবিশেষ অদলবদল করা সহজ হয়।
- সর্বশেষ কিন্তু গুরুত্বপূর্ণ বিষয় হলো, নিরাপত্তা ব্যবস্থা শিথিল হতে পারে না। পাবলিক ক্লাউড পরিবেশে চলমান একটি পরিষেবা হিসেবে, সিস্টেমে কোনো অরক্ষিত দরজা থাকতে পারে না।
স্ট্রিমিং ধারণা
আপনি যদি ইভেন্ট-ভিত্তিক বা স্ট্রিমিং-এ তুলনামূলকভাবে নতুন হন, তবে কিছু গুরুত্বপূর্ণ ধারণা সম্পর্কে সচেতন থাকা প্রয়োজন, যার মধ্যে কয়েকটি ব্যাচ প্রসেসিং থেকে বেশ ভিন্ন হতে পারে।
- পরিধি : ব্যাচ প্রসেসিংয়ের বিপরীতে, যেখানে সাধারণত কী পরিমাণ ডেটা প্রসেস করতে হবে সে সম্পর্কে আপনার একটি ভালো ধারণা থাকে, স্ট্রিমিংয়ের ক্ষেত্রে তা থাকে না। একটি শহরের যানজট হঠাৎ করে কোনো নির্দিষ্ট এলাকা থেকে প্রচুর ইভেন্ট তৈরি করতে পারে, এবং আপনাকে সেগুলো প্রসেস করতে সক্ষম হতে হবে।
- উইন্ডোয়িং : ইভেন্টগুলোকে এক এক করে প্রসেস করার পরিবর্তে, প্রায়শই এমন হয় যে আপনি একটি টাইমলাইনের ইভেন্টগুলোকে গণনার একক হিসেবে ছোট ছোট "উইন্ডো"-তে ভাগ করতে চান। বিভিন্ন ধরনের উইন্ডোয়িং কৌশল রয়েছে, যেমন "ফিক্সড উইন্ডো (উদাহরণস্বরূপ, প্রতি ক্যালেন্ডার দিন)", "স্লাইডিং উইন্ডো (শেষ ৫ মিনিট)", "সেশন উইন্ডো (এই ট্রিপ চলাকালীন)", যেগুলোর মধ্য থেকে আপনার বেছে নেওয়া উচিত। উইন্ডো যত দীর্ঘ হবে, ফলাফল পেতে তত বেশি দেরি হবে। আপনার প্রয়োজন অনুযায়ী সঠিক মডেল এবং কনফিগারেশন বেছে নিন।
- ট্রিগারিং : এমন কিছু ক্ষেত্র আছে যেখানে তুলনামূলকভাবে দীর্ঘ উইন্ডো রাখা ছাড়া আপনার আর কোনো উপায় থাকে না। তবুও, ইভেন্ট তৈরি করার জন্য আপনি উইন্ডোর একেবারে শেষ পর্যন্ত অপেক্ষা করতে চাইবেন না, বরং এর মাঝে অন্তর্বর্তী ফলাফল প্রকাশ করতে চাইবেন। এই ধারণাটি এমন সব ব্যবহারের ক্ষেত্রে প্রয়োগ করা যেতে পারে যেখানে প্রথমে দ্রুত ফলাফল ফেরত দেওয়া এবং পরে সেগুলো সংশোধন করা সুবিধাজনক। যেমন, একটি ডেলিভারি ২৫%, ৫০%, বা ৭৫% সম্পন্ন হলে অন্তর্বর্তী স্ট্যাটাস প্রকাশ করার কথা ভাবুন।
- ক্রম : ইভেন্টগুলো যে ক্রমে তৈরি হয়, সেই ক্রমেই যে সিস্টেমে পৌঁছাবে এমনটা জরুরি নয়। বিশেষ করে মোবাইল নেটওয়ার্কের মাধ্যমে যোগাযোগের ক্ষেত্রে, যা বিলম্ব এবং জটিল রাউটিং পথ তৈরি করে। আপনাকে 'ইভেন্ট টাইম' (যখন ইভেন্টটি আসলে ঘটেছিল) এবং 'প্রসেস টাইম' (যখন ইভেন্টটি সিস্টেমে পৌঁছেছিল)-এর মধ্যে পার্থক্য সম্পর্কে সচেতন থাকতে হবে এবং সেই অনুযায়ী ইভেন্টগুলো পরিচালনা করতে হবে। সাধারণত, আপনি 'ইভেন্ট টাইম'-এর উপর ভিত্তি করে ইভেন্টগুলো প্রসেস করতে চাইবেন।
- বার্তা বিতরণ - অন্তত একবার বনাম হুবহু একবার : বিভিন্ন ইভেন্ট প্ল্যাটফর্মে এগুলোর জন্য ভিন্ন ভিন্ন সমর্থন থাকে। আপনার ব্যবহারের ধরনের ওপর নির্ভর করে, আপনাকে রিট্রাই (পুনরায় চেষ্টা) বা ডিডুপ্লিকেশন (ডুপ্লিকেশন অপসারণ) কৌশল বিবেচনা করতে হবে।
- অসম্পূর্ণতা : ক্রম পরিবর্তনের মতোই, বার্তা হারিয়ে যাওয়ারও সম্ভাবনা থাকে। ডিভাইসের ব্যাটারি শেষ হয়ে যাওয়ার কারণে অ্যাপ্লিকেশন ও ডিভাইস বন্ধ হয়ে যাওয়া, ফোনের অনিচ্ছাকৃত ক্ষতি, টানেলের মধ্যে থাকাকালীন সংযোগ বিচ্ছিন্ন হয়ে যাওয়া, অথবা গ্রহণযোগ্য সময়ের বাইরে বার্তা পাওয়া যাওয়ার কারণে এটি ঘটতে পারে। এই অসম্পূর্ণতা আপনার ফলাফলের উপর কীভাবে প্রভাব ফেলবে?
এটি একটি সম্পূর্ণ তালিকা নয়, বরং একটি ভূমিকা। এখানে কিছু বিশেষভাবে প্রস্তাবিত পাঠ্য রয়েছে যা আপনাকে প্রতিটি বিষয় সম্পর্কে আপনার বোঝাপড়া আরও গভীর করতে সাহায্য করবে।
অবদানকারীরা
গুগল এই নথিটি রক্ষণাবেক্ষণ করে। নিম্নলিখিত অবদানকারীরা মূলত এটি লিখেছেন।
প্রধান লেখকগণ:
- মেরি পিশনি | প্রোডাক্ট ম্যানেজার, গুগল ম্যাপস প্ল্যাটফর্ম
- এথেল বাও | সফটওয়্যার ইঞ্জিনিয়ার, গুগল ম্যাপস প্ল্যাটফর্ম
- মোহানাদ আলমিস্কি | সফটওয়্যার ইঞ্জিনিয়ার, গুগল ম্যাপস প্ল্যাটফর্ম
- নাওইয়া মোরিতানি | সলিউশনস ইঞ্জিনিয়ার, গুগল ম্যাপস প্ল্যাটফর্ম