قائمة مرجعية لإنشاء ونشر تطبيقات الويب

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

قد تساعد هذه المقالة أولئك الذين يتعلمون للتو أساسيات إنشاء تطبيقات الويب ويريدون فهم القليل عن المصطلحات والاصطلاحات الأساسية.

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

لنبدأ مع الأربعاء.

أساس تشغيل أي كود أو نظام أو برنامج هو نظام التشغيل، لذلك سنلقي أدناه نظرة على الأنظمة الأكثر شهرة في سوق الاستضافة ونقدم لها وصفًا موجزًا:

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

يونكس-نظام مماثل. ولا يتطلب العمل التقليدي في هذه الأنظمة وجود واجهة رسومية مألوفة، حيث تقدم للمستخدم فقط وحدة تحكم كعنصر تحكم. بالنسبة لمستخدم عديم الخبرة، قد يكون العمل بهذا التنسيق أمرًا صعبًا، فما هي تكلفة الخروج من محرر النصوص المشهور جدًا في البيانات همة، وقد حصل السؤال المتعلق بهذا بالفعل على أكثر من 6 مليون مشاهدة خلال 1.8 سنوات. التوزيعات (الإصدارات) الرئيسية لهذه العائلة هي: Debian - توزيع شائع، تركز إصدارات الحزمة فيه بشكل أساسي على LTS (دعم على المدى البعيد - الدعم لفترة طويلة)، والذي يتم التعبير عنه بموثوقية واستقرار عاليين إلى حد ما للنظام والحزم؛ أوبونتو - يحتوي على توزيعات لجميع الحزم في أحدث إصداراتها، مما قد يؤثر على الاستقرار، ولكنه يسمح لك باستخدام الوظيفة التي تأتي مع الإصدارات الجديدة؛ ريد هات إنتربرايز لينكس – نظام التشغيل، المعدة للاستخدام التجاري، يتم دفعها، ولكنها تتضمن الدعم من بائعي البرامج، وبعض الحزم الخاصة وحزم برامج التشغيل؛ CentOS - مفتوح المصدر نسخة مختلفة من Red Hat Enterprise Linux، تتميز بغياب الحزم والدعم الخاصين.

بالنسبة لأولئك الذين بدأوا للتو في إتقان هذا المجال، فإن توصيتي هي الأنظمة نظام التشغيل Windows Serverأو أوبونتو. إذا نظرنا إلى Windows، فهذا هو في المقام الأول معرفة النظام، أوبونتو – مزيد من التسامح مع التحديثات، وبالتالي، على سبيل المثال، مشاكل أقل عند إطلاق المشاريع على التقنيات التي تتطلب إصدارات جديدة.

لذلك، بعد اتخاذ قرار بشأن نظام التشغيل، دعنا ننتقل إلى مجموعة من الأدوات التي تتيح لك نشر (تثبيت) وتحديث ومراقبة حالة التطبيق أو أجزائه على الخادم.

سيكون القرار المهم التالي هو وضع التطبيق الخاص بك والخادم الخاص به. في الوقت الحالي، الأكثر شيوعًا هي 3 طرق:

  • تعد استضافة (الاحتفاظ) بخادم بنفسك هو الخيار الأكثر ملاءمة للميزانية، ولكن سيتعين عليك طلب عنوان IP ثابت من مزود الخدمة الخاص بك حتى لا يغير موردك عنوانه بمرور الوقت.
  • استأجر خادمًا مخصصًا (VDS) – وقم بإدارته بشكل مستقل وقياس الأحمال
  • ادفع (غالبًا ما يمنحك فرصة لتجربة وظائف النظام الأساسي مجانًا) مقابل الاشتراك في بعض خدمات الاستضافة السحابية، حيث يكون نموذج الدفع مقابل الموارد المستخدمة شائعًا جدًا. أبرز ممثلي هذا الاتجاه: Amazon AWS (يعطون سنة مجانية لاستخدام الخدمات ولكن بحد شهري)، Google Cloud (يعطون 300 دولار للحساب، يمكن إنفاقها خلال العام على خدمات الاستضافة السحابية) ، Yandex.Cloud (يعطون 4000 روبل . لمدة شهرين)، Microsoft Azure (يمنحون وصولاً مجانيًا إلى الخدمات الشائعة لمدة عام، + 2 روبل لأي خدمات لمدة شهر واحد). وبالتالي، يمكنك تجربة أي من هؤلاء المزودين دون إنفاق فلس واحد، ولكن الحصول على رأي تقريبي حول جودة ومستوى الخدمة المقدمة.

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

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

وأخيرًا، خيار استئجار سعة مقدمي الخدمات السحابية. هنا يمكنك إعداد التحكم الآلي في أي شيء تقريبًا دون الخوض في الكثير من التفاصيل الفنية. بالإضافة إلى ذلك، بدلاً من جهاز واحد، يمكن أن يكون لديك العديد من مثيلات التشغيل المتوازية، والتي يمكن، على سبيل المثال، أن تكون مسؤولة عن أجزاء مختلفة من التطبيق، في حين لا تختلف كثيرًا في التكلفة عن امتلاك خادم مخصص. وأيضًا، هناك أدوات للتنسيق، والحاويات، والنشر التلقائي، والتكامل المستمر، وغير ذلك الكثير! سننظر في بعض هذه الأشياء أدناه.

بشكل عام، تبدو البنية التحتية للخادم كما يلي: لدينا ما يسمى بـ "المنسق" ("التنسيق" هو ​​عملية إدارة العديد من مثيلات الخادم)، والتي تدير التغييرات البيئية على مثيل الخادم، وحاوية المحاكاة الافتراضية (اختياري، ولكن تمامًا غالبًا ما يستخدم)، والذي يسمح لك بتقسيم التطبيق إلى طبقات منطقية معزولة، وبرنامج التكامل المستمر - مما يسمح بتحديث التعليمات البرمجية المستضافة من خلال "البرامج النصية".

لذا، تتيح لك عملية التنسيق رؤية حالة الخوادم، ونشر التحديثات أو استرجاعها إلى بيئة الخادم، وما إلى ذلك. في البداية، من غير المرجح أن يؤثر هذا الجانب عليك، لأنه من أجل تنسيق أي شيء، تحتاج إلى عدة خوادم (يمكنك الحصول على واحد، ولكن لماذا يعد ذلك ضروريًا؟)، ولكي يكون لديك عدة خوادم، فأنت بحاجة إليها. من بين الأدوات في هذا الاتجاه، الأداة الأكثر شعبية هي Kubernetes، التي طورتها شراء مراجعات جوجل.

الخطوة التالية هي المحاكاة الافتراضية على مستوى نظام التشغيل. في الوقت الحاضر، أصبح مفهوم "رسو السفن" منتشرًا على نطاق واسع، والذي يأتي من الأداة عامل في حوض السفن، الذي يوفر وظيفة الحاويات المعزولة عن بعضها البعض، ولكن يتم إطلاقها في سياق نظام تشغيل واحد. ماذا يعني هذا: في كل من هذه الحاويات، يمكنك تشغيل تطبيق، أو حتى مجموعة من التطبيقات، والتي ستعتقد أنها الوحيدة في نظام التشغيل بأكمله، حتى دون الشك في وجود شخص آخر على هذا الجهاز. تعتبر هذه الوظيفة مفيدة جدًا لتشغيل تطبيقات متطابقة من إصدارات مختلفة، أو ببساطة تطبيقات متعارضة، بالإضافة إلى تقسيم أجزاء التطبيق إلى طبقات. يمكن كتابة هذه الطبقة لاحقًا في صورة، والتي يمكن استخدامها، على سبيل المثال، لنشر تطبيق ما. أي أنه من خلال تثبيت هذه الصورة ونشر الحاويات التي تحتوي عليها، تحصل على بيئة جاهزة لتشغيل التطبيق الخاص بك! في الخطوات الأولى، يمكنك استخدام هذه الأداة لأغراض إعلامية وللحصول على فوائد حقيقية للغاية من خلال تقسيم منطق التطبيق إلى طبقات مختلفة. ولكن من الجدير أن نقول هنا أنه ليس كل شخص يحتاج إلى إرساء السفن، وليس دائمًا. يتم تبرير عملية الإرساء في الحالات التي يكون فيها التطبيق "مجزأ"، مقسمًا إلى أجزاء صغيرة، كل منها مسؤول عن مهمته الخاصة، ما يسمى "بنية الخدمات الصغيرة".

بالإضافة إلى ذلك، بالإضافة إلى توفير البيئة، نحتاج إلى ضمان النشر الكفء للتطبيق، والذي يتضمن جميع أنواع تحويلات التعليمات البرمجية، وتثبيت المكتبات والحزم ذات الصلة بالتطبيق، وإجراء الاختبارات، والإشعارات حول هذه العمليات، وما إلى ذلك. وهنا نحتاج إلى الاهتمام بمفهوم مثل "التكامل المستمر" (CI – التكامل المستمر). الأدوات الرئيسية في هذا المجال حاليًا هي Jenkins (قد يبدو برنامج CI المكتوب بلغة Java معقدًا بعض الشيء في البداية)، ترافيس سي (مكتوبة بلغة روبي، ذاتية، وأبسط إلى حد ما جنكينزومع ذلك، لا تزال هناك حاجة إلى بعض المعرفة في مجال تكوين النشر). جيتلاب سي (وكتب على روبي واذهب).

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

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

  • Python هي لغة ودية إلى حد ما بالنسبة لمستخدم عديم الخبرة، فهي تغفر بعض الأخطاء، ولكن يمكن أيضًا أن تكون صارمة جدًا مع المطور حتى لا يفعل أي شيء سيئ. بالفعل لغة ناضجة وذات مغزى إلى حد ما، والتي ظهرت في عام 1991.
  • Go، وهي لغة من Google، هي أيضًا سهلة الاستخدام ومريحة للغاية، ومن السهل جدًا تجميعها والحصول على ملف قابل للتنفيذ على أي نظام أساسي. يمكن أن تكون بسيطة وممتعة، أو يمكن أن تكون معقدة وخطيرة. ظهرت طازجة وشابة مؤخرًا نسبيًا في عام 2009.
  • يعد Rust أقدم قليلاً من زميله السابق الذي تم إصداره في عام 2006، ولكنه لا يزال صغيرًا جدًا مقارنة بأقرانه. تستهدف المطورين الأكثر خبرة، على الرغم من أنها لا تزال تحاول حل العديد من المهام ذات المستوى المنخفض للمبرمج.
  • Java هي لغة مخضرمة في التطوير التجاري، تم تقديمها في عام 1995، وهي واحدة من اللغات الأكثر استخدامًا في تطوير تطبيقات المؤسسات اليوم. بفضل مفاهيمه الأساسية وإعداداته الثقيلة، يمكن أن يصبح وقت التشغيل صعبًا للغاية بالنسبة للمبتدئين.
  • ASP.net هو نظام أساسي لتطوير التطبيقات أصدرته شركة Microsoft. لكتابة الوظيفة، يتم استخدام لغة C# (تنطق C Sharp)، والتي ظهرت في عام 2000، بشكل أساسي. تعقيدها يمكن مقارنته بالمستوى الموجود بين Java وRust.
  • PHP، المستخدمة في الأصل للمعالجة المسبقة لـ HTML، حاليًا، على الرغم من أنها تمتلك الريادة المطلقة في سوق اللغات، إلا أن هناك ميلًا لانخفاض استخدامها. لديها عتبة دخول منخفضة وسهولة كتابة التعليمات البرمجية، ولكن في الوقت نفسه، عند تطوير تطبيقات كبيرة إلى حد ما، قد لا تكون وظيفة اللغة كافية.

حسنًا، الجزء الأخير من تطبيقنا - وهو الجزء الأكثر وضوحًا بالنسبة للمستخدم - الواجهة (الواجهة الأمامية) - هو وجه تطبيقك، ومع هذا الجزء يتفاعل المستخدم مباشرة.

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

  • ReactJS ليس إطارًا، بل مكتبة. في الواقع، يختلف الإطار عن عنوانه الفخور فقط في غياب بعض الوظائف "الخارجية" والحاجة إلى تثبيتها يدويًا. وبالتالي، هناك العديد من الاختلافات في "إعداد" هذه المكتبة، وتشكل أطرًا فريدة من نوعها. قد يكون الأمر صعبًا بعض الشيء بالنسبة للمبتدئين، وذلك بسبب بعض المبادئ الأساسية والإعداد القوي لبيئة البناء. ومع ذلك، لبداية سريعة، يمكنك استخدام الحزمة "create-react-app".
  • VueJS هو إطار عمل لبناء واجهات المستخدم. من بين هذا الثالوث، فإنه يأخذ بحق عنوان الإطار الأكثر سهولة في الاستخدام؛ بالنسبة للتطوير في Vue، فإن حاجز الدخول أقل من حاجز الإخوة الآخرين المذكورين. علاوة على ذلك فهو الأصغر بينهم.
  • يعتبر Angular هو الأكثر تعقيدًا بين هذه الأطر، وهو الوحيد الذي يتطلب نسخة مطبوعة على الآلة الكاتبة (وظيفة إضافية للغة جافا سكريبت). غالبًا ما يستخدم لبناء تطبيقات المؤسسات الكبيرة.

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

المصدر: www.habr.com

إضافة تعليق