طراحی تحلیل‌های بلادرنگِ بادوام

شما به داشبوردهایی با داده‌های تازه نیاز دارید. همچنین نیاز دارید که با رشد سیستم، دقت آن‌ها حفظ شود. Event sourcing این مشکل را حل می‌کند.

جریان کار:

  • تولیدکنندگان (Producers): سرویس‌ها رویدادهای دامنه (domain events) را ارسال می‌کنند.
  • گذرگاه رویداد (Event Bus): Kafka یا Kinesis رویدادها را در یک Log ذخیره می‌کنند.
  • پردازشگرها (Processors): آن‌ها Log را می‌خوانند و مدل‌های خواندن (read models) را به‌روزرسانی می‌کنند.
  • مدل‌های خواندن (Read Models): Postgres یا Redis متریک‌های نهایی را ذخیره می‌کنند.
  • رابط برنامه‌نویسی پرس‌وجو (Query API): داشبورد شما داده‌ها را از اینجا فراخوانی می‌کند.

قوانین کلیدی برای طراحی شما:

  • رویدادها را تغییرناپذیر (immutable) کنید. هرگز یک رویداد را به‌روزرسانی نکنید.
  • از کلیدهای هم‌ارزی (idempotency keys) استفاده کنید. این کار از ورود داده‌های تکراری جلوگیری می‌کند.
  • نسخه‌بندی طرحواره‌ها (schemas) را انجام دهید. این کار از خرابی سیستم جلوگیری می‌کند.
  • از تصویرسازی‌های قطعی (deterministic projections) استفاده کنید. این کار باعث یکپارچگی داده‌ها می‌شود.

نحوه ساخت آن:

  • رویدادهای اصلی خود را شناسایی کنید.
  • ابزارهای ذخیره‌سازی خود را انتخاب کنید.
  • تصویرسازی‌های اولیه را برای متریک‌ها بسازید.
  • مکانیزم حذف داده‌های تکراری (deduplication) را پیاده‌سازی کنید.
  • یک رجیستری طرحواره (schema registry) ایجاد کنید.
  • تأخیر رویدادها (event lag) را مانیتور کنید.

این ساختار به شما اجازه می‌دهد داده‌های خود را مقیاس‌پذیر کرده و ممیزی (audit) کنید. شما تاریخچه کاملی از هر تغییر را در اختیار خواهید داشت.

منبع: https://dev.to/therizwansaleem/designing-a-durable-event-sourced-analytics-platform-for-real-time-dashboards-58fd