3. مقدمة إلى الجزء 3: الأنظمة
العمارة هي مجموعة القرارات المكلفة العكس. كيف تقسّم نظامًا إلى أجزاء؟ كيف تتحدث تلك الأجزاء مع بعضها؟ كيف تُنمذَج البيانات؟ وكيف يتصرف الشيء بأكمله تحت الحمل وتحت الفشل؟ الجزء 3 عن اتخاذ تلك القرارات عمدًا. في فريق صغير، يمكن أن تعيش العمارة في رؤوس قليلة وتتطور أثناء العمل. في مؤسسة كبيرة (مئات المهندسين، عشرات الفرق، أنظمة ستعيش أطول من مسيرات من يبنونها)، تصبح العمارة الشيء الذي يبقي الجميع منسقين. عندما تكون واضحة، تتحرك الفرق باستقلالية دون تصادم. عندما تكون غامضة، يتحول كل اعتماد بين الفرق إلى مفاوضة، وتتحول كل حادثة إلى مشروع أثري.
المخاطر الأعلى في المؤسسات والحكومة. محرك ضرائب، أو منصة إعانات، أو سجل صحي وطني، أو دفتر أستاذ بنك أساسي طويل العمر، ومنظم بشدة، ومشترك عبر الإدارات، ومسؤول أمام العامة. القرارات التي تتخذها اليوم بشأن الاقتران، وملكية البيانات، وخصائص الجودة ستقيد ما هو ممكن لعقد أو أكثر. يتوقع المنظمون والمدققون بشكل متزايد عمارة موثقة ومدافعًا عنها، بدليل حقيقي على أن الموثوقية والأمان والخصوصية والديمومة صُمِّمت داخلًا، لا أُلصِقت لاحقًا. الإخفاقات التي تصنع العناوين الرئيسية إخفاقات معمارية: بوابات تنهار يوم الإطلاق، وأنظمة تقديم تنتهي مهلتها عند الموعد النهائي، وترحيلات تفقد أو تضاعف السجلات.
يبدأ هذا الجزء بالأساسيات الدائمة، يمر عبر خيارات هيكلية ملموسة، ثم إلى حقائق التوزيع والبيانات والنطاق، وينتهي بأصعب مشكلة تواجهها معظم المؤسسات الكبيرة فعليًا: تحديث الأنظمة التي تشغّلها بالفعل. الخيط الذي يربطه معًا: العمارة الجيدة سلسلة من المفاضلات الواعية، لا افتراضًا رائجًا.
الفصول في هذا الجزء
3.1 أساسيات العمارة. الأدوات الدائمة التي تنجو من موضة التقنية: خصائص الجودة (“القابليات”)، والمتطلبات ذات الأهمية المعمارية، ودوال اللياقة (اختبارات آلية تحرس خاصية معمارية مختارة) والعمارة التطورية، والتوثيق الخفيف بـنموذج C4 (مخططات عمارة متداخلة على أربعة مستويات تكبير) وarc42 (قالب توثيق عمارة)، وتحليل مفاضلات مُهيكَل.
3.2 الأنماط والأساليب المعمارية. مسح لأشكال الأنظمة الرئيسية، من الأحادية إلى الخدمات المصغرة، والعمارات الموجهة بالأحداث بـCQRS (فصل مسؤولية الأمر عن الاستعلام، الذي يفصل نماذج القراءة عن نماذج الكتابة) ومصدرية الأحداث (تخزين الحالة كسجل أحداث للإلحاق فقط)، وشبكة الخدمة (طبقة بنية تحتية مخصصة للتواصل بين الخدمات) والبوابات، والحوسبة بلا خادم، والعمارة السداسية والنظيفة، مع إرشاد حول متى يناسب كل منها، مؤطرًا بـقانون كونواي (تميل الأنظمة إلى عكس بنية التواصل في المؤسسة التي تبنيها).
3.3 الأنظمة الموزعة. الحقائق الصعبة التي تظهر لحظة عبورك حد شبكة (شبكات غير موثوقة، فشل جزئي، لا ساعة مشتركة)، والدفاعات المعيارية: استدلال الاتساق، والاتّسام بعدم التأثر بالتكرار (جعل عملية آمنة للتكرار)، وإعادة المحاولة بالتراجع، وقواطع الدائرة (التي توقف استدعاء تبعية فاشلة)، والسَّاغات (تسلسلات معاملات محلية بخطوات تراجع تعويضية)، والمراقبة الموزعة.
3.4 عمارة البيانات والتخزين. كيف تُنمذَج البيانات وتُخزَّن وتُبقى متسقة وتُقدَّم بسرعة على نطاق واسع: نماذج التخزين الرئيسية ومتى تُستخدَم كل واحد، والثبات متعدد اللغات (استخدام مخازن بيانات متخصصة عدة في نظام واحد)، وتطور المخطط والترحيل، والتخزين المؤقت وشبكات توصيل المحتوى (CDNs)، والمعاملات والتزامن تحت الحمل.
3.5 قابلية التوسع والأداء والمرونة. ثلاث خصائص متمايزة تُصمَّم داخلًا لا تُعدَّل لاحقًا: التوسع الأفقي والعمودي، وانعدام الحالة والتجزئة (تقسيم البيانات عبر آلات وفق مفتاح)، وموازنة الحمل والتوسع الذاتي، وميزانيات الأداء، وأنماط المرونة وهندسة الفوضى، والتعافي من الكوارث متعدد المناطق مؤطرًا بـRTO (هدف زمن التعافي) وRPO (هدف نقطة التعافي).
3.6 تحديث الأنظمة القديمة. الأنماط التدريجية التي تنجح فعليًا، التين الخانق (تنمية نظام جديد حول القديم حتى يمكن تقاعد القديم) والتفرع بالتجريد (استبدال مكون خلف واجهة على خط التطوير الرئيسي)، بالإضافة إلى تقييم مخاطر الأنظمة القديمة، وإشراف الحواسيب الكبرى وكوبول (لغة موجهة نحو الأعمال المشتركة)، وترحيل البيانات والتشغيل المزدوج، وكيفية مقاومة إغراء إعادة الكتابة الكبرى التي تنتج أغلى إخفاقات المجال.
3.7 صيانة البرمجيات. المرحلة المهيمنة من عمر البرمجية: الصيانة التصحيحية والتكيفية والتحسينية والوقائية، وفهم البرنامج وإعادة هندسته، والتصميم من أجل قابلية الصيانة بحيث تبقى الأنظمة طويلة العمر ميسورة التكلفة للتغيير.
3.8 التشغيل البيني والمعايير المفتوحة. تصميم أنظمة للتشغيل البيني عبر معايير مفتوحة بدل تكاملات مخصصة: التشغيل البيني التقني والنحوي والدلالي، ومعايير المجال مثل FHIR في الرعاية الصحية، وتكلفة الارتهان الملكي.
3.9 هندسة الأنظمة. هندسة أنظمة معقدة من طرف إلى طرف، غالبًا تجمع البرمجيات والعتاد والناس والعمليات: دورة الحياة، وتخصيص المتطلبات وقابلية التتبع، والواجهات، والتكامل، والتحقق والتحقق من الصحة.
3.10 الأنظمة المدمجة وأنظمة الوقت الحقيقي. برمجيات للأجهزة تحت قيود صارمة: السلوك والحتمية في الوقت الحقيقي، وRTOS أو البرمجيات الثابتة المجردة، والذاكرة والطاقة المحدودتان، والتفاعل مع العتاد، ومعايير حرجة للسلامة.
3.11 عمارة السحابة. التصميم للسحابة بدل نقل مركز بيانات ونسخه، ونماذج الخدمة والحوسبة بلا خادم، والمناطق ومناطق التوافر كنطاقات فشل، ونموذج المسؤولية المشتركة، ومفاضلات الخدمة المُدارة والارتهان، والسحابة المتعددة والهجينة عندما تكسب تعقيدها، والتصميم الواعي بالتكلفة وحسن العمارة.
3.12 العمارة الموجهة بالأحداث والمراسلة. بناء أنظمة تتواصل بإنتاج الأحداث والتفاعل معها: الطوابير مقابل التدفقات الدائمة، والتوليف الحر مقابل التنسيق، ومصدرية الأحداث وCQRS حيث تكسبان مكانتهما، والسَّاغات للمعاملات الموزعة، وضمانات التسليم والاتّسام بعدم التأثر بالتكرار، والأنماط التي تبقي التدفقات غير المتزامنة موثوقة.
3.13 الشبكات والاتصال. الشبكات التي يتعامل معها مهندس تطبيق فعليًا: DNS، وTCP وتطور HTTP، وإنهاء TLS، وموازنة الحمل والوكلاء العكسيون، وتوصيل المحتوى والحافة، واكتشاف الخدمة وشبكة الخدمة، والمهلات وإعادات المحاولة وقواطع الدائرة التي تجعل عدم موثوقية الشبكة قابلة للنجاة.
3.14 تعدد المستأجرين وعمارة SaaS. خدمة عملاء كثيرين من نسخة برمجية واحدة دون السماح لهم برؤية بعضهم أو تجويع بعضهم: طيف العزل مقابل الكفاءة، وتقسيم البيانات، والحصص لكل مستأجر ضد الجيران المزعجين، ودورة حياة المستأجر، ونسبة التكلفة.
3.15 التخزين المؤقت وتوصيل المحتوى. مبادلة قدر من التقادم بمكاسب كبيرة في زمن الاستجابة والحمل والتكلفة عبر تسلسل الذاكرة المخبأة (العميل، الحافة وCDN، الوكيل العكسي، التطبيق، ومخزن البيانات)، مع معاملة إبطال الذاكرة المخبأة والحماية من الاندفاع كتصميم من الدرجة الأولى.
3.16 بوابات واجهة البرمجة وشبكة الخدمة. معالجة حركة المرور شمال-جنوب عند بوابة واجهة برمجة (التوجيه، المصادقة، تحديد المعدل، التركيب) وحركة المرور شرق-غرب عبر شبكة خدمة (TLS المتبادل، تحويل الحركة، إعادات المحاولة، المراقبة)، وتقرير متى تكسب الشبكة تعقيدها.
3.17 البحث واسترجاع المعلومات. معاملة البحث كنظام من الدرجة الأولى، من الفهرس المقلوب وترتيب الصلة إلى فهم الاستعلام، والتصنيف الوجهي، والاسترجاع المتّجه والمختلط، بتقييم صلة حقيقي بدل التخمين.
كيف ترتبط هذه الفصول ببعضها
تبني الفصول على بعضها بالترتيب. يمنحك الفصل 3.1 المفردات (خصائص الجودة وتحليل المفاضلات) التي يستخدمها كل فصل لاحق؛ “القابليات” التي يسميها هي تحديدًا ما يجسده الفصلان 3.4 و3.5. يحوّل الفصل 3.2 تلك الأساسيات إلى خيارات هيكلية، والأنماط الأكثر توزيعًا التي يؤيدها (الخدمات المصغرة، الموجه بالأحداث، شبكة الخدمة) تجلب التكاليف التي يعلّمك الفصل 3.3 إدارتها. تعتمد الفصول 3.3 و3.4 و3.5 بشدة على بعضها: يفرض التوزيع قرارات الاتساق والديمومة لعمارة البيانات، ويشكّل التوزيع والبيانات معًا ما تستطيع بلوغه فعليًا من قابلية توسع ومرونة. يُغلِق الفصل 3.6 الحلقة، لأن معظم المؤسسات الكبيرة لا تبني على صفحة فارغة: إنها تطوّر أنظمة سجل قائمة تقيد كل خيار تصفه الفصول السابقة.
يمتد الجزء 3 أيضًا للخارج. يستند الفصل 3.2 إلى مبادئ التصميم والتصميم الموجه بالمجال من الفصل 2.2 لإيجاد حدود خدمة جيدة. الانضباطات التشغيلية التي تبقي هذه الأنظمة عاملة تعيش في الجزء 9: هندسة موثوقية الموقع (الفصل 9.1) والمراقبة (الفصل 9.2) هما حيث تُثبَت المرونة المعمارية في الإنتاج. تُصمَّم خصائص الأمان والخصوصية التي يطلبها المنظمون هنا لكن تُفصَّل في الجزء 4، وتحدد ممارسات المنصة والتسليم في الجزء 8 ما إذا كانت عمارة قابلة للشحن والتشغيل فعليًا من قِبل فرق كثيرة في آن.