MAISON CODE .
/ Tech · AWS · DevOps · Terraform · Infrastructure · Cloud

البنية التحتية لـ AWS: ما وراء وحدة التحكم

يعد النقر فوق "إطلاق المثيل" بمثابة دين فني. دليل شامل للبنية التحتية كرمز (Terraform)، وشبكات VPC، وتجنب مفاجأة بوابة NAT بقيمة 20,000 دولار.

AB
Alex B.
البنية التحتية لـ AWS: ما وراء وحدة التحكم

هناك مرحلة في حياة كل شركة ناشئة تسمى “ClickOps”. قمت بتسجيل الدخول إلى وحدة تحكم AWS. قمت بالبحث عن EC2. قمت بالنقر فوق “إطلاق مثيل”. سمها ما شئت “الخادم القديم، لا تلمس”. إنها تعمل. إنه يشعر بالإنتاجية. وبعد عامين، تعطل هذا الخادم. المهندس الذي بناها غادر. لا أحد يعرف إصدار نظام التشغيل الذي كان يعمل به. لا أحد يعرف مجموعات الأمان التي كانت مفتوحة. لا أحد يعرف مكان مفاتيح SSH. العمل غير متصل.

في Maison Code Paris، نطبق قاعدة صارمة: البنية التحتية هي الكود. إذا لم يكن موجودًا في Terraform (أو Pulumi/CDK)، فهو غير موجود. يعد هذا الدليل بمثابة تعمق في إنشاء بنية تحتية لـ AWS على مستوى الإنتاج تتسم بالمرونة والأمان ولا تؤدي إلى إفلاسك.

لماذا تتحدث Maison Code عن هذا

في Maison Code Paris، نعمل كضمير معمari لعملائنا. غالبًا ما نرث حزمًا “حديثة” تم بناؤها دون فهم أساسي للحجم.

نناقش هذا الموضوع لأنه يمثل نقطة تحول حاسمة في النضج الهندسي. التنفيذ الصحيح يميز MVP الهش عن منصة مؤسسية مرنة يمكنها التعامل مع حركة مرور الجمعة السوداء.

لماذا يناقش Maison Code البنية التحتية

نحن ندير البنية التحتية للعلامات التجارية التي لا يمكن أن تفشل. عندما يبدأ العميل تعاونًا مع نجم عالمي، ترتفع حركة المرور بمقدار 100 مرة خلال 60 ثانية. إذا لم يتم تسخين موازن التحميل، وإذا كانت قاعدة البيانات غير قابلة للتوسع، فسيتعطل الموقع. نحن نصمم المرونة. نحن نستخدم AWS ليس “كمضيف خادم” ولكن “كأداة مساعدة قابلة للبرمجة”. نحن نساعد مديري التكنولوجيا على الانتقال من “خوادم الحيوانات الأليفة” الهشة إلى “أساطيل الماشية” المرنة.

1. الفلسفة الأساسية: البنية التحتية كرمز (IaC)

لماذا نكتب البنية التحتية بلغة HCL (لغة تكوين HashiCorp)؟

  1. قابلية التكرار: يمكنك تشغيل بيئة “التدريج” التي تمثل نسخة دقيقة من “الإنتاج” في 10 دقائق.
  2. قابلية التدقيق: يخبرك gitlem بالتحديد بمن قام بفتح المنفذ 22 للجمهور ومتى.
  3. التعافي من الكوارث: في حالة تعطل us-east-1، يمكنك تغيير متغير واحد region = "eu-west-1" وإعادة النشر.

مكدس Terraform

نحن لا ندير الدولة محليا. نستخدم واجهة خلفية بعيدة (S3 + DynamoDB للقفل).

# main.tf
تضاريس {
  الواجهة الخلفية "s3" {
    دلو = "maisoncode-terraform-state"
    مفتاح = "همز/infrastructure.tfstate"
    المنطقة = "شرق الولايات المتحدة-1"
    dynamodb_table = "أقفال التضاريس"
    تشفير = صحيح
  }
}

مزود "أوس" {
  المنطقة = "شرق الولايات المتحدة-1"
  العلامات الافتراضية {
    العلامات = {
      البيئة = "الإنتاج"
      المشروع = "التجارة الإلكترونية"
      ManagedBy = "Terraform"
    }
  }
}

2. الشبكات: فخ VPC

أكبر خطأ يرتكبه المطورون هو استخدام “VPC الافتراضي”. يضع VPC الافتراضي كل شيء في الشبكات الفرعية العامة. تحتوي قاعدة البيانات الخاصة بك على IP عام. هذا متهور. نحن نصمم شبكات ثلاثية المستويات.

الرسم البياني TD
    المستخدم -->|HTTPS| ALB [موازن تحميل التطبيق]
    رسم بياني فرعي VPC
        الرسم البياني الفرعي للشبكة الفرعية العامة
            ألب
            نات [بوابة نات]
        نهاية
        رسم بياني فرعي خاص
            التطبيق [خادم التطبيقات / لامدا]
        نهاية
        الرسم البياني الفرعي للشبكة الفرعية لقاعدة البيانات
            RDS[بوستجرس RDS]
        نهاية
    نهاية
    التطبيق -->|SQL| رديز
    التطبيق -->|الصادر| نات

الطبقة 1: الشبكة الفرعية العامة

  • يحتوي على: موازنات التحميل (ALB)، وبوابات NAT، ومضيفي Bastion.
  • التوجيه: يحتوي على بوابة إنترنت (IGW). 0.0.0.0/0 -> إيغو.

المستوى 2: شبكة فرعية خاصة (طبقة التطبيق)

  • يحتوي على: مثيلات EC2، وحاويات Fargate، وLambda ENIs.
  • التوجيه: لا توجد بوابة إنترنت. 0.0.0.0/0 -> بوابة NAT (للتحديثات الصادرة).
  • الأمان: لا يمكن الوصول إليه من الإنترنت مباشرة.

المستوى 3: الشبكة الفرعية الداخلية (طبقة البيانات)

  • يحتوي على: RDS، ElastiCache، Redshift.
  • التوجيه: لا يوجد اتصال بالإنترنت على الإطلاق. لا نات.
  • السلامة: عزلة تامة.

3. مفاجأة بوابة NAT بقيمة 20 ألف دولار

يعد تسعير النطاق الترددي AWS مفترسًا. بوابة NAT تتقاضى رسومًا مقابل كل ساعة + لكل جيجابايت تتم معالجتها. إذا قام تطبيقك بتنزيل 10 تيرابايت من الصور من S3، وكانت حركة مرور S3 القياسية تمر عبر بوابة NAT، فستدفع ما يقرب من 450 دولارًا. الإصلاح: نقاط نهاية بوابة S3. هذا عبارة عن “ثقب دودي” افتراضي من VPC إلى S3 يتجاوز NAT. إنه مجاني.

المورد "aws_vpc_endpoint" "s3" {
  vpc_id = aws_vpc.main.id
  اسم الخدمة = "com.amazonaws.us-east-1.s3"
}

قم دائمًا بتوفير نقاط نهاية البوابة لـ S3 وDynamoDB.

4. الحساب: EC2 vs Fargate vs Lambda

ما هو المحرك الحسابي الذي يناسب التجارة الإلكترونية الفاخرة؟

EC2 (الأجهزة الافتراضية)

  • حالة الاستخدام: التطبيقات القديمة، والخدمات ذات الحالة (WebSockets)، وقواعد البيانات (إذا كانت مستضافة ذاتيًا).
  • ** حكم قانون المنزل **: تجنب. الكثير من الصيانة (تصحيح نظام التشغيل).

ECS Fargate (حاويات بدون خادم)

  • حالة الاستخدام: تطبيقات Node.js/Docker طويلة التشغيل.
  • الإيجابيات: لا يوجد تصحيح لنظام التشغيل. يمكنك تحديد “وحدة المعالجة المركزية: 2، ذاكرة الوصول العشوائي: 4 جيجابايت”. تديره AWS.
  • حكم كود الدار: الاختيار القياسي لخوادم Next.js التي ترسل HTML.

لامدا (الوظائف)

  • حالة الاستخدام: المهام المستندة إلى الأحداث (تغيير حجم الصورة، معالجة الطلب).
  • الإيجابيات: مقياس إلى الصفر.
  • حكم قانون المنزل: ممتاز لـ “الرمز الغراء” والعاملين في الخلفية.

5. قاعدة البيانات: RDS Aurora Serverless v2

يتطلب RDS التقليدي منك اختيار حجم المثيل (db.m5.large). إذا ارتفعت حركة المرور، فسوف تتعطل. إذا انخفضت حركة المرور، فإنك تدفع مبالغ زائدة. يعمل Aurora Serverless v2 على قياس سعة الحوسبة لأعلى ولأسفل محليًا في ملي ثانية. إنها المطابقة المثالية لنموذج “Flash Sale” للقطرات الفاخرة.

المورد "aws_rds_cluster" "الافتراضي" {
  Cluster_identifier = "aurora-cluster-demo"
  المحرك = "اورورا-postgresql"
  وضع المحرك = "مخصص"
  بدون خادمv2_scaling_configuration {
    الحد الأدنى للقدرة = 0.5 # 40 دولارًا شهريًا
    max_capacity = 64.0 # حمل ثقيل
  }
}

عندما ينتهي الانخفاض، يعود حجمه إلى 0.5 ACU (وحدات سعة Aurora). أنت تدفع مقابل ما تستخدمه.

6. تسليم المحتوى: CloudFront

لا يمكنك تقديم الأصول من S3 مباشرة إلى المستخدمين. S3 بطيء (وقت البايت الأول). CloudFront إلزامي. إنها شبكة CDN عالمية. التكوين الحرج: سياسات التخزين المؤقت. لا تقم فقط بتخزين كل شيء مؤقتًا.

  • الصور: ذاكرة تخزين مؤقت لمدة عام واحد.
  • استجابات واجهة برمجة التطبيقات: ذاكرة تخزين مؤقت لمدة 0 ثانية (أو 60 ثانية إذا كانت عامة).
  • HTML: ذاكرة تخزين مؤقت لمدة 0 ثانية (يتم عرض جانب الخادم).

الأمان: استخدم OAC (التحكم في الوصول إلى الأصل) لقفل حاوية S3 الخاصة بك حتى يتمكن CloudFront فقط من قراءتها. لا يمكن للمستخدمين تجاوز CDN.

7. الإطار المصمم جيدًا (6 ركائز)

توفر AWS قائمة مرجعية تسمى “إطار العمل المصمم جيدًا”. نحن نقوم بمراجعة كل عميل ضده.

  1. التميز التشغيلي: أتمتة كل شيء. لا توجد تغييرات يدوية.
  2. الأمان: تشفير كل شيء. الامتياز الأقل.
  3. الموثوقية: عمليات النشر لمناطق توافر خدمات متعددة. أنظمة الشفاء الذاتي.
  4. ** كفاءة الأداء **: استخدم Serverless/Spot لتوسيع نطاق المحتوى.
  5. تحسين التكلفة: تحليل الفواتير يوميًا. ضع علامة على كل مورد.
  6. الاستدامة: استخدم معالجات Graviton (ARM). يستخدمون طاقة أقل بنسبة 60٪.

8. التعافي من الكوارث: RTO مقابل RPO

إذا احترق AWS us-east-1، ماذا يحدث؟ يمكنك تحديد مقياسين:

  • RTO (هدف وقت الاسترداد): ما المدة اللازمة للعودة إلى الإنترنت؟ (الهدف: <1 ساعة).
  • RPO (هدف نقطة الاسترداد): ما مقدار البيانات التي يمكن أن نفقدها؟ (الهدف: <5 دقائق). الاستراتيجية:
  • قاعدة البيانات: قراءة النسخ المتماثلة عبر المناطق (الولايات المتحدة -> الاتحاد الأوروبي). الترويج يستغرق 5 دقائق.
  • الملفات: S3 Cross-Region Replication (CRR).
  • الكود: تطبيق Terraform متعدد المناطق.

9. الأمن: مبدأ الامتياز الأقل

IAM (إدارة الوصول إلى الهوية) هو جدار الحماية للبشر. مطلقًا استخدم الحساب الجذر. قفله في آمنة. **لا تمنح مطلقًا حق الوصول إلى المسؤول للمطور.

قم بإنشاء سياسات تفصيلية محددة بدقة للموارد.

{
    "التأثير": "السماح"،
    "الإجراء": ["s3:PutObject"]،
    "المصدر": "arn:aws:s3:::maisoncode-uploads/images/*"
}

يمكن لهذا المستخدم تحميل الصور. لا يمكنهم حذف الدلو. لا يمكنهم قراءة التقارير المالية.

8. تحسين التكلفة: مثيلات Spot

بالنسبة لمعالجة البيانات المجمعة (على سبيل المثال، وظائف تحسين الصور التي يتم تشغيلها ليلاً)، لا تستخدم المثيلات عند الطلب. استخدم مثيلات Spot. إنها سعة AWS احتياطية تُباع بخصم 70-90%. المصيد: يمكن لـ AWS إنهاءها بتحذير لمدة دقيقتين. إذا كان تطبيقك عديم الحالة (مثل عامل قائمة الانتظار)، فهذا لا يهم. فهو يتعامل مع الإنهاء ويعيد التشغيل في مكان آخر. وهذا يوفر آلاف الدولارات شهريًا على الوظائف الخلفية.

9. سير عمل التطوير: البيئات المؤقتة

كيف يمكنك اختبار تغييرات البنية التحتية؟ نحن نستخدم “الزوال”. عند فتح العلاقات العامة في GitHub:

  1. تقوم إجراءات GitHub بتشغيل Terraform.
  2. يقوم بإنشاء مساحة عمل جديدة pr-123.
  3. ينشر مكدسًا كاملاً (VPC + Fargate + RDS).
  4. يجري اختبارات E2E.
  5. يتم تشغيل “تدمير التضاريس”.

وهذا يعطي الثقة الكاملة بأن تغييرات التعليمات البرمجية لن تؤدي إلى تعطيل الإنتاج.

10. الاستنتاج

AWS هو بالمنشار. إنها قوية بما يكفي لقطع غابة، ولكنها خطيرة بما يكفي لقطع ساقك. النقر في وحدة التحكم هو اللعب بالألعاب. كتابة Terraform هي الهندسة. بالنسبة لعام 2026، نحن نتجه نحو “البنية التحتية من التعليمات البرمجية” (باستخدام SST أو Pulumi لاستنتاج الأشعة تحت الحمراء من التعليمات البرمجية)، ولكن أساسيات VPCs وIAM تظل غير قابلة للتغيير.


**[قم بتوظيف مهندسينا](/contact)**.