فايربيس هي منصة للمبرمجين وخصوصا مطوري التطبيقات تملكها قوقل @Google وهذا رابط المنصة firebase.google.com
الفرق الرئيسي والأساسي هو انك تحصل على الباكاند من فايربيس كخدمة backend as a service او #BaaS بدون ما تكتب ولا سطر كود خارج تطبيقك. هذا لا يعني انك راح تستغني بشكل كامل عن كتابة كود باكاند زي ما راح نشوف
طريقة البرمجة: تقوم بكتابة الكود الخاص فيك في التطبيق باستخدام ال client SDK من فايربيس والتي بدورها تتواصل اوتوماتيكيا مع فايربيس لعمل ال authentication.
عند تسجيل الدخول توفر لك فايربيس اوتوماتيكيا من خلال ال SDK اوبجيكت يمثل المستخدم بكل خصائصه.
لتسهيل ادارة صلاحيات المستخدمين access control يمكنك استخدام ما يسمى بال claims. مثلا يمكن اضافة خاصية admin يحث اذا كان المستخدم أدمن تكون هذه الخاصية true ويمكنك وضع levels of access لصلاحيات الأدمن.
١) جزئية الباكند مبرمجة لك بالكامل بحيث لا تقلق في قضية ادارة ال session وال tokens أو التواصل باستخدام بروتوكول OAuth.
٣) إضافة إلى كود الباكاند يوجد أيضا كود متكامل لواجهات تسجيل الدخول UI بإمكانك استخدامه في البداية على الأقل لتسريع عملية التطوير لديك.
٥) يمكنك عمل تسجيل مؤقت للمستخدم anonymous login بحيث لا تفقد بيانات المستخدم بين زيارة وأخرى
أي شخص برمج تطبيقات أو مواقع سابقا سيسأل السؤال التالي: كيف يمكن تأمين الوصول للموارد في الباكاند وخصوصا تأمين الوصول لقاعدة البيانات من الكلاينت مباشرة؟
ما هو الحل؟ ١) اختيار هيكل بيانات مناسب. مثلا أن يكون لديك إلى جوار الكوليكشن الرئيسي مجموعة من الكوليكشنز الأخرى بحيث لكل صنف كوليكشن.
فايرستور انتبهت لهذا الشيء ولذلك أ- صممت قاعدة البيانات بحيث لا تحتاج إلى مخطط او schema على عكس الوضع في SQL DB.
ب- كون وجود كلاود فنكشن أو كود يعمل اوتوماتيكيا في الفايربيس عند كل عملية تتم على دوكيومنت معينة أم عظيم.
ولكن مازلت أعتقد أنه من الممكن أن تكون خيارات الاستعلام أفضل في فايرستور. لماذا؟
راح نستعرض الحل هذا في وقت لاحق ان شاء الله
ماذا لو كان تطبيقك فريد من نوعه ويقدم خدمة جديدة أو يقدم نفس الخدمات السابقة ولكن بطريقة جديدة ومختلفة كليا؟
اذا كنت تحتاجها ضمن وظائف التطبيق وكانت الطريقة الأولى denormalization غير مقبولة نهائيا أو غير مفهومة فهنا أمامك خيارين.
ب) استخدام قاعدة بيانات مساندة لفايرستور واستخدام الكلاود فنكشن لعمل ال replication أو النسخ.
١) لا تستخدم منصة فايربيس (عدا خدمات معينة مفيدة في كافة الأحوال مثل ال analytics) اذا عندك تطبيق معتاد ومعمول مثله الكثير من قبل مثل المتجر الالكتروني.
٣) استخدم قاعدة بيانات مساندة لفايرستور وانا أرشح elasticsearch للبحث والفلترة باستخدام خدمة appbase.io و bigqyery مع قوقل ستوديو للتحليلات analytics>
١- فايرستور تحاسبك 💸 ب (١) حجم البيانات المخزنة + (٢) عدد مرات القراءة والكتابة وهي عادة التكلفة الأكبر + (٣) حجم الباندويدث (البيانات) الخارج للزوار أو مستخدمي التطبيق. firebase.google.com/pricing#blaze-… يمكنك البدء مجانا حتى حد معين (سخي) حسب الشرح في الرابط
غالبا لن تكون بحاجة إلى الكلاود الفنكشنز خصوصا في بداية تطوير التطبيق. ولكن سيأتي عليك وقت ستضطر فيه إلى كتابة كلاود فنكشنز وذلك لسببين رئيسيين.
١- بعد فترة راح تلاحظ ان مشروعك عبارة عن مجوعة من الفنكشنز (أو الخدمات الصغيرة microservices) كل وحدة تؤدي غرض معين بشكل مستقل عن بقية الفنكشنز مما يسهل الكتابة والصيانة.