الدرس 2 من 6

قراءة توثيق السحابة والبنية التحتية ككود

قراءة توثيق السحابة والبنية التحتية ككود

8 دقيقة للقراءة

يمكن أن يبدو توثيق السحابة والبنية التحتية مُرهقاً. لكل مزود هيكله الخاص ومصطلحاته واصطلاحاته. يعلمك هذا الدرس كيف تتنقل في هذا التوثيق بكفاءة.

هيكل توثيق AWS / GCP / Azure

جميع مزودي السحابة الرئيسيين ينظمون توثيقهم بشكل مشابه. فهم هذا الهيكل يوفر لك الوقت:

أقسام التوثيق الشائعة

القسم ما يحتويه متى تقرأه
Getting Started (البداية) أدلة إعداد سريعة ودروس تعليمية عند استخدام خدمة لأول مرة
Concepts (المفاهيم) كيف تعمل الخدمة داخلياً عندما تحتاج لفهم البنية
User Guide (دليل المستخدم) تعليمات خطوة بخطوة للمهام عند تنفيذ مهمة محددة
API Reference (مرجع API) كل استدعاء API مع المعاملات والاستجابات عند كتابة الأتمتة أو IaC
Pricing (التسعير) تفصيل التكلفة حسب نوع المورد عند تقدير تكاليف المشروع
Quotas / Limits (الحصص / الحدود) القيم القصوى للموارد عند التصميم للتوسع
Troubleshooting (استكشاف الأخطاء) الأخطاء الشائعة وحلولها عندما ينكسر شيء ما
FAQ (الأسئلة الشائعة) الأسئلة المتكررة عندما لديك أسئلة سريعة

عبارات مهمة في توثيق السحابة

انتبه لهذه العبارات — تحمل معانٍ محددة:

العبارة ما تعنيه فعلاً
"At no additional charge" (بدون رسوم إضافية) مجاني، لكن فقط إذا كنت تدفع بالفعل للخدمة الأم
"Best effort" (أفضل جهد) لا ضمان — قد تعمل وقد لا تعمل
"Eventually consistent" (متسق في النهاية) البيانات ستتزامن، لكن قد يكون هناك تأخير
"Deprecated" (مُهمَل) لا يزال يعمل الآن، لكن سيُزال — انتقل بعيداً عنه
"Preview / Beta" (معاينة / بيتا) غير جاهز للإنتاج، قد يتغير بدون إشعار
"Generally Available (GA)" (متاح عامة) جاهز للإنتاج، مدعوم بالكامل
"Provisioned" (مُوفَّر) الموارد محجوزة وتدفع سواء استخدمتها أم لا
"On-demand" (عند الطلب) ادفع فقط مقابل ما تستخدمه، بدون التزام مسبق
"Soft limit" (حد مرن) حد افتراضي يمكن زيادته بطلب
"Hard limit" (حد صارم) حد أقصى لا يمكن تغييره

قراءة توثيق Terraform

يتبع توثيق Terraform نمطاً ثابتاً. إليك كيفية قراءته بكفاءة:

هيكل توثيق المورد

كل صفحة مورد Terraform تحتوي هذه الأقسام:

Resource: aws_instance              <-- نوع المورد
├── Example Usage                   <-- نقطة بداية للنسخ واللصق
├── Argument Reference              <-- المدخلات التي يمكنك تكوينها
│   ├── Required                    <-- يجب توفير هذه
│   └── Optional                    <-- يمكن توفير هذه
├── Attribute Reference             <-- المخرجات التي يمكنك قراءتها
└── Import                          <-- كيفية استيراد موارد موجودة

فهم مفردات Terraform

المصطلح المعنى مثال
Resource (المورد) قطعة من البنية التحتية لإدارتها resource "aws_instance" "web" {}
Data source (مصدر البيانات) استعلام للقراءة فقط لبنية تحتية موجودة data "aws_ami" "latest" {}
Provider (المزود) إضافة لسحابة/خدمة محددة provider "aws" { region = "us-east-1" }
Variable (المتغير) معامل إدخال variable "instance_type" {}
Output (المخرج) قيمة مُصدَّرة output "ip" { value = aws_instance.web.public_ip }
State (الحالة) سجل بما يديره Terraform مخزن في terraform.tfstate
Plan (الخطة) معاينة التغييرات terraform plan يعرض ما سيتغير
Apply (التطبيق) تنفيذ التغييرات terraform apply ينشئ/يحدث الموارد
Destroy (التدمير) إزالة جميع الموارد المُدارة terraform destroy يهدم كل شيء

قراءة مرجع المعاملات

عندما ترى هذا في توثيق Terraform:

instance_type - (Required) The instance type to use. See Instance Types. associate_public_ip_address - (Optional, default false) Whether to associate a public IP.

النمط هو: الاسم - (Required/Optional، القيمة الافتراضية) الوصف.

  • (Required) تعني أنه يجب تعيين هذا وإلا سيخطئ Terraform
  • (Optional) تعني أن له قيمة افتراضية إذا تم تخطيه
  • default يخبرك ما يحدث إذا تخطيته

قراءة ملفات Kubernetes YAML التوصيفية

موارد Kubernetes تُعرَّف في ملفات YAML تُسمى manifests (ملفات توصيفية). إليك كيف تقرأها:

هيكل الملف التوصيفي القياسي

apiVersion: apps/v1          # أي إصدار API يُستخدم
kind: Deployment              # نوع المورد
metadata:                     # معلومات التعريف
  name: my-app               #   اسم المورد
  namespace: production       #   فضاء الأسماء الذي ينتمي إليه
  labels:                     #   وسوم مفتاح-قيمة للتنظيم
    app: my-app
spec:                         # الحالة المرغوبة (ما تريده)
  replicas: 3                #   تشغيل 3 نسخ
  selector:                  #   كيفية إيجاد الـ Pods المطابقة
    matchLabels:
      app: my-app
  template:                  #   قالب Pod
    metadata:
      labels:
        app: my-app
    spec:
      containers:            #   تعريفات الحاويات
      - name: my-app
        image: my-app:v1.2.0
        ports:
        - containerPort: 8080
        resources:           #   حدود CPU/الذاكرة
          requests:
            memory: "128Mi"
            cpu: "250m"
          limits:
            memory: "256Mi"
            cpu: "500m"

عبارات مهمة في توثيق Kubernetes

العبارة المعنى
"The controller ensures..." (المتحكم يضمن...) Kubernetes سيحافظ تلقائياً على هذه الحالة
"Desired state vs. current state" (الحالة المرغوبة مقابل الحالة الحالية) ما طلبته مقابل ما هو موجود فعلاً
"Reconciliation loop" (حلقة المطابقة) عملية جعل الحالة الحالية تتطابق مع الحالة المرغوبة
"Evicted" (مُخرَج) تم إزالة الـ Pod قسراً (عادةً بسبب ضغط الموارد)
"Pending" (معلق) الـ Pod ينتظر ليتم جدولته على عقدة
"CrashLoopBackOff" الحاوية تستمر في التعطل وKubernetes ينتظر أطول بين عمليات إعادة التشغيل

قراءة توثيق مخططات Helm

مخططات Helm تتضمن ملف values.yaml الذي يوثق جميع الخيارات القابلة للتكوين:

# values.yaml
replicaCount: 1              # عدد نسخ Pod

image:
  repository: nginx           # صورة Docker المُستخدمة
  tag: "1.25"                 # إصدار الصورة
  pullPolicy: IfNotPresent    # متى تُسحب: Always, IfNotPresent, Never

service:
  type: ClusterIP             # نوع الخدمة: ClusterIP, NodePort, LoadBalancer
  port: 80                    # المنفذ المكشوف

resources:                    # طلبات وحدود الموارد
  limits:
    cpu: 100m
    memory: 128Mi
  requests:
    cpu: 100m
    memory: 128Mi

التعليقات في values.yaml هي التوثيق. اقرأها لفهم ما يمكنك تخصيصه.

قراءة لوحات المراقبة (Grafana / Prometheus / Datadog)

فهم مفردات لوحات المعلومات يساعدك في التواصل حول صحة النظام:

المصطلح ما يُظهره
p50 / p95 / p99 نسب مئوية للكمون — p99 = 99% من الطلبات أسرع من هذا
QPS / RPS الاستعلامات/الطلبات في الثانية — مقدار حركة المرور
Error rate (معدل الأخطاء) نسبة الطلبات التي تفشل
Saturation (التشبع) مدى قرب المورد من السعة (CPU، ذاكرة، قرص)
Time series (سلسلة زمنية) مقياس مرسوم عبر الزمن
Threshold (العتبة) خط يُظهر الحد الذي يُفعِّل التنبيه
Spike (ارتفاع مفاجئ) زيادة مفاجئة في مقياس
Anomaly (شذوذ) قيمة تنحرف عن النمط الطبيعي

قراءة صفحات حالة السحابة

عندما تواجه خدمة سحابية مشاكل، تتحقق من صفحات الحالة (مثل status.aws.amazon.com و status.cloud.google.com). دورة حياة الحادث تتبع هذا النمط عادةً:

  1. Investigating (قيد التحقيق) — "We are investigating reports of elevated errors..."
  2. Identified (تم التحديد) — "We have identified the root cause and are implementing a fix..."
  3. Monitoring (قيد المراقبة) — "A fix has been implemented and we are monitoring..."
  4. Resolved (تم الحل) — "The issue has been resolved..."

قراءة صفحات تسعير السحابة

تستخدم صفحات تسعير السحابة مصطلحات محددة:

المصطلح المعنى
Per-hour / per-second billing (فواتير بالساعة/بالثانية) تدفع مقابل كل ساعة/ثانية يعمل فيها المورد
Data transfer (نقل البيانات) تكلفة نقل البيانات داخل/خارج السحابة
Egress (الخروج) البيانات التي تغادر السحابة (عادةً تكلف مالاً)
Ingress (الدخول) البيانات التي تدخل السحابة (عادةً مجانية)
Reserved (محجوز) ادفع مسبقاً لـ 1-3 سنوات بخصم
Spot / Preemptible (فوري / قابل للإيقاف) خوادم رخيصة يمكن إيقافها بإشعار قصير
Free tier (الطبقة المجانية) استخدام مجاني محدود للحسابات الجديدة

فهم هذا التوثيق مهارة يومية لمهندسي DevOps. كلما قرأت أكثر، أصبحت أسرع.

التالي: شرح البنية التحتية لغير التقنيين

:::

اختبار

اختبار قراءة توثيق السحابة والبنية التحتية ككود

خذ الاختبار