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

ক্যারিয়ার নেটওয়ার্কের সাথে আউট-অফ-দ্য-বক্স ERP ইন্টিগ্রেশনগুলি একই প্যাটার্ন অনুসরণ করে: একটি ট্র্যাকিং নম্বর পূর্তির সময়ে সংরক্ষিত হয়, এবং সেই মুহূর্ত থেকে, স্ট্যাটাস আপডেটের জন্য হয় ক্যারিয়ারের ওয়েবসাইটে ম্যানুয়াল ক্লিক অথবা একটি নির্ধারিত ব্যাচ জব প্রয়োজন যা নির্দিষ্ট বিরতিতে ক্যারিয়ার API কোয়েরি করে। উভয় পদ্ধতি একই মৌলিক সীমাবদ্ধতা ভাগ করে — সিস্টেম পরে একটি শিপমেন্ট ইভেন্ট সম্পর্কে জানে, এবং ইভেন্ট এবং জ্ঞানের মধ্যে বিলম্ব সেকেন্ডের পরিবর্তে ঘণ্টায় পরিমাপ করা যায়।
সেই বিলম্বের অপারেশনাল খরচ একটি শিপারের সম্পূর্ণ পোর্টফোলিও জুড়ে যুক্ত হয়। ব্যতিক্রমগুলি যা সকাল ৯টায় একটি স্বয়ংক্রিয় প্রতিক্রিয়া ট্রিগার করতে পারত সেগুলি রাতের ব্যাচ চালানো পর্যন্ত অজানা থাকে। গ্রাহক অনুসন্ধানগুলি আসে অভ্যন্তরীণ টিমের একই ইভেন্টে দৃশ্যমানতা পাওয়ার আগে যা গ্রাহক কল করছেন। ক্যারিয়ার SLA বিরোধগুলি অনুসরণ করা কঠিন হয়ে পড়ে যখন টাইমস্ট্যাম্প প্রমাণ আপনার নিজের নয় বরং ক্যারিয়ারের সিস্টেমে থাকে।
কেন Polling ভুল ডিফল্ট
ক্যারিয়ার API পোলিংয়ে একটি অনুরোধ পাঠানো, একটি প্রতিক্রিয়া পাওয়া এবং কিছু পরিবর্তন না হলে বাতিল করা জড়িত — তারপর যে বিরতিতে ইন্টিগ্রেশন কনফিগার করা হয়েছিল তাতে চক্র পুনরাবৃত্তি করা। মাঝারি স্কেলে, এটি পরিচালনাযোগ্য। মাঝারি আকারের লজিস্টিক্স অপারেশনের স্কেলে, পোলিং অত্যন্ত কম সিগনাল-টু-নয়েজ অনুপাত সহ যথেষ্ট API কল ভলিউম তৈরি করে। বেশিরভাগ প্রতিক্রিয়া কোনো পরিবর্তন রিপোর্ট করবে না।
সমস্যাটি কাঠামোগত, শুধু বিরতি সুর করার বিষয় নয়। আরও ঘন ঘন পোলিং ইভেন্ট এবং সনাক্তকরণের মধ্যে লেটেন্সি হ্রাস করে, কিন্তু API কল খরচ এবং প্রক্রিয়াকরণ ওভারহেডের মূল্যে। কম ঘন ঘন পোলিং সস্তা কিন্তু সনাক্তকরণ উইন্ডো বিস্তৃত করে। কোনো সেটিংই অপারেশন টিম আসলে কী চায় তা উৎপন্ন করে না: কিছু ঘটলে অবিলম্বে বিজ্ঞপ্তি।
ক্যারিয়ার API রেট লিমিটগুলি আরেকটি সীমাবদ্ধতা তৈরি করে। একসাথে একাধিক ক্যারিয়ারের বিরুদ্ধে উচ্চ ফ্রিকোয়েন্সিতে পোলিং প্রতি-ক্যারিয়ার সীমায় চলে যা আক্রমণাত্মক পোলিং মাথায় রেখে ডিজাইন করা হয়নি। ডেভেলপমেন্ট পরিবেশে সহজ দেখায় এমন আর্কিটেকচার উৎপাদন স্কেলে অপারেশনালভাবে ভঙ্গুর হয়ে যায়।
ইভেন্ট-চালিত বিকল্প
Webhooks ডেটা প্রবাহকে বিপরীত করে। ব্যবহারকারী সিস্টেম "কিছু পরিবর্তন হয়েছে?" জিজ্ঞাসা করার পরিবর্তে, ক্যারিয়ার বা ট্র্যাকিং প্ল্যাটফর্ম একটি ইভেন্ট রেকর্ড হওয়ার মুহূর্তে একটি বিজ্ঞপ্তি পুশ করে। ব্যবহারকারী সিস্টেম শুধুমাত্র তখনই ডেটা প্রক্রিয়া করে যখন প্রক্রিয়া করার ডেটা থাকে।
বিশেষভাবে শিপমেন্ট ট্র্যাকিংয়ের জন্য, এর মানে হল একটি ডেলিভারি নিশ্চিতকরণ, একটি ব্যতিক্রম পতাকা, বা একটি বিলম্ব বিজ্ঞপ্তি ক্যারিয়ার পরবর্তী নির্ধারিত ব্যাচ বিরতির পরিবর্তে এটি রেকর্ড করার কয়েক সেকেন্ড বা মিনিটের মধ্যে ERP বা ভিজিবিলিটি প্ল্যাটফর্মে পৌঁছায়। কাস্টমার সার্ভিস টিমগুলি গ্রাহকদের আগে বা একই মুহূর্তে তথ্য পায়, পদ্ধতিগতভাবে পরে নয়।
সম্পদ দৃষ্টিকোণ থেকে, পার্থক্যটি অর্থবহ। একটি ইভেন্ট-চালিত আর্কিটেকচার পোলিং ফ্রিকোয়েন্সির পরিবর্তে প্রকৃত ইভেন্ট ভলিউমের সমানুপাতিক API ব্যান্ডউইথ ব্যবহার করে। একটি শান্ত দিন একটি পিক শিপিং দিনের চেয়ে কম বিজ্ঞপ্তি তৈরি করে, এবং সিস্টেম প্রকৃত কার্যকলাপের সাথে স্বাভাবিকভাবে স্কেল করে।
একটি নির্ভরযোগ্য Webhook পাইপলাইন ডিজাইন করা
Webhook নির্ভরযোগ্যতা তার নিজস্ব ইঞ্জিনিয়ারিং প্রয়োজনীয়তা প্রবর্তন করে। ক্যারিয়ার-পুশড ইভেন্টগুলি অ্যাসিঙ্ক্রোনাসভাবে এবং নিশ্চিত অর্ডারিং ছাড়াই আসে। একই ইভেন্ট একাধিকবার আসতে পারে যদি ক্যারিয়ারের রিট্রি লজিক গ্রহণ প্রান্তে একটি অস্থায়ী নেটওয়ার্ক ব্যর্থতার পরে সক্রিয় হয়। ব্যবহারকারী সিস্টেমকে উভয় শর্ত পরিচালনা করতে হবে।
ইডেম্পোটেন্সি হল মূল ডিজাইন নীতি। প্রতিটি আসন্ন ইভেন্টে একটি অনন্য পরিচয়কারী থাকা উচিত, এবং গ্রহণকারী সিস্টেমের অবশ্যই সেই পরিচয়কারীটি ইতিমধ্যে প্রক্রিয়া করা হয়েছে কিনা তা পরীক্ষা করা উচিত এটির উপর কাজ করার আগে। ডুপ্লিকেট ইভেন্টগুলি নীরবে বাতিল করা উচিত ডুপ্লিকেট রেকর্ড তৈরি না করে।
অর্ডারিং অনুমান করা যায় না। একটি "delivered" ইভেন্ট মেসেজ কিউতে "out for delivery" ইভেন্টের আগে আসতে পারে যা এটির আগে ছিল, নেটওয়ার্ক শর্ত এবং পুনরায় চেষ্টার আচরণের উপর নির্ভর করে। ডেটা মডেলকে অনুক্রমহীন আগমন মিটমাট করতে হবে — তাদের আগমন টাইমস্ট্যাম্পের পরিবর্তে তাদের ক্যারিয়ার-রিপোর্টেড টাইমস্ট্যাম্প দিয়ে ইভেন্ট রেকর্ড করা, এবং ডিসপ্লে স্তরকে ইভেন্টগুলিকে সঠিক কালানুক্রমিক ক্রমে সাজাতে দেওয়া।
প্রথম-শ্রেণীর ব্যবহারের ক্ষেত্রে ব্যতিক্রম পরিচালনা
রিয়েল-টাইম Webhook ইন্টিগ্রেশনের সবচেয়ে অপারেশনালভাবে মূল্যবান প্রয়োগ হল ব্যতিক্রম পরিচালনা। ডেলিভারি ব্যতিক্রম, ঠিকানা যাচাইকরণ ব্যর্থতা, কাস্টমস হোল্ড এবং আবহাওয়া-সম্পর্কিত বিলম্ব সবই এমন শর্ত প্রতিনিধিত্ব করে যেখানে প্রাথমিক বিজ্ঞপ্তি একটি অর্থবহ অপারেশনাল প্রতিক্রিয়ার অনুমতি দেয় — পুনরায় শিপমেন্ট শুরু, গ্রাহক যোগাযোগ, ক্যারিয়ার এস্কেলেশন — যা ঘণ্টা পরে আবিষ্কৃত হলে হয় অসম্ভব বা ব্যয়বহুল হয়ে যায়।
সক্রিয় ব্যতিক্রম বিজ্ঞপ্তি গ্রাহকের অভিজ্ঞতাকে অসমানভাবে রূপান্তরিত করে। একজন গ্রাহক যে প্যাকেজটি দেরিতে লক্ষ্য করার আগে একটি বিলম্ব ব্যাখ্যা করে একটি স্বয়ংক্রিয় বার্তা পান তার অভিজ্ঞতা মৌলিকভাবে ভিন্ন যে একটি কাস্টমার সার্ভিস লাইনে কল করে আবিষ্কার করেন যে এজেন্ট প্রথমবার একই তথ্য জানছেন।
কন্ট্রোল টাওয়ার দৃষ্টিভঙ্গি
একাধিক ক্যারিয়ার এবং মোড জুড়ে শিপমেন্ট পরিচালনা করা অপারেশন টিমগুলির জন্য, আর্কিটেকচারাল প্রশ্নটি কেবল একটি একক ক্যারিয়ার ইন্টিগ্রেশনের জন্য পোলিংকে Webhooks দিয়ে প্রতিস্থাপন করা নয়। এটি একটি ইভেন্ট ইনজেশন স্তর তৈরি করার বিষয়ে যা বিভিন্ন উৎস থেকে ইভেন্টগুলি গ্রহণ, নরমালাইজ এবং রাউট করতে পারে — ক্যারিয়ার Webhooks, ট্র্যাকিং প্ল্যাটফর্ম বিজ্ঞপ্তি, কাস্টমস স্ট্যাটাস API — একটি সামঞ্জস্যপূর্ণ অভ্যন্তরীণ উপস্থাপনায়।
নরমালাইজেশন ধাপটিই যেখানে মাল্টি-ক্যারিয়ার ভিজিবিলিটি প্ল্যাটফর্মগুলি টেকসই মূল্য যোগ করে। ক্যারিয়ার ইভেন্ট স্কিমাগুলি যথেষ্ট আলাদা যে একটি ক্যারিয়ার থেকে "delivered" ইভেন্ট অন্য ক্যারিয়ার থেকে একই যৌক্তিক ইভেন্টের চেয়ে ভিন্ন ফিল্ড নাম, টাইমস্ট্যাম্প ফরম্যাট এবং স্ট্যাটাস কোড সহ আসে। এগুলিকে ERP বা গ্রাহক-মুখী ইন্টারফেসে পৌঁছানোর আগে একটি সামঞ্জস্যপূর্ণ মাইলস্টোন মডেলে নরমালাইজ করা ইভেন্ট-চালিত আর্কিটেকচারকে শুধু দ্রুত নয় আসলে দরকারী করে তোলে। রিয়েল-টাইম ডেটা যার জন্য প্রতি-ক্যারিয়ার ম্যানুয়াল ব্যাখ্যা প্রয়োজন তার বেশিরভাগ উদ্দেশ্য পরাজিত করে।
সূত্র: Houseblend
