تحكم النسخة التكوين
1) لماذا إصدار التكوينات
التكوين هو سياسة قابلة للتنفيذ: فهو يحدد التوجيه والحدود والأعلام المميزة والوصول ومخططات البيانات. يجعل التحكم في الإصدار التغييرات قابلة للتكرار والملاحظة وقابلة للعكس: يقلل من معدل فشل MTTR والتغيير، ويقضي على «السحر في المبيعات»، ويعطي عمليات تدقيق للأمن والامتثال.
2) تصنيف التكوين
البنية التحتية (IaC): مجموعات، شبكات، LB، DB، قوائم الانتظار.
الخدمة: بارامترات التطبيق، الموارد، الحدود، المهلات، عمليات إعادة التدوير.
منطق المنتج/العمل: التعريفات، تجارب AB، قواعد المحتوى.
Data/DataOps: مخططات العقود، نضارة SLA، التحول.
الأمن: سياسات الوصول والأدوار والمفاتيح/الشهادات (الأسرار نفسها خارج الريبو).
إمكانية الملاحظة: SLI/SLO، التنبيهات، لوحات القيادة.
القاعدة: كل ما يؤثر على سلوك النظام هو تكوين ويجب أن يعيش تحت الإصدار.
3) مبادئ التحديث
1. GitOps: المصدر الوحيد للحقيقة هو المستودع ؛ عن طريق العلاقات العامة وخطوط الأنابيب الآلية.
2. بيان: وصف الحالة المستهدفة، وليس نصوص الخطوات.
3. ثبات القطع الأثرية: التهيئة → لقطة لا لبس فيها.
4. المخططات والتحقق: JSON/YAML-schema، نوع الصب الصارم، الحقول المطلوبة.
5. البيئات مثل الكود: «env» - مجلدات/تراكبات (dev/stage/prod)، الاختلافات ضئيلة وواضحة.
6. الغباء والتراجع: إعادة/التراجع عن أي إصدار تكوين.
7. التدقيق وإمكانية التتبع: المؤلف، السبب، التذكرة/RFC، توقيعات التغيير.
4) استراتيجيات التحديث
SemVer لحزم التهيئة ('MAJOR. قاصر. PATCH '):- MAJOR - تغييرات غير متوافقة في المخطط/السياسة.
- الصغرى - مجالات/قواعد جديدة، التوافق الخلفي.
- PATCH - يصلح القيم دون تغيير المخططات.
- إصدارات العلامة وملاحظات الإصدار: ما الذي تغير، وكيفية التراجع، ونقاط التفتيش.
- ملفات التثبيت/القفل: إصلاح إصدارات التبعية (وحدات، مخططات).
- إصدارات المصفوفة: القطعة الأثرية للتطبيق X متوافقة مع التكوين Y (المصفوفة في كتالوج الخدمة).
5) تنظيم المستودع
config-repo/
policies/ # общие политики (RBAC, SLO, алерты)
services/
checkout/
schema/ # JSON/YAML схемы конфигов base/ # дефолтные значения overlays/
dev/
stage/
prod/
data-contracts/ # схемы данных, SLA свежести releases/ # теги, changelog, артефакты валидации tools/ # линтеры, генераторы, тесты
الفرع: فروع الميزات القصيرة (الرئيسية) القائمة على الجذع. الدمج - عبر العلاقات العامة فقط مع CI الإلزامي.
6) التحقق والاختبار
المخطط: كل تغيير يمر بالتحقق من صحة المخطط (مطلوب، enum، نطاقات).
الخطوط الثابتة: التنسيق والمفاتيح والمكررات والحقول المحظورة.
اختبارات التوافق: ترتفع خدمة التهيئة + إصدار الرسم البياني في الصندوق الرملي.
عمليات الاختبار: تطبيقات التشغيل الجاف، حالة الهدف «ماذا لو».
السياسات كرمز: قواعد القبول (Rego/CEL) - من يمكنه تغيير ماذا.
7) الاسترخاء والتراجع عن التكوينات
التسليم التدريجي: كناري 1%→5%→25٪ مع SLO-gardrails.
نشر البوابة: لا توجد SEV-1 نشطة، التنبيهات خضراء، التوقيعات صالحة، التراجع جاهز.
التراجع: "إعادة علامة vX. YZ 'أو التحول إلى اللقطة السابقة ؛ يتم توثيق أوامر التراجع في دفتر التشغيل.
شروح الإصدار: يتم نشر نسخة التهيئة في مقاييس/سجلات لترتبط بسرعة بالحوادث.
8) التكوين الديناميكي والبعيد
أعلام التهيئة/الميزات عن بعد: بارامترات التغيير بدون إعادة التشغيل ؛ جميع الأعلام موجودة أيضًا تحت GitOps.
الحدود: ما هي المعايير المسموح بتغييرها ديناميكيًا (قائمة القوائم البيضاء).
المخبأ والاتساق: TTL، الإصدارات، استبدال المجموعة الذرية (النشر على مرحلتين).
الدرابزين الآمن: حدود ونطاقات التغييرات في وقت التشغيل، التراجع التلقائي عند مغادرة SLO.
9) الأسرار والبيانات الحساسة
لا تحتفظ بالأسرار في الريبو. في التكوينات - فقط الروابط/العناصر الفرعية.
تشفير ملفات التكوين، إذا لزم الأمر: التكامل مع مدير السر/المفتاح.
التناوب والفريق المتكامل المشترك: تصدر طلبات الدخول طوال مدة العمليات ؛ أثر العمل ثابت.
الإخفاء الميداني: يحظر التحقق من صحة PII/الأسرار من دخول التكوين.
10) إدارة البيئة
تراكبات Base +: الاختلافات بين dev/stage/prod ضئيلة وشفافة.
الترويج على القطع الأثرية: يتم الترويج لنفس اللقطة التي اجتازت المسرح.
النوافذ الزمنية: لا تحدث تغييرات في التشكيلات وقت تغيير الواجب ؛ للمخاطر العالية - RFC ونافذة الصيانة.
11) الكشف عن الانجراف والقضاء عليه
يقارن المراقب الحالة المستهدفة بالحالة الفعلية ويبلغ عن diff.
تنبيهات الانجراف: الصفحة فقط للتناقضات الحرجة ؛ الآخرون هم تذكرة.
العلاج التلقائي: عند الحل - العودة إلى الدولة المستهدفة.
تحريرات دليل مراجعة الحسابات: أي حادثة عملية → «kubectl edit/ssh» و CAPA.
12) كتالوج التكوين والملكية
كتالوج الخدمة: المالك، SLO، السياسات ذات الصلة، المخططات، الإصدارات، التوافق.
RACI: من يقدم، ومن يراجع، ومن يوافق ؛ CAB للمخاطر العالية.
الشفافية: يحتوي كل إدخال على سجل إصدار وروابط إلى العلاقات العامة/التذاكر/AAR.
13) مقاييس النضج
التغطية: النسبة المئوية لخدمات/سياسات GitOps (الهدف ≥ 95 في المائة).
تغييرات إعداد المهلة: متوسط من العلاقات العامة إلى الحث.
معدل فشل التغيير: نسبة إطلاقات التهيئة مع التراجع/الحادث.
معدل الانحراف: عدد الاختلافات/الأسبوع ووقت الإزالة.
وقت التراجع: متوسط استرداد الإصدار السابق.
اكتمال مراجعة الحسابات: نسبة التغييرات التي تتضمن أدلة كاملة (المصدقون، التشغيل الجاف، الاستعراضات).
14) القوائم المرجعية
قبل تغيير التكوين
- هناك تذكرة/RFC ومالك تغيير.
- تم التحقق من صحة المخططات والبطانات.
- هناك خطة التراجع والأوامر في دفتر التشغيل.
- البوابة: اختبارات خضراء، توقيعات صالحة، لا SEV-1 نشطة.
- بالنسبة للمخاطر العالية، يتم تخصيص نافذة صيانة.
أثناء الاسترخاء
- الكناري و SLO-gardrails نشطة.
- يتم نشر شروح الإصدار.
- هناك رسائل صدى للقناة ؛ ضوضاء التنبيه التي قمعتها قواعد MW.
لاحقا
- مرت نافذة المراقبة، SLO أخضر.
- المجاميع والأدلة (قبل/بعد الخرائط، التقارير الجافة) مرفقة بالتذكرة.
- تحديث المخططات/الوثائق حسب الحاجة.
15) قوالب مصغرة
15. 1 مخطط تكوين (مخطط YAML، جزء)
yaml type: object required: [service, timeouts, retries]
properties:
service: { type: string, pattern: "^[a-z0-9-]+$" }
timeouts:
type: object properties:
connect_ms: { type: integer, minimum: 50, maximum: 5000 }
request_ms: { type: integer, minimum: 100, maximum: 20000 }
retries:
type: object properties:
attempts: { type: integer, minimum: 0, maximum: 10 }
backoff_ms: { type: integer, minimum: 0, maximum: 5000 }
15. 2 تكوين أساسي + حث تراكب
yaml services/checkout/base/config.yaml service: checkout timeouts: { connect_ms: 200, request_ms: 1500 }
retries: { attempts: 2, backoff_ms: 200 }
limits: { rps: 500 }
features:
degrade_search: false psp_a_weight: 80 psp_b_weight: 20
yaml services/checkout/overlays/prod/config.yaml limits: { rps: 1200 }
features:
psp_a_weight: 70 psp_b_weight: 30
15. 3 سياسة القبول (فكرة)
yaml allow_change_when:
tests: passed schema_validation: passed active_incidents: none_of [SEV-0, SEV-1]
rollback_plan: present signed_by: ["owner:team-checkout","platform-sre"]
15. 4 بطاقة تحرير التحضير
Release: checkout-config v2.3.1
Scope: prod EU
Changes: psp_b_weight 20→30, request_ms 1500→1300
Risk: Medium (маршрутизация платежей)
Canary: 1%→5%→25% (30/30/30 мин), guardrails: success_ratio, p95
Rollback: tag v2.3.0
16) الأنماط المضادة
التعديلات في حث الماضي GitOps («ملتوي بسرعة»).
أسرار/PII في مستودع التكوين.
عدم وجود مخططات وفحوصات ثابتة.
تباين قوي في البيئات (base≠prod).
تتميز «Live» بأعلام بدون إصدارات وتاريخ.
تجاهل الانجراف والتعديلات اليدوية على الخوادم.
العلامات بدون ملاحظات الإصدار وخطة التراجع.
17) خارطة طريق التنفيذ (4-6 أسابيع)
1. نيد. 1: جرد التشكيلات ؛ فهارس منفصلة، مخططات لأفضل 10 خدمات.
2. نيد. 2: إدراج البطانات/المصادقة والتسيير الجاف في CI ؛ حظر الدمج بدون شيكات خضراء.
3. نيد. 3: لفة GitOps + جزر الكناري ؛ شروح النسخة في القياس عن بعد.
4. نيد. 4 - إدخال أنماط السياسة كرمز والتراجع. تنبيهات للانجراف.
5. نيد. 5-6: تغطية 90 في المائة من الخدمات ؛ تقليل الفروق البيئية إلى تراكبات ؛ إضافة مقاييس النضج والاستعراض الأسبوعي لتغييرات التهيئة.
18) خلاصة القول
التحكم في إصدار التكوين هو نظام وليس فقط Git. الخطط والتحقق، GitOps وسياسات الوصول، وجزر الكناري والتراجع، والكشف عن الانجراف والتدقيق الكامل تحول التكوين إلى قطعة أثرية مدارة. والنتيجة هي تغييرات سريعة وآمنة، وإمكانية التنبؤ بـ SLO وثقة الفريق في كل إصدار.