مقدمة إلى AWS Serverless Application Model
AWS Serverless Application Model (SAM) عبارة عن إطار عمل مفتوح المصدر مصمم لتبسيط تطوير وإدارة ونشر التطبيقات بدون خادم على سحابة AWS. يوسع AWS CloudFormation لتوفير طريقة مبسطة لتحديد الموارد التي لا تحتاج إلى خوادم ، مثل وظائف AWS Lambda و Amazon API Gateway APIs وجداول Amazon DynamoDB التي يتطلبها تطبيقك بدون خادم. يتضمن AWS SAM مواصفات نموذج بتنسيق YAML أو JSON لتحديد الموارد وتمكين إنشاء الموارد بدون خادم وتوصيلها تلقائيًا.
باستخدام AWS SAM ، يمكن للمطورين تسريع عملية تطوير التطبيقات بدون خادم والتركيز أكثر على كتابة منطق التطبيق. بالإضافة إلى ذلك ، يتكامل AWS SAM بسلاسة مع خدمات AWS الأخرى وأدوات المطورين ، مما يسهل على الفرق تطوير تطبيقات بدون خادم في بيئة متسقة. كما يسمح للمطورين باختبار التطبيقات بدون خادم وتصحيحها ونشرها محليًا أو عن بُعد.
الميزات الرئيسية لـ AWS SAM
تأتي AWS SAM مع مجموعة من الميزات القوية التي تجعل تطوير التطبيقات بدون خادم أكثر كفاءة وخالية من المتاعب:
- تكوين النشر الفردي: تعمل AWS SAM على تبسيط النشر بدون خادم من خلال السماح للمطورين بتحديد تطبيقاتهم بدون خادم ومواردها في ملف قالب واحد. تقوم AWS CloudFormation تلقائيًا بتوفير الموارد اللازمة وتكوينها عند نشر النموذج.
- الاختبار المحلي وتصحيح الأخطاء: باستخدام AWS SAM CLI ، يمكن للمطورين تشغيل التطبيقات بدون خادم محليًا وتصحيحها قبل نشرها على السحابة. هذا يضمن أن منطق التطبيق وتكوينات الموارد تعمل بشكل صحيح قبل دفعها إلى بيئة حية.
- أفضل الممارسات المضمنة: تحتوي قوالب AWS SAM على العديد من أفضل الممارسات المضمنة ، مثل البنية المبسطة ، ودعم CORS والاقتطاع الميداني ، والإدارة التلقائية لسياسات الموارد. تساعد أفضل الممارسات المطورين على اتباع إرشادات AWS ومنع مشكلات التطبيقات الشائعة بدون خادم.
- قوالب السياسة: تتضمن AWS SAM قوالب سياسات يمكن للمطورين استخدامها لإدارة الوصول إلى الموارد في تطبيقاتهم التي لا تحتوي على خادم. من خلال استخدام قوالب السياسة هذه ، يتم تضمين أفضل ممارسات الأمان بشكل افتراضي ، مما يبسط بشكل كبير إنشاء سياسات IAM وإدارتها.
- دعم خدمات AWS المتنوعة: يمكن لقوالب AWS SAM تحديد الموارد للعديد من خدمات AWS ، مثل Lambda و API Gateway و DynamoDB و CloudWatch Events و Simple Notification Service (SNS). يسهل هذا الدعم تكامل الخدمات المختلفة لإنشاء تطبيقات بدون خادم معقدة وغنية بالميزات.
فوائد استخدام AWS SAM لتطوير التطبيقات بدون خادم
يجلب استخدام AWS SAM لتطوير تطبيقات بدون خادم مزايا متعددة للمطورين والمؤسسات:
- النشر المبسط: يقلل AWS SAM من تعقيد النشر بدون خادم عن طريق التزويد التلقائي بالموارد الضرورية وتكوينها بناءً على ملف قالب واحد. يتيح هذا التبسيط للمطورين التركيز على كتابة منطق التطبيق بدلاً من إدارة البنية التحتية.
- تقليل وقت التطوير: يوفر AWS SAM عملية تطوير مبسطة للتطبيقات بدون خادم ، مما يؤدي إلى دورات تطوير أسرع واستخدام أكثر كفاءة للموارد ، وهو أمر بالغ الأهمية في صناعة سريعة التطور.
- بيئة تطوير متسقة: تتكامل AWS SAM مع خدمات AWS المختلفة وأدواتها و IDE ، مما يتيح سير عمل متسق عبر فرق ومراحل التطوير المختلفة ، من الإنشاء والاختبار إلى التكامل والنشر المستمر.
- كفاءة التكلفة: من خلال استخدام نموذج تسعير الدفع أولاً بأول الخاص بـ AWS ، يمكن للتطبيقات التي لا تحتوي على خادم والتي تم تطويرها باستخدام AWS SAM أن تخفض تكاليف البنية التحتية ، حيث يحتاج المستخدمون فقط إلى الدفع مقابل الموارد الفعلية التي تستهلكها تطبيقاتهم بدلاً من الموارد المخصصة مسبقًا.
- توسيع القدرات باستخدام رمز مخصص: بينما يبسط AWS SAM عملية التطوير ، فإنه يوفر أيضًا مرونة لتوسيع قدراته باستخدام رمز مخصص ، مما يسمح للمطورين بتصميم تطبيقات بدون خادم وفقًا لاحتياجاتهم الخاصة.
يوفر AWS SAM البساطة والكفاءة وتوفير التكاليف لتطوير التطبيقات بدون خادم. إنه يزيد من إمكانات الحوسبة بدون خادم ، مما يسمح للمطورين بالتركيز بشكل أكبر على إنشاء تطبيقات رائعة وبدرجة أقل على إدارة البنية التحتية.
بدء استخدام AWS SAM
لبدء استخدام AWS Serverless Application Model (SAM) ، يجب أن يكون لديك حساب AWS وتثبيت AWS CLI و AWS SAM CLI على جهازك. تأكد من تكوين AWS CLI باستخدام بيانات الاعتماد الخاصة بك قبل المتابعة. بمجرد الانتهاء من إعداد كل شيء ، يمكنك اتباع الخطوات أدناه:
- إنشاء مجلد مشروع جديد: استخدم المحطة الطرفية (أو موجه الأوامر) لإنشاء دليل جديد لتطبيقك الذي لا يحتوي على خادم. انتقل إلى الدليل لمتابعة الإعداد.
- ابدأ تشغيل تطبيق AWS SAM الخاص بك: قم بتشغيل الأمر التالي في جهازك الطرفي:
سام فيرت
يقوم هذا الأمر بتهيئة تطبيق SAM جديد ، مما يوفر لك ملف template.yaml ومجلد رمز مع مثال لوظيفة Lambda. يمكنك اختيار وقت تشغيل لوظيفة بدون خادم من الخيارات المحددة (على سبيل المثال ، Node.js ، Python ، Go) وتحديد قالب للتطبيق الخاص بك.
- استكشاف الملفات التي تم إنشاؤها: افتح مجلد المشروع في محرر التعليمات البرمجية المفضل لديك وراجع الملفات التي تم إنشاؤها لفهم بنية القالب ووظيفة Lambda بشكل أفضل.
- إنشاء موارد إضافية وتكوينها: استخدم ملف template.yaml لتحديد الموارد التي يتطلبها تطبيقك بدون خادم ، مثل واجهات برمجة التطبيقات وقواعد البيانات والأحداث. يمكنك أيضًا تعديل مثال دالة Lambda لتنفيذ منطقك الخاص.
- اختبر التطبيق الذي لا يحتوي على خادم محليًا: استخدم AWS SAM CLI لاختبار وتصحيح تطبيقك بدون خادم محليًا قبل نشره في سحابة AWS. قم بتشغيل الأمر التالي في المحطة:
استدعاء محلي
يستدعي هذا الأمر وظيفة بدون خادم ويعرض الإخراج ، مما يسمح لك بتصحيح التطبيق واختباره.
- نشر تطبيقك بدون خادم: بمجرد اختبار تطبيقك محليًا ، استخدم الأمر التالي لحزمه ونشره في AWS CloudFormation:
حزمة sam - s3-bucket your-s3-bucket-name نشر sam - قالب ملف قالب .
استبدل <i>your-s3-bucket-name</i>
و <i>template.yaml</i>
و <i>your-stack-name</i>
بالقيم المناسبة. يتيح CAPABILITY_IAM لـ AWS CloudFormation إنشاء أدوار IAM الضرورية لتطبيقك الذي لا يحتوي على خادم.
بمجرد نشر تطبيقك بدون خادم ، يوفر AWS CloudFormation جميع الموارد المحددة في ملف template.yaml ، ويمكنك البدء في استخدام التطبيق الخاص بك.
AWS SAM CLI
تعد واجهة سطر أوامر AWS Serverless Application Model (SAM CLI) ضرورية لتطوير واختبار ونشر التطبيقات بدون خادم. يوفر مجموعة أوامر غنية تمكنك من إدارة التطبيقات التي لا تحتاج إلى خادم بشكل فعال. فيما يلي بعض أوامر AWS SAM CLI المستخدمة بشكل متكرر:
- sam init: تهيئة تطبيق جديد بدون خادم تمت تهيئته مسبقًا باستخدام ملف template.yaml ومثال على دالة Lambda.
- sam build: يبني تطبيقك بدون خادم ، ويجمع كود وظيفة Lambda وتبعياتها.
- استدعاء محلي: يستدعي تطبيقك بدون خادم محليًا ، مما يسمح لك باختبار التطبيق وتصحيحه.
- sam local start-api: يبدأ بواجهة API محلية لتطبيقك بدون خادم ، مما يسمح لك باختبار واجهات برمجة التطبيقات الخاصة بالتطبيق بدون خادم.
- حزمة sam: تحزم كود تطبيقك بدون خادم وتبعياته وتحميله إلى حاوية Amazon S3.
- نشر sam: ينشر تطبيقك بدون خادم إلى AWS CloudFormation ، ويوفر جميع الموارد المحددة في ملف template.yaml.
- سجلات sam: يسترجع ويعرض أحداث السجل من وظائف Lambda.
- التحقق من صحة sam: التحقق من ملف template.yaml الخاص بك ، والتأكد من أنه منسق جيدًا ويتبع أفضل الممارسات.
تعمل هذه الأوامر على تبسيط تطوير التطبيقات بدون خادم ، مما يجعل من السهل إنشاء واختبار ونشر التطبيقات التي لا تحتاج إلى خادم إلى سحابة AWS.
هيكل قالب AWS SAM
قوالب AWS SAM هي ملفات YAML أو JSON تحدد موارد وخصائص وتكوينات تطبيقك بدون خادم. تعمل القوالب كمخططات للبنية التحتية للتطبيق الخاص بك ، مما يسمح لك بإصدار وتكرار ومشاركة التطبيقات التي لا تحتاج إلى خادم بسهولة. فيما يلي نظرة عامة على المكونات الرئيسية لقالب AWS SAM النموذجي:
- AWSTemplateFormatVersion: إصدار تنسيق القالب الذي تستخدمه (اختياري).
- التحويل: إصدار قالب AWS SAM. استخدم "AWS :: Serverless-2016-10-31" لهذه الخاصية.
- الموارد: الموارد التي لا تحتاج إلى خادم وخصائصها. في هذا القسم ، تقوم بتعريف وظائف AWS Lambda و API Gateway وموارد AWS الأخرى التابعة المطلوبة لتطبيقك. يتم تعيين اسم مورد منطقي لكل مورد ، ويمكنك الرجوع إلى الاسم في أجزاء أخرى من القالب.
- المعلمات: مجموعة من معلمات الإدخال التي تريد إتاحتها للقالب (اختياري).
- المخرجات: مجموعة من قيم المخرجات التي تريد عرضها على قوالب AWS SAM أو حزم AWS CloudFormation (اختياري).
- Globals: قسم يمكنك من خلاله تحديد الإعدادات العامة لجميع موارد AWS :: Serverless :: Function في القالب (اختياري).
- الشروط: مجموعة من الشروط التي يمكنك استخدامها لتخصيص خصائص المورد بناءً على معلمات الإدخال أو الموارد الموجودة (اختياري).
عند تحديد الموارد ، يمكنك استخدام أنواع موارد متنوعة خاصة بـ AWS ، مثل:
- AWS :: Serverless :: Function
- AWS :: Serverless :: Api
- AWS :: Serverless :: SimpleTable
- AWS :: Serverless :: HttpApi
بالإضافة إلى ذلك ، يمكنك استخدام أنواع الموارد المخصصة التي توفرها امتدادات AWS SAM التابعة لجهات خارجية. تتم قراءة القوالب وتفسيرها بواسطة AWS CloudFormation ، والتي تقوم بعد ذلك بتوفير الموارد المطلوبة بناءً على تصريحاتك.
الآن بعد أن فهمت بنية قالب AWS SAM بشكل أفضل ، تابع تعديل ملف template.yaml الخاص بك لتحديد موارد وخصائص وتكوينات التطبيق بدون خادم. سيضمن ذلك إنشاء تطبيقك واختباره ونشره بما يتماشى مع أفضل ممارسات AWS.
موارد قالب AWS SAM
في AWS SAM ، تحدد القوالب موارد تطبيق بدون خادم ، بما في ذلك وظائف AWS Lambda و Amazon API Gateway API وجداول Amazon DynamoDB. القوالب هي ملفات JSON أو YAML يمكن نشرها باستخدام AWS CloudFormation. يقدم AWS SAM أنواعًا مختلفة من الموارد للتطبيقات التي لا تحتوي على خادم ، مثل:
AWS :: Serverless :: Function
يمثل نوع المورد هذا وظيفة Lambda في تطبيق بدون خادم. يمكنك تحديد خصائص مثل وقت التشغيل والمعالج ومصدر التعليمات البرمجية والأحداث المرتبطة. على سبيل المثال:
Resources: LambdaFunction: Type: AWS::Serverless::Function Properties: Runtime: nodejs14.x Handler: index.handler CodeUri: ./src Events: Api: Type: Api Properties: Path: /example Method: GET
AWS :: Serverless :: Api
يمثل نوع المورد هذا واجهة API Gateway REST API . يمكنك تحديد خصائص مثل اسم المرحلة والمصادقة وإعدادات الطريقة. على سبيل المثال:
Resources: ApiGatewayApi: Type: AWS::Serverless::Api Properties: StageName: prod EndpointConfiguration: REGIONAL
AWS :: Serverless :: HTTPApi
يمثل نوع المورد هذا واجهة API لبوابة HTTP API. باستخدام واجهات برمجة تطبيقات HTTP ، يمكنك إنشاء واجهات برمجة تطبيقات ذات زمن انتقال منخفض وفعالة من حيث التكلفة ، بما في ذلك WebSockets. على سبيل المثال:
Resources: HttpApi: Type: AWS::Serverless::HTTPApi Properties: StageName: prod
AWS :: Serverless :: SimpleTable
يمثل نوع المورد هذا جدول DynamoDB. يمكنك تحديد خصائص مثل المفتاح الأساسي وتعريفات السمات. على سبيل المثال:
Resources: DynamoDbTable: Type: AWS::Serverless::SimpleTable Properties: PrimaryKey: Name: id Type: String
تتضمن موارد AWS SAM الأخرى AWS :: Serverless :: StateMachine (AWS Step Functions) و AWS :: Serverless :: Application (تطبيقات متداخلة) و AWS :: Serverless :: LayerVersion (طبقات Lambda).
أفضل الممارسات لاستخدام AWS SAM
يضمن الالتزام بأفضل الممارسات أثناء استخدام AWS SAM النشر الفعال وإدارة التطبيقات بدون خادم. فيما يلي بعض التوصيات:
- إضفاء الطابع المعياري على الوظائف والقوالب الخاصة بك
نظّم تطبيقك الذي لا يحتوي على خادم عن طريق إنشاء وظائف وقوالب Lambda منفصلة لكل ميزة أو خدمة. هذا يسمح لصيانة أسهل وفصل أفضل للمخاوف. - استخدم قوالب سياسة AWS SAM
تقدم AWS SAM قوالب سياسة محددة مسبقًا لمساعدتك في إدارة سياسات IAM لتطبيقاتك التي لا تحتوي على خادم. استفد من هذه القوالب لضمان مجموعة آمنة ومتسقة من الأذونات لمواردك. - إدارة التبعيات بكفاءة
تنظيم التبعيات بشكل فعال باستخدام مديري الحزم مثل npm أو pip. هذا يسمح بتحكم أفضل في الإصدار ويقلل من مخاطر التعارض في التبعيات. - تحقق من صحة واختبار التطبيقات بدون خادم
استخدم AWS SAM CLI للتحقق من صحة واختبار التطبيقات بدون خادم محليًا قبل نشرها في سحابة AWS. يساعد ذلك في تحديد المشكلات مبكرًا ويضمن نشرًا أكثر سلاسة. - تحسين الأداء وتقليل التكاليف
قم بتحليل ومراقبة أداء التطبيق بدون خادم باستخدام أدوات مثل AWS X-Ray و Amazon CloudWatch. قم بتحسين التطبيق من خلال تكوين إعدادات حجم ذاكرة وظيفة Lambda ، والمهلة ، والتزامن.
تكامل AWS SAM مع AppMaster.io
يمكن دمج AppMaster.io ، وهو نظام أساسي قوي لا يحتوي على تعليمات برمجية لإنشاء تطبيقات الويب والجوال والخلفية ، مع AWS SAM للاستفادة من ميزاته التي لا تحتوي على خادم. يوفر توصيل AppMaster.io مع AWS SAM مزايا عديدة:
- استخدم AppMaster.io لتصميم تطبيقات بدون خادم
تتيح الواجهة المرئية لـ AppMaster.io إنشاء تطبيقات بدون خادم بسهولة باستخدام AWS SAM. بدون كتابة التعليمات البرمجية ، يمكنك إنشاء نماذج البيانات ومنطق الأعمال endpoints API. - استفد من الوثائق التي يتم إنشاؤها تلقائيًا
أثناء تصميم التطبيق بدون خادم ، يقوم AppMaster.io تلقائيًا بإنشاء وثائق Swagger (OpenAPI) endpoints الخادم والبرامج النصية لترحيل مخطط قاعدة البيانات. يضمن ذلك تجربة سلسة عند العمل مع AWS SAM APIs. - إنشاء تطبيقات ويب ديناميكية وتفاعلية
باستخدام ميزات AppMaster.io القوية ، يمكنك تطوير تطبيقات ويب تفاعلية بالكامل تعمل بسلاسة مع AWS SAM. يسمح هذا بإنشاء تطبيقات قابلة للتطوير وفعالة وفعالة من حيث التكلفة. - ادمج مشغلات أحداث AWS Lambda
يسمح لك AppMaster.io باستخدام مشغلات أحداث Lambda التي تم إنشاؤها بواسطة SAM SAM ، مما يجعل من الممكن توصيل وظائف بدون خادم بمنطق أعمال AppMaster.io. هذا يضمن أن التطبيق بدون خادم يعمل بسلاسة وكفاءة.
يتيح لك دمج AppMaster.io مع AWS SAM إنشاء تطبيقات بدون خادم ونشرها بشكل أسرع وأكثر كفاءة ، مما يؤدي في النهاية إلى توفير الوقت وتكاليف التطوير .
خاتمة
يعد AWS Serverless Application Model (SAM) إطارًا أساسيًا يبسط تطوير التطبيقات بدون خادم ونشرها على سحابة AWS. من خلال الاستفادة من ميزاته القوية ، يمكن للمطورين تبسيط عملياتهم وتبسيط النشر وإدارة دورة حياة التطبيق بكفاءة دون القلق بشأن البنية الأساسية للخادم الأساسي. يوفر تكاملها مع AWS CloudFormation و AWS SAM CLI للمطورين بيئة تطوير شاملة ومتسقة. تعمل القدرة على العمل مع خدمات AWS المختلفة ، مثل Lambda و API Gateway و DynamoDB ، على تعزيز مرونتها وقدرتها على التكيف. يمكن أن يؤدي دمج أفضل الممارسات عند استخدام AWS SAM إلى تطبيقات بدون خادم أكثر كفاءة وقابلة للتطوير ، مما يؤدي في النهاية إلى توفير التكاليف وتحسين الأداء.
بالإضافة إلى ذلك ، يمكن no-code AppMaster.io أن تعمل بسلاسة مع AWS SAM ، مما يوفر مزيجًا مثاليًا من تطوير no-code ومزايا بنية بدون خادم. يمكن أن يساعد هذا التكامل الشركات على تحقيق أوقات تطوير ونشر أسرع مع الحفاظ على المرونة مع تطور احتياجاتهم. نظرًا لأن البنى بدون خادم أصبحت بارزة بشكل متزايد ، فإن امتلاك فهم عميق لإطار عمل AWS SAM وأفضل ممارساته يعد أمرًا بالغ الأهمية للمطورين للبقاء في المنافسة في صناعة التطبيقات الحديثة المستندة إلى مجموعة النظراء.