
আচ্ছা, কেমন হয় যদি একটা ওয়েবসাইটে আপনি "Place Order" Button এ Click করলেন, আর হঠাৎ নেটওয়ার্কের স্পীড কমে গেল? আপনি ভাবলেন, "Click টা কি ঠিকমতো হলো?" তাই আবার Click করলেন। এখন যদি সেই ওয়েবসাইটটা Idempotence বা ইডেমপোটেন্স (আমেরিকান উচ্চারণে) বা আইডেমপোটেন্স (ব্রিট্রিস উচ্চারণে) এর Principle মেনে না চলে, তাহলে কী হতে পারে বলুন তো? আপনার একাউন্ট থেকে দুবার টাকা কেটে যাবে, আর আপনার কাছে একই Order এর জন্য দুটো কনফার্মেশন চলে আসবে! একটা ভয়ঙ্কর দৃশ্য, তাই না?
এই ধরনের সমস্যা থেকে বাঁচানোর জন্য একটা অসাধারণ Concept আছে, যার নাম Idempotence। এটা শুধু একটা টেকনিক্যাল টার্ম নয়, বরং এটা একটা Life-Saving টেকনিক! কারণ, এটা আমাদের ডিজিটাল জীবনকে অনেক বেশি নির্ভরযোগ্য করে তোলে।
Idempotence (ইডেমপোটেন্স) এর সহজ মানে হলো, একটা Operation আপনি যতবারই Execute করেন না কেন, তার Outcome সবসময় একই থাকবে। প্রথমবার Execute করার পরে যা হয়েছে, পরেরবারগুলোতেও তাই হবে। অনেকটা ম্যাজিকের মতো, যেখানে একই জিনিস বারবার করলেও ফল বদলায় না!
আসুন, এই Concept টাকে একটু অন্যভাবে Explore করি। আমরা দেখবো, কিভাবে এটা আমাদের দৈনন্দিন জীবনে কাজ করে, আর কিভাবে এটা Software Architectures এর একটা গুরুত্বপূর্ণ অংশ।

আমরা প্রতিদিন এমন অনেক জিনিসের সাথে Interact করি, যেগুলো নীরবে Idempotence এর Principle Follow করে। হয়তো আমরা সবসময় সেটা খেয়াল করি না, কিন্তু এই জিনিসগুলো আমাদের জীবনকে অনেক সহজ করে দেয়। কয়েকটা মজার উদাহরণ দিলে ব্যাপারটা পানির মতো পরিষ্কার হয়ে যাবে:
এই উদাহরণগুলো থেকে আমরা বুঝতে পারি, কিভাবে Idempotence (ইডেমপোটেন্স) আমাদের দৈনন্দিন জীবনকে আরও অনুমানযোগ্য (Predictable) এবং নির্ভরযোগ্য (Reliable) করে তোলে। এই Principle টি নিশ্চিত করে যে, আমাদের Actions এর ফল সবসময় একই হবে, কোনো অপ্রত্যাশিত Side Effect হবে না।

এবার আমরা Software Architectures এর জটিল জগতে প্রবেশ করব। বিশেষ করে Distributed Systems এ, Idempotence একটি অত্যাবশ্যকীয় উপাদান। Distributed Systems বলতে বোঝায়, যেখানে অনেকগুলো Computer একসাথে কাজ করে এবং তারা একটি Network এর মাধ্যমে একে অপরের সাথে যোগাযোগ রাখে। এই ধরনের Systems এ, নেটওয়ার্কের সমস্যা, Server Crash, বা অপ্রত্যাশিত Error এর কারণে কোনো Request একাধিকবার Process হওয়ার সম্ভাবনা থাকে।
যদি আমাদের System টা Idempotent না হয়, তাহলে কী ঘটতে পারে? ডেটা Corrupt হয়ে যেতে পারে, ভুল Transaction হওয়ার আশঙ্কা থাকে, এবং Users দের Experience খারাপ হতে পারে। একটি Idempotent System এই সমস্যাগুলো থেকে আমাদের রক্ষা করে।
API Design এর ক্ষেত্রে, আমরা কিছু Standard HTTP Methods ব্যবহার করি, যেগুলো স্বাভাবিকভাবেই Idempotent (ইডেমপোটেন্ট)। সেগুলো হলো:
এই Method গুলো ব্যবহার করা নিরাপদ, কারণ এগুলো নিশ্চিত করে যে Repeated Actions এর কারণে কোনো Unintended Side Effect হবে না।

সাধারণত, POST Method স্বাভাবিকভাবে Idempotent (ইডেমপোটেন্স) নয়। কারণ, এটি নতুন Resources তৈরি করার জন্য ব্যবহার করা হয়। উদাহরণস্বরূপ, আপনি একটি ওয়েবসাইটে একটি নতুন Account তৈরি করছেন। আপনি আপনার Details দিয়ে একটি Form Submit করলেন। যদি কোনো কারণে Page টি Refresh হয়ে যায়, এবং আপনার Details আবার Submit হয়ে যায়, তাহলে কী হবে? আপনার দুটি Account তৈরি হয়ে যাবে!
এই সমস্যা সমাধানের জন্য আমরা Post/Redirect/Get Pattern (PRG Pattern) ব্যবহার করতে পারি।

PRG Pattern মূলত Form Submissions Handle করার জন্য ব্যবহৃত হয়। এটি কিভাবে কাজ করে, তা নিচে ব্যাখ্যা করা হলো:
এই সম্পূর্ণ Process টির মূল Benefit হলো, Page Refresh করলেও আপনার POST Request Repeat হবে না, কারণ আপনি এখন একটি GET Request করছেন, যা Idempotent। এর মানে হলো, আপনার Account একবারের বেশি তৈরি হবে না।

Distributed Systems এর জন্য Message Queueing Systems একটি অপরিহার্য উপাদান। কল্পনা করুন, আপনি একটি অনলাইন স্টোর থেকে কিছু কিনলেন। আপনি আপনার Credit Card Details দিলেন, এবং "Pay Now" Button এ Click করলেন। ঠিক সেই মুহূর্তে যদি ইন্টারনেট সংযোগ বিচ্ছিন্ন হয়ে যায়, তাহলে কী হবে? আপনি দ্বিধায় পড়ে যাবেন, Payment সফল হয়েছে কিনা।
যদি আমাদের System টি Idempotent না হয়, তাহলে আপনার একাউন্ট থেকে দুবার টাকা কেটে যাওয়ার সম্ভাবনা থাকে!
Message Queue এখানে নিশ্চিত করে যে, আপনার Payment একবারের বেশি Process হবে না। নিচে এর কার্যপ্রণালী বর্ণনা করা হলো:
এভাবে, Message Queueing Systems নিশ্চিত করে যে কোনো Operation একবারের বেশি Execute হবে না। এটি আমাদের সিস্টেমকে অনেক বেশি Reliable এবং Fault-tolerant করে তোলে।

Idempotence (ইডেমপোটেন্স) শুধু একটি Technical Concept নয়, এটি একটি দর্শন বা ফিলোসফি। এটি আমাদের শেখায় কিভাবে এমন System তৈরি করতে হয় যা অপ্রত্যাশিত সমস্যা মোকাবেলা করতে পারে, এবং Users দের জন্য একটি Seamless Experience নিশ্চিত করতে পারে।
পরের বার যখন আপনি কোনো Button এ Double Click করবেন, তখন মনে রাখবেন, Idempotence (ইডেমপোটেন্স) আপনার ডেটা এবং আপনার অর্থকে সুরক্ষিত রাখছে! এটি ডিজিটাল দুনিয়ার এক নীরব Hero, যা আমাদের অজান্তেই আমাদের জীবনকে সহজ করে তুলেছে।
আমি সোহানুর রহমান। সুপ্রিম টিউনার, টেকটিউনস, ঢাকা। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 12 বছর 2 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 675 টি টিউন ও 200 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 123 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।
কখনো কখনো প্রজাপতির ডানা ঝাপটানোর মত ঘটনা পুরো পৃথিবী বদলে দিতে পারে।