دليل · ممارسة الهندسة

من RFC إلى ADR: الوصول إلى القرار والحفاظ على المنطق

الجميع يتفق على أن تقارير ADR جيدة. تقريبًا لا أحد يبقيها محدثة - لأن النقاش والسجل يعيشان في أماكن مختلفة. أغلق الفجوة وستكتب تقرير ADR نفسه.

AT
Argumentree Team
Engineering Practice
August 24, 2026
11 min اقرأ

من RFC إلى ADR: الوصول إلى القرار والحفاظ على المنطق

RFC عادة ما يتعلق بالوصول إلى اتفاق؛ بينما يسجل ADR الاتفاق بمجرد الوصول إليه - والسبب في فساد ADRs هو أن النقاش يعيش في الدردشة وتعليقات طلبات السحب بينما يتم كتابة السجل لاحقًا، من الذاكرة، بواسطة شخص واحد. لتشغيل تدفق RFC إلى ADR بحيث يخرج السجل من النقاش: صرح بالاقتراح كادعاء أساسي (عنوان ADR المستقبلي)؛ أضف السياق كحجج مؤيدة منفصلة بحيث يمكن تحدي كل قوة بشكل فردي؛ أعطِ كل خيار تم النظر فيه عقدة شقيقة خاصة به مع مزاياه وعيوبه - بما في ذلك الخيارات المرفوضة؛ قم بتشغيل جولة تعليقات RFC كسلاسل (سلاسل أسئلة وأجوبة للتوضيح، سلاسل مراجعة للاعتراضات - كل منها حوار من أربع دورات بين المراجع ومؤلف الخيار، مع N مراجعين يعني N سلاسل متوازية؛ سلاسل تسوية للتوفيق بين الانقسامات، حيث يسجل السلسلة المكتملة المحاولة سواء تم حلها أم لا)؛ اجعل صانعي القرار يقيمون الخيارات كدليل على موقف الغرفة - التقييم ليس القرار، لا يزال إنسان مسمى يتخذ القرار؛ سجل العواقب المقبولة كأبناء سلبية للخيار المختار؛ ونموذج الإحلال من خلال ربط قرار لاحق بالذي يحل محله، مع الحفاظ على القديم قابلًا للقراءة. يعمل البذر من ADRs الحالية بتنسيق markdown أو نصوص ثقيلة القرار عبر استخراج الذكاء الاصطناعي مع ختم الأصل. حدود صادقة: هذا لا يحل محل ADRs المتعقبة في المستودع (تصدير وتسجيل السجل)؛ لا يوجد حقل حالة ADR مدمج، لذا فإن المقترح/المقبول/المستبدل هو تقليد تحافظ عليه؛ سلسلة مكتملة لا تعني أن الأطراف اتفقت - وهو بالضبط ما يجعل عدم الاتفاق والالتزام واضحًا.

Share:
ملخص

RFC عادة ما يتعلق بالوصول إلى اتفاق؛ بينما يسجل ADR الاتفاق بمجرد الوصول إليه. تتعفن ADRs لأن عملية الوصول إلى الاتفاق تحدث في الدردشة والتسجيل يحدث لاحقًا، من الذاكرة. قم بتشغيل كلاهما في هيكل واحد:

  • الاقتراح هو ادعاء أساسي; القوى السياقية منفصلة، ويمكن الطعن فيها كحجج مؤيدة؛ كل خيار - بما في ذلك الخيارات المرفوضة - يحصل على عقدته الخاصة
  • جولة RFC هي سلاسل: أسئلة وأجوبة للتوضيح، مراجعة للاعتراض، تسوية للمصالحة — حوارات بأربع دورات، N مراجعين = N سلاسل متوازية
  • التقييم ليس القرار: صانعو القرار يقيمون كدليل؛ إنسان مسمى يسميه - ويكتب لماذا، خاصة ضد الغرفة
  • شجرة ADR هي: لا يتم نسخ أي شيء، لذا لا يُفقد شيء في النسخ — قم بالتصدير إلى المستودع إذا كانت منظمتك تتطلب ذلك

القرار الذي لم يستطع أحد إعادة بنائه

يسأل قائد التقنية الجديد سؤالاً معقولاً: لماذا تتحدث كل خدمة إلى نظام الفوترة من خلال تلك الطابور؟ هناك سجل قرار معماري — ADR-014، أربع جمل، كُتبت قبل أحد عشر شهراً. السياق: "كنا بحاجة إلى تكامل موثوق للفوترة." القرار: "استخدم الطابور." العواقب: "بعض التأخير الإضافي." من الناحية الفنية، هو سجل. لا يجيب على شيء.

كنت هناك، لذا تعرف ما لا يقوله ADR-014: الجدل الذي استمر ثلاثة أسابيع عبر قناتين في Slack وسلسلة من المناقشات الحادة حول PR؛ خيار API المتزامن الذي خسر بسبب حد معدل تم رفعه منذ ذلك الحين؛ اعتراض المهندس الموظف الذي تم الرد عليه بمعيار لا يمكن لأحد العثور عليه الآن. حدث النقاش. تم كتابة السجل بعد ذلك، من الذاكرة، بواسطة شخص واحد، في يوم الجمعة.

هذه هي وضعية الفشل الموثقة، شبه العالمية، لممارسة جيدة حقًا. توصي إرشادات AWS الإرشادية ووثائق Microsoft Well-Architected كلاهما بـ ADRs — وكلاهما يشير إلى الألم: الحفاظ عليها محدثة يستغرق وقتًا، وإدارتها تصبح معقدة مع تزايد الفرق والخيارات. السبب الجذري هو هيكلي: النقاش والسجل يعيشان في أماكن مختلفة، لذا فإن السجل دائمًا ما يكون نسخًا غير كامل. الحل هو جعلهما في نفس المكان. كما أن هذه الممارسة ليست محددة بالهندسة، أو حتى محددة بـ ADR. تتطلب Google وثيقة تصميم — المشكلة، الاقتراح المقترح، البدائل المدروسة، الموازنة — مكتوبة ومراجعة قبل بدء العمل الفني الكبير، وهي ممارسة موضحة في هندسة البرمجيات في Google. إنها نفس الانضباط مثل ADR، ولكن يتم تطبيقها خطوة واحدة في وقت سابق: يسجل ADR الخيار الذي جادلت فيه وثيقة التصميم. يفشل الاثنان بنفس الطريقة لنفس السبب، وكلاهما يتم إصلاحه بنفس الخطوة — الاحتفاظ بالنقاش حيث يعيش السجل، بدلاً من نسخ أحدهما إلى الآخر بعد ذلك. اقرأ كل خطوة أدناه على أنها تغطي كلا الأثرين.

لماذا تتعفن شهادات الإيداع الأمريكية

تحمل جملة واحدة من مواد مجتمع ADR التشخيص الكامل: عادة ما يتعلق RFC بالوصول إلى اتفاق؛ يسجل ADR الاتفاق بمجرد الوصول إليه. عنصران، لحظتان — وكل شيء بينهما يتسرب. البدائل التي كانت "واضحة" بشكل "بديهي" تظل غير مسجلة (حتى تتوقف عن كونها واضحة). الاعتراض الذي شكل التصميم النهائي يبقى فقط كتعليق PR على موضوع مغلق. يتم كتابة قسم السياق في النهاية، وبأسوأ شكل، من قبل من خسر لعبة "ليس هو". الاجتماعات التي كان ينبغي أن تنتج قرارات تنتج ملخصات بدلاً من ذلك، والتفكير الذي يجعل القرار دائمًا — الشيء الذي تعتمد عليه سلسلة جودة القرار بأكملها — هو بالضبط ما تسقطه النسخ.

ما تحتاجه

نقاش واحد فقط لكل RFC في Argumentree. إذا كان لديك مجموعة موجودة من ADRs بتنسيق markdown أو نص اجتماع مليء بالقرارات، قم بتحميلها — ستقوم تقنية استخراج الذكاء الاصطناعي بتحويلها إلى حجج منظمة مؤيدة ومعارضة مع المقاطع المصدرية المرفقة، مختومة كتم استخراجها حتى لا يتم الخلط بين المطالب المستوردة والمطالب الحية (كيف تعمل عملية الاستخراج).

الخطوة 1–3: الاقتراح، السياق، الخيارات

  1. 1حدد الاقتراح كالمطالبة الأساسية — القرار المقترح، وليس سؤالاً: "سنقوم بتوجيه جميع كتابات الفواتير من خلال قائمة انتظار دائمة." هذه الجملة هي عنوان ADR المستقبلي. نقطة تفتيش: الجذر موجود، جملة واحدة، كتبها المقترح.
  2. 2السياق كحجج منفصلة. كل قوة تجعل القرار ضروريًا - متطلبات الموثوقية، حد معدل نظام الفوترة، تفويض التدقيق - هي حجة خاصة بها تحت الجذر. لا يمكن الطعن في فقرة "السياق" الأحادية؛ يمكن أن يتم استجواب أو تأكيد أو دحض ثلاث ادعاءات سياقية منفصلة بشكل فردي. نقطة التحقق: ≥2 حجج سياقية، كل واحدة قوة.
  3. 3كل خيار يحصل على عقدته الخاصة. الطابور، واجهة برمجة التطبيقات المتزامنة، وظيفة الدفعة - حجج شقيقة، كل منها لها مزاياها وعيوبها الخاصة. المزايا/العيوب نسبية بالنسبة للأب، لذا فإن عيوب الخيار تتعلق بـ ذلك الخيار، وليس بالقرار. قم بتضمين الخيارات التي تتوقع رفضها: الشقيق المرفوض هو ما يجيب على "لماذا لم نقم فقط..." في العام المقبل. نقطة تفتيش: كل خيار قد يسأل عنه القارئ موجود.

الخطوة 4-6: جولة RFC التي تترك سجلاً

الآن جولة المراجعة — عادةً الجزء الذي يتناثر عبر الدردشة، التعليقات والممرات. هنا يتم تشغيلها كنوعين من التبادل المنظم، كل منها حوار من أربع دورات بين المراجع ومؤلف الخيار:

سلسلة الأسئلة والأجوبة — توضيح

"ماذا يحدث للعملاء المتزامنين الحاليين؟" يجيب مؤلف الخيار، يتابع المراجع، يجيب المؤلف مرة أخرى — مكتمل. لا ينبغي أن يحمل أي خيار سؤالاً غير مُجاب عليه إلى القرار.

سلسلة المراجعة — كائن

يقيم المراجع خيارًا على أنه غير سليم؛ يرد المؤلف؛ متابعة؛ رد. N مراجعين = N سلاسل متوازية على نفس الخيار - كل اعتراض هو تبادل قابل للتعريف خاص به، وليس تعليقًا ضائعًا في سلسلة مشتركة.

سلسلة التسوية — التصالح

انقسم معسكران؟ يقترح أحدهما الخيار الوسط على المؤلف الآخر. إذا تم حله، سيكون لديك عقدة خيار جديدة. إذا لم يتم حله، فإن السلسلة المكتملة هي السجل الذي تم فيه المحاولة — وهو ما يساوي تقريبًا نفس القيمة.

مكتمل ≠ متفق عليه

سلسلة تصل إلى مكتمل تعني أن التبادل قد تم — السؤال تم طرحه والإجابة عليه مرتين — وليس أن الأطراف قد اتفقت. احتفظ بهذا التمييز؛ فهو على وشك أن يكون مهمًا.

الخطوة 7: اتخاذ القرار — وما ليس عليه التقييم

يقيم صانعو القرار الخيارات: كل خيار يحمل تصنيفًا. التوزيع هو دليل حقيقي — حيث كانت الغرفة، وفقًا للسجلات، قبل المكالمة. لكن التصنيف ليس هو القرار. لا يزال هناك إنسان محدد يتخذ القرار، وإذا كانت المكالمة ضد التوزيع، فإن نقطة القرار هي المكان الذي يتم فيه شرح ذلك. (من يجب أن يكون هذا الإنسان المحدد، وكيفية تعيين الدور قبل النقاش بدلاً من بعده، هو تخصص خاص به — انظر دليل حقوق القرار.)

السؤال لفريقك

من الذي قرر آخر قرار معماري لك - وهل يمكنك إثبات ذلك؟ ليس من كان في الاجتماع: من الذي امتلك القرار، وأين تم كتابة مبرراته؟

الخطوة 8-9: الـ ADR الذي لم يكن عليك كتابته

إليك العائد. السجل هو ليس وثيقة تكتبها لاحقًا — إنه عقدة الخيار المختار بالإضافة إلى كل ما هو مرتبط بها بالفعل: حجج السياق (السياق)، الأشقاء المرفوضون (الخيارات المدروسة)، السلاسل المكتملة (النقاش، مع المؤلفين)، التقييمات (حيث كانت الغرفة)، وحجة القرار مع مبرراتها (القرار). لا يتم نسخ أي شيء، لذا لا يُفقد أي شيء في النسخ.

  1. 1سجل العواقب التي تقبلها. العيوب المعروفة - التأخير الإضافي، العبء التشغيلي للطابور - تستمر كأطفال غير مرغوب فيهم للخيار المختار، معترف بها من قبل صانع القرار. كتابة هذه العواقب هو ما يجعلها قرارًا بدلاً من تفضيل. نقطة تفتيش: ≥1 عاقبة مقبولة مسجلة.
  2. 2قم بالتصدير إذا كانت منظمتك تتطلب ADRs متعقبة في المستودع. العديد منها يتطلب ذلك، بشكل صحيح — يبقى ADR بتنسيق markdown بجوار الكود هو الأثر التوافقي. اكتب ملخص الأقسام الأربعة من الشجرة (خمس دقائق، وليس يوم الجمعة)، واربط النقاش للعودة إلى المناقشة الكاملة. نقطة تفتيش: ADR المستودع يشير إلى الشجرة؛ الشجرة تحتوي على الأسباب.

اختلاف الرأي والالتزام، على السجل

النمط الذي جعلته أمازون مشهورًا — اختلاف الرأي والالتزام — لديه مشكلة في الوضوح: كيف يعرف أي شخص لاحقًا أن الاختلاف كان حقيقيًا، ومسموعًا، ومجابًا عليه، بدلاً من أن يتم تجاهله؟ الجواب يأتي من آلية السلسلة. سلسلة مراجعة مرت بأربعة أدوار كاملة وانتهت بدون اتفاق هي بالضبط الإيصال: تم تقديم الاعتراض، وتم الرد عليه، وتم الضغط عليه، وتم الرد عليه مرة أخرى، مسجلًا، قبل أن يلتزم المعارض. يتم توثيق المعارض على أنه تم سماعه — وهو ما يجعل الالتزام بعد ذلك معقولًا بدلاً من كونه مجرد طاعة.

لا تقرأ الإنجاز على أنه توافق

الانتهاء يعني أن التبادل قد انتهى، وليس أن أي شخص قد غير رأيه. إذا قمت بالإبلاغ عن اكتمال السلسلة كاتفاق، ستقوم بتصنيع توافق زائف وتحرق الثقة التي وُجدت الآلية لبنائها. القراءة الصادقة: تم التشاور، تم الرد، لا يزال معارضًا، ملتزم على أي حال - جميع الحقائق الأربعة مرئية.

الخطوة 10: الاستبدال دون الحذف

عمر القرارات. عندما يتم رفع الحد الأقصى للسرعة الذي أدى إلى إلغاء الخيار المتزامن، فإن الخطوة الصحيحة هي قرار جديد يشير إلى القرار الذي يحل محله — حجة جديدة مرتبطة بعقد ADR-014، توضح ما الذي تغير. يبقى القرار القديم قابلاً للقراءة؛ فسبب وجوده هو بالضبط ما يجعل القرار الجديد يعرف ما الذي يقوم بإلغائه.

فجوة واحدة صادقة يجب إدارتها بشكل صريح: لا يوجد حقل حالة ADR مدمج. مقترح / مقبول / ملغى ليست حالة من الدرجة الأولى في الحجة — يتم نمذجة الإلغاء من خلال الربط، والاتفاقية هي مسؤوليتك للحفاظ عليها. اذكرها في اتفاقية العمل الخاصة بفريقك بدلاً من افتراض أن المنتج يفرضها.

القيود الصادقة

  • هذا لا يحل محل ADRs في مستودعك إذا كانت منظمتك تتطلب أن تكون تحت التحكم في النسخ بجوار الكود. قم بتصدير وتسجيل الملخص؛ استخدم الشجرة للجزء الذي يكون فيه markdown ضعيفًا — النقاش.
  • لا يوجد حقل حالة ADR. الاقتراح/القبول/الإلغاء هو تقليد ربط تحافظ عليه، وليس شيئًا يفرضه المنتج.
  • السلسلة تتكون من أربع لفات. سيتطلب الخلاف المعماري العميق إجراء مكالمة؛ السلسلة هي سجل لما تم تجربته بالفعل من قبل.
  • التقييمات هي قيمة واحدة معلمة، وليست تسجيلات متعددة المعايير موزونة.
  • لا يجعل أي شخص يكتب سياقًا جيدًا. الهيكل يقلل من تكلفة سجل جيد؛ لكنه لا يوفر الحكم.

دروس عملية

  • RFC واحد، نقاش واحد. قاوم الشجرة العملاقة التي تغطي عمارة الربع بأكمله — روابط الاستبدال تربط القرارات بشكل أفضل من التعشيش.
  • زرع مما هو موجود. نص مليء بالقرارات أو مجلد ADR القديم الخاص بك، المستخرج، يمنح النقاش انطلاقة قوية - مع وضع علامة على أنه مستورد، بحيث تظل الحجج الحية قابلة للتمييز.
  • ضع أسماء المراجعين على سلاسلهم واتركهم هناك. النسبة هي المساءلة؛ الاعتراضات المعمارية المجهولة تتحول مع مرور الوقت إلى فولكلور.
  • قسم العواقب هو خاص بالقرار، وليس لأحد آخر. العيوب المقبولة التي كتبها الشخص الذي قبلها تحمل وزنًا مختلفًا عن تحذيرات المراجع.

ADR-014، النسخة التي تجيب

عودة إلى سؤال قائد التقنية الجديد. في النسخة المعاد بناؤها، ADR-014 هو عقدة: قرار الطابور مع مبرراته، ثلاث قوى سياقية (واحدة الآن قديمة - بشكل واضح)، شقيق مرفوض من واجهة برمجة التطبيقات المتزامنة whose fatal con names the old rate limit، أربع سلاسل مراجعة مكتملة بما في ذلك سلسلة المهندس الفني، والمعيار المرفق كدليل. يقرأ قائد التقنية لمدة عشر دقائق، يرى أن حد المعدل قد تغير، ويفتح اقتراحًا جديدًا مرتبطًا بالعقدة القديمة. لا أحد يبحث في Slack. هذه هي الوعد بالكامل: السلاسل تصل إلى الاتفاق، والشجرة تسجل ذلك - والسجل يجيب على أسئلة لم تكن تعرف أنه سيتم طرحها.

المصادر والمزيد من القراءة

الأسئلة المتكررة

ما الفرق بين RFC و ADR؟

RFC (طلب التعليقات) هو عملية الوصول إلى اتفاق: يتم تداول اقتراح، ومناقشة البدائل، ورفع الاعتراضات والرد عليها. ADR (سجل قرار الهندسة المعمارية) يسجل الاتفاق بمجرد الوصول إليه: السياق، الخيارات التي تم النظر فيها، القرار، العواقب، الحالة. وضع الفشل في تشغيلها ككيانات منفصلة هو أن كل شيء بينهما يتسرب - النقاش يعيش في الدردشة وتعليقات PR بينما يتم كتابة السجل لاحقًا من الذاكرة. تشغيل RFC كشجرة جدل منظمة يجعل ADR ينفصل عن النقاش نفسه: لا يتم نسخ أي شيء، لذا لا يتم فقدان أي شيء في النسخ.

لماذا تصبح شهادات الإيداع الأمريكية قديمة أو تتوقف عن الكتابة؟

لأن كتابتها هي وظيفة نسخ. يحدث التفكير الحقيقي في خيوط Slack، وتعليقات المراجعة، والاجتماعات؛ بعد ذلك يقوم شخص واحد بإعادة بناء قسم السياق من الذاكرة، عادةً بشكل مختصر وفي النهاية. تشير ملاحظات التوجيه الخاصة بـ AWS وMicrosoft إلى الألم: تستغرق ADRs وقتًا للكتابة والتحديث، وتصبح الإدارة معقدة مع تزايد القرارات. لا تتوقف الفرق عن الإيمان بـ ADRs — بل تتوقف عن دفع ضريبة النسخ. إن جعل النقاش والسجل نفس الهيكل يزيل الضريبة.

كيف تدير جولة مراجعة RFC مع سجل؟

ثلاث خطوات منظمة، كل منها حوار مكون من أربع دورات مع مؤلف الخيار. سلاسل الأسئلة والأجوبة للتوضيح: سؤال، جواب، متابعة، جواب. سلاسل المراجعة للاعتراضات: تقييم، رد، متابعة، رد — مع وجود N مراجعين يفتحون N سلاسل متوازية على نفس الخيار بدلاً من خيط مشترك واحد، بحيث تبقى كل اعتراضات قابلة للتعقب ومُجابة. سلاسل التسوية للانقسامات: يقترح جانب واحد الموقف الوسيط للجانب الآخر، وسواء تم حلها أم لا، تسجل السلسلة المكتملة أنه تم المحاولة. نقطة التحقق قبل اتخاذ القرار: لا يحمل أي خيار سؤالاً غير مُجاب، وكل اعتراض جوهري موجود كسلسلة مكتملة.

كيف تعمل "اختلاف الرأي والالتزام" مع سجلات القرار؟

تجعل آلية السلسلة النص قابلاً للقراءة. سلسلة مراجعة تمر بمسارها الكامل — الاعتراض، الرد، المتابعة، الرد — وتكتمل دون اتفاق هي الإيصال الذي يدل على أن الاعتراض كان حقيقياً، مسموعاً ومجاباً قبل أن يلتزم المعترض. من المهم أن الاكتمال لا يعني الاتفاق: بل يعني أن التبادل انتهى. الإبلاغ عن الاكتمال كإجماع يصنع اتفاقاً زائفاً ويدمر قيمة الآلية. تُظهر السجلات الصادقة أربع حقائق في آن واحد: تم التشاور، تم الرد، لا يزال معارضاً، ملتزم على أي حال — وهو ما يجعل الالتزام بعد الخلاف معقولاً تماماً.

هل يجب أن تحل سجلات القرار محل ADRs في مستودع الشيفرة؟

لا — وهذا الدليل يقول ذلك بوضوح. إذا كانت منظمتك تتطلب وجود ADRs تحت السيطرة على النسخ بجانب الكود (الكثير منها يفعل ذلك، بشكل صحيح، من أجل الامتثال والوصول غير المتصل)، احتفظ بها: اكتب ملخص الماركداون المكون من أربعة أقسام من الشجرة في خمس دقائق واربطه بالنقاش. تقسيم العمل واضح: ADR في المستودع هو الأثر الدائم للامتثال؛ الشجرة تحتوي على ما هو سيء في الماركداون — النقاش الحي، الخيارات المرفوضة مع مبرراتها، الاعتراضات وإجاباتها، والتقييمات.

كيف يمكنك وضع علامة على ADR كبديل؟

بالممارسة، وليس من خلال مجال — ومن الجدير أن نكون صادقين بأنه لا يوجد حالة مقترحة/مقبولة/ملغاة مدمجة على حجة. نمذجة الإلغاء من خلال إنشاء القرار الجديد كحجة خاصة به مرتبطة بتلك التي يحل محلها، مع بيان ما تغير (حد معدل الزيادة، المتطلبات الجديدة). تبقى الحجة القديمة قابلة للقراءة — حذفها سيدمر بالضبط المنطق الذي يحتاجه القرار الجديد للإشارة إليه. اذكر الاتفاقية في اتفاقية العمل الخاصة بفريقك حتى يتم الحفاظ عليها بشكل متعمد.

توقف عن تسجيل القرارات. ابدأ في الاحتفاظ بها.

قم بتشغيل طلب الموافقة التالي كهيكل شجري: خيارات مع مبرراتها، واعتراضات كسلاسل مجابة، وقرار تصميم معماري يكتب نفسه.

ابدأ تجربة مجانية لمدة 14 يومًا
لا حاجة لبطاقة ائتمان

مقالات ذات صلة