في هذا المقال، سنتحدث عن واحد من أنجح المنتجات التي تقدمها جوجل للمطورين، وهو Firebase، الذي يعد جزءًا من منصة جوجل السحابية (Google Cloud Platform). سنناقش Firebase من عدة نواحٍ، سواء من حيث سهولة الاستخدام، المنتجات التي يقدمها، أو نموذج التسعير الذي يتبعه.
لماذا يختار المطورون Firebase؟
لنبدأ بالأمر الرئيسي لدى Firebase: المستخدمون المستهدفون، وهم المطورون. لماذا يفضل المطورون استخدام Firebase على منصات الحوسبة السحابية الأخرى؟ ولماذا لا يتجهون مباشرة إلى Google Cloud، الذي يُعد Firebase واجهة له؟
Firebase مبني أساسًا على Google Cloud وهو جزء منه، ولكن من وجهة نظري، صُمم Firebase مع الأخذ في الاعتبار المطورين أثناء التصميم، وخاصة المطورين المبتدئين. أثناء التطوير، تجد أن الأدوات كلها مصممة لتساعدك على إنشاء المنتج ورفعه إلى بيئة الإنتاج بأسرع وقت ممكن.
الفكرة من الحوسبة السحابية هي توفير بنية تحتية خلفية (Backend) مستضافة في مكان آخر، مما يريحك من عناء الاستضافة، ويوفر خدمات إضافية لتركيبها على هذه البنية. لكن الفكرة الرئيسية من Firebase هي أنه يقدم لك بنية تحتية بسيطة وموجهة للمشاريع الصغيرة نسبيًا، وغالبًا ما تكون موجهة لتطبيقات الموبايل.
عندما بدأ Firebase، كان يركز بشكل أساسي على الموبايل، ثم أضاف دعمًا للويب لاحقًا، ولكني ما زلت أعتبر دعمه للويب ثانويًا. لا يزال تفكيرهم وتركيزهم منصبًا على تطبيقات الموبايل. ما يميزه عن غيره هو بساطة الإعداد وتوجهه نحو تجربة تطوير بسيطة.
يوجد منافس مباشر لـ Firebase مقدم من أمازون على AWS يُدعى Amplify، وهو يتبع نفس الفكرة، ويمكننا الحديث عنه لاحقًا.
قوة المكتبات الخاصة بالعميل (Client Libraries)
برأيي، السبب الرئيسي لتوجه المطورين لاستخدام Firebase هو المكتبات الخاصة بالعميل (Client Libraries) التي يقدمها. هذه المكتبات لا تقتصر على الاتصال بقاعدة البيانات فقط، بل تعالج أيضًا العديد من الأمور من جانب العميل. على سبيل المثال، إذا كانت قاعدة البيانات تحتاج إلى تخزين مؤقت (Caching)، فإن المكتبة تقوم بذلك نيابة عنك. وإذا كنت تستخدم خدمة التخزين (Storage)، فالمكتبة تتولى الأمر. إنهم يستثمرون بكثافة في هذه المكتبات.
مع ظهور أي تقنية أو إطار عمل جديد مثل React، View، React Native، أو Flutter، يبدأ مجتمع المطورين الخاص بهذه التقنية في تطوير مكتبة لـ Firebase. ولكن بعد فترة قصيرة، تتدخل Firebase نفسها وتبدأ بالتنسيق مع مطوري المصادر المفتوحة وتقدم لهم دعمًا ماديًا كبيرًا. هذا النمط تكرر كثيرًا.
- React Native: المكتبة الخاصة بها،
react-native-firebase
، تطورها شركة خارجية بتعاون ودعم مباشر من Firebase. - Vue: الشخص الذي كتب مكتبة بسيطة لتعمل Firebase مع Vue، حصل على دعم لاحقًا وأصبحت المكتبة رسمية تقريبًا.
- Flutter: التكامل مع Firebase في Flutter هو تكامل من الدرجة الأولى (First-party) بالتعاون مع مجتمع المصدر المفتوح.
تدرك Firebase أن نقطة قوتها الرئيسية هي هذه المكتبات القوية والتكامل السريع، ولذلك تستثمر فيها بشكل كبير. على سبيل المثال، في React، تتوفر وظائف Firebase على شكل Hooks، مما يسهل استخدامها بشكل كبير. يمكنك استيراد دالة والبدء في استخدامها مباشرة دون الحاجة إلى كتابة أغلفة (Wrappers) بنفسك.
التجربة مشابهة جدًا في تطوير تطبيقات الموبايل، حيث يقدمون مكتبات قوية وبسيطة جدًا. الإعداد بسيط للغاية: تقوم بتنزيل ملف تهيئة من لوحة التحكم، تضعه في مشروعك، تثبّت المكتبة، وتبدأ في استخدام الخدمات فورًا.
نظرة على أبرز منتجات Firebase
1. المصادقة (Authentication)
تعتبر خدمة المصادقة من أقوى الخدمات. فبمجرد استدعاء دالة واحدة، يمكنك تفعيل المصادقة أو التعامل مع قواعد البيانات. الواجهة البسيطة موجودة لمطوري الموبايل والويب على حد سواء.
تخيل حجم العمل الذي يوفره عليك Firebase في التعامل مع حالات المصادقة المعقدة، مثل التعامل مع Access Token
وتحديثه، ومعالجة تسجيل الخروج. إذا حاول مطور بناء هذا النظام بنفسه دون خبرة عميقة، فمن المرجح أن يترك ثغرات أمنية. Firebase يقدم واجهة برمجية (API) واضحة وبسيطة. كل ما عليك هو تزويده ببيانات المستخدم، وهو يتولى الباقي، بما في ذلك:
- تخزين التوكن في مكان آمن على الجهاز.
- تحديث التوكن عند انتهاء صلاحيته.
- إبطال التوكن عند تسجيل الخروج.
كل هذا يتم عبر ثلاث أو أربع دوال بسيطة مثل createAccount
, login
, signOut
.
دعم مقدمي الخدمات (Providers): يدعم Firebase مجموعة واسعة من مقدمي خدمات المصادقة مثل Google، Facebook، Twitter، Apple، GitHub، وMicrosoft. يمكنك تفعيل المصادقة عبر جوجل بحرفية عبر تفعيل خيار واحد في لوحة التحكم. كما يدعم طرقًا أخرى مثل تسجيل الدخول عبر رابط البريد الإلكتروني (Passwordless sign-in).
2. التخزين السحابي (Cloud Storage)
يوفر Firebase خدمة تخزين للملفات مثل الصور والفيديوهات. الميزة المشتركة بين خدمات Firebase مثل التخزين وFirestore هي قواعد الأمان (Security Rules). هذه القواعد هي خط الدفاع الوحيد الذي يمنع الوصول غير المصرح به للبيانات. وهي قوية جدًا وتمنحك تحكمًا دقيقًا في الوصول. يمكنك السماح للمستخدم بالوصول فقط إلى البيانات التي أنشأها، أو تحديد مجلدات معينة يمكنه الوصول إليها.
ملاحظة على التكلفة: خدمة التخزين في أي منصة سحابية هي من أغلى الخدمات. في تجربتي الشخصية، قمت باستخدام Cloud Storage لتخزين صور رمزية (Avatars) عالية الجودة لتطبيق. على الرغم من أن عدد المستخدمين الذين يصلون لهذه الميزة لم يكن كبيرًا، إلا أن الفاتورة الشهرية وصلت إلى 25 دولارًا، معظمها بسبب تكلفة حركة البيانات (Traffic). اضطررت في النهاية إلى نقل الصور إلى مستودع عام على GitHub لخفض التكلفة إلى الصفر. لذا، يجب الانتباه إلى أن تسعيرة Cloud Storage مرتفعة.
3. قواعد البيانات: Firestore و Realtime Database
لدى Firebase خدمتا قواعد بيانات رئيسيتان:
- Realtime Database: المنتج الأقدم، ولا يزال مدعومًا.
- Firestore: المنتج الأحدث والأكثر شيوعًا واستخدامًا للمشاريع الجديدة.
تعتبر Google أن كلا المنتجين يغطيان احتياجات مختلفة، لكن يتفق معظم المطورين على أن Firestore يغطي معظم حالات الاستخدام، خاصة أنه أتى بميزات حقيقية مثل الفهرسة (Indexing) المتقدمة وخيارات متقدمة للفرز والفلترة. يمكن اعتبار Firestore نسخة “معززة” من Realtime Database.
مثال عملي على Firestore: بما أن Firestore هي قاعدة بيانات NoSQL، فإن البيانات قد تكون مكررة في أكثر من مكان. لنفترض أن لديك قائمة تعليقات، وكل تعليق يحتوي على اسم المستخدم الذي كتبه. إذا قام المستخدم بتغيير اسمه، ستحتاج إلى المرور على جميع تعليقاته وتحديث اسمه. هنا يأتي دور Cloud Functions. يمكنك إنشاء دالة سحابية يتم تشغيلها تلقائيًا عند تعديل بيانات مستخدم ما، وتقوم هذه الدالة بتحديث اسمه في جميع التعليقات المرتبطة به.
ميزة السرعة في Firestore: من الميزات الرائعة في Firestore أن سرعة جلب مستند واحد (Document) تساوي تقريبًا سرعة جلب 100 مستند أو حتى 1000 مستند. السبب هو استخدام الفهارس والبحث الثنائي (Binary Search) لتنفيذ الاستعلامات، مما يجعل سرعة الحوسبة للاستعلام ثابتة تقريبًا بغض النظر عن حجم البيانات المطلوبة (مع الأخذ في الاعتبار وقت التنزيل).
4. الدوال السحابية (Cloud Functions)
هي عبارة عن دوال تعمل على الخادم عند وقوع حدث معين. يمكنك اعتبارها واجهة برمجية خلفية (Backend API). تعمل Cloud Functions على Google Functions وهي مبنية على الأرجح على Express.js.
طرق تشغيل الدوال السحابية:
- استدعاء مباشر (HTTP Trigger): عبر استدعاء RESTful API.
- الارتباط بحدث (Event Trigger): يمكن ربط الدالة بأحداث تقع في خدمات Firebase الأخرى.
- مثال: عند إضافة صورة جديدة إلى مجلد في Cloud Storage، يمكن تشغيل دالة سحابية لضغط هذه الصورة وتخزينها في مجلد آخر.
- مثال آخر: عند إضافة أو تعديل أو حذف مستند في Firestore، يمكن تشغيل دالة لتنفيذ منطق معين.
تدعم Cloud Functions حاليًا لغتي Node.js (JavaScript) و Python.
منتجات أخرى في منظومة Firebase
- Firebase Analytics: مبني على Google Analytics الشهير، وهو عمليًا نفس الخدمة بواجهة مكتبة عميل أبسط. استخدام التحليلات بفعالية لاتخاذ قرارات يتطلب خبرة، والمصادر التعليمية المتقدمة في هذا المجال نادرة.
- Crashlytics: أداة لتتبع الأعطال (Crashes) في تطبيقات الموبايل. توفر تقارير مفصلة عن الأعطال، بما في ذلك تتبع استدعاءات الدالة (Call Stack)، مما يساعد في تحديد مكان الخطأ وإصلاحه.
- Remote Config و A/B Testing:
- Remote Config: يسمح لك بتغيير سلوك ومظهر تطبيقك عن بعد دون الحاجة لنشر تحديث جديد. يمكنك اعتباره ملف JSON يمكنك التحكم فيه من لوحة التحكم.
- A/B Testing: بدمج Remote Config مع Analytics، يمكنك إجراء اختبارات A/B. على سبيل المثال، يمكنك عرض أسعار مختلفة لشرائح مختلفة من المستخدمين وقياس أي سعر يحقق أعلى إيرادات.
- Hosting: خدمة استضافة للمواقع، لكنها تركز بشكل كبير على المواقع الثابتة (Static Hosting). تفتقر إلى ميزات متقدمة موجودة في منصات مثل Vercel، مثل التعرف التلقائي على إطار العمل المستخدم ونشره.
- Cloud Messaging (FCM): خدمة لإرسال الإشعارات الفورية (Push Notifications) لمستخدمي Android و iOS. حاليًا، هي الطريقة الإلزامية لإرسال الإشعارات لتطبيقات أندرويد.
- In-App Messaging: لإرسال تنبيهات للمستخدمين داخل التطبيق نفسه على شكل مربعات حوار (Dialogs).
- Firebase Extensions: دوال سحابية مكتوبة مسبقًا يمكنك إضافتها لمشروعك لتنفيذ مهام شائعة. تعتمد بشكل كبير على مساهمات المجتمع.
- Genkit و Data Connect (منتجات جديدة):
- Genkit: إطار عمل لتسهيل بناء تطبيقات الذكاء الاصطناعي والتواصل مع نماذج اللغة الكبيرة (LLMs) مثل Gemini و OpenAI.
- Data Connect: يوفر قاعدة بيانات SQL (تستخدم PostgreSQL) كخيار ثالث بجانب قواعد بيانات NoSQL، لتلبية احتياجات المطورين الذين يفضلون SQL.
لوحة التحكم (Firebase Console)
مقارنة بمنصات الحوسبة السحابية الأخرى مثل AWS و Azure، تعتبر لوحة تحكم Firebase سهلة جدًا ومصممة للمبتدئين والفرق الصغيرة. واجهة AWS، على سبيل المثال، معقدة للغاية وتتطلب خبرة كبيرة لإدارتها، بينما واجهة Firebase بسيطة ومباشرة لأن عدد منتجاتها محدود وموجهة لهدف واضح.
المنافسون
- AWS Amplify: محاولة من أمازون لمنافسة Firebase في نفس الشريحة. على الرغم من أنه جذب شريحة من المستخدمين، إلا أنني شخصيًا لم أفضله بسبب اعتماده على توليد الكود (Code Generation) وإضافته مباشرة إلى مشروعك، وهو أمر يسبب مشاكل صيانة.
- Supabase: منافس مباشر ومشروع مفتوح المصدر يحاول استنساخ نموذج Firebase. لقد أثبت نفسه وبدأت مشاريع حقيقية في استخدامه. يقدم خدمات مشابهة (قاعدة بيانات، تخزين، مصادقة) لكنه مبني على PostgreSQL. مشكلته الرئيسية هي أنك تحتاج غالبًا إلى استضافته لديهم، وتسعيرتهم ليست رخيصة.
مشكلة “التقييد بالبائع” (Vendor Lock-in)
الحوسبة السحابية بطبيعتها هي “سجن”. بمجرد بناء مشروعك على منصة مثل Firebase، يصبح الانتقال منها صعبًا ومكلفًا للغاية. ستكون قد بنيت الواجهة الأمامية (Frontend) معتمدًا بشكل كبير على مكتبات العميل الخاصة بهم، مما يعني أن الانتقال يتطلب إعادة بناء أجزاء كبيرة من مشروعك، وليس فقط البنية التحتية الخلفية.
على الرغم من أنه نظريًا يمكن تصميم المشروع بطريقة تفصل الاعتمادية (Dependency Injection)، إلا أن هذا يتعارض مع الهدف الأساسي لاستخدام Firebase، وهو السرعة والبساطة والاستفادة من الميزات الجاهزة التي يقدمها.
نموذج التسعير (Pricing)
تسعير Firebase مصمم بطريقة لا تبدأ في الدفع حتى يبدأ تطبيقك في تحقيق الربح. هناك حصة مجانية (Free Tier) سخية لمعظم الخدمات.
- نموذج الدفع:
Pay-as-you-go
، أي أنك تدفع فقط مقابل ما تستخدمه. - عوامل التسعير:
- الحوسبة (Compute): الوقت المستغرق في تشغيل الكود.
- التخزين (Storage): المساحة التي تستهلكها ملفاتك.
- حركة البيانات (Traffic): حجم البيانات المنقولة من وإلى الخوادم.
- عمليات القراءة/الكتابة/الحذف: في Firestore، تتم محاسبتك على عدد المستندات التي تقرأها أو تكتبها أو تحذفها، بغض النظر عن حجمها.
تقدير التكلفة: من الصعب جدًا تقدير التكلفة الشهرية مسبقًا. تعتمد الفاتورة بشكل كبير على طبيعة مشروعك وكيفية استخدامه. كتقدير تقريبي جدًا، قد تبدأ فاتورتك في الوصول إلى 25-30 دولارًا شهريًا عندما يصل عدد مستخدميك إلى حوالي 150,000 - 200,000 مستخدم نشط شهريًا.
خلاصة
Firebase هي أداة قوية للغاية لبناء تطبيقات (خاصة الموبايل) بسرعة وكفاءة، وهي مثالية للمشاريع الصغيرة والمتوسطة والفرق الصغيرة. توفر تجربة تطوير ممتازة ومجموعة متكاملة من الأدوات. ومع ذلك، يجب أن تكون على دراية بتكلفتها المحتملة ومشكلة التقييد بالبائع قبل أن تلتزم بها في مشروعك.