على مدى الأسابيع العديدة الماضية،
قضينا الكثير من الوقت في تعلم كيفية
بناء ونشر خادم REST API كامل من
خلال إتقان تقنيات مثل Express Framework و INNOSQL قاعدة بيانات مثل MongoDB.
يمنحك هذا الأسلوب التحكم الكامل في كيفية إنشاء خادم الواجهة الخلفية ونشره.
ولكن في العديد من الحالات،
قد يكون لدينا القليل من الوقت لتكوين خادم ثم نشره بسرعة.
على سبيل المثال، أنت شركة ناشئة تحتاج إلى الوصول إلى السوق بسرعة كبيرة،
ثم قد ترغب في السقالة بسرعة خارج الخادم الخلفي جنبا إلى جنب مع
تطبيق الواجهة الأمامية والوصول إلى السوق بسرعة كبيرة جدا.
في هذه الظروف، هل يمكننا توفير
الدعم الخلفي في
شكل خدمة يمكن تكوينها ونشرها بسرعة؟
هذا هو بالضبط ما سنناقشه بمزيد من التفصيل في هذه المحاضرة
والتمارين اللاحقة في هذا الدرس والدرس التالي.
لذلك، كما تعلمنا في هذه الدورة،
قمنا بإتقان التقنيات،
والأطر اللازمة لنا لبناء خادم REST API كامل النهاية الخلفية.
الآن بالطبع، كما تعلمنا على مدى الأسابيع الماضية،
يتطلب هذا النهج منا إعداد الخادم الخاص بنا ومن ثم تكوين الخادم،
ونحن بحاجة إلى إعداد قاعدة البيانات الخلفية الخاصة بنا ومن ثم
تكوين الجوانب المختلفة لقاعدة البيانات الخلفية.
نحتاج إلى تطوير واجهة برمجة تطبيقات REST وطرق مختلفة لواجهة برمجة تطبيقات REST الخاصة بنا،
وقد نحتاج أيضًا
إلى إنشاء خدمات إضافية مثل تقديم إشعارات الدفع
للمستخدم وإدارة المستخدم وخدمات الشبكات الاجتماعية وما إلى ذلك.
لذا، كل هذه تعني أن تطوير نهاية مصرفية كاملة يتطلب الكثير من الجهد.
الآن، هل يمكننا تجميع هذا النهج بأكمله في خدمة يمكن
تكوينها ونشرها بسرعة دون الحاجة
إلى قضاء الكثير من الوقت في تكوين خادمنا؟
الآن أنتم تنظرون إليّ بغرابة وتقولون،
«لقد قضيت الأسابيع الثلاثة الماضية تدريبنا على
كل هذه التقنيات والآن تقولون أنه من السهل جدًا
تكوين خادم باستخدام الواجهة الخلفية
كخدمة لتوفير كل هذه الميزات المختلفة من جانبنا الخلفي».
حسنا، كل نهج يأتي مع مزاياه وعيوبه الخاصة.
دعونا نتعلم أكثر قليلا عن الخلفية كخدمة قبل أن نقرر
ما إذا كان نهج تطوير الخادم الكامل
الذي تعلمناه حتى الآن هو الطريق الصحيح بالنسبة لنا،
أو بسرعة تكوين ونشر الخلفية
كخدمة هو النهج الذي يلبي احتياجاتنا.
لذا، ما هو بالضبط الخلفية كخدمة؟
الواجهة الخلفية هي خدمة مصممة كنموذج لتوفير
مطوري المحمول والويب لربط تطبيقاتهم إلى سحابة النهاية الخلفية.
لذلك عادة، يتم استضافة الواجهة الخلفية كخدمة في السحابة ثم تعرض الواجهة
الخلفية إلى الواجهة الأمامية من خلال
واجهة مصممة بشكل جيد مثل نقاط النهاية REST API.
إن النهاية الخلفية المعبأة بالكامل كما نرى في هذا الدرس،
هي ظاهرة حديثة نسبيًا وقد أخذت عالم الويب بالعاصفة.
سننظر في بعض الأمثلة بمزيد من التفصيل.
الآن، يوفر هذا جسرًا بين وحدة تخزين البيانات الأمامية والخلفية
وإدارة قاعدة البيانات الخلفية من خلال واجهة برمجة تطبيقات موحدة.
وأيضا العديد من هذه الخلفية كمزودي خدمة توفير
مجموعة تطوير البرامج الخاصة بهم والتي سوف
تمكنك من البدء بسرعة في تطوير الواجهة الأمامية.
هذا النهج بالطبع يحرر المطورين من الاضطرار إلى التركيز على
بناء الواجهة الخلفية وبدلاً من ذلك التركيز على تطوير الواجهة الأمامية،
أو محاولة تصميم ونشر تجربة المستخدم داخل
الواجهة الأمامية سواء كان ذلك في شكل
تطبيق زاوي أو في شكل التطبيق المحمول.
الآن، إذا كنت معتادًا على الحوسبة السحابية،
فأنا متأكد من أنك سمعت مصطلحات مثل البنية التحتية
كخدمة ومنصة كخدمة وبرنامج كخدمة.
الآن، الخلفية المتنقلة كخدمة، أو BaaS،
هي أساسا بناء على هذا النهج وتستهدف مطوري المحمول والويب
مع الوصول إلى الخدمات السحابية الخلفية وبيئة أكثر تعبئتها.
لذا، هذه هي الطريقة التي تمكنك بها الخلفية كخدمة من
الاستفادة من الواجهة الخلفية السحابية لدعم تطبيق الواجهة الأمامية الخاص بك.
بالطبع السؤال التالي الذي يطرح نفسه في ذهنك هو ما
الذي تقدمه الخلفية كخدمة لك عادة؟
توفر لك الواجهة الخلفية النموذجية كخدمة دفع
الإشعارات المدمجة تلقائيًا في دعم السحابة الخلفية.
يوفر لك تخزين الملفات ومشاركة الملفات.
يوفر لك تكامل الشبكات الاجتماعية.
يوفر العديد من مزودي الخدمة الخلفية هؤلاء
تكامل الشبكة الاجتماعية تلقائيًا لك.
يوفر لك إمكانات المراسلة والدردشة التي يمكنك
الاستفادة منها داخل الواجهة الأمامية لتوفير تجربة أفضل للمستخدم.
كما يوفر لك إدارة المستخدم.
كما رأينا عندما قمنا ببناء إدارة المستخدم
ودعم المصادقة داخل خادم Express plus MongoDB الخاص بنا،
كان علينا أن نبني خادم المصادقة الكامل،
كنا بحاجة إلى البناء في الخدمات الخلفية،
كنا بحاجة إلى القيام بإدارة الرمز المميز على حد سواء على الواجهة الخلفية
و على الواجهة الأمامية والمصادقة للمستخدم وهلم جرا.
كل هذه يمكن تعبئتها وتسليمها لك كوحدة مع
مجموعة تطوير البرامج التي تأتي مع الخلفية كخدمة.
وأيضا، الخلفية لأنها خدمة حزمة،
كما أنها بنيت في الكثير من أدوات تحليل الاستخدام التي تمكنك
من الحصول على نظرة عامة سريعة حول كيفية تفاعل المستخدمين مع الواجهة الخلفية الخاصة بك.
لذا، فإن أدوات الاستخدام هذه تعطيك الكثير من
البصيرة في سلوك المستخدم من داخل الواجهة الخلفية الخاصة بك.
أيضا، العديد من هذه الخدمات الخلفية توفر لك طريقة
لبناء ونشر المنطق المخصص الخاص بك
داخل الواجهة الخلفية لتلبية متطلباتك المحددة.
وبالطبع، فهي توفر لك الإطار الذي يمكنك من خلاله
تصميم منطق عملك المخصص لتلبية احتياجاتك المحددة.
لذلك لتلخيص، توفر الواجهة الخلفية النموذجية واجهة برمجة تطبيقات لتخزين البيانات
للتخزين السحابي حيث يمكنك تحميل الملفات وتنزيلها وكذلك الوصول إلى هذه الملفات،
نوع من التخزين الثنائي للبيانات الخاصة بك،
وربما مزامنة الجهاز وقدرات التخزين المؤقت.
لذلك، على سبيل المثال، عند إنشاء الواجهة الأمامية،
سيتم تخزين بيانات النهاية الخلفية تلقائيًا في الواجهة الأمامية.
كما أنها قد تدعم تشغيل دون اتصال من الواجهة الأمامية الخاصة بك.
لذلك، حتى مع قطع اتصال جهاز المستخدم الخاص بك من الشبكة،
وسوف لا تزال توفر كمية كافية من
المعلومات للمستخدم مع قدرات دون اتصال.
لذلك، على حد سواء سير العمل عبر الإنترنت وغير متصل حتى تتمكن من السماح للمستخدم
لتنفيذ أنشطته دون اتصال ثم في وقت لاحق على مزامنة مع الخلفية.
تكامل طرف ثالث.
لذلك، في كثير من الأحيان العديد من هذه الخلفية كموفري خدمة
تسمح لمطوري الطرف الثالث لتطوير المكونات الإضافية التي
يمكن بعد ذلك الاستفادة منها جنبا إلى جنب مع الواجهة
الخلفية لتوفير ملحقات للخدمات التي توفر لك الواجهة الخلفية بالفعل.
الاتصال الآمن بين تطبيق الواجهة الأمامية والواجهة الخلفية،
وكذلك عدة مرات تلقائيًا بإنشاء
نقاط نهاية REST API لك استنادًا إلى البيانات التي تقوم بتخزينها في الواجهة الخلفية.
سنرى أمثلة على ذلك خاصة مع
LoopBack كما سنرى لاحقًا في التدريبات.
وكما ذكرت، فإن
العديد من هذه الخلفية كمزودي خدمة يقدمون
مجموعات تطوير البرامج الخاصة بهم بحيث
يمكنك بسهولة البدء في تطوير الواجهة الأمامية الخاصة بك.
يأتي SDK مع جميع التعليمات البرمجية اللازمة لتطبيق
الواجهة الأمامية للتفاعل تلقائيا مع التطبيق الخلفي الخاص بك.
لذلك، على سبيل المثال، قد تحتوي SDK بالفعل على
خدمات يمكن للتطبيق الزاوي الاستفادة منها للتحدث إلى
الواجهة الخلفية تلقائيًا بحيث قد يتم تركك فقط مع تنفيذ
المكونات وقوالب الواجهة الأمامية للتطبيق الخاص بك.
تتم إدارة كل التفاعل مع الواجهة الخلفية تلقائيًا بواسطة حزمة SDK التي يتم توفيرها لك.
سترى أمثلة على ذلك مع
Firebase التي سننظر إليها في وقت لاحق قليلاً،
وكذلك مع LoopBack التي سنناقشها في الدرس التالي.
وبطبيعة الحال، فإن أي نهج له وجهان للعملة.
لذلك، دعونا ندرس بعض مزايا وعيوب الخلفية كخدمة.
الآن، ميزة واحدة بالطبع هي أنه مع
النهاية الخلفية، يوفر لك مكونات مجربة ومختبرة مسبقًا.
لذلك، يتم تعبئة الواجهة الخلفية لك
بحيث يضمن مزود الخدمة الخلفية أن
يتم اختبار النهاية الخلفية بالكامل بشكل جيد وسيقدم الخدمة كما وعدت للمستخدمين،
لمطوري الواجهة الأمامية.
لذلك، لا تحتاج إلى قضاء وقت إضافي الاضطرار
إلى القلق بشأن الاختبار والتأكد من أن الواجهة الخلفية تعمل بشكل صحيح أم لا.
على عكس عندما تقوم ببناء
الواجهة الخلفية المخصصة الخاصة بك باستخدام الأطر التي رأيناها سابقًا،
فأنت مسؤول تمامًا عن التأكد من أن الواجهة الخلفية تعمل بشكل صحيح.
الميزة الثانية هي بالطبع،
الانخفاض المصاحب في الجهود من جانب الخادم التي تحتاج إلى وضعها.
لذا نظرًا لأن جانب الخادم يأتي كوحدة معبأة،
يمكنك التركيز بشكل أساسي على تطوير الواجهة الأمامية وترك
جانب الخادم للواجهة الخلفية كمزود خدمة للتعامل معها.
وأنت ببساطة تستفيد من المرونة التي
توفرها لك في تطوير الواجهة الأمامية.
وستهتم الواجهة الخلفية النموذجية كمزود خدمة بدمج أي تطورات تكنولوجية حديثة
في الواجهة الخلفية الخاصة بهم وتوفير
إصدارات محدثة من الواجهة الخلفية عندما تصبح التقنيات الأحدث متاحة.
لذا، بهذه الطريقة يتم
تحريرك كمطور أمامي تمامًا من القلق حول كيفية تطور الواجهة الخلفية.
يتم الاعتناء تلقائيا من قبل مزود BaaS بالنسبة لك.
بالطبع، كل شيء يأتي مع الجانب الآخر من البطاقة.
لذلك دعونا نفحص ما هي بعض السلبيات من الذهاب الخلفية كخدمة.
أولا وقبل كل شيء، تعمل معظم الخلفيات كصندوق أسود.
أنت لا تعرف بالضبط كيف يتم تنفيذ الخلفية.
إذا كنت تستخدم خلفية مفتوحة المصدر مثل LoopBack،
على سبيل المثال، لديك حق الوصول إلى هذا الرمز الخلفي بأكمله،
ولكن لا يزال لماذا تريد قضاء بعض الوقت في استكشاف تفاصيل الخلفية،
عندما كنت قد تم ضمان أن الخلفية قد
بنيت بشكل جيد واختبارها بشكل جيد بالنسبة لك.
لذلك يمكنك ببساطة التعامل معها كصندوق أسود طالما.
بما أن لديك ثقة بأن هذا الصندوق الأسود
سيقدم الخدمات التي تتوقعها من تقديمها،
يمكنك ببساطة استخدام الواجهة الخلفية دون
الحاجة إلى القلق بشأن كيفية تنفيذها بالفعل.
الجانب الثاني هو أنه
إذا اخترت الذهاب مع خلفية واحدة كمزود خدمة،
فهناك مشكلة تأمين المورد.
لذلك بمجرد اختيار أحد مزودي خدمات إدارة الخدمات،
سوف تكون مؤمنة في بيئتهم والطريقة التي يخزنون بها بياناتهم.
في كثير من الأحيان بمجرد اعتماد واحدة من هذه الخلفية كمزودي خدمة،
يتم تأمين جميع البيانات الخاصة بك في خدمتهم، وقد تضطر إلى الذهاب من
خلال جهد مفرط من أجل
استرداد البيانات التي قمت بتخزينها بالفعل في الخلفية،
إذا اخترت الترحيل من الخلفية كمزود خدمة لآخر.
لذا فإن نشر خدمتك باستخدام واجهة خلفية واحدة هو مهمة واضحة للغاية،
ولكن إذا اخترت تغيير مزود BaaS الخاص بك،
فسيكون ذلك معركة شاقة بالنسبة لك.
لذلك هذا شيء يجب أن تكون على دراية تامة به قبل
الالتزام باستخدام أحد الواجهة الخلفية كمزودي خدمة.
لا تصبح هذه المشكلة مشكلة عندما
تقوم بتطوير الخلفية الكاملة بنفسك.
مرة أخرى، فوزك بعض وتخسر بعض.
لذلك نحن دائما نأخذ ذلك مع صورتهم كاملة في الاعتبار.
لذا،
قد يكون فقدان المرونة الذي تستلزمه باستخدام أحد الواجهة الخلفية كمزودي خدمة شيئًا
ترغب في العيش معه بسبب حقيقة أنك قمت بتقليل
وقت تطوير الواجهة الخلفية ويمكنك التركيز
بشكل أكبر على تقديم منتجك إلى السوق.
لذلك، إذا كنت تثق في مزود
BaaS، ثم يمكنك ببساطة الذهاب مع مزود BaaS المحدد ومن ثم لا تقلق كثيرا بشأن فقدان المرونة التي تنشأ بسبب ذلك.
مرة أخرى، كما قلت، ليس كل شيء يأتي مع
مزايا فقط، وهناك دائما مزايا وعيوب لأي نهج
تختاره لتطوير ونشر الخلفية الخاصة بك.
BaaS هو مجرد بديل واحد قد يكون النهج
الذي تختاره لتلبية الاحتياجات الخاصة بك.
وأخيرًا، بالطبع،
ليس كل BaaS يأتي بدون مجموعته الخاصة من متطلبات التدريب الإضافية.
إذا كنت بحاجة إلى استخدام أحد مزودي خدمات إدارة الخدمات،
بدلا من المربع الأسود، تحتاج إلى تعلم واجهة برمجة التطبيقات،
تحتاج إلى معرفة كيفية تكوينه،
تحتاج إلى معرفة كيفية تخصيص أجزاء منه إذا اخترت القيام بذلك، وهلم جرا.
وبالتالي فإن الجهد التدريبي الذي قضيته في تعلم
أطر محددة أو عامة مثل Express وقواعد البيانات مثل MongoDB،
بدلا
من ذلك سوف تنفق الوقت في تعلم خصوصياتهم من الخلفية كخدمة تختار استخدامها.
لذا، فهي مسألة أين تريد قضاء وقتك.
التدريب الإضافي سوف تشارك دائما،
إلا أنه مع مزود BaaS قد تكون قادرا على البدء
بسرعة أكبر من بناء الخلفية المخصصة الخاصة بك.
سوق BaaS مليء بعدد من الخيارات.
وبالفعل، تستمر هذه الخيارات في الازدياد يوما بعد يوم.
الآن عندما تذهب إلى سوق BaaS،
قد ترى بائعين تجاريين.
وفيما يلي قائمة صغيرة من البائعين التجاريين.
مرة أخرى، هناك المزيد والمزيد التي يتم إضافتها في اليوم إلى هذه القائمة،
ولقد أدرجت فقط مجموعة فرعية صغيرة منها.
بالطبع، إذا كان موفر BaaS المفضل لديك ليس في هذه القائمة، لا تلومني،
ربما أنا مجرد غير مدرك لهم أو ربما هم فقط
جديدة جدا في السوق ولذا أنا لم تأتي عبر لهم.
ولكن هنا قائمة من بعض البائعين التجاريين الذين يقدمون خدمات BaaS بالنسبة لنا. على
وجه الخصوص، سأركز على firebase،
والتي تقدمها Google.
في هذا الدرس، سوف نستكشف كيفية الاستفادة من firebase
بالتفصيل قليلاً في هذا الدرس في التدريبات التالية.
الآن، إذا كنت ترغب في الذهاب مع مزود مفتوح المصدر،
وهناك الكثير من البدائل مفتوحة المصدر التي تتوفر لنا،
بالطبع هناك سوف تحصل
على هذا البرنامج مفتوح المصدر ومن ثم بناء نهاية الخادم الخاص بك ونشرها.
باستثناء أنه سيأتي
ككيان معبأ مسبقًا يمكنك تكوينه ونشره بسرعة إلى الواجهة الخلفية.
سننظر إلى LoopBack كأحد الأمثلة على برنامج مفتوح المصدر
يمكن نشره بسرعة كبيرة لبناء الواجهة الخلفية الخاصة بك.
وكما قلت، المزيد والمزيد من الخيارات تأتي إلى السوق، يوما بعد يوم.
لذلك، يجب عليك استكشاف السوق غدا للعثور على مزودي خدمات إدارة الخدمات الجديدة؟
بكل الوسائل، فحص ما يتم توفيره من قبلهم،
أي نوع من الخدمات التي تقدمها.
هل ستلبي تلك الخدمات التي تقدمها متطلباتك ويمكنك
الاستفادة بسرعة من الخدمة التي تقدمها للوصول إلى السوق بسرعة.
لذا هذه هي القضايا التي سأتركك فيها خلال يوم واحد.
و كما قلت, ينبغي أن ننظر في
جميع البدائل الممكنة ثم نتخذ قراراتنا بشكل مستقل.
ولكن ما لم نكن على دراية بالبدائل، فلن نكون قادرين على اتخاذ خيارات مستنيرة.
لذلك هذا هو السبب في الدروس القليلة الماضية من هذه الدورة أنا تنفق
على استكشاف بعض الأمثلة من الخلفية كمقدمي الخدمات.