ممارسات DevOps و CI/CD
1) الأهداف والمبادئ
سريع وآمن: دورات قصيرة، دفعات صغيرة من التغييرات، فحوصات تلقائية.
التكرار: البنية التحتية كرمز (IaC)، البيئة = رمز + سياسة.
إمكانية الرصد: المقاييس/المسارات/السجلات خارج الصندوق، SLO كعقد.
الامتثال: مراجعة الحسابات، ومراقبة التغيير، وعزل البيانات الإقليمية.
القاعدة الذهبية: «الجودة الأولى، ثم السرعة - وإلا فلن تظهر السرعة أبدًا».
2) الفروع والبيئات
علامات + قائمة على الجذع - اختيار أساسي.
خطوط قصيرة (≤ 2-5 أيام)، تندمج يوميًا في صندوق السيارة.
أعلام جانب الخادم للتسليم التدريجي والتراجع الآمن.
بيئات Git: 'dev' → 'stage' → 'prod' (+ regional' prod-eu ',' prod-latam').
ترويج القطع الأثرية: يتم الترويج لصورة واحدة مجمعة من خلال وسائل الإعلام (علامة ثابتة عن طريق الهضم).
عندما GitFlow: إصدارات نادرة من التجمعات التنظيمية/SDKs - ثم إطلاق الفروع + «التصلب».
3) هرم الجودة و «الخط الأحمر»
1. التحليل الثابت (SAST، البطانات، التراخيص).
2. وحدة/اختبارات قائمة على الممتلكات (ثوان).
3. اختبارات العقد (CDC) لواجهات برمجة التطبيقات والأحداث (OpenAPI/AsyncAPI، Schema Registry).
4. التكامل (Testcontainers، السماسرة المحليون).
5. E2E المسارات الحرجة: التسجيل → شركة KYC → الإيداع → إطلاق اللعبة → الإنتاج.
6. اختبارات التحميل/الفوضى للمدفوعات/المحفظة/مزودي الألعاب.
لا تمر الجودة → يتم حظر الوديعة. لا توجد «استثناءات يدوية» بدون تغيير السجل.
4) سلسلة التوريد
SBOM لكل صورة/طرد (CycloneDX/SPDX).
توقيعات القطع الأثرية (كوزين)، سياسة «توقيع فقط» في القبول.
SCA/Implobot: نقاط الضعف والتراخيص.
المصدر/SLSA: تجميعات قابلة للتكرار، عامل بناء مغلق، شهادات.
الأسرار: في المدير (KMS/الأسرار الخارجية)، لا يوجد سر واحد في إعادة الشراء/السجلات.
5) GitOps и IaC
Infra as Code: Terraform/Pulumi for Cloud; Helm/Kustomize for k8s.
وحدة تحكم GitOps (ArgoCD/Flux): بيانات إعلانية، مراجعة العلاقات العامة، مسار التدقيق.
النوافذ/التجميد: أسابيع البطولة/ساعات الذروة - التوقف التلقائي لإصدارات الإنتاج.
سياسات OPA/Kyverno: لا «: أحدث»، غير جذري، FS للقراءة فقط، HostPath غير مسموح به.
6) التسليم التدريجي
Canary: 1→5→10→25→50→100٪ على مقاييس guardrail (زمن الوصول p95، 5xx، حرق ميزانية الخطأ).
الأزرق الأخضر: خطة التبديل السريع + التراجع.
Shadow/Mirroring: نسخ الطلبات دون التأثير على الاستجابة (لمحولات PSP الجديدة).
أعلام الميزات: تضمين حسب القطاع (المنطقة/الدور/الشريك/القناة) + مفتاح القتل.
7) هجرات قاعدة البيانات (التوسيع والعقد)
الخطوة 1: توسيع المخطط (أعمدة/فهارس جديدة) - متوافقة مع الرمز القديم.
الخطوة 2: رمز التفريغ الذي يكتب إلى كلا الإصدارين/الحقول.
الخطوة 3: نقل بيانات الوظيفة الأساسية ومقاييس التقدم.
الخطوة 4: تبديل القراءة إلى حقول جديدة.
الخطوة 5: إزالة القديم هو إصدار منفصل.
منع حظر DDL في وقت الذروة ؛ للجداول العالية - الهجرة عبر الإنترنت.
8) إمكانية الرصد و SLO
المقاييس: RPS، p50/95/99، 4xx/5xx، التشبع (CPU/mem/quelue)، تأخر DLQ/الوسيط.
مقاييس الأعمال: TTP (وقت اللعب)، TtW (وقت المحفظة)، نجاح FTD، KYC-TtV.
الآثار: التعرف النصيف من البوابة إلى قاعدة البيانات.
SLO: على سبيل المثال، «Deposit p95 ≤ 300-500 ms'،» success ≥ 98. 5٪ '،' توافر ≥ 99. 9%`.
تنبيهات معدل الحرق + إطلاقات التوقف التلقائي أثناء التحلل.
9) الحوادث، بعد الوفاة، النوبات
دفاتر عن التدفقات الحرجة (الإيداع/الناتج/لجنة التنسيق الإدارية، الألعاب الحية).
مقياس الأولوية: P1...P4، المالك، ETA، الاتصال (لافتة، صفحة الحالة، الشركاء).
تشريح الجثة بدون لوم مع عناصر العمل والتواريخ.
التناوب عند الطلب، تنبيهات الدردشة، تحديثات الحالة كل N دقيقة.
مسار الرصيف: من/متى/ما نشر (ارتكب، قطعة أثرية، بيئة، علم).
10) الأمن والامتثال (DevSecOps)
SAST/DAST/IAST، مسح سري في CI.
mTLS servis↔servis، JWT مع TTL صغير، دوران المفتاح.
إخفاء PII/PAN في سجلات/مسارات ؛ سجلات نشاط إدارة WORM.
الفصل الجغرافي: المجموعات/قواعد البيانات حسب المنطقة، مسار البوابة.
إدارة التغيير: التذكرة/الموافقة على المناطق الحساسة (المحفظة/الحدود).
11) مقاييس DORA و FinOps
تواتر النشر (إصدارات صغيرة يومية).
الوقت المناسب للتغييرات (مثالي: شاهد).
MTTR (استرداد: دقائق/ساعات).
معدل فشل التغيير (الهدف ≤ 15٪).
FinOps: تكلفة البيئات، تخزين RPS، حمامات السباحة الدافئة، التوقف التلقائي للعمال، «التكلفة لكل معاملة».
12) خصوصية iGaming
القمم (البطولات/البث المباشر): تجميد التغييرات الرئيسية، تسخين ذاكرة التخزين المؤقت/الصور، تعزيز الحصص.
المدفوعات/المحفظة: مجمعات/عقد فردية، ومنظمات SLO مرتفعة، وطرح الكناري حسب المنطقة، والقياس عن بعد المزدوج من قبل مقدمي PSP.
CC/الامتثال: إيقاع منفصل للإطلاقات، التحديثات اللاحقة الإلزامية للامتثال.
الشركاء/الشركات التابعة: تأمين SDK ونسخة API مع نافذة دعم ومراقبة العملاء القدامى.
13) مثال CI/CD (YAML، GitHub Actions → ArgoCD)
yaml name: ci-cd on:
push:
branches: [ main ]
paths: [ "services/wallet/" ]
jobs:
build_test_scan:
runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- name: Setup Node uses: actions/setup-node@v4 with: { node-version: 22 }
- run: npm ci --omit=dev working-directory: services/wallet
- run: npm test -- --ci working-directory: services/wallet
- name: Lint & SAST run: npm run lint && npm run sast working-directory: services/wallet
- name: Build image run:
docker build -t registry. local/wallet:${{ github. sha }} -f Dockerfile.
cosign sign --key $COSIGN_KEY registry. local/wallet:${{ github. sha }}
- name: SBOM & Scan run:
syft packages registry. local/wallet:${{ github. sha }} -o cyclonedx-json > sbom. json trivy image --exit-code 1 --severity HIGH,CRITICAL registry. local/wallet:${{ github. sha }}
- name: Push image run: docker push registry. local/wallet:${{ github. sha }}
deploy_stage:
needs: build_test_scan runs-on: ubuntu-latest steps:
- uses: actions/checkout@v4
- name: Bump Helm values (image tag)
run: yq -i '.image. tag = "${{ github. sha }}"' helm/wallet/values-stage. yaml
- name: Create PR to gitops repo run: gh pr create -R org/gitops -B stage -H stage-bump/wallet-${{ github. sha }} -t "wallet:${{ github. sha }}" -b "Promote to stage"
promote_prod:
if: github. ref == 'refs/heads/main'
needs: deploy_stage runs-on: ubuntu-latest steps:
- name: Gate: SLO/quality checks run:./scripts/gates/check_stage_health. sh # p95, 5xx, e2e ok
- name: Canary 10%
run:./scripts/gitops/canary. sh wallet ${{ github. sha }} 10
- name: Auto-pause on degradation run:./scripts/gates/guardrails. sh./scripts/gitops/rollback. sh wallet
- name: Roll to 100%
run:./scripts/gitops/rollout. sh wallet ${{ github. sha }} 100
14) القوائم المرجعية
قبل الاندماج إلى الرئيسي
- الوحدة/مركز السيطرة على الأمراض/التكامل الأخضر.
- الخطوط/SAST/التراخيص نظيفة.
- تحديث مخططات OpenAPI/AsyncAPI وهجرات قاعدة البيانات.
- أعلام Fiche مضافة، follbacks محددة.
قبل الإصدار في الحث
- توقيع الصورة، مرفق SBOM، إغلاق نقاط الضعف HIGH/CRIT.
- إنشاء لوحات معلومات/تنبيهات ؛ بوابات SLO متصلة.
- خطة التراجع، مفتاح القتل، الظل (إذا لزم الأمر).
- تم تأكيد القيود الإقليمية وسياسة البيانات.
الحوادث
- تم العثور على كتاب التشغيل وتحديثه.
- الاتصال بالمستخدمين/الشركاء (نموذج، ETA).
- تشريح الجثة في الساعة 48، بنود العمل مع التواريخ.
15) الأنماط المضادة
«إعادة التجميع لكل بيئة» (لا ترويج للقطع الأثرية).
نشر خطوات يدوية دون مراجعة/تكرار.
هجرات قاعدة البيانات «وجهاً لوجه»، استجابات API غير متوافقة.
أسرار في متغيرات CI أو في المستودع.
ميزات كارثية بدون علم/تراجع.
عدم وجود SLO/حواجز حماية عند إطلاق سراح الكناري.
سجلات مع PII/PAN، بدون قناع.
16) قوالب مجهرية مفيدة
الإفراج (للشركاء):- "نحن نطرح تحديث وحدة الدفع على مراحل (10%→100٪). من الممكن حدوث تأخيرات في التسجيل على المدى القصير تصل إلى 2 دقائق. ETA من الانتهاء - 9 مساءً EET"
- "مزود الدفع X غير مستقر. يمكن أن يستغرق التسجيل ما يصل إلى 15 دقيقة. نحن نعمل على إصلاح. التحديث التالي للحالة في غضون 30 دقيقة"
- "التحديث معلق بسبب التأخيرات المتزايدة. نعيد النسخة السابقة. تم حفظ البيانات والعمليات"
17) عملية التنفيذ (4 سباقات سريعة)
1. معايير الجودة وخط الأنابيب: SAST/Unit/CDC، صورة واحدة، توقيعات، SBOM.
2. بيئات GitOps +: Helm/Kustomize، ArgoCD، ترويج القطع الأثرية، السياسة السرية.
3. الإصدارات التدريجية وبوابات SLO: كناري/ظل، حواجز حماية، مركز تلقائي.
4. الموثوقية والتكلفة: اختبارات الفوضى، أحواض السباحة الذاتية/الدافئة، لوحات تحكم FinOps.
ورقة الغش النهائية
الجذع + الأعلام + الدفعات الصغيرة = سرعة خالية من الإجهاد.
قطعة أثرية موقعة واحدة + SBOM = سلسلة إمداد خاضعة للرقابة.
سياسات GitOps + = قابلية الاستنساخ والتدقيق.
بوابات Canary/Blue-Green + SLO = إصدارات آمنة.
التوسيع والعقد لـ DB = صفر توقف.
إمكانية الرصد و DORA = تحسينات يمكن التحكم فيها.
العزلة والامتثال الإقليميان = الامتثال للقوانين والثقة.