لإنشاء تطبيق الويب الخاص بك هذه الأيام ، لا يكفي أن تكون قادرًا على تطويره. يتمثل أحد الجوانب المهمة في إعداد أدوات لنشر التطبيق ومراقبته وإدارة البيئة التي تعمل فيها وإدارتها. بدأ عصر النشر اليدوي في غياهب النسيان ، حتى بالنسبة للمشاريع الصغيرة ، فإن أدوات التشغيل الآلي يمكن أن تحقق فوائد ملموسة. عند النشر "باليد" ، يمكننا في الغالب أن ننسى نقل شيء ما ، مع مراعاة فارق بسيط واحد أو آخر ، وإجراء اختبار منسي ، يمكن استمرار هذه القائمة لبعض الوقت.
يمكن أن يساعد هذا المقال أولئك الذين يفهمون فقط أساسيات إنشاء تطبيقات الويب ، ويريدون فهم القليل عن المصطلحات والاتفاقيات الأساسية.
لذلك ، لا يزال من الممكن تقسيم بناء التطبيقات إلى جزأين ، وهذا هو كل ما يتعلق برمز التطبيق ، وكل ما يتعلق بالبيئة التي يتم فيها تنفيذ هذا الرمز. رمز التطبيق ، بدوره ، ينقسم أيضًا إلى خادم (خادم يعمل على الخادم ، غالبًا: منطق العمل ، والتخويل ، وتخزين البيانات ، وما إلى ذلك) ، والعميل (واحد يعمل على جهاز المستخدم: غالبًا ما يكون واجهة ، وما يرتبط بها معها المنطق).
لنبدأ مع الأربعاء.
أساس تشغيل أي كود أو نظام أو برنامج هو نظام التشغيل ، لذلك أدناه سننظر إلى أكثر الأنظمة شيوعًا في سوق الاستضافة ونقدم لهم وصفًا موجزًا:
ويندوز سيرفر هو نفس ويندوز ، ولكن في الاختلاف الخادم. بعض الوظائف المتاحة في إصدار العميل (العادي) من Windows غير موجودة هنا ، على سبيل المثال ، بعض خدمات جمع الإحصائيات ، والبرامج المماثلة ، ولكن هناك مجموعة من الأدوات المساعدة لإدارة الشبكة ، والبرمجيات الأساسية لنشر الخادم (الويب ، بروتوكول نقل الملفات ، ...). بشكل عام ، يبدو Windows Server كأنه نظام Windows عادي ، كما أن نظام quacks مثل نظام Windows العادي ، يكلف أكثر من نظيره المعتاد مرتين. ومع ذلك ، نظرًا لأنك ستنشر التطبيق على الأرجح على خادم مخصص / ظاهري ، فإن التكلفة النهائية لك ، رغم أنها قد تزيد ، ليست مهمة. نظرًا لأن منصة Windows تحتل مكانًا ساحقًا في سوق نظام تشغيل المستخدم ، فإن إصدار الخادم الخاص بها سيكون الأكثر دراية لدى معظم المستخدمين.
نظام يشبه
يونيكس . لا يتضمن العمل التقليدي في هذه الأنظمة واجهة رسومية مألوفة ، حيث يقدم للمستخدم فقط وحدة تحكم كعنصر تحكم. بالنسبة لمستخدمين عديمي الخبرة ، يمكن أن يكون العمل بهذا التنسيق أمرًا صعبًا ، الأمر الذي لا
يترك سوى محرر نص
Vim ، والذي يحظى بشعبية كبيرة في البيانات ، وقد اكتسب السؤال المتصل بهذا لمدة 6 سنوات بالفعل أكثر من 1.8 مليون مشاهدة. التوزيعات الرئيسية (هذه الإصدارات) من هذه العائلة هي: دبيان - توزيع شائع ، وتركز إصدارات الحزم فيه بشكل أساسي على
دعم طويل المدى (دعم طويل الأجل - دعم لفترة طويلة) ، وهو ما ينعكس في الموثوقية العالية واستقرار النظام والحزم ؛
Ubuntu - يحتوي على توزيعات لجميع الحزم في أحدث إصداراتها ، والتي يمكن أن تؤثر على الاستقرار ، ولكنها تتيح لك استخدام الوظيفة التي تأتي مع الإصدارات الجديدة ؛
Red Hat Enterprise Linux - يتم دفع
نظام التشغيل الذي يتم تسويقه للاستخدام التجاري ، ومع ذلك ، فهو يتضمن دعمًا من موفري البرامج وبعض حزم الملكية وبرامج التشغيل ؛
CentOS - تباين
مفتوح المصدر لـ Red Hat Enterprise Linux ، يتميز بنقص الحزم والدعم.
بالنسبة لأولئك الذين يفهمون فقط تطوير هذا المجال ، فإن توصيتي هي
Windows Server أو
Ubuntu . إذا أخذنا في الاعتبار Windows ، فهذا يعد عادةً نظامًا ،
Ubuntu - مزيد من التسامح مع التحديثات ، وبدوره ، على سبيل المثال ، مشاكل أقل عند بدء مشاريع على تقنيات تتطلب إصدارات جديدة.
لذلك ، بعد اتخاذ قرار بشأن نظام التشغيل ، دعنا ننتقل إلى مجموعة من الأدوات التي تتيح لك نشر (تثبيت) وتحديث ومراقبة حالة التطبيق أو أجزائه على الخادم.
سيكون القرار المهم التالي هو استضافة التطبيق والخادم الخاص بك. في الوقت الحالي ، الأكثر شيوعًا هي 3 طرق:
- تعد استضافة (حفظ) خادم لوحدك أكثر خيارات الميزانية ، ولكن سيتعين عليك طلب عنوان IP ثابت من مزود الخدمة الخاص بك حتى لا يغير موردك عنوانه بمرور الوقت.
- استئجار خادم مخصص (VDS) - وإدارة إدارته وتحجيم الأحمال بشكل مستقل
- الدفع (غالبًا في نفس الوقت الذي يمنحون فيه وظائف النظام الأساسي مجانًا) اشتراكًا في بعض الاستضافة السحابية ، حيث يكون نموذج الدفع للموارد المستخدمة شائعًا جدًا. أبرز ممثلي هذا الاتجاه: Amazon AWS (امنح عامًا مجانيًا من استخدام الخدمات ، ولكن مع حد شهري) ، Google Cloud (أعط 300 دولار لحساب يمكن إنفاقه خلال العام على خدمات الاستضافة السحابية) ، Yandex. Cloud (إعطاء 4000 روبل . لمدة شهرين) ، Microsoft Azure (منح حق الوصول المجاني إلى الخدمات الشعبية لمدة عام ، + 12 500 روبل لأي خدمات لمدة شهر واحد). وبالتالي ، يمكنك تجربة أي من هؤلاء مقدمي الخدمة دون إنفاق عشرة سنتات ، ولكن الحصول على رأي تقريبي حول جودة ومستوى الخدمة.
بناءً على المسار الذي تم اختياره ، ستتغير الحقيقة في المستقبل فقط ، وعلى من تقع المسؤولية عنه في معظم الحالات ، بالنسبة لمنطقة إدارة معينة. إذا كنت تستضيف نفسك ، فعليك أن تفهم أن أي انقطاع في الكهرباء ، والإنترنت ، والخادم نفسه ، والبرنامج المنشور عليه - كل هذا يقع بالكامل على كتفيك. ومع ذلك ، للتدريب والاختبار ، وهذا أكثر من كافية.
إذا لم يكن لديك جهاز إضافي يمكنه القيام بدور خادم ، فستحتاج إلى استخدام الطريقة الثانية أو الثالثة. الحالة الثانية مماثلة للحالة الأولى ، باستثناء قيامك بنقل المسؤولية عن توفر الخادم وقوته إلى أكتاف المضيف. لا تزال إدارة الخادم والبرامج تحت سيطرتك.
وأخيرا ، خيار استئجار قدرة مقدمي السحابة. هنا يمكنك تكوين التحكم الآلي في أي شيء تقريبًا ، دون الخوض في الكثير من الفروق التقنية. بالإضافة إلى ذلك ، بدلاً من جهاز واحد ، يمكنك تشغيل عدة مثيلات (مثيلات) تعمل بشكل متوازٍ ، على سبيل المثال ، يمكن أن تكون مسؤولة عن أجزاء مختلفة من التطبيق ، في حين لا تختلف كثيراً في التكلفة عن ملكية خادم مخصص. وهناك أيضًا أدوات للتنسيق ، النقل بالحاويات ، النشر التلقائي ، التكامل المستمر وأكثر من ذلك بكثير! بعض هذه الأشياء سوف ننظر أدناه.
بشكل عام ، تكون البنية التحتية للخادم كما يلي: لدينا ما يسمى بـ "orchestrator" ("orchestration" - عملية إدارة مثيلات الخادم المتعددة) التي تدير التغييرات البيئية على مثيل الخادم ، حاوية افتراضية (اختيارية ، لكن غالبًا ما تستخدم) تتيح لك تقسيم التطبيق على الطبقات المنطقية المعزولة ، وبرنامج للتكامل المستمر - والذي يسمح بتحديث الكود المستضاف من خلال "البرامج النصية".
لذلك ، يتيح لك تزامن orchestration رؤية حالات الخادم ، والتحديثات ، أو استعادة بيئة الخادم ، وما إلى ذلك. في البداية ، من غير المرجح أن يثير هذا الجانب اهتمامك ، لأنه من أجل تنظيم شيء ما ، فأنت بحاجة إلى عدة خوادم (يمكن لأحدها ، ولكن لماذا تحتاجها؟) ، ولكي تكون هناك عدة خوادم ، فأنت بحاجة إليها. من بين الأدوات الموجودة في هذا المجال ، يتم سماعها في الغالب Kubernetes ، التي طورتها شركة
Google .
والخطوة التالية هي الافتراضية على مستوى نظام التشغيل. الآن أصبح مفهوم "الالتحام" واسع الانتشار ، والذي جاء من أداة
Docker ، التي توفر وظائف الحاويات المعزولة عن بعضها البعض ، ولكن تم إطلاقها في سياق نفس نظام التشغيل. ماذا يعني هذا: في كل من هذه الحاويات يمكنك تشغيل تطبيق ، أو حتى مجموعة من التطبيقات التي ستفترض أنها الوحيدة في نظام التشغيل بأكمله ، دون حتى معرفة وجود شخص آخر على هذا الجهاز. هذه الوظيفة مفيدة للغاية في تشغيل نفس التطبيقات من إصدارات مختلفة ، أو مجرد تطبيقات متعارضة ، وكذلك لتقسيم أجزاء التطبيق إلى طبقات. يمكن بعد ذلك كتابة طبقات الطبقات هذه على صورة يمكن استخدامها ، على سبيل المثال ، لنشر تطبيق ما. أي تثبيت هذه الصورة وتوسيع الحاويات التي تحتويها ، ستحصل على بيئة جاهزة لبدء تشغيل التطبيق الخاص بك! في الخطوات الأولى ، يمكنك استخدام هذه الأداة للأغراض التعليمية وللحصول على فائدة حقيقية عن طريق نشر منطق التطبيق في طبقات مختلفة. ولكن ، يجدر القول هنا أنه ليس كل شخص يحتاج إلى الإرساء ، وليس دائمًا. هناك ما يبرر الإرساء في الحالات التي يكون فيها التطبيق "مجزأ" ، وينقسم إلى أجزاء صغيرة ، كل منها مسؤول عن مهمته الخاصة ، ما يسمى "بنية microservice".
بالإضافة إلى توفير البيئة ، نحتاج أيضًا إلى توفير نشر كفء للتطبيق ، والذي يتضمن جميع أنواع تحويلات الأكواد البرمجية ، وتثبيت المكتبات والحزم المرتبطة بالتطبيق ، وتشغيل الاختبارات ، والإشعارات حول هذه العمليات ، وما إلى ذلك. نحن هنا بحاجة إلى الانتباه إلى مفهوم مثل "التكامل المستمر" (
CI - التكامل المستمر ). الأدوات الرئيسية في هذا المجال في الوقت الحالي هي Jenkins (قد يبدو برنامج CI المكتوب بلغة Java معقدًا بعض الشيء في البداية) ،
Travis CI (مكتوب في Ruby ، ذاتي ، أبسط إلى حد ما من
Jenkins ، ومع ذلك ، فإن بعض المعرفة في مناطق التكوين النشر) ،
Gitlab CI (مكتوب في
روبي والذهاب ).
لذلك ، بعد الحديث عن البيئة التي سيعمل فيها التطبيق الخاص بك ، فقد حان الوقت لمعرفة الأدوات التي يوفرها لنا العالم الحديث لإنشاء هذه التطبيقات.
لنبدأ بالأساسيات:
Backend (backend) - جانب الخادم. يتم تحديد اختيار اللغة ومجموعة من الوظائف الأساسية وهيكل محدد مسبقًا (إطار) هنا بشكل أساسي من خلال التفضيلات الشخصية ، ولكن مع ذلك ، تجدر الإشارة إلى النظر (رأي المؤلف حول اللغات ذاتي إلى حد ما ، مع المطالبة بتصنيف غير متحيز):
- Python لغة صديقة بدرجة كافية لمستخدم عديم الخبرة ، ويسامح بعض الأخطاء ، ولكن يمكن أن يكون صارمًا تمامًا مع المطور حتى لا يفعل أي شيء سيء. بالفعل ناضجة للغاية وذات مغزى PL ، التي ظهرت في عام 1991.
- Go هي لغة من Google ، كما أنها ودية للغاية ومريحة ، كما أنها سهلة بما يكفي لتجميع والحصول على ملف قابل للتنفيذ على أي منصة. يمكن أن تكون بسيطة وممتعة ، أو يمكن أن تكون صعبة وخطيرة. جديدة وشابة ، ظهرت مؤخرا نسبيا ، في عام 2009.
- الصدأ - أكبر بقليل من الزميل السابق ، الذي صدر في عام 2006 ، لا يزال صغيرا جدا فيما يتعلق بإخوانه. إنه موجه للمطورين الأكثر خبرة ، على الرغم من أنه لا يزال يحاول حل العديد من المهام منخفضة المستوى للمبرمج.
- تعد Java أحد مختبرات التطوير التجاري التي ظهرت في عام 1995 ، وهي واحدة من اللغات الأكثر استخدامًا في تطوير تطبيقات المؤسسات في الوقت الحالي. مع مفاهيمها الأساسية وضبطها الشديد لوقت التشغيل ، يمكن أن تصبح معقدة للغاية بالنسبة للمبتدئين.
- ASP.net عبارة عن نظام أساسي لتطوير التطبيقات تم إصداره بواسطة Microsoft. لكتابة الوظيفة ، تستخدم لغة C # (C C Sharp) بشكل أساسي ، والتي ظهرت في عام 2000. تعقيده مشابه للمستوى بين Java و Rust.
- PHP - يستخدم في الأصل في المعالجة المسبقة لـ HTML ، في الوقت الحالي ، على الرغم من أنه يحتفظ بالريادة المطلقة في سوق اللغات ، إلا أن هناك ميلًا إلى الانخفاض في الاستخدام. إنه يتميز بعتبة دخول منخفضة ، وسهولة كتابة التعليمات البرمجية ، ولكن في الوقت نفسه ، عند تطوير تطبيقات كبيرة بما يكفي ، قد لا تكون وظيفة اللغة كافية.
حسنًا ، الجزء الأخير من طلبنا - الأكثر واقعية بالنسبة للمستخدم -
الواجهة الأمامية (الواجهة الأمامية) - هو وجه التطبيق الخاص بك ، حيث يتفاعل المستخدم مباشرةً مع هذا الجزء.
بدون الدخول في التفاصيل ، تقف الواجهة الأمامية الحديثة على ثلاثة أعمدة وهي الأطر (وليس الكثير) لإنشاء واجهات المستخدم. تبعا لذلك ، فإن الثلاثة الأكثر شعبية هي:
- ReactJS ليس إطار عمل ، لكنه مكتبة. في الواقع ، يختلف الإطار عن العنوان الفخور فقط في حالة عدم وجود بعض الوظائف "خارج الصندوق" ، والحاجة إلى تثبيتها يدويًا. وبالتالي ، هناك العديد من الاختلافات في "التحضير" لهذه المكتبة ، والتي تشكل نوعًا من الإطار. للمبتدئين ، يمكن أن يكون معقدًا ، بسبب بعض المبادئ الأساسية ، والإعداد الشديد لبيئة التجميع. ومع ذلك ، لبداية سريعة ، يمكنك استخدام حزمة "create-react-app".
- VueJS هو إطار عمل لبناء واجهات مخصصة. من هذا الثالوث ، حصل بحق على لقب الإطار الأكثر سهولة في الاستخدام ، فبالنسبة للتطوير في Vue ، تكون عتبة الدخول أدنى من الأخوة الأخرى المذكورة. بالإضافة إلى ذلك ، هو الأصغر منهم.
- الزاوي - يعتبر الأكثر تعقيدًا من الأُطر المعطاة ، يتطلب الإطار الوحيد TypeScript (وظيفة إضافية للغة Javascript). كثيرا ما تستخدم لبناء تطبيقات المؤسسات الكبيرة.
بإيجاز ما ذكر أعلاه ، يمكننا أن نستنتج أن نشر التطبيق الآن يختلف اختلافًا جذريًا عن الطريقة التي تم بها هذه العملية. ومع ذلك ، لا أحد يكترث بتنفيذ "النشر" بالطريقة القديمة. ولكن هل يستحق الأمر القليل من الوقت الذي تم توفيره في البداية - هناك عدد كبير من المكابس التي يجب على المطور الذي اختار هذا المسار أن يتقدم عليها؟ أعتقد أن الجواب هو لا. بعد قضاء المزيد من الوقت في التعرف على هذه الأدوات (ولا تحتاج إلى المزيد ، لأنك تحتاج إلى فهم ما إذا كنت بحاجة إليها في المشروع الحالي أم لا) ، يمكنك القيام بذلك ، مما يقلل بشكل كبير ، على سبيل المثال ، حالات الأخطاء الأشباح التي تعتمد على البيئة و يظهر فقط على خادم الإنتاج ، والتحليل الليلي ، مما أدى إلى تعطل الخادم ولماذا لا يبدأ ، وأكثر من ذلك بكثير.