المعمارية هي القرارات التي لا يمكن التراجع عنها بتكلفة زهيدة
الأطر تأتي وتذهب؛ أما البنية فهي ما يبقى. تقوم ممارستنا المعمارية على حدود قائمة على النطاق، وقرارات موثقة كتابةً، وأنظمة مصممة للتطور — لأن المعمارية الخاطئة الوحيدة هي التي لا تستطيع التغيّر.
الفلسفة
أربعة التزامات خلف كل نظام
قبل رسم أي مخطط، تكون هذه الالتزامات سارية بالفعل. إنها الفرق بين معمارية تُصوَّر جيدًا وأخرى تشيخ بكرامة.
حدود قائمة على النطاق
تتبع حدود الخدمات والوحدات نطاق العمل — السجلات والأحداث والمراقبة والتكامل — لا الهيكل التنظيمي للشهر. الحدود التي تطابق طريقة تفكير العمل تبقى ثابتة بينما تُعاد الفرق حولها.
متآلف وحداتي أولًا
نبدأ بمتآلف وحداتي جيد التقسيم ولا نستخرج الخدمات إلا حين يفرضه الحجم أو هيكل الفرق — والفاصل مهيَّأ مسبقًا. الخدمات المصغرة حلٌّ لمشكلة تنظيمية، لا وسام شرف.
كل قرار يحصل على سجل قرار
سجلات القرار المعماري — الممارسة التي أدخلها مايكل نايغارد — توثق كل اختيار جوهري بسياقه وعواقبه. المهندس الجديد يقرأ سجلاتنا فيرث عشر سنوات من الخبرة في ظهيرة واحدة.
مصمَّمة للتطور
عقود مرقَّمة، وترحيلات متوازية التشغيل، واستبدال تدريجي على طريقة «التين الخانق». لا نراهن المنصة أبدًا على إعادة كتابة شاملة — التطور ميزة نهندسها عمدًا.
بنية النظام
معمارية مرجعية واحدة، أربع منصات
كل منصة من فيدوشاواي تتبع الشكل الطبقي نفسه. تتغير الأسماء؛ لكن الانضباط التعاقدي لا يتغير: كل طبقة تتحدث مع جيرانها فقط، وكل قفزة موثَّقة الهوية والصلاحيات ومتتبَّعة.
طبقة التجربة
تطبيقات ويب مُصيَّرة على الخادم وعملاء هاتف أصليون — ثنائيو اللغة، RTL أولًا، WCAG 2.2 AA، يُصيَّرون قرب المستخدم.
طبقة البوابات والواجهات
عقود مُنمَّطة ومرقَّمة عند الباب: gRPC داخليًا وOpenAPI 3.1 خارجيًا. حدود المعدل والحصص وmTLS تُفرض هنا — لا مبعثرة في أنحاء الشيفرة.
طبقة خدمات النطاق
منطق الأعمال في خدمات محاذية للنطاق بملكية صريحة. معالجات عزلية، وتدفقات عمل على طريقة الساغا، والأحداث هي السجل الرسمي بين السياقات.
طبقة البيانات والسلامة
PostgreSQL محرك الحقيقة الافتراضي، وسجلات إلحاقية حيث يجب أن يكون التاريخ قابلًا للإثبات، ومخازن مشتقة للمسارات كثيفة القراءة — تُسوَّى باستمرار.
طبقة المنصة والتشغيل
Kubernetes وبنية تحتية كشيفرة وإطلاق تدريجي ورصد مدمج منذ الميلاد — الطبقة التي تجعل الأربع فوقها قابلة للتشغيل بشريًا.
قرارات موثقة
سجلات قرار حقيقية، مختصرة للويب
هذه سجلات قرار معماري فعلية من منصتنا، مختصرة قليلًا. في المستودعات تحمل أرقامًا وتواريخ وخيوط مراجعة وحالة — مقبول أو مستبدل أو معكوس عن قصد.
PostgreSQL سجل الحقيقة الافتراضي
Context —ظلت كل خدمة جديدة تجادل حول تخزينها الخاص. احتجنا خيارًا افتراضيًا بأقل خصائص الندم وأعمق خبرة تشغيلية لدى الفريق.
Decision —PostgreSQL ما لم يوجد استثناء مكتوب مدعوم بسجل قرار. أي خيار غير تقليدي عليه إثبات لماذا تفشل الانضباطية العلائقية في عبء العمل المحدد.
نقل الحالة عبر الأحداث بين السياقات
Context —كانت القراءات العابرة للسياقات تربط الخدمات زمن الاستعلام؛ ومستهلك بطيء واحد قادر على تعطيل تدفق كامل.
Decision —تنشر السياقات أحداثًا تحمل الحالة كاملة؛ ويحتفظ المستهلكون بإسقاطات محلية. انتقل الارتباط من زمن التشغيل إلى المخطط، حيث يستطيع التكامل المستمر مراقبته.
أعلام الميزات تحرس كل إصدار
Context —كانت فروع الإطلاق طويلة العمر تنتج ديون تكامل وتراجعات ليل الجمعة.
Decision —كل التغييرات تُدمج في الجذع خاملة، وتُطلق معطَّلة، وتستيقظ تدريجيًا حسب البيئة والشريحة والنسبة — بفصل النشر عن الإطلاق.
سجل إلحاقي لـ Ledger
Context —تطلبت القابلية للتدقيق أن يكون التاريخ المالي غير قابل للتعديل إثباتًا — لا UPDATE ولا DELETE ولا ثقة في الانضباط وحده.
Decision —سجلات إلحاقية بسلاسل تجزئة وإثباتات ميركل؛ التصحيحات قيود تعويضية جديدة، لا إعادة كتابة. يتحقق المدققون دون أن يسألونا.
خصائص الجودة
الأرقام التي يجب أن تدافع عنها المعمارية
ليست أرقامًا تسويقية — بل أهداف مستوى خدمة بميزانيات خطأ، تُراجع أسبوعيًا، وكل تغيير معماري يُقيَّم كتابةً مقابلها.
التوفر، المسارات الحرجة المواجهة للعملاء
ميزانية الخطأ السنوية لكل هدف — تُنفَق علنًا
زمن استجابة الواجهات البرمجية، خادميًا، لكل إقليم
هدف فقدان البيانات في سجلات الحقيقة
هدف التعافي عند فقدان إقليم كامل
المقايضات الموثقة
حيث اخترنا الملل — ولماذا انتصر
المعمارية الجيدة فنُّ دفع الثمن مقابل المشكلات التي تريدها. هذه مقايضات أجريناها بوعي — ولكل منها سجل قرار كامل خلفها.
البنية —متآلف وحداتي قبل الخدمات المصغرة
التوزيع ضريبة تدفعها من زمن الاستجابة وتصحيح الأخطاء والسطح التشغيلي. لا ندفعها إلا حين تفرضها اقتصاديات الفريق والحجم فعلًا.
الاتساق —اتساق قوي للسجلات، نهائي للعرض
الأرصدة والسجلات تحصل على معاملات قابلة للتسلسل؛ ولوحات المعلومات والإسقاطات تتقبل بقاءً يُقاس بالثواني. قاعدة واحدة لكل صنف بيانات، مكتوبة.
التكامل —عقود مُنمَّطة بدل REST والأمل
العقود المترجمة إلى التكامل المستمر تحوّل انجراف التكامل إلى بناء أحمر على مكاتب كاتبه — لا حادث عند العميل.
البناء مقابل الشراء —اشترِ الأنابيب، وابنِ النطاق
وسطاء الرسائل وقواعد البيانات سلع بمنظومات عميقة؛ أما أرضيتنا التنافسية فمنطق السجلات والأحداث وسير العمل. ننفق الهندسة حيث تتراكم قيمتها.