من چرا باید Saga رو توی microservices جدی بگیرم؟! اگه یه بار production دیدی که سفارش ثبت شده ولی پول کم نشده… یا پول کم شده ولی سفارش گیر کرده… دقیقاً با همین درد طرفی. یه زمانی یه دیتابیس بود و یه transaction، همهچی تموم. ولی الان هر سرویس دیتابیس خودش رو داره و “همه باهم commit شن” بیشتر شبیه آرزوئه تا واقعیت 😄 Saga میاد میگه: بهجای distributed transaction، کار رو تقسیم کن به چند local transaction و اگر وسطش fail شدی، با compensation برگرد عقب. ولی نکته اینه: Saga فقط اسم نیست. اگه idempotency، retry/timeout، outbox و observability رو درست نچینی، همون Saga خودش میشه منبع باگهای عجیب. تو این مقاله دقیق میگم Saga چی رو حل میکنه، کِی جواب میده، کِی نه، و چطور پیادهسازیش کنی که واقعاً value بده. آخرش هم خیلی کوتاه میگم چرا بعضی تیمها برای این کار میرن سمت Temporal 👇