بناء تطبيق قابل للتوسع على Azure
تمت كتابة هذه المدونة بمساعدة ChatGPT-4o.
جدول المحتويات
- مقدمة
- البدء مع اشتراك Azure
- نشر التطبيقات باستخدام خدمة Azure Kubernetes (AKS)
- جلب السجلات من الـ Pods
- المراقبة والتشخيص باستخدام Azure Application Insights
- استخدام الآلات الافتراضية (VMs) في Azure
- استيعاب البيانات في الوقت الفعلي باستخدام Azure Event Hubs
- إدارة واجهات برمجة التطبيقات (APIs) باستخدام خدمات إدارة واجهات برمجة التطبيقات في Azure
- استخدام قواعد بيانات Azure SQL
- استعلام السجلات باستخدام لغة الاستعلام Kusto (KQL)
- إعداد التنبيهات للمراقبة الاستباقية
- الخاتمة
مقدمة
في عالم الحوسبة السحابية، يبرز Microsoft Azure كمنصة قوية لبناء ونشر وإدارة التطبيقات. في مشروعنا الأخير، استفدنا من عدة خدمات Azure، بما في ذلك اشتراك Azure، وخدمة Azure Kubernetes (AKS)، وApplication Insights، والآلات الافتراضية (VMs)، وEvent Hubs، وخدمات إدارة API، وقواعد بيانات SQL لإنشاء بنية تحتية لتطبيق قابل للتوسع والمراقبة. تدوينة المدونة هذه تشرح نهجنا، والأدوات المستخدمة، وأفضل الممارسات، والخطوات التفصيلية لإدارة المجموعات، وجلب السجلات، واستعلام السجلات.
البدء مع اشتراك Azure
إذا كنت تخطط لاستخدام خدمات Microsoft Azure، فإن الخطوة الأولى هي إنشاء اشتراك Azure. الاشتراك هو وحدة أساسية في Azure تتيح لك الوصول إلى الخدمات السحابية وإدارتها. في هذا الدليل، سنتعرف على كيفية إنشاء اشتراك Azure وكيفية البدء في استخدامه.
1. إنشاء حساب Microsoft
إذا لم يكن لديك حساب Microsoft بالفعل، ستحتاج إلى إنشاء واحد. يمكنك القيام بذلك من خلال زيارة موقع Microsoft وإنشاء حساب جديد.
2. التسجيل في Azure
بعد إنشاء حساب Microsoft، يمكنك التسجيل في Azure من خلال زيارة موقع Azure. انقر على “ابدأ مجانًا” واتبع الخطوات لإكمال عملية التسجيل.
3. إنشاء اشتراك Azure
بعد التسجيل، يمكنك إنشاء اشتراك Azure. الاشتراك هو المكان الذي ستقوم فيه بإدارة مواردك وخدماتك. يمكنك إنشاء اشتراك من خلال:
- تسجيل الدخول إلى بوابة Azure.
- الانتقال إلى “الاشتراكات” من القائمة الجانبية.
- النقر على “إضافة” لإنشاء اشتراك جديد.
- اختيار نوع الاشتراك الذي يناسب احتياجاتك (مثل الاشتراك المجاني أو الاشتراك المدفوع).
4. إدارة مواردك
بعد إنشاء الاشتراك، يمكنك البدء في إنشاء وإدارة الموارد مثل الأجهزة الافتراضية، قواعد البيانات، وخدمات التخزين. يمكنك القيام بذلك من خلال بوابة Azure أو باستخدام أدوات مثل Azure CLI أو PowerShell.
5. مراقبة التكاليف
من المهم مراقبة تكاليف استخدامك لخدمات Azure لتجنب الفواتير غير المتوقعة. يمكنك استخدام أداة “إدارة التكاليف + الفوترة” في بوابة Azure لمراقبة إنفاقك.
6. الاستفادة من الموارد التعليمية
توفر Microsoft العديد من الموارد التعليمية لمساعدتك على فهم واستخدام Azure بشكل أفضل. يمكنك زيارة مركز تعلم Azure للوصول إلى الدورات التدريبية والوثائق.
باتباع هذه الخطوات، ستكون جاهزًا للبدء في استخدام Azure والاستفادة من الخدمات السحابية التي يوفرها. إذا كانت لديك أي أسئلة أو تحتاج إلى مساعدة، يمكنك دائمًا الرجوع إلى وثائق Azure أو طلب الدعم من Microsoft.
الاشتراك في Azure هو بوابتك للوصول إلى خدمات Azure. يعمل كحاوية تحتوي على جميع مواردك، مثل الأجهزة الافتراضية، قواعد البيانات، ومجموعات Kubernetes.
- إعداد اشتراك Azure:
- التسجيل: إذا لم يكن لديك حساب Azure، ابدأ بالتسجيل في بوابة Azure.
- إنشاء اشتراك: انتقل إلى قسم “الاشتراكات” وقم بإنشاء اشتراك جديد. سيكون هذا الحاوية الخاصة بالفواتير والإدارة.
- تنظيم الموارد:
- مجموعات الموارد: نظم مواردك في مجموعات بناءً على دورة حياتها ومعايير إدارتها.
- العلامات (Tags): استخدم العلامات لإضافة بيانات وصفية إضافية ولتسهيل إدارة الموارد والفواتير.
نشر التطبيقات باستخدام خدمة Azure Kubernetes (AKS)
Azure Kubernetes Service (AKS) هو خدمة Kubernetes مُدارة تُسهل عملية نشر وإدارة وتوسيع تطبيقات الحاويات.
إنشاء وإدارة مجموعة AKS
Azure Kubernetes Service (AKS) هو خدمة مُدارة تُسهل نشر وإدارة تطبيقات الحاويات باستخدام Kubernetes على Azure. في هذا القسم، سنتعرف على كيفية إنشاء وإدارة مجموعة AKS.
الخطوات الأساسية لإنشاء مجموعة AKS
- تسجيل الدخول إلى Azure CLI:
تأكد من أنك قمت بتسجيل الدخول إلى حساب Azure الخاص بك باستخدام Azure CLI. يمكنك استخدام الأمر التالي:
az login
- إنشاء مجموعة موارد:
قبل إنشاء مجموعة AKS، يجب إنشاء مجموعة موارد لتضمينها. يمكنك استخدام الأمر التالي:
az group create --name myResourceGroup --location eastus
- إنشاء مجموعة AKS:
الآن، يمكنك إنشاء مجموعة AKS باستخدام الأمر التالي:
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 3 --enable-addons monitoring --generate-ssh-keys
--resource-group
: اسم مجموعة الموارد التي أنشأتها.--name
: اسم مجموعة AKS.--node-count
: عدد العقد (Nodes) التي تريدها في المجموعة.--enable-addons monitoring
: تفعيل مراقبة الحاويات.--generate-ssh-keys
: إنشاء مفاتيح SSH تلقائيًا.
- توصيل مجموعة AKS:
بعد إنشاء المجموعة، يمكنك الاتصال بها باستخدام
kubectl
، أداة سطر الأوامر لإدارة Kubernetes. قم بتثبيتkubectl
إذا لم يكن مثبتًا:az aks install-cli
ثم قم بتكوين
kubectl
للاتصال بمجموعة AKS:az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
- التحقق من الاتصال:
يمكنك التحقق من أن
kubectl
متصل بشكل صحيح بمجموعة AKS عن طريق عرض العقد:kubectl get nodes
إدارة مجموعة AKS
بعد إنشاء مجموعة AKS، يمكنك إدارتها باستخدام Azure CLI أو Azure Portal. فيما يلي بعض الأوامر الشائعة:
- توسيع أو تقليص عدد العقد:
az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 5
- تحديث مجموعة AKS:
az aks upgrade --resource-group myResourceGroup --name myAKSCluster --kubernetes-version 1.20.7
- حذف مجموعة AKS:
az aks delete --resource-group myResourceGroup --name myAKSCluster
الخلاصة
إنشاء وإدارة مجموعة AKS على Azure عملية مباشرة باستخدام Azure CLI. يمكنك بسهولة نشر تطبيقات الحاويات وإدارتها باستخدام Kubernetes، مع الاستفادة من الميزات المُدارة التي توفرها Azure.
- إنشاء مجموعة AKS في بوابة Azure:
- الإعداد: في بوابة Azure، ابحث عن AKS وأنشئ مجموعة Kubernetes جديدة.
- التكوين: اختر حجم المجموعة، وقم بتكوين مجموعات العقد (node pools)، وإعداد الشبكات.
- المصادقة: استخدم Azure Active Directory (AAD) للتحكم الآمن في الوصول.
- المراقبة: قم بتمكين المراقبة وتسجيل الأحداث أثناء عملية الإعداد.
- إنشاء مجموعة AKS باستخدام Azure CLI:
az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 3 \ --enable-addons monitoring \ --generate-ssh-keys
- إدارة مجموعة AKS الخاصة بك:
- توسيع نطاق المجموعة:
az aks scale \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 5
- ترقية المجموعة:
az aks upgrade \ --resource-group myResourceGroup \ --name myAKSCluster \ --kubernetes-version 1.21.2
- توسيع نطاق المجموعة:
نشر التطبيقات
عندما يتعلق الأمر بنشر التطبيقات، هناك العديد من الأدوات والمنصات التي يمكن استخدامها لضمان وصول التطبيق إلى المستخدمين النهائيين بشكل سلس وفعال. سواء كنت تعمل على تطبيق ويب أو تطبيق جوال، فإن عملية النشر تتطلب خطوات محددة لضمان نجاح العملية.
1. اختيار المنصة المناسبة
- Heroku: منصة سحابية تدعم العديد من لغات البرمجة وتوفر واجهة سهلة الاستخدام لنشر التطبيقات.
- AWS (Amazon Web Services): توفر مجموعة واسعة من الخدمات السحابية لنشر التطبيقات وإدارتها.
- Netlify: مثالية لتطبيقات الويب الثابتة، توفر نشرًا سريعًا وسهلًا.
2. تهيئة البيئة
- تأكد من أن جميع التبعيات والمكتبات المطلوبة مثبتة بشكل صحيح.
- قم بإعداد ملفات التكوين مثل
package.json
أوrequirements.txt
لتحديد الإصدارات المطلوبة.
3. بناء التطبيق
- استخدم أدوات مثل
webpack
أوgradle
لبناء التطبيق وتحضيره للنشر. - تأكد من أن جميع الاختبارات قد تمت بنجاح قبل المتابعة.
4. النشر
- استخدم أوامر مثل
git push
أو أدوات النشر المدمجة في المنصة التي اخترتها. - تأكد من أن جميع الملفات الضرورية قد تم تحميلها بشكل صحيح.
5. المراقبة والصيانة
- بعد النشر، قم بمراقبة أداء التطبيق باستخدام أدوات مثل
New Relic
أوGoogle Analytics
. - قم بتحديث التطبيق بانتظام لإصلاح الأخطاء وإضافة ميزات جديدة.
# مثال على نشر تطبيق باستخدام Heroku
git push heroku main
باتباع هذه الخطوات، يمكنك ضمان نشر تطبيقك بشكل ناجح وفعال، مما يضمن تجربة مستخدم ممتازة.
- استخدام Kubernetes Manifests: اكتب ملفات YAML لنشراتك، خدماتك، وكائنات Kubernetes الأخرى.
apiVersion: apps/v1 kind: Deployment metadata: name: myapp spec: replicas: 2 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: myapp image: myregistry.azurecr.io/myapp:latest ports: - containerPort: 80
- النشر باستخدام
kubectl
:kubectl apply -f myapp-deployment.yaml
- Helm Charts: استخدم Helm لإدارة تطبيقات Kubernetes والتحكم في الإصدارات.
helm install myapp ./mychart
جلب السجلات من الـ Pods
- التصاق بـ Pod وجلب السجلات:
kubectl logs <pod-name>
- لبث السجلات بشكل مستمر:
kubectl logs <pod-name> -f
- لبث السجلات بشكل مستمر:
- استخدام Sidecar لتسجيل السجلات:
- قم بإنشاء حاوية Sidecar لتسجيل السجلات في مواصفات الـ Pod لإرسال السجلات إلى خدمة تسجيل مركزية.
spec:
containers:
- name: myapp
image: myregistry.azurecr.io/myapp:latest
...
- name: log-shipper
image: log-shipper:latest
...
المراقبة والتشخيص باستخدام Azure Application Insights
يوفر Application Insights إمكانيات قوية لمراقبة وتشخيص التطبيقات الخاصة بك.
- إعداد Application Insights:
- التكامل: قم بإضافة SDK الخاص بـ Application Insights إلى كود التطبيق الخاص بك.
- مفتاح الأدوات: قم بتكوين التطبيق الخاص بك باستخدام مفتاح الأدوات من مورد Application Insights الخاص بك.
- تتبع الأداء:
- المقاييس: مراقبة أوقات الاستجابة، معدلات الفشل، وتبعيات التطبيق.
- بث المقاييس الحي: عرض مقاييس الأداء في الوقت الفعلي للحصول على رؤى فورية.
- التشخيص وحل المشكلات:
- خريطة التطبيق: تصور التبعيات وتحديد الاختناقات في الأداء.
- تشخيص المعاملات: استخدم التتبع الموزع لتتبع الطلبات عبر الخدمات.
الاستفادة من Azure Virtual Machines (VMs)
توفر Azure VMs المرونة لتشغيل التطبيقات والخدمات المخصصة التي لا يتم حزمها في حاويات.
- توفير الأجهزة الافتراضية (Virtual Machines):
- إنشاء الأجهزة الافتراضية: في بوابة Azure، أنشئ أجهزة افتراضية جديدة واختر الحجم ونظام التشغيل المناسبين.
- تكوين الشبكة: قم بإعداد الشبكات الافتراضية، والشبكات الفرعية، ومجموعات الأمان للتحكم في حركة المرور.
- تكوين الأجهزة الافتراضية (VMs):
- تثبيت البرمجيات: قم بتثبيت البرمجيات المطلوبة والتبعيات.
- الأمان: قم بتطبيق التحديثات والتصحيحات بانتظام، وتهيئة الجدران النارية، واستخدام مجموعات أمان الشبكة (NSGs).
- إدارة الأجهزة الافتراضية (VMs):
- النسخ الاحتياطي والاستعادة: استخدم Azure Backup لإنشاء نسخ احتياطية للأجهزة الافتراضية.
- المراقبة: راقب أداء الأجهزة الافتراضية باستخدام Azure Monitor.
استيعاب البيانات في الوقت الفعلي باستخدام Azure Event Hubs
Azure Event Hubs هي منصة لتدفق البيانات الضخمة وخدمة لاستيعاب الأحداث، قادرة على استقبال ومعالجة ملايين الأحداث في الثانية الواحدة.
- إعداد Event Hubs:
- إنشاء مساحة أسماء Event Hub: في بوابة Azure، أنشئ مساحة أسماء Event Hub لاستضافة Event Hubs الخاصة بك.
- إنشاء Event Hubs: داخل مساحة الأسماء، أنشئ واحدًا أو أكثر من Event Hubs لالتقاط تدفقات البيانات الخاصة بك.
- استيعاب البيانات:
- المنتجون (Producers): قم بتكوين تطبيقك أو خدماتك لإرسال الأحداث إلى Event Hubs باستخدام SDKs المتاحة للعديد من اللغات (مثل .NET، Java، Python).
- الأقسام (Partitions): استخدم الأقسام لتحجيم معالجة الأحداث، مما يضمن معدل نقل عالي والتوازي.
- معالجة الأحداث:
- المستهلكون: استخدم مجموعات المستهلكين لقراءة ومعالجة الأحداث. يوفر Azure عدة خيارات للمعالجة، بما في ذلك Azure Stream Analytics، وAzure Functions، والمعالجة المخصصة باستخدام Event Hubs SDK.
- مراقبة Event Hubs:
- المقاييس: قم بمراقبة معدل الإنتاجية، زمن الوصول، ومقاييس معالجة الأحداث من خلال بوابة Azure.
- التنبيهات: قم بإعداد تنبيهات لإعلامك بأي مشكلات، مثل ارتفاع زمن الوصول أو فقدان الرسائل.
إدارة واجهات برمجة التطبيقات باستخدام خدمات إدارة واجهات برمجة التطبيقات من Azure
تقدم خدمات إدارة واجهات برمجة التطبيقات (API Management Services) من Azure طريقة لإنشاء بوابات API متسقة وحديثة للخدمات الخلفية الحالية.
- إعداد إدارة API:
- إنشاء خدمة إدارة API: في بوابة Azure، ابحث عن “API Management” وقم بإنشاء خدمة جديدة.
- تكوين APIs: قم بتعريف واستيراد APIs من مواصفات OpenAPI، أو Azure Functions، أو خلفيات أخرى.
- تأمين واجهات برمجة التطبيقات (APIs):
- المصادقة والتفويض: استخدم OAuth2، التحقق من JWT، وآليات أخرى لتأمين واجهات برمجة التطبيقات الخاصة بك.
- تحديد معدل الطلبات والحد منها: قم بتنفيذ سياسات لحماية واجهات برمجة التطبيقات من الإساءة.
- المراقبة والتحليلات:
- رؤى API: تتبع الاستخدام، راقب الأداء، وقم بتحليل السجلات.
- بوابة المطورين: وفر بوابة للمطورين لاكتشاف واستخدام واجهات برمجة التطبيقات (APIs) الخاصة بك.
- إدارة دورة الحياة:
- إدارة الإصدارات والمراجعات: قم بإدارة الإصدارات والمراجعات المختلفة لواجهات برمجة التطبيقات (APIs) بسلاسة.
- إدارة السياسات: تطبيق السياسات لتحويل، التحقق من الصحة، وتوجيه الطلبات.
والردود.
الاستفادة من قواعد بيانات Azure SQL
Azure SQL Database هي قاعدة بيانات علائقية مُدارة بالكامل مع ذكاء مدمج، واتاحة عالية، وقابلية للتوسع.
- إعداد قاعدة بيانات Azure SQL:
- إنشاء قاعدة بيانات SQL: في بوابة Azure، انتقل إلى قواعد بيانات SQL وقم بإنشاء قاعدة بيانات جديدة.
- تكوين قاعدة البيانات: قم بتعيين حجم قاعدة البيانات، مستوى الأداء، وتكوين إعدادات الشبكة.
- الاتصال بقاعدة بيانات SQL:
- سلاسل الاتصال: استخدم سلاسل الاتصال المقدمة لتوصيل تطبيقك بقاعدة بيانات SQL.
- قواعد الجدار الناري: قم بتكوين قواعد الجدار الناري للسماح بالوصول من تطبيقك أو من الجهاز المحلي.
- إدارة قاعدة البيانات:
- النسخ الاحتياطي والاستعادة: استخدم النسخ الاحتياطي التلقائي واستعادة النقطة الزمنية لحماية بياناتك.
- التوسع: قم بتوسيع أو تقليص قاعدة البيانات بناءً على احتياجاتك من الأداء.
- المراقبة وضبط الأداء:
- رؤى أداء الاستعلامات: مراقبة وتحسين أداء الاستعلامات.
- الضبط التلقائي: تمكين ميزات الضبط التلقائي لتحسين الأداء.
استعلام السجلات باستخدام لغة الاستعلام Kusto (KQL)
تُستخدم لغة الاستعلام Kusto (KQL) لاستعلام سجلات Azure Monitor، مما يوفر رؤى قوية حول بيانات السجلات الخاصة بك.
- استعلام KQL الأساسي:
// استرجاع السجلات من جدول محدد LogTableName | where TimeGenerated > ago(1h) | project TimeGenerated, Level, Message
- تصفية البيانات وتجميعها:
LogTableName | where TimeGenerated > ago(1h) and Level == "Error" | summarize Count=count() by bin(TimeGenerated, 5m)
- الانضمام إلى الجداول:
Table1 | join kind=inner (Table2) on $left.UserId == $right.UserId | project Table1.TimeGenerated, Table1.Message, Table2.AdditionalInfo
- إنشاء تنبيهات بناءً على الاستعلامات:
- في بوابة Azure، انتقل إلى مساحة عمل Log Analytics.
- انقر على
Logs
وأدخل استعلام KQL الخاص بك. - انقر على
New alert rule
لإنشاء تنبيه بناءً على نتائج الاستعلام.
إعداد التنبيهات للمراقبة الاستباقية
تنبيهات Azure تساعدك على البقاء على اطلاع حول صحة وأداء مواردك.
- إنشاء التنبيهات:
- تنبيهات المقاييس: قم بإعداد تنبيهات بناءً على مقاييس مثل استخدام وحدة المعالجة المركزية (CPU)، واستخدام الذاكرة، وأوقات الاستجابة.
- تنبيهات السجلات: أنشئ تنبيهات بناءً على استعلامات البحث في السجلات باستخدام لغة الاستعلام KQL.
- تكوين الإجراءات:
- مجموعات الإجراءات: قم بتعريف مجموعات الإجراءات لتحديد من يتم إشعاره وكيفية ذلك (بريد إلكتروني، رسالة نصية، webhook).
- التكامل: قم بالتكامل مع أدوات ITSM مثل ServiceNow لإدارة الحوادث تلقائيًا.
- الاستجابة للتنبيهات:
- لوحات التحكم: قم بإعداد لوحات تحكم Azure لتوفير عرض مركزي للتنبيهات.
- الأتمتة: استخدم Azure Automation للاستجابة تلقائيًا لبعض التنبيهات.
الخلاصة
من خلال الاستفادة من خدمات Azure Subscription وAKS وApplication Insights وVirtual Machines وEvent Hubs وAPI Management Services وSQL Databases، قمنا ببناء بنية تحتية لتطبيقات قابلة للتوسع وقوية ومراقبة. وفرت مجموعة Azure الشاملة من الأدوات القدرة على نشر وإدارة ومراقبة تطبيقاتنا بكفاءة. لم تؤدِ هذه الإعدادات إلى تحسين أداء التطبيقات فحسب، بل وفرت لنا أيضًا الرؤى اللازمة للحفاظ على مواردنا وتحسينها بشكل استباقي.