نشر واجهات برمجة التطبيقات مع AWS مرن شجرة الفاصولياء



في نهاية شهر يناير ، أجرينا دورة تدريبية مكثفة أخرى عبر الإنترنت "Backend PHP Developer" . هذه المرة ، كان موضوع الدرس المفتوح هو إنشاء روبوت Telegram لطلب القهوة في مؤسسة والدفع عبر الإنترنت . تبين أن ندوة الويب غنية جدًا ، لذا امتدت لمدة يومين: "اليوم الأول" و "اليوم الثاني" . نلفت انتباهكم إلى نسخة نصية من اليوم الأول من مكثفة على الإنترنت. كان حول تقديم AWS Elastic Beanstalk ونشر واجهة برمجة التطبيقات معها.

محاضر - مايكل كامورين ، كبير مطوري الخلفية في Skyeng.


الحوسبة السحابية


استخدام الحوسبة السحابية بشكل عام و AWS على وجه الخصوص يجلب لنا المزايا التالية:

  1. وصول شبكة مريحة عند الطلب. يمكننا الاتصال في أي وقت 365 يومًا في السنة على مدار الساعة طوال أيام الأسبوع.
  2. الصندوق العام لموارد الحوسبة القابلة للتكوين. تتيح لنا الحوسبة السحابية استخدام صندوق مشترك معين من موارد الحوسبة ، أكبر بكثير من موارد جهاز واحد ، بالمقارنة مع خادم خاص.
  3. توفير الفوري والإفراج. يمكننا الحصول على موارد إضافية في وقت قصير إذا لزم الأمر. وبسرعة الإفراج عن هذه الموارد بمجرد أن تصبح غير ضرورية.
  4. أقل تكاليف التشغيل. اعتمادًا على مستوى التجريد ، يتطلب الأمر مستوى مختلفًا من الاستثمار المالي ، ولكنه عادة ما يكون الحد الأدنى.

ما هي المشاكل التي نحلها:

  1. التموين الذاتي. عندما نتواصل مع موفر منتظم لخوادم VPS نفسها ، نكتب خطابًا ، ونطلب تخصيص الموارد اللازمة ، وما إلى ذلك. ردًا على ذلك ، يتم تقديم تعريفات وخيارات التكوين الخاصة بنا. نختار ، ندفع ، وأكثر من ذلك. في AWS ، كل شيء أبسط بكثير: يتم توصيل البطاقة على الفور ، ونختار البيئة بأنفسنا ونبدأ كل شيء بأنفسنا مع مراعاة احتياجاتنا. إنها خدمة ذاتية كاملة ومريحة للغاية.
  2. استضافة. بطبيعة الحال ، من أجل تنفيذ التعليمات البرمجية الخاصة بنا على جهاز بعيد ، نحصل على الاستضافة اللازمة. من حيث المبدأ ، ليس فقط السحب حل هذه المشكلة.
  3. تجمع الموارد شكلي. بطبيعة الحال ، لن يتطلب روبوت Telegram الكثير من الموارد ، لكن يحدث أن نتحدث عن مهام أعمال أكثر تعقيدًا أو عن نمو للمشروع.
  4. المرونة. ما هو المقصود هنا؟ عندما يكون لدينا موسمية واضحة (حتى خلال اليوم) ، عندما نعرف وقت ظهور وقت الذروة وأحمال الذروة ، يمكننا توفير. من الواضح أننا إذا استخدمنا موارد الحوسبة التي تغطي أحمال الذروة على مدار الساعة طوال أيام الأسبوع ، فسنبالغ في الدفع. تسمح لنا المرونة بزيادة موارد الحوسبة قبل وقت قصير من إطلاقها وإطلاقها فور اكتمالها. وبالتالي ، فإننا نخفض بشكل كبير من تكلفة خدمة البنية التحتية لدينا.
  5. قابلة للقياس. نرى عدد المكالمات إلى وظائفنا (في حالة AWS Lambda ، على سبيل المثال) ، نرى موارد (عدد الأجهزة الظاهرية التي تعمل ، ما هو الحمل) ، وهذا هو ، لدينا مراقبة دقيقة ودقيقة إلى حد ما.

مستويات التجريد

دعنا نتحدث قليلا عن مستويات التجريد:

  1. في الأماكن التقليدية ، نقدم كل شيء بدءًا من شراء الأجهزة وحتى تكوين التطبيق الذي نطلقه.
  2. يوفر لنا IaaS بعض الأجهزة و hypervisor. علاوة على ذلك ، يمكننا تحديد وتثبيت نظام التشغيل المطلوب والبيئة بشكل مستقل ، ويمكننا القيام بالتوسيع ، إلخ.
  3. CaaS . برز مستوى الحاوية كخدمة في الآونة الأخيرة مع تطور النقل بالحاويات بشكل عام والإرساء بشكل خاص. في حالة CaaS ، لسنا ملزمين بتكوين نظام التشغيل - لقد تم تزويدنا به بالفعل من مجموعة معينة من أنظمة التشغيل التي تم تكوينها مسبقًا.
  4. PaaS . مستوى تجريد قديم إلى حد ما ، ظهر قبل فترة طويلة من ظهور CaaS. في هذا المستوى ، يتم تزويدنا أيضًا ببيئة تشغيل ، وهذا في الواقع ، استضافة كلاسيكية. افترض أننا زودنا ببعض نسخة من PHP للاختيار من بينها مع مجموعة من الملحقات. على مستوى PHP ، يمكننا أن نفعل أي شيء: تثبيت موازنات ، كتابة التعليمات البرمجية الخاصة بنا ، إلخ.
  5. FaaS . مثال واحد هو نفس AWS لامدا. في هذه الحالة ، يتم توفير القياس بالفعل من خلال موفر الخدمة السحابية الذي يوفر الوظيفة ، وليس لدينا مشاكل عندما يبدأ التطبيق في النمو. نفس AWS Lambda يمكنها دعم الآلاف من الحالات دون أي شرط لتكوين (الدفع فقط).
  6. ادارة العلاقات مع . في هذه الحالة ، لا يمكننا الوصول إلا إلى خيار التكوين الذي يضعه المبرمجون في البرنامج الذي نستخدمه.



لكي لا تكون بلا أساس ، نقدم أمثلة على مستويات التجريد:

  • IaaS - سحابة حساب الأمازون المرنة (EC2) - سنعمل معها اليوم ؛
  • CaaS - خدمة حاوية الأمازون المرنة (ECS) ؛
  • PaaS - Google App Engine؛
  • FaaS - AWS Lambda؛
  • ادارة العلاقات مع - بريد جوجل.

تقاسم الموارد

كيف يتم استخدام الغيوم عموما؟ هناك عدة سيناريوهات:

  1. سحابة خاصة. تقع جميع البنية التحتية في مركز البيانات وتنتمي إلى الشركة (تنتمي إلى بمعنى أنه لا يمكن لأي شخص باستثناءنا العمل على هذه الموارد).
  2. سحابة العامة. جميع البنية التحتية في السحابة. نحن نعرف فقط أن لدينا خدمة من المستوى المحدد ، والتي يتم توفيرها لنا. نحن لا نعرف كيف يتم ترتيبها في المستويات الأدنى. نحن لا نملك بياناتنا بشكل كامل ، فقط إذا كنا نريد حذف بياناتنا ، فليس لدينا ما يضمن حدوث ذلك. علاوة على ذلك ، إذا تم اختراق المزود ، فإن احتمال فقدان المعلومات السرية كبير. نعم ، توجد هذه المخاطر مع سحابة خاصة ، لكننا نتحدث عن القرصنة المستهدفة لمواردك ، وهنا يمكنك أن تكون تحت التوزيع ، كما يقولون ، وللشركة.
  3. سحابة هجينة. هناك خيارات ممكنة:

  • في الوضع العادي ، يتم استخدام البنية التحتية الخاصة به ، يتم توصيل السحابة في ذروة الأحمال ؛
  • تنفر من حساباتنا البرمجيات تؤخذ إلى السحابة.
  • في الوضع العادي ، يتم استخدام السحابة ؛ في حالات الطوارئ ، يحدث التحول إلى البنية الأساسية الخاصة بك.

AWS


عند الحديث عن AWS ، ذكرنا أولاً بعض المكونات التي سنحتاجها وسيتم استخدامها تحت الغطاء.

AWS IAM

IAM (إدارة الهوية والوصول) هو أول شيء يجب عليك مواجهته عند التسجيل. يتيح لك IAM تكوين حقوق الوصول إلى الحساب وإدارة الأدوار والمجموعات والمستخدمين.

يقترح Amazon أن نتبع أفضل الممارسات ، رغم أنه سيتعين علينا انتهاكها قليلاً خلال الدرس. هذه هي الممارسات التالية:

  • لكل شخص طبيعي - مستخدم منفصل ؛
  • لكل تطبيق - دور منفصل ؛
  • لا تلتزم بالوصول الذي سيصدر ، نحن لا نتخبط ، نحن لا نستخدم الكود ؛
  • لا تستخدم مطلقًا حسابًا جذرًا غير الإعداد الأولي. إذا كنت تضيء كلمة مرور بطريق الخطأ في مكان ما ، فيمكن لشخص ما شراء أجهزة افتراضية من حسابك الجذر. وحتى إذا قمت بإعداد جميع التنبيهات اللازمة ، يمكنك الحصول على ألف دولار ونصف بسرعة كبيرة.

AWS EC2

EC2 - سحابة الحوسبة المرنة (IaaS) - خدمة ويب توفر لنا القدرة على نشر الأجهزة الافتراضية. يوفر EC2:

  • إدارة قوة الحوسبة التي سنستخدمها (عند تسجيل حساب مجاني ، يتم منح الوصول لنوع واحد فقط من المثيلات) ؛
  • مجموعة Amazon Machine Image (AMI) - صور الجهاز الظاهري مع التطبيقات والمكتبات ، وما إلى ذلك ؛

أيضًا ، عادةً للعمل مع EC2 ، ستحتاج إلى استخدام Amazon S3 (خدمة التخزين البسيطة) - تخزين الملفات.

تجدر الإشارة هنا إلى أننا لن نلمس EC2 مباشرةً ، حيث يجب عليك تهيئة كل شيء بنفسك ، بدءًا من البيئة وانتهاءً بإعدادات الوصول إلى الشبكة. ومع ذلك ، يجب أن يكون مفهوما أنه تحت غطاء محرك السيارة EC2 هو دائما هناك.

الفاصولياء AWS مرنة

شجرة الفاصولياء المرنة - خدمة تزامن (PaaS أو CaaS ، اعتمادًا على ما ستنسقه). إذا كانت الحاوية تعمل مع الحاوية نفسها وتعبئتها ، فعندئذ فإن التزامن هو العمل مع الحاويات ، دعنا نقول ، على مستوى التعريف. يعد Orchestration ، في الواقع ، آلية تسمح لنا ببدء تشغيل الحاويات / الأجهزة الافتراضية إما عن طريق واجهة برمجة التطبيقات أو من خلال وحدة التحكم.

يضيف Beanstalk على نظام التشغيل طبقة بيئة للغة برمجة معينة ، خادم ويب ، حاويات ، مجموعة من المكتبات ، الإضافات ، إلخ.

سوف نستخدم PHP 7.3 مع خادم الويب Apache (لم يتم توفير nginx ، هذا ليس جيدًا ولا سيئًا ، ولكن مجرد حقيقة يجب مراعاتها). بما أننا لن ندير هذا كله ، فنحن ، من حيث المبدأ ، لا نهتم.

التثبيت والإعداد


حسنا ، دعنا ننتقل إلى الممارسة. المرحلة الأولى هي تسجيل وإعداد حقوق الوصول:

  1. سجل في amazon.com . نحن نأخذ حساب مجاني مع الحد الأدنى من مجموعة السيارات.
  2. تسجيل الدخول نظرًا لأن تطبيق Beanstalk المرن يقدم منطقة أوريغون افتراضيًا ، فحدد Oregon في وحدة التحكم في إدارة AWS:
  3. انتقل إلى خدمة IAM من خلال وحدة التحكم (اكتب iam في شريط البحث):
  4. هناك نرى لوحة القيادة التي نقوم بتنفيذ إجراءات معينة

  5. للعمل مع Elastic Beanstalk ، نقوم بإنشاء مستخدم جديد وتكوينه (وصول برمجي فقط):


  6. أضف مجموعة ذات حقوق AWSElasticBeanstalkFullAccess:
  7. قم بتنزيل تفاصيل الوصول وحفظها في مكان ما في مكان آمن. إذا فقدت الملف ، فسيتعين على المستخدم إعادة إنشائه.




لذلك ، لدينا مستخدم ، وسوف نستمر في العمل مع هذا المستخدم. في هذه المرحلة ، كل شيء.

EB CLI

الآن تحتاج إلى تثبيت وحدة التحكم FlexBeanstalk نفسها. هذه عملية طويلة إلى حد ما ، وهنا لمحة موجزة عن ما يجب القيام به:

  1. نحن استنساخ مستودع https://github.com/aws/aws-elastic-beanstalk-cli-setup .
  2. نقرأ التمهيدي بعناية وننفذ الإجراءات اللازمة لنظام التشغيل الخاص بك (يتم وصف المشكلات المحتملة أيضًا في الملف التمهيدي).
  3. بعد التثبيت ، لا تنس تصدير المتغيرات باستخدام المسارات.
  4. تحقق من أن كل شيء يعمل ، eb –version .



تهيئة شجرة الفاصولياء المرنة

الآن نحن بحاجة إلى تهيئة شجرة الفاصولياء المرنة في مشروعنا. للقيام بذلك:

  • فك الأرشيف مع شفرة المصدر ؛
  • تنفيذ تثبيت الملحن.
  • تشغيل eb init ؛
  • حدد منطقة (الافتراضي هو ولاية أوريغون) وحدد تفاصيل الوصول من الملف الذي تم تنزيله ؛
  • تحديد اسم التطبيق ، لغة برمجة PHP والإصدار 7.3.

يرجى ملاحظة أننا لن نستخدم CodeCommit و ssh .

بعد التهيئة ، يظهر مجلد .elasticbeanstalk في التطبيق ، وفيه سيكون هناك ملف تكوين.



إنشاء وتشغيل مثيل EC2

تحتاج الآن إلى إنشاء مثيل EC2 وتشغيله من خلال Beanstalk. للقيام بذلك:

  • تنفيذ eb create ؛
  • تحديد اسم البيئة ، DNS CNAME ، حدد موازن التحميل (تطبيق) ؛
  • رفض بقعة الأسطول (مرونة تحت الحمل) ؛
  • تحقق من حالة eb status / eb health ؛
  • محاولة فتح موقع eb المفتوح .

بشكل غريب ، لكننا نواجه خطأ 403. ما الذي كان يمكن أن يحدث خطأ؟ نظرًا لأن التطبيق الخاص بنا موجود على Laravel ، فإن نقطة الدخول موجودة في الدليل /public ، ويتوقع EB نقطة دخول في الدليل الجذر افتراضيًا.



إصلاح التكوين

الخطوة التالية هي إصلاح التكوين:

  • انتقل إلى وحدة التحكم في شجرة الفاصولياء المرنة ؛
  • حدد تطبيقنا وانتقل إلى Configuration ؛
  • في قسم البرامج ، انقر فوق الزر "تعديل" ؛
  • تثبيت جذر المستند في / العامة ؛
  • انقر فوق تطبيق ؛
  • نتحقق من الأداء ( /api/v1/goods ).

فحص الصحة الإعداد

في الواقع ، يبقى تكوين الفحص الصحي . للقيام بذلك:

  • انتقل إلى وحدة التحكم في Elastic Beanstalk؛
  • حدد تطبيقنا وانتقل إلى Configuration ؛
  • في قسم Load Balancer ، انقر فوق الزر تعديل.
  • في قسم العمليات ، حدد الافتراضي وحدد إجراء التحرير ؛
  • حدد المسار / api / v1 / goods ورمز HTTP 200 في قسم Health Check ؛
  • انقر فوق حفظ وتطبيق.

ناقشنا كذلك المراقبة وانتهى اليوم الأول من مكثفة على الإنترنت. إذا كنت مهتمًا بهذا الموضوع ، فمن الأفضل مراجعة الدرس بالكامل وكرر جميع الخطوات الخاصة بالمعلم. بالإضافة إلى ذلك ، يوصى أيضًا بالاهتمام بالاستمرار. تذكر أن نتيجة مكثفة لمدة يومين عبر الإنترنت كانت إنشاء روبوت Telegram لطلب القهوة في المؤسسة والدفع عبر الإنترنت:

Source: https://habr.com/ru/post/ar485910/


All Articles