تيرافورم и البنية التحتية كرمز
(القسم: التكنولوجيا والهياكل الأساسية)
موجز موجز
Terraform هو أداة IaC الأساسية لإنشاء بنية تحتية سحابية iGaming قابلة للتكرار ويمكن التحقق منها: VPC/الشبكات الفرعية، Balancers، قواعد البيانات/المجموعات، قوائم الانتظار/الحافلات، KMS/Secrets، مجموعات Kubernetes، CDN والمراقبة. يعتمد النجاح على بنية معيارية، وسياسات صارمة للحالة والقفل، ونهج GitOps للإصدارات، والسياسة كرمز، والاختبار الآلي، وشفافية FinOps.
1) مبادئ IaC للألعاب
إعلان: البنية التحتية الموصوفة بالمدونة ؛ لا توجد خطوات يدوية.
الخصوصية: «التطبيق» المتكرر يعطي نفس النتيجة.
فصل البيئات: «التطوير/المرحلة/الدفع» عن رمز واحد مع بارامترات.
تكوين الوحدة: فهرس وحيد للوحدات الخاصة بـ VPC، DB، قوائم الانتظار، K8s، الرصد.
الأمن الافتراضي: الشبكات الفرعية الخاصة، mTLS، الحد الأدنى من حقوق IAM.
قابلية الملاحظة والتكلفة: المقاييس/التنبيهات/الميزانيات هي أيضا تحت Terraform.
2) هيكل المستودع
متغير Monorepo (مثال):
iac/
modules/
vpc/
mysql/
kafka/
eks_aks_gke/
redis/
monitoring/
envs/
prod/
eu-west/
main. tf variables. tf backend. tf stage/
eu-west/
...
dev/
...
policies/
opa/
sentinel/
pipelines/
ci_cd/
البديل هو إعادة الشراء المعيارية (مستودع منفصل لكل وحدة) + المستهلكين.
3) النمطية الأساسية (مثال HCL)
VPC module (modules/vpc/main. tf):hcl variable "name" {}
variable "cidr" {}
variable "az_count" { default = 3 }
cloud provider resources (summarized)
resource "cloud_vpc" "this" { name = var. name cidr = var. cidr }
resource "cloud_subnet" "private" {
count = var. az_count vpc_id = cloud_vpc. this. id type = "private"
}
output "vpc_id" { value = cloud_vpc. this. id }
output "private_subnets" { value = cloud_subnet. private[].id }
استهلاك الوحدات (evs/prod/eu-west/main. tf):
hcl module "vpc" {
source = "../../modules/vpc"
name = "prod-eu-west"
cidr = "10. 20. 0. 0/16"
}
module "mysql" {
source = "../../modules/mysql"
name = "payments"
vpc_id = module. vpc. vpc_id subnets = module. vpc. private_subnets pitr = true size = "r6g. large"
kms_key = module. kms. key_id
}
4) إدارة الدولة والأقفال
خلفية عن بعد (على سبيل المثال، تخزين الكائن) + أقفال (DynamoDB/Blob-lock) - منع سباقات «تطبيق».
الإصدار الخلفي وتشفير الحالة (KMS).
قواعد الوصول: لا يتمتع بحقوق "التطبيق" إلا لكل من CI/CD و "infra founders' ؛ المطورين - «خطة».
- أماكن العمل ملائمة لبيئات مماثلة (تكرار)،
- أدلة منفصلة - للتكوينات المعزولة بوضوح والطوبولوجيات المختلفة.
hcl terraform {
backend "s3" {
bucket = "iac-state-prod"
key = "eu-west/terraform. tfstate"
region = "eu-west-1"
dynamodb_table = "iac-state-locks"
encrypt = true
}
}
5) المتغيرات والأسرار والبيانات الحساسة
المتغيرات. tf + .tfvars للبيئات ؛ حساس = ينطبق على القيم الخاصة.
لا يتم تخزين الأسرار في Git. استخدم المدير السري/KMS من خلال مصدر البيانات أو المزود.
التشفير الافتراضي: للمجلدات/النسخ الاحتياطية/اللقطات/قواعد البيانات.
التناوب: يتم تدوير المفاتيح وكلمات المرور تلقائيًا.
hcl variable "db_password" {
type = string sensitive = true
}
data "external_secret" "db_password" {
conceptual secret source name = "prod/payments/db_password"
}
6) GitOps و CI/CD for Terraform
تدفق العلاقات العامة: 'terraform fmt' →' init '→' التحقق من صحة '→' tflint' → 'خطة' مع الناتج إلى PR → يوافق الدليل على → 'تطبيق' من CI.
الترويج للبيئة: التغييرات أولاً في 'المرحلة'، ثم العلامة/الدمج في 'الدفع'.
الجذوع والقطع الأثرية: خطة حفظ وديفا، تقرير القطع الأثرية.
yaml steps:
- run: terraform fmt -check
- run: terraform init -upgrade
- run: terraform validate
- run: tflint --enable-rule=terraform_standard_module_structure
- run: terraform plan -var-file=envs/stage/eu-west/vars. tfvars -out tfplan
- run: terraform show -no-color tfplan > plan. txt after April
- run: terraform apply tfplan
7) السياسة كمدونة (OPA/Sentinel)
الغرض: رفض التغييرات غير الآمنة/المكلفة تلقائيًا.
أمثلة على السياسات:- مطلوب تشفير الموارد.
- IP العام - فقط من خلال قائمة الاستثناء.
- الحد من حجم الحالات/المجموعات حسب البيئة.
- العلامات المطلوبة: «env»، «المالك»، «التكلفة _ المركز».
rego deny[msg] {
input. resource. type == "db_instance"
not input. resource. encrypted msg:= "DB must be encrypted at rest"
}
8) اختبار IaC
terraform التحقق من صحة-Basic syntax check.
tflint - style/antipatterns/provider-privaty.
Infracost - تقدير التكلفة الأولية في العلاقات العامة.
Terratest - اختبارات التكامل (Go): ارفع/تحقق/هدم الحامل.
Kitchen-Terraform - اختبارات الوحدة مع ثوابت الموارد.
اكتشاف الانجراف: «خطة» دورية في تنبيه القراءة فقط وخارج المزامنة.
9) الوحدات النموذجية لمنصة iGaming
شبكة
VPC/VNets/VPC-Peering، الشبكات الفرعية الخاصة/العامة، التوجيه، NAT/Firewall، مجموعات الأمن/NSG.
DNS/Failover: Route- политики، الفحوصات الصحية، التوجيه القائم على زمن الكمون.
البيانات
MySQL/PostgreSQL: Multi-AZ، PITR، «auto _ minor _ version _ ترقية».
Redis/Memcached: سياسات Multi-AZ، لقطة/TTL.
Data Lake/Lakehouse: bulets, policies, tables (catalog/metastor).
مجموعات ClickHouse/OLAP: التقشير/التكرار، سياسات القرص.
حافلات/طوابير
Kafka/Pulsar/المتغيرات المدارة، ACL، الاحتفاظ، مخططات التسجيل.
K8s
EKS/AKS/GKE с NodeGroups، taints/tolerations، IRSA/Workload Identity، Ingress/Service Mesh، autoscaling.
تكامل الأسرار الخارجية، Prometheus/Grafana، Loki/ELK، مدير شهادة.
Edge/CDN
توزيع CDN، قواعد التخزين المؤقت، WAF، التخفيف من الروبوتات.
10) المتغيرات/النواتج/السكان المحليون - الممارسة
السكان المحليون للقيم المحسوبة (الأقنعة والأسماء).
كواجهة برمجة التطبيقات: الحد الأدنى المطلوب.
تسمية الموارد "<env> - <region> - <domain> - <component>.
Тэги: 'env', 'owner', 'cost _ center', 'criticality', 'pii'.
hcl locals {
name_prefix = "${var. env}-${var. region}-${var. service}"
}
resource "cloud_lb" "api" { name = "${locals. name_prefix}-lb" }
11) السحابة المتعددة والمناطق
التجريد من خلال نفس الوحدات، مقدمو خدمات مختلفون: «aws'،» azurerm'، «google».
اسم مزود للموارد عبر الإقليمية (DR/replication).
يتم إغلاق فروق الخدمة حسب الظروف والفيشيفلاج في الوحدات.
البيانات موضعية: دلاء فردية/DB حسب المنطقة (EU/TR/LATAM).
hcl provider "aws" { region = "eu-west-1" alias = "eu" }
provider "aws" { region = "sa-east-1" alias = "latam" }
12) قابلية الملاحظة والتنبيهات كرمز
لوحات القيادة، قواعد التنبيه (p95/p99، معدل الخطأ، وحدة المعالجة المركزية/IO)، شاشات SLO.
سجلات الوصول/التدقيق (WORM)، مقاييس التكلفة (حسب العلامة/مساحة الاسم).
الحوادث: إخطارات الدردشة، وكتب تشغيل عناوين URL في شروح الموارد.
13) FinOps: القيمة تحت السيطرة
Infracost في تنبيهات الميزانية PR +.
حصص البيئة: الحد من فئات الحالات/المستودعات.
النظافة الذاتية: TTL لموارد التطوير وسياسات الاحتفاظ بالدلو/السجل.
بقعة/قابلة للإفراغ للمهام غير الحرجة، حجز لـ Prod.
14) عمليات الهجرة/التغيير
«الاستيراد الفعلي» للموارد القانونية (مباشرة بعد - «الخطة »/« التطبيق»).
كتل «محمولة »/« مزالة» عند إعادة تشكيلها لتجنب التدمير.
التغييرات الصفرية: التدحرج المزدوج (الأزرق والأخضر) للخطوط الحرجة (DB/balancers).
العلاقات العامة خطوة بخطوة: مجموعة موارد جديدة أولاً، ثم حركة المرور، ثم التفكيك.
15) السلامة والامتثال
أقل امتياز: الوحدات تنشئ الحقوق اللازمة فقط، ولا تستخدم "
KMS في كل مكان: تشفير المجلدات/النسخ الاحتياطية/الأسرار/الحالات.
Terraform/IaC scan in CI (SAST for IaC).
Secrets Outside Git: Secret Managers Only; مراجعة حسابات التناوب والوصول.
مناطق المبادرة: علامات/سياسات الوصول، حظر التصدير الأقاليمي.
16) نماذج العينة
قاعدة بيانات علائقية مع PITR (فكرة):hcl module "db" {
source = "../../modules/mysql"
name = "wallet"
multi_az = true storage_gb = 500 pitr = true backup_retention_days = 14 deletion_protection = true
}
الرصد وتنبيه SLO:
hcl module "slo_latency" {
source = "../../modules/monitoring/slo"
name = "api-latency-p95"
target_ms = 250 window = "30m"
alert_channels = ["chatops#incidents"]
}
توزيع WAF/CDN:
hcl module "cdn" {
source = "../../modules/cdn"
domain = "example. com"
waf_enabled = true cache_ttl = 600
}
17) Terraform/IaC Implementation List
1. حدد هيكل المستودع (وحدة مونوريبوس + أدلة البيئة).
2. قم بتهيئة الحالة البعيدة بالأقفال والتشفير (KMS).
3. أدخل خط أنابيب GitOps: fmt/validate/tflint/plan → review → تطبيق.
4. إنشاء مكتبة وحدة (VPC، K8s، DB، قوائم الانتظار، الرصد، CDN، الأسرار).
5. Enable Policy-as-Code (OPA/Sentinel) and IaC scrates in the CI.
6. تنظيم الأسرار من خلال المدير، المفاتيح - KMS، التناوب.
7. إضافة الاختبارات: Terratest للوحدات الحرجة، Infracost in PR.
8. تعريف SLO/التنبيهات و «الرصد كرمز».
9. تحديد حصص/ميزانيات و TTL للموارد غير الحيوية.
10. التخطيط للهجرات على مراحل (الأزرق والأخضر/السكك الحديدية).
18) أنتيباترن
يدوي «رقاقات الثلج» للموارد خارج Terraform → الانجراف والحوادث عند «التطبيق».
تخزين دولة محليًا/بدون أقفال → السباق وفقدان الاتساق.
أسرار في Git/in' .tfvars' بدون تشفير.
«وحدة الله» لمئات الموارد → عدم القدرة على الاختبار/إعادة الاستخدام.
«تطبيق» مباشر من الكمبيوتر المحمول إلى الطعام دون مراجعة العلاقات العامة والخطة.
تجاهل Policy-as-Code/المسح → التسريبات، IP/الدلاء العامة.
عدم وجود Infracost/الميزانيات → تكلفة لا يمكن التنبؤ بها.
موجز
يمنح Terraform/IaC منصة iGaming قابلية التكاثر والسرعة والسلامة/التكلفة التي يتم التحكم فيها. يحول التصميم المعياري والحالة الصارمة و GitOps والسياسات الأمنية والاختبارات الذاتية و FinOps البنية التحتية إلى «خط أنابيب» موثوق به - إصدارات سريعة دون توقف، p99 يمكن التنبؤ به والاستعداد لبطولات الذروة والمتطلبات التنظيمية.