Coding Gun

Firebase คืออะไร?

Firebase คือ Cloud service ที่ให้บริการ Backend หลังบ้าน ผู้พัฒนาจะพัฒนาแค่ Mobile application หรือ Single Page Application ด้วย Angular, React หรือ Vue แค่นั้น

Firebase พยายามลดขั้นตอนการพัฒนา Web และ Mobile application ให้สั้นลง โดยพยายามนำงานที่ต้องทำซ้ำๆกันมาเป็นบริการที่เราสามารถเรียกใช้ได้ทันที ซึ่งจะช่วยให้ developer focus กับการพัฒนา application ให้ตอบโจทย์ทางธุรกิจมากขึ้น

Firebase มี services อะไรบ้าง?

Firebase มี service ที่ให้บริการอยู่หลายตัวมากๆ ซึ่งบริการหลักๆของ Firebase ประกอบด้วย

Authentication

ในทุกๆ application จำเป็นต้องมีการ authentication แน่นอน ดังนั้น Firebase จึงนำ authentication มาเป็นส่วนหนึ่งใน Firebase ซึ่งถ้าเราจะทำการ Authen Firebase ได้เตรียมทางเลือกไว้ 2 วิธีด้วยกันคือ

1. Firebase UI

Firebase จะเตรียมหน้า Authentication Workflow มาให้ดังนั้นเราแค่นำ FirebaseUI เข้าไปใส่ใน application Firebase จะทำหน้าที่จัดการเรื่อง authentication ให้เราเอง วิธีนี้จะเรียกว่า Drop-in authentication ซึ่งตอนนี้จะ support แค่ iOS, Android และ Web เท่านั้น

2. Firebase SDK

แต่ถ้าต้องการให้ application ของเราจัดการเรื่อง authentication เองทั้งหมดให้ ใช้ Firebase SDK ซึ่งจะแยกวิธีการ authentication ได้หลายแบบดังนี้

การใช้ Firebase SDK นั้น support ทั้ง iOS, Android, Web, C++ และ Unity

ราคาของ Authentication

เราสามารถใช้งาน Firebase Authentication ได้ฟรีโดยที่มีข้อจำกัดดังนี้

Realtime database

ฐานข้อมูลก็เป็นอีกหนึ่งหัวใจของการใช้ Firebase เนื่องจาก database ของ Firebase ทำงานแบบ realtime ดังนั้น solution ที่เหมาะกับ Firebase คือ Application ที่ต้องการความเป็น realtime เช่น การ booking ตั๋ว หรือ realtime monitoring

ฐานข้อมูลของ Firebase จะเป็น NoSQL โดยจะเก็บข้อมูลเป็น JSON Tree เมื่อมีการเปลี่ยนแปลงใดๆเกิดขึ้นกับ database ตัว client ที่ connect กับ database นี้ทุกๆตัวจะได้รับการเปลี่ยนแปลงนี้ทันที(realtime)

ราคาของ Realtime Database

เราสามารถใช้งาน Realtime Database ได้ฟรีโดยมีข้อจำกัดดังนี้

Hosting

เราสามารถนำไฟล์ HTML,CSS,JavaScript และอื่นๆ ขึ้นไปไว้บน Firebase hosting ได้เหมือนกับ web server ที่เราใช้บริการ แต่จะไม่รองรับภาษาฝั่ง server-side ทั้งหลาย นั่นคือถ้าเรามี content ที่เป็น static เราสามารถนำไป host อยู่บน Firebase Hosting ได้

ข้อดี ของการใช้ Firebase Hosting คือเราจะมี CDN และ SSL ให้ใช้แบบฟรี และไม่ต้องปวดหัวกับการ scale

ราคาของ Firebase Hosting

เราสามารถใช้บริการของ Firebase Hosting ได้ฟรีโดยมีข้อจำกัดดังนี้

Cloud Functions

เป็นบริการแบบ Funtion as a Service(FaaS) ซึ่งจะคิดราคาตามปริมาณการ execute functions นั้น(ถ้าไม่มีการใช้งานก็ไม่ต้องจ่าย)

ซึ่งใน Firebase เราจะต้องใช้ Cloud Functions ใน 2 กรณีคือ

  1. เมื่อเราต้่องการสร้าง Logic อยู่บนฝั่ง server เนื่องจาก Mobile Application สามารถทำ Reverse Engineering ได้
  2. เมื่อเราต้องการให้เปลี่ยนแปลง Function แล้วมีผลกับทุกๆ Client(เราไม่สามารถบังคับให้ user ทุกคน update Mobile App ได้)
  3. สร้าง Triggers เพื่อทำงานอัตโนมัติ ซึ่งจะเหมือนกับที่เราใช้ trigger ใน database ทั่วไป ส่วนใหญ่เราต้องสร้าง Cloud Functions เพื่อรักษาความถูกต้องของข้อมูล

ตัวอย่างการใช้งาน Cloud Functions

ราคาของ Cloud Functions

เราไม่สามารถใช้ Cloud Functions ด้วย Spark plan(Free plan) ได้เราต้องใช้ Blaze Plan(คิดค่าใช้จ่ายตามปริมาณการใช้งาน) ด้วยความที่เป็น Function as a service(FaaS) เราจึงจ่ายเมื่อใช้งาน functions นี้เกิน 2 ล้านครั้ง/เดือน หลังจากนั้นคิด 0.4 usd หรือประมาณ 15 บาท/ 1 ล้าน executions

และนอกจากนี้ Google ยังคิดค่า Compute ระหว่างที่ Cloud Functions ทำงาน โดยจะคิดตามขนาดของ CPU และ Memory ที่ใช้ ถ้าใช้หน่วยประมวลผลเยอะและกิน memory เยอะราคาก็จะแพง ดูตารางราคาได้ที่นี่

Cloud Storage for Firebase

คือบริการพื้นที่สำหรับเก็บข้อมูลสำหรับเก็บไฟล์รูปภาพ, ไฟล์เสียง, video และอื่นๆ ซึ่ง Cloud storage จะถูกจำกัดสิทธิของการอ่านเขียนตาม user ที่ authen เข้ามาทาง Firebase Authentication และ Firebase ยังดูแลเรื่องของ

Cloud Firestore

Cloud Firestore เป็น Database as a Service(DaaS) คือเราสามารถสร้าง database server ขึ้นมาใช้งานได้โดยที่เราไม่ต้องดูแล infrastructure

ซึ่งมีคุณสมบัติของ Cloud Firestore มีดังนี้

ราคาของ Cloud Firestore

เราสามารถใช้งาน Cloud Firestore ได้ฟรีโดยมีข้อจำกัดดังนี้

Firebase ML

เป็นเครื่องมือที่ช่วยให้เราสร้าง Machine Learning(ML) ได้ง่ายขึ้น ซึ่ง service ที่ให้บริการจะเป็น Machine Learning แบบสำเร็จรูปเราสามารถ upload data ขึ้นไปใน Firebase ML เพื่อให้ Firebase ML สร้าง Model ขึ้นมาให้เรา โดยที่เราไม่จำเป็นต้องรู้จัก Deep Learning หรือ Neural Networks เลย

และไม่ใช่แค่มือใหม่เท่านั้นสำหรับคนที่มี Tensor Flow Lite Model อยู่แล้วก็สามารถ upload ขึ้นไปใช้งานบน Firebase ML ได้เช่นเดียวกัน

ราคาของ Firebase ML

เราสามารถ Upload Tensor Flow Model ขึ้นไปใช้งานบน Firebase ML ได้__ฟรี__

แต่ถ้าต้องการใช้งาน Cloud Vision API เราต้่องใช้ Blaze plan(คิดค่าใช้จ่ายตามปริมาณการใช้งาน) เท่านั้น ซึ่งถ้าเราใช้่ Blaze plan เราจะสามารถใช้ Cloud Vision API ได้ 1000 ครั้ง/เดือน

ข้อดีและข้อเสียของ Firebase

จากที่เรารู้จักกับ services ต่างๆของ Firebase แล้ว ลองมาดูข้อดีและข้อเสียของการใช้งาน Firebase กันบ้าง

ข้อดีของ Firebase

  1. เราสามารถสร้าง backend ได้อย่างรวดเร็ว
  2. สามารถ Focus เฉพาะการทำงานของ Front-end อย่างเดียว
  3. ไม่ต้องเรียนรู้ภาษาหรือ Framework ฝั่ง server-side
  4. ใช้ Realtime database เพื่อตอบโจทย์ application ที่ต้องการข้อมูลแบบ realtime
  5. รองรับการ scale แบบอัตโนมัติ(Firebase เป็น Serverless)
  6. สามารถเลือกวิธีการ Authentication ได้หลายแบบ
  7. มี Crashlytics ที่ช่วยแจ้งเตือนเมื่อ service ของเราไม่ทำงาน
  8. มี Test Lab สำหรับทดสอบการทำงานร่วมกับ Mobile Application
  9. มี Firebase Cloud Messaging(FCB) สำหรับทำ Push notification บน Mobile
  10. มี Google Analytics สำหรับ Monitor ปริมาณการใช้งานของ user
  11. มี Firebase Performance สำหรับการ Monitor การทำงานของ service ที่เราสร้างขึ้น
  12. มี Firebase A/B Testing เพื่อดูผลกระทบที่เกิดขึ้นจากการ update version ได้ โดยเราสามารถ define กลุ่มของ user ขึ้นมาแต่ละกลุ่มจะเห็น application คนละ versions หลังจากนั้นเราจะใช้ข้อมูลจาก Google Analytics มาเปรียบเทียบว่า version ไหนดีกว่ากัน

ข้อเสียของ Firebase

หลังจาก list ข้อดีของ Firebase มาอย่างมากมาย เราลองมาดูข้อเสียของ Firebase กันบ้าง

  1. เราไม่สามารถย้าย data ออกไปยัง database อื่นๆได้
  2. เราไม่สามารถสร้าง query ที่ซับซ้อนมากๆได้
  3. เหมาะกับงานที่ไม่ได้ซับซ้อนมากนัก
  4. การพัฒนาด้วย Firebase SDK จะยึดติดกับ Firebase มากๆ(เปลี่ยน backend ไม่ได้)
  5. Support Android มากกว่า iOS
  6. ไป integrate กับ Business Intelligence(BI) ได้ยาก
  7. Firebase เป็น NoSQL ดังนั้นเราต้องจัดการเรื่อง transactions และความถูกต้องของข้อมูลเอง
  8. ไม่รองรับ Microservices Architecture
  9. ค่าใช้จ่ายจะสูงเมื่อ Application มีขนาดใหญ่ขึ้น

วิธีใช้ Firebase

การทำงานกับ Firebase คุณต้องรู้จักกับ Firebase SDK

Firebase SDK

เราสามารถใช้ Firebase SDK ในการคุยกับ Firebase ซึ่ง Firebase SDK มีให้เลือกหลายทางเลือกดังนี้

ตัวอย่างของการใช้ Firebase JavaScript SDK มีขั้นตอนในการนำไปใช้งาน ดังนี้

  1. ติดตั้ง firebase sdk

    $ npm i --save firebase
    
  2. import firestore module เข้าไปก่อน

    import { initializeApp } from 'firebase/app';
    
  3. Setup configuratin

    const firebaseConfig = {
        apiKey: 'FIREBASE API KEY',
        authDomain: 'FIREBASE AUTH DOMAIN',
        projectId: 'CLOUD FIRESTORE PROJECT ID'
    };
    
    const app = initializeApp(firebaseConfig);
    

เริ่มต้นสร้าง Project ใน Firebase

ก่อนอื่นเราต้องเข้าไป Sign-in ด้วย Google account เพื่อเข้าใช้งาน Firebase โดยเข้าไปที่ https://console.firebase.google.com

หลังจากนั้นเราจะเข้าสู่หน้าแรกของ Firebase สร้าง Project ขึ้นมาใหม่ โดยจะมีขั้นตอนต่างๆ ดังนี้

Create new firebase project
ตั้งชื่อ Project ให้กับ Firebase

Create new firebase project
Enable Google Analytics

เราต้อง Enable Google Analytics เพื่อให้ส่งพฤติกรรมการใช้งาน Firebase Application เข้าไปเพื่อวิเคราะห์พฤติกรรมของ User

Create new firebase project
เลือก Account ของ Google Analytics

หลังจากนั้นเราจะเข้าสู่หน้า console ซึ่งจะมี services ต่างของ firebase ให้เราเลือกใช้บริการ

Firebase console

อ่านบทความอื่นๆเกี่ยวกับ Firebase ต่อได้ที่นี่

Phanupong Permpimol
Follow me

Software Engineer ที่เชื่อในเรื่องของ Process เพราะเมื่อ Process ดี Product ก็จะดีตาม ปัจจุบันเป็นอาจารย์และที่ปรึกษาด้านการออกแบบและพัฒนา Software และ Web Security