Idempotency

Idempotency হল এমন একটি Property, যেখানে একটি Operation একাধিকবার Execute করলেও Output (বা System এর Final State) একই থাকে। API, Distributed System ও Database এ Data Consistency এবং Reliability বজায় রাখতে এটি গুরুত্বপূর্ণ ভূমিকা পালন করে।


Idempotency কেন দরকার?

  • Duplicate Effect কমাতে: একই API বারবার Call করলেও যেন Data Corruption বা Unintended Side Effect না হয়।

  • Network Failure Handle করতে: Request Retry হলেও যেন Data Duplicate না হয়।

  • System Reliability বাড়াতে: Client Retry করলেও System যেন একবার Execute হওয়ার মতোই Behave করে।


Idempotency এর উদাহরণ

১. HTTP Methods & Idempotency

HTTP Method

Idempotent?

ব্যাখ্যা

GET

Yes

Data Fetch করলে System এর কোনো পরিবর্তন হয় না।

PUT

Yes

একই Data দিয়ে একাধিকবার Update করলেও Final Result একই থাকে।

DELETE

Yes

একবার Delete হওয়ার পর আবার Delete করলে System এ Extra কোনো Effect পড়ে না।

POST

No

প্রতিবার নতুন Data Create হয়, তাই এটি Idempotent নয়।

২. Database Operations

-- Not Idempotent: Running this multiple times will insert multiple rows
INSERT INTO users (name, email) VALUES ('Alice', 'alice@domain.com');

-- Idempotent: Running this multiple times will yield the same result
UPDATE users SET email = 'alice@domain.com' WHERE id = 42;

৩. Payment Processing

  • Idempotent না হলে: User একই API বারবার Call করলে একাধিকবার Payment হয়ে যেতে পারে।

  • Idempotent হলে: Transaction ID বা Idempotency Key ব্যবহার করে নিশ্চিত করা হয় যে একই Request একবারের বেশি Process হবে না।


Idempotency Implement করার উপায়

১. Idempotency Key ব্যবহার করুন

  • প্রতিটি Request এর জন্য একটি Unique Identifier (Transaction ID বা UUID) ব্যবহার করুন।

  • যে Request আগেই Process হয়েছে, তার জন্য একই Response Return করুন।

২. Database Constraint দিন

  • UNIQUE Constraint ব্যবহার করে Duplicate Data Insert আটকান।

৩. Cache ব্যবহার করুন

  • আগে Process হওয়া Request গুলো Cache এ রেখে Duplicate Execution আটকানো যায়।

৪. Safe API Design করুন

  • যেখানে সম্ভব POST এর বদলে PUT ব্যবহার করুন, কারণ PUT স্বভাবতই Idempotent।

Idempotency হল System এর Consistency, Fault Tolerance এবং Reliability নিশ্চিত করার একটি মূল Principle। API, Database ও Distributed System এ এটি Follow করলে System আরও Robust ও Secure হয়।