انتقل إلى المحتوى
use-cases / replay-this-mornings-incident / hero
PIPE · INCIDENT REPLAY

أعد تشغيل حادثة هذا الصباح أمام الفريق بأكمله

الساعة 2 مساءً. حادثة الـ7 صباحًا تُحلَّل لاحقًا. ستة مهندسين يريدون استعراض تسلسل السجلات نفسه الذي رآه مهندس SRE المناوب وقتها. تبثّ اللقطة عبر عنوان Hoody Pipe واحد مع ?n=8. الجميع يشاهد التسلسل ينطلق على طرفيته في اللحظة ذاتها — بلا لقطات شاشة، بلا تمرير غير متزامن، بلا تسجيل Zoom.

اقرأ واجهة pipe
use-cases / replay-this-mornings-incident / mechanism

لقطة واحدة. أنبوب واحد. ست طرفيات بتزامن تام.

خذ ملف سجلات وقت الحادثة الصباحية من لقطة hoody-files. ابثّه عبر مسار Hoody Pipe مع ?n=8. ثمانية مهندسين يستدعون المسار نفسه عبر curl. الأنبوب ينتظر اتصال الجميع، ثم تنتقل البايتات مرّة واحدة بالمعدّل الذي تحدّده — كل قارئ يرى السطر نفسه في اللحظة ذاتها.

post-mortem.host · sender
PUT · replay
# حادثة الـ 7 صباحاً مقبوضة في incident-2026-05-04.log
# (لقطة من /var/log/app بـ 07:25 من قبل مراقب الاتصال المباشر).
# أعد تشغيلها عبر مسار أنبوب مع ?n=8 — الخادم ينتظر
# حتى ثمانية قارئين يتصلون، ثم البايتات تتحرك خلالها مرة واحدة.
# pv -L 50k معدل محدود إعادة التشغيل إلى 50KB/s قابل للقراءة.

cat incident-2026-05-04.log \
  | pv -L 50k \
  | curl -T - \
      "https://prod-pipe.containers.hoody.com/api/v1/pipe/replay?n=8"

# [INFO] انتظار 8 جهات استقبال للاتصال...
# [INFO] البث إلى 8 جهات استقبال بـ 50.0 KB/s
اتصل القرّاء الثمانية · الأنبوب لا يحتفظ بشيء · البايتات تمرّ مرّة واحدة
alex / ben / chen / dani / ev / fox / اثنين آخرين · قارئين
GET · lockstep
# كل مهندس في استدعاء post-mortem يشغل نفس السطر.
# يغلقون حتى الجميع قد انضموا، ثم الشلال يتمرر
# عبر طرفيتهم بنفس السرعة التي رأى مراقب الاتصال المباشر بـ 07:23.

curl "https://prod-pipe.containers.hoody.com/api/v1/pipe/replay?n=8"

# 07:23:14 INFO POST /v1/checkout u_28f
# 07:23:15 WARN stripe latency 2.4s
# 07:23:16 ERR  500 stripe timeout
# 07:23:17 ···  auto-rollback armed
# ...الشلال كامل، بالترتيب، على كل طرفية في نفس الوقت.

قطعتان من واجهة Pipe الموثّقة: PUT /api/v1/pipe/[path] على المُرسِل، وGET /api/v1/pipe/[path] على كل قارئ، كلاهما مفهرسان بالقيمة nنفسها. الخادم يمرّر نوع المحتوى للمُرسِل، ويُبقي الاتصال حتى مدة TTL تبلغ 5 دقائق بانتظار القرّاء، ويطبّق ضغطًا عكسيًا إذا تباطأ أي قارئ. معدّل إعادة التشغيل يحدّده المُرسِل بالكامل — pv أو dd أو أي محدّد معدّل تثق به.

use-cases / replay-this-mornings-incident / powers

ما الذي تفعله المشاهدة الجماعية ولا تفعله الوثيقة

البثّ المتمرّر يغيّر الحوار. الناس يكفّون عن الجدال حول ما حدث ويبدؤون بمشاهدة ما حدث. ثلاث خصائص للأنبوب تجعل هذا ممكنًا.

متعدد المستخدمين افتراضيًا

ست طرفيات على رأس التشغيل ذاته

n=N موثّق في واجهة Pipe: كل قارئ ينضمّ إلى المسار نفسه بالقيمة n نفسها يستلم نسخة مطابقة موزّعة. ثمانية مهندسين يرون السطر نفسه يمرّ في اللحظة ذاتها — لا أحد متقدّم، لا أحد يحدّق في شاشة مشتركة لأحد آخر.

محدّد المعدّل من المُرسِل

إعادة تشغيل بطيئة بما يكفي للقراءة

سجلات الإنتاج الحقيقية تتمرّر أسرع مما يستطيع البشر استيعابه. pv -L 50k يخنق إعادة التشغيل إلى وتيرة قابلة للقراءة؛ الأنبوب يحمل أيّ معدّل يختاره المُرسِل. يمكنك إيقاف التحليل اللاحق مؤقتًا بـ ctrl-Z على المُرسِل واستئنافه بـ fg — كل طرفية قارئ تتوقف معك.

زائل افتراضيًا

إعادة التشغيل تنتهي، الأنبوب يختفي

الأنبوب لا يخزّن أيّ بايت. عندما ينتهي cat أو يضغط مهندس SRE ctrl-C على المُرسِل، يُغلَق المسار — لا نقطة نهاية متبقّية مكشوفة على الإنترنت، لا نص لإدارة احتفاظه. شغّله مجدّدًا من اللقطة لمن انضمّ إلى الاجتماع متأخّرًا.

use-cases / replay-this-mornings-incident / session

كيف تجري جلسة إعادة التشغيل

أربع خطوات من سجلّ وقت الحادثة إلى تشغيل تحليل لاحق مشترك. لا شيء هنا بنية تحتية مخصّصة — اللقطة تعيش في hoody-files، وإعادة التشغيل تركب على عنوان Pipe واحد.

  1. 0107:25

    خذ لقطة من السجلات

    مهندس SRE المناوب ينسخ /var/log/app في الساعة 07:25 إلى دلو hoody-files. الملف هو مصدر الحقيقة لكل ما حدث في نافذة التسلسل.

  2. 0213:55

    افتح غرفة الاجتماع

    القائد يكتب عنوان Hoody Pipe مع ?n=8 (ستة مهندسين + هامش لاثنين متأخّرَين) ويلصقه في قناة التحليل اللاحق. يمكن للمستقبِلين الاتصال أولًا — الأنبوب يحتفظ بالخانة لمدة تصل إلى 5 دقائق.

  3. 0314:00

    اضغط تشغيل

    مهندس SRE يضخّ اللقطة عبر pv -L 50k إلى العنوان. الخادم ينتظر اتصال ثمانية أوامر curl، ثم تمرّ البايتات مرّة واحدة بتزامن تامّ — التسلسل ينطلق على ست طرفيات في اللحظة ذاتها.

  4. 0414:18

    أعد التشغيل للمتأخّرين

    المدير ينضمّ متأخّرًا. أعد تشغيل السطر نفسه. الأنبوب مسار، ليس مكانًا — لا شيء للبحث فيه، ولا للترجيع، ولا للتخزين على الخادم. فقط اضغط تشغيل مجدّدًا.

use-cases / replay-this-mornings-incident / capacity

ما حجم الغرفة؟

من مواصفات واجهة Pipe الموثّقة. حدود وسلوكيات تحوّل عنوانًا واحدًا إلى مسرح للتحليل اللاحق.

  1. READERS PER PATH256

    السقف الموثّق على n. اجتماع التحليل اللاحق لن ينفد من المقاعد — الأنبوب يتسع لمؤسسة بأكملها.

  2. BYTES STORED0

    الأنبوب يبثّ مباشرة من طرف إلى طرف. إعادة التشغيل لا تترك أيّ أثر على الخادم عند انفصال المُرسِل.

  3. JOIN WINDOW5 min

    يمكن للمستقبِلين الاتصال قبل المُرسِل؛ الأنبوب يحتفظ بالخانة حتى 5 دقائق للمتأخّرين.

المصدر: واجهة Hoody Pipe — حدود موثّقة لـ /api/v1/pipe/[path]، ومعامل n (1–256)، وTTL لأنبوب غير مُؤسَّس.

use-cases / replay-this-mornings-incident / punchline

التحليل اللاحق ليس وثيقة. إنه بثّ يشاهده الجميع معًا.

بلا تمرير غير متزامن · بلا تحديق في شاشة مشتركةعنوان واحد · ثمانية curl · رأس تشغيل واحد
POST-MORTEMبالأمساليوم
  • ARTIFACTوثيقة Confluence مع لقطات شاشةhttps://prod-pipe.../pipe/replay
  • SYNCكلٌّ يتمرّر بسرعتهتشغيل متزامن لـ n=8
  • RETENTIONملف PDF يبقى لسنواتctrl-C والأنبوب يختفي
  • REPLAYحدّد جلسة Zoom ثانيةأعد تشغيل أمر curl نفسه
اقرأ واجهة pipe
use-cases / replay-this-mornings-incident / replaces

ما يحلّ هذا محلّه

مجموعة الأدوات والطقوس التي تستدعيها حاليًا لاستعراض جدول زمني لحادثة مع فريق. كلٌّ منها يخزّن شيئًا، أو يفرض رسومًا لكل مقعد، أو يفقد التوقيت. الأنبوب عنوان واحد برأس تشغيل مشترك.

  • وثيقة تحليل لاحق على Confluenceصفحة ثابتة بلقطات شاشة قديمة
  • تقرير حوادث Notionقائمة نقاط، بلا توقيت متزامن
  • لصق لقطات شاشة في Slackيفقد ترتيب التسلسل وتوقيته
  • جلسات إعادة سجلات يدويةشخص واحد يتمرّر، والباقون يحدّقون
  • جدول زمني مسجَّل على Zoomكلٌّ يسحب بسرعته الخاصة
  • تعليقات دفتر Datadogترخيص لكل مقعد، بلا رأس تشغيل مشترك
use-cases / replay-this-mornings-incident / cta

التسلسل ينطلق على ست طرفيات معًا. الحوار يتغيّر. الناس يكفّون عن الجدال حول ما حدث ويبدؤون بمشاهدة ما حدث.

اقرأ واجهة pipe
use-cases / replay-this-mornings-incident / related

اقرأ الآخرين