সরাসরি প্রধান সামগ্রীতে চলে যান

Microservice Error Handling

একদম ঠিক বলেছেন ভাই 💯 — তুমি এখন microservice design-এর আসল beauty ধরেছো 👏

✅ হ্যাঁ — যদি প্রতিটা service independent হয় (loosely coupled architecture), তাহলে একটা service fail করলে আরেকটা fail করবে না (at least directly না)।

তবে, এখানে একটু গভীর বিষয় আছে — “independent” মানে কি logical independence, নাকি runtime independence?” এইটা বোঝা খুব জরুরি।

চলো ধাপে ধাপে পরিষ্কারভাবে দেখি 👇


⚙️ ১️⃣ Microservice Independence মানে কী?

একটা system এ একাধিক service থাকে, যেমন:

🧾 Order Service

💳 Payment Service

🚚 Delivery Service

✉️ Notification Service


🔹 Logical Independence:

প্রতিটা service এর নিজের data, business logic, আর deploy pipeline আলাদা।

📌 উদাহরণ:

Payment service down থাকলেও Order service order create করতে পারবে (pending state এ রাখবে)।

Delivery service নিজের data manage করবে, Payment এর DB access করবে না।

👉 মানে “tight coupling” নেই — service গুলা নিজের domain handle করে।


🔹 Runtime Independence:

প্রতিটা service run হয় আলাদা instance/container এ। তাদের মধ্যে যোগাযোগ হয় network call (HTTP / gRPC / message queue) দিয়ে।

📌 উদাহরণ:

যদি Payment service crash করে, Order service শুধু একটা timeout বা error response পাবে — কিন্তু নিজে crash করবে না।

👉 মানে technically independent — একটা fail করলে বাকিগুলো “survive” করতে পারে।


💣 কিন্তু — Problem হলো “Dependence in workflow”

ধরা যাক flow এমন:

Order Service → Payment Service → Notification Service

এখন Payment service fail করলে Order success হতে পারবে না, কারণ এটা business dependency, যদিও runtime dependency না।

অর্থাৎ:

Dependency Type Explanation Impact

🧠 Business dependency এক সার্ভিসের কাজ আরেকটার উপর নির্ভর Partial failure বা rollback দরকার ⚙️ Runtime dependency এক সার্ভিসের কোড/ডিপ্লয় আরেকটার উপর নির্ভর Full crash বা unavailability


🧩 ২️⃣ কিভাবে একটার failure অন্যগুলোকে affect করতে দেবে না

✅ (A) Async Communication ব্যবহার করো (RabbitMQ / Kafka)

Order service, Payment service কে সরাসরি call না করে message queue তে “OrderCreated” event publish করবে।

Payment service সেটা consume করে নিজের মতো payment করবে।

👉 এতে:

Payment fail করলে Order চলবে, শুধু status “pending_payment” থাকবে।

System loosely coupled থাকবে।


✅ (B) Circuit Breaker / Timeout

Service-to-service synchronous call করতে হলে (যেমন REST API), Resilience4j বা Netflix Hystrix দিয়ে circuit breaker রাখো।

@CircuitBreaker(name = "paymentService", fallbackMethod = "paymentFallback") public void callPayment() { paymentClient.charge(); }

👉 এতে Payment service বারবার timeout দিলে Order service নিজের fallback logic চালাবে (যেমন “try again later” status)।


✅ (C) Saga Pattern / Compensation

Distributed transaction system এ perfect rollback সম্ভব না। তাই “Saga pattern” use করে partial compensation করো।

📌 উদাহরণ:

Order success → Payment fail → তাহলে Order কে “cancelled” mark করো।

এই flow orchestrate করে “Saga orchestrator” বা event-driven mechanism।


✅ (D) Retry & Dead-letter queue

Payment ব্যর্থ হলে queue system auto retry করতে পারে।

বারবার fail হলে “Dead-letter queue”-তে পাঠিয়ে পরে analysis করা যায়।


✅ (E) Health Check & Isolation

প্রতিটা service আলাদা container এ রাখলে Kubernetes নিজে health check করে restart করবে।

এক সার্ভিস down মানে system down না — Kubernetes automatically restart করবে, বা অন্য healthy instance serve করবে।


🔭 সারসংক্ষেপ:

অবস্থা কি করা উচিত

Multiple services but dependent flow Asynchronous design + fallback Service down হলে অন্যটা প্রভাবিত না হোক Circuit breaker + retry Business consistency দরকার Saga / event-based compensation Deployment independence Containerize + isolate services


💡 সহজভাবে মনে রাখো:

🔹 Microservice independence মানে — “Fail আলাদা হতে পারবে, কিন্তু system full fail হবে না।”

🔹 এইটা achieve করতে হলে synchronous dependency কমিয়ে, asynchronous event-driven architecture ব্যবহার করাই সেরা পথ।


চাওলে আমি diagram আকারে দেখাতে পারি — যেখানে দেখাবে কিভাবে Order–Payment–Notification system event-driven করলে একটা fail করলেও অন্যগুলো ঠিকভাবে কাজ করে। চাও সেটা?

মন্তব্যসমূহ

এই ব্লগটি থেকে জনপ্রিয় পোস্টগুলি

সিজ্জিন (Sijjin) vs ইল্লিয়িন (Illiyin) পার্থক্য Difference

Sijjin (سِجِّين) এবং Illiyin (عِلِّيِّين) —এ দুটি শব্দ কুরআনে এসেছে এবং দুটোই মানুষের আমলনামা সংরক্ষণ সম্পর্কিত স্থানকে নির্দেশ করে। ১. সিজ্জিন (Sijjin) সিজ্জিন হলো পাপীদের (কাফের, মুনাফিক ও দুরাচারীদের) আমলনামা সংরক্ষণের স্থান। এটি সাত তলদেশের নীচে এক কারাগার বা অন্ধকার জগতে অবস্থিত বলে উল্লেখ রয়েছে। সূরা আল-মুতাফফিফীন (৮৩:৭-৯) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْفُجَّارِ لَفِي سِجِّينٍ ۝ وَمَا أَدْرَاكَ مَا سِجِّينٌ ۝ كِتَابٌ مَرْقُومٌ" অর্থ: "না, পাপীদের আমলনামা সিজ্জিনে সংরক্ষিত। তুমি কি জানো, সিজ্জিন কী? এটি এক লিখিত দলিল।" সিজ্জিনকে একটি কারাগার, সংকীর্ণ স্থান, বা নিচের স্তরে অবস্থিত এক অন্ধকার দুনিয়া হিসেবে ব্যাখ্যা করা হয়। ২. ইল্লিয়িন (Illiyin) ইল্লিয়িন হলো সৎকর্মশীলদের (মুমিন ও নেককারদের) আমলনামা সংরক্ষণের স্থান । এটি সপ্তম আসমানের ওপরে সংরক্ষিত এক সম্মানিত স্থান। সূরা আল-মুতাফফিফীন (৮৩:১৮-২১) তে বলা হয়েছে: "كَلَّا إِنَّ كِتَابَ الْأَبْرَارِ لَفِي عِلِّيِّينَ ۝ وَمَا أَدْرَاكَ مَا عِلِّيُّونَ ۝ كِتَابٌ مَرْقُومٌ ۝ يَش...

তারাবিহ সমগ্র - প্রথম আলো

রামাদান ২০২৪ উপলক্ষে প্রথম আলোর নিয়মিত আয়োজন - খতমে তারাবিহ'র সূরা গুলো নিয়ে সংক্ষিপ্ত আলোচনা'র লিংক  নিচে দেওয়া হলো।  লিংকে ক্লিক করলেই আপনাকে আলোচনা তে নিয়ে যাবে। তারাবিহ: ১ | একটি খুন ও গাভি নিয়ে বনি ইসরাইলের বাড়াবাড়ি তারাবিহ: ২ | নারীর মর্যাদা ও অধিকার এবং অলৌকিক তিন ঘটনা তারাবিহ: ৩ | যে ১৪ নারীকে বিয়ে করা হারাম তারাবিতে: ১২ | মহানবী (সা.)–এর আকাশভ্রমণ এবং আসহাবে কাহাফের কাহিনি

রেডমি নোট ৯ এর বিস্তারিত | Redmi Note 9 in Bangla

৩০ এপ্রিল, ২০২০ এ শাওমির ঘোষনা আসে এই ফোনটি নিয়ে। কিন্তু ফোনটি মার্কেটে আসে মে মাসের শেষের দিকে৷ করোনার কারনে ফোনটি বাংলাদেশে আসতে আরো সময় নেয়। বর্তমানে বাংলাদেশে আন অফিশিয়াল ভাবে ফোনটি পাওয়া যাচ্ছে৷ বাংলাদেশে অফিশিয়াল ভাবে এখনো ফোনটি আসার তথ্য নেয়৷ চলুন ফোনটি নিয়ে বিস্তারিত আলোচনা করা যাক। শাওমি নোট সিরিজের ফোন বের করে এদের রেডমি নামে সাব ব্যান্ড৷ এদের কাজ হল এই নোট সিরিজ নিয়ে কাজ করা৷ প্রতিবছর নোট সিরিজের ১/২ টা ফোন বাজারে আসে। সাথে সেই ফোন গুলার বিভিন্ন ভার্সন (যেমন - র‍্যাম ও রমের ভিত্তিতে) বাজারে আসে। এই বছরও তারা রেডমি সিরিজের নোট ৯ বাজারে আনে। এই বছর হয়তো এই সিরিজের আরো ফোন বাজারে আসবে। ডিস্পলেঃ ফোনটির ডিসপ্লে সাইজ ৬.৫৩ ইঞ্চি। এতে আইপিএস এলসিডি ডিসপ্লে ব্যবহার করা হয়েছে। এই ফোনের ডিসপ্লে প্রটেকশন হিসেবে আছে গরিলা গ্লাস ফাইভ। স্ক্রিন আর ফোনের বডির অনুপাত প্রায় ৮৩.৫%। এই ফোনের ডিসপ্লে ফুলএইচডি মানে ১০৮০পি। এই ডিস্পলের দৈর্ঘ্য ১৯.৫ একক এবং প্রস্থ হল ৯ একক। এত বড় ফোনের কারনে এই ফোনের পিপি আই ডেনসিটি ৩৯৫। যা একটু কম। প্লাটফর্মঃ এই ফোনের অপারেটিং সিস্টেম এন্ড্রয়েড ১০ এবং এর...