ทำความรู้จัก Firebase และผลิตภัณฑ์ต่าง ๆ ในช่วงต้นปี 2019 กัน

Sirawit Sek
5 min readJan 11, 2019

--

Hello, Firebase!

ขณะที่เขียนบทความนี้ (December 2018) Firebase ได้เปิดตัวมานานกว่า 7 ปีแล้ว (September 2011) แต่ถึงอย่างนั้นตัวผมนั้นก็รู้จัก Firebase เพียงบางส่วนเท่านั้น จึงถือโอกาสวันหยุดช่วงปีใหม่นี้ศึกษามันใหม่ (ลองเองบ้าง รวบรวมจากที่อื่นบ้าง) เพื่อใช้ประกอบการพิจารณาการพัฒนาชิ้นงานต่าง ๆ และเขียนสรุปไว้ดังนี้

วิดิโอแนะนำ Firebase ภาพจาก (วิดิโอจาก https://firebase.google.com)

Firebase คืออะไร

เมื่อค้นหาคำว่า Firebase ใน Google จะพบคำอธิบายว่า

“Firebase is Google’s mobile platform that helps you quickly develop high-quality apps and grow your business”

ผลลัพธ์เมื่อค้นหาคำว่า “Firebase” บน Google (แหนะ ดันรู้อีกว่าเข้าเว็บบ่อย)

แต่ในความเข้าใจของผม ผมคิดว่า Firebase คือ…

“Back-end as a Service (BaaS)”

หรือบริการที่เกี่ยวกับด้าน Back-end ต่าง ๆ

หากเปรียบซอฟแวร์เป็นร้านอาหาร
ส่วนหน้าร้านก็คือ Front-end ส่วนห้องครัวก็คือ Back-end

เหมาะกับใคร

เหมาะกับคนที่ทำ Front-end (โดยเฉพาะ Mobile App) แล้วอยากเชื่อมต่อกับ Back-end แต่ไม่อยากทำ Back-end เอง เช่น เช่าเซิฟเวอร์เอย ติดตั้งโปรแกรมเอย ตั้งค่าการเชื่อมต่อต่าง ๆ เอย ไหนจะเรื่องความปลอดภัยอีกล่ะ เป็นต้น ซึ่ง Firebase ได้จัดการสิ่งเหล่านี้ให้เรียบร้อยแล้ว อีกทั้งความสามารถอื่น ๆ อีกมากมายที่ช่วยเพิ่มประสิทธิภาพและคุณภาพให้กับงานโดยที่คุณอาจไม่คาดคิด เช่น รายงานข้อผิดพลาดเอย ข้อมูลสถิติผู้ใช้งานเอย ระบบทดสอบเอย เป็นต้น

ผลิตภัณฑ์ต่าง ๆ ของ Firebase

Firebase มีผลิตภัณฑ์ทั้งหมดถึง 18 อย่างและแบ่งออกเป็น 3 หมวดหมู่ ดังนี้

  1. Build better apps มีทั้งหมด 7 ผลิตภัณฑ์ ได้แก่

1.1. Realtime Database คือบริการฐานข้อมูล NoSQL ใช้วิธีการเก็บข้อมูลเป็น JSON Tree ขนาดใหญ่ และสามารถ Sync สถานะข้าม Client ได้แบบ Realtime กล่าวคือ หากเชื่อมต่อ Database เดียวกัน 2 ที่ เมื่อใดที่ที่นึงมีการอัพเดตข้อมูล อีกที่นึงก็จะมีการอัพเดตข้อมูลให้เหมือนกันโดยอัตโนมัติ และสามารถทำงานแบบ Offline ได้บนแอป Android และ iOS

1.2. Authentication คือบริการตรวจสอบผู้ใช้ โดยสามารถตรวจสอบได้หลายวิธี เช่น Email/Password, เบอร์โทรศัพท์, บัญชี Google, Facebook, Twitter, Github เป็นต้น มีฐานข้อมูลเป็นของตัวเองไม่ต้องสร้างใหม่หรือออกแบบวิธีการเก็บซึ่ง สามารถดูได้ว่าสมัครด้วยวิธีไหน สมัครเมื่อไหร่ และเข้าใช้ระบบครั้งล่าสุดเมื่อไหร่

1.3. Hosting คือบริการฝากไฟล์ static เช่น HTML, CSS, JS, JPG(ไม่รองรับ PHP ซึ่งเป็น Dynamic) เพื่อให้คนอื่น ๆ เข้าใช้งานเว็บของเราได้ มักนิยมใช้ในการฝากไฟล์ที่ได้จากการ Build ของ JavaScript Framework ต่าง ๆ เช่น Angular, React, Vue สังเกตว่าจะได้ไฟล์ HTML, CSS, JS ต่าง ๆ ตามที่ได้บอกไว้ข้างต้น หรือจะเป็นไฟล์ที่เขียนเองก็ได้ ไม่จำเป็นต้องใช้ Framework ก็ได้เหมือนกัน อีกทั้งมี CDN และ SSL มาด้วยแบบฟรี ๆ เพื่อให้ผู้ใช้ของคุณได้รับประสบการณ์การใช้งานที่ปลอดภัยเชื่อถือได้และไม่มีความล่าช้าแม้ว่าจะอยู่ที่ไหนก็ตาม ปล.​ ทุกเว็บมี Domain Name ของ Firebase ให้อัตโนมัติ แต่เปลี่ยนมาใช้ของตัวเองได้

1.4. Cloud Functions คือบริการสำหรับ Deploy Function ที่พัฒนาด้วย JavaScript หรือ TypeScript เพื่อทำงานตาม Tigger (คล้าย ๆ event) ที่เกิดขึ้นบน Firebase เช่น ถ้า Database ถูกเขียน (Realtime Database Triggers) ให้ Function เราส่ง Notification แจ้งไปบอกเราด้วย หรือ มีการเรียนมาที่ HTTP Endpoint (HTTP Triggers) ให้ Function เราคืนค่า HTML กลับไป (ใช้ทำ REST API) หรือ ถ้าแอปมีปัญหา (Crashlytics Triggers) ให้ส่งข้อความแจ้งเตือนไปที่ Slack

ปล. กรณีใช้งานฟรี จะไม่สามารถเชื่อมต่อไปยัง API ข้างนอกที่ไม่ใช่ Google ได้

1.5. Cloud Storage คือบริการเก็บไฟล์รูปภาพ, ไฟล์เสียง, วิดีโอ เพื่อใช้บน Application เช่น รูปภาพประจำตัวสมาชิก, วิดิโอสอนการใช้งานโปรแกรม เป็นต้น

1.6. Cloud Firestore (Beta) คือ Realtime Database รุ่นใหม่มาพร้อมการค้นหาและการปรับขนาดอัตโนมัติที่มีประสิทธิภาพมากขึ้น ปรับปรุงวิธีการเก็บข้อมูลใหม่เป็น Collections และสามารถทำงานแบบ Offline บน Web ได้อีกด้วย (จากเดิมทำได้แค่บน Android และ iOS)

1.7. ML Kit (Beta) คือ Machine Learning SDK ที่ช่วยให้แอปมือถือสามารถใช้ความสามารถของ ML ได้ง่ายยิ่งขึ้น สามารถทำงานได้ทั้งแบบ Online และ Offline ดังตารางนี้

ตารางระบุความสามารถที่ทำงานแบบ Offline (On-device) และ Online (Cloud) (ภาพจาก https://firebase.google.com/docs/ml-kit/)

สามารถนำไปประยุกต์เพื่อช่วยให้แอปใช้งานได้สะดวกยิ่งขึ้น เช่น ช่วยแกะข้อความ (Text Recognition) ออกมาจากรูปภาพสลากกินแบ่งเพื่อนำไปตรวจผล หรือเพิ่มลูกเล่นใหม่ ๆ เช่น ระบุพิกัดของ หู ตา แก้ม ปาก จมูก (Face Detection) เพื่อให้ตัวการ์ตูนในแอปขยับตาม เป็นต้น

2. Improve app quality มีทั้งหมด 3 ผลิตภัณฑ์ ได้แก่

2.1. Crashlytics คือบริการตรวจจับและแจ้งเตือนหากแอปเราเกิดอาการ Crash ขึ้นแบบ Realtime เพื่อให้แอปเราเสถียรอยู่เสมอ โดยจะทำการแจ้งให้ทราบถึงข้อผิดพลาดและผลกระทบ ผ่านทาง E-mail และ Firebase Console (ใช้ Cloud Functions เพื่อส่งไปที่อื่นด้วยได้ เช่น slack) เพื่อการแก้ปัญหาที่รวดเร็วและตรงจุด

ตัวอย่างรายงานความผิดพลาด

2.2. Performance Monitoring คือบริการตรวจสอบคุณภาพของแอป เพื่อให้แอปของเราตอบสนองได้เร็วอยู่เสมอ โดยสามารถตรวจสอบเวลาและรายละเอียดการทำงานต่าง ๆ เช่น เวลาที่ใช้ในการเปิดแอป , เวลาที่ใช้การเปลี่ยนหน้า UI, เวลาที่ใช้ในการโหลด API, ขนาดข้อมูลที่ Download/Upload, จำนวน API ที่สำเร็จหรือล้มเหลว เป็นต้น

ตัวอย่างรายงานประสิทธิภาพ

2.3. Test Lab คือบริการทดสอบแอปบนฮาร์ดแวร์จริง ๆ เพื่อให้มั่นใจว่าแอปของเราสามารถรองรับฮาร์ดแวร์ที่เราต้องการได้จริง ๆ โดยสามารถระบุรุ่นและเวอร์ชันที่ต้องการได้ แล้วระบุรูปแบบการทดสอบต่าง ๆ เพื่อทดสอบและรายงานผลกลับมา ไม่ต้องซื้อโทรศัพท์เอง (สมมุติว่าจริงจังเรื่องการรองรับทุกอุปกรณ์มาก) ซึ่งเป็นเรื่องยากด้วยหากจะซื้อทุกรุ่นที่คนนิยมใช้ในตลาด ไหนจะต่อสาย จะนั่งทดสอบทีละเครื่องอีก ใช้ตัวนี้จบ หมดปัญหา

ตัวอย่างรายงานการทดสอบอุปกรณ์ต่าง ๆ
ตัวอย่างผลการทดสอบ

3. Grow your business มีทั้งหมด 8 ผลิตภัณฑ์ ได้แก่

3.1. In-App Messaging คือบริการแสดงข้อความ pop-up ภายในแอปของเรา เช่น โฆษณา (เจอประจำเลย), การแจ้งเตือน, ข่าวสาร เป็นต้น

ตัวอย่างการแสดงผล In-App Messageing (ภาพจาก https://firebase.googleblog.com/2018/08/in-app-messaging-crashlytics.html)

3.2. Google Analytics คือบริการแสดงข้อมูลสถิติต่าง ๆ ของแอป เช่น ใช้ด้วยระบบปฏิบัติการอะไร จำนวนเท่าไหร่, มีผู้ใช้งาน ณ ปัจจุบันกี่คน, ใช้งานส่วนไหนบ้าง เป็นต้น เพื่อวิเคราะห์กลุ่มเป้าหมาย หรือรับทราบพฤติกรรมของผู้ใช้งานต่าง ๆ

3.3. Predictions คือบริการวิเคราะห์ข้อมูลการใช้งานแอป ช่วยให้เรารู้ว่าผู้ใช้ใช้งานส่วนใดบ้างในแอป ช่วยให้เรารู้ว่าส่วนใดตอบสนองได้ดี ส่วนใดควรปรับปรุง หรืออาจต้องการที่จะหยั่งรู้พฤติกรรมในอนาคตของผู้ใช้งานแอปของคุณ เพื่อวางแผนกลยุทธ์ทั้งรุกและรับ รวมทั้งสร้างประสบการณ์ที่น่าประทับใจให้กับผู้ใช้ของเรา

3.4. Cloud Messaging คือบริการส่งการแจ้งเตือนไปยังมือถือหรือเว็บของเรา เพื่อแจ้งข้อความไปยังผู้ใช้ของเราแม้ว่าจะปิดแอปไปแล้วก็ตาม ถ้าใครใช้ Smartphone อยู่ (น่าจะทุกคนแหละ ที่กำลังอ่านบทความนี้อยู่) จะคุ้นเคยกันเป็นอย่างดี เช่น การแจ้งเตือนจาก facebook, line, instagram ต่าง ๆ เป็นต้น

3.5. Remote Config คือความสามารถที่จะเปลี่ยนลักษณะการทำงานและลักษณะที่ปรากฏของแอปของคุณได้ทันทีจากหน้าเว็บ Firebase โดยไม่ต้องรอการอนุมัติจาก App Store เช่น การเปลี่ยนรูปแบบตามเทศกาล, เปลี่ยนภาษาตามผู้ใช้งาน เป็นต้น

3.6. Dynamic Links คือลิ้งค์เชื่อมโยงไปยังแอปมือถือ ใช้สำหรับแสดงบนหน้าเว็บเพื่อให้ผู้ใช้งานติดตั้งแอปมือถือผ่านลิ้งค์ลิ้งค์นี้ อีกทั้งยังสามารถแนบข้อมูลต่าง ๆ ของผู้ใช้ที่อยู่บนเว็บมาด้วยได้

3.7. App Indexing คือการปรับแต่งแอปของเราให้แสดงผลข้อมูลภายในแอปบน Google Search ได้ (เรียกการทำ SEO แบบ Mobile App ก็คงไม่ผิด) เช่น ค้นชื่อร้านอาหารแล้วปรากฏแอปวงในขึ้นมาให้ดูรายละเอียดและรีวิว เป็นต้น

3.8. A/B Testing (Beta) คือความสามารถในการแสดงผลแอปหลายรูปแบบเพื่อทดสอบการแสดงผลหรือการทำงาน ว่าสิ่งไหนจะมอบประสบการณ์การใช้งานที่ดีกว่าให้แก่ผู้ใช้งาน เช่น การวางปุ่มกดแบบไหนที่ผู้ใช้งานใช้สะดวก สมมุติว่ามีผู้ใช้งาน 100 คน อาจจะมี 50 คนได้ปุ่มที่อยู่มุมบน อีก 50 คนได้ปุ่มอยู่มุมล่าง หากว่ามีการใช้งานแบบไหนมากกว่ากันก็อาจจะสรุปผลและเลือกใช้แบบนั้นกับทุกคนในท้ายที่สุด

รองรับอะไรบ้าง

ในตอนนี้ Firebase รองรับ Android, iOS, Web, Unity และ C++ แต่ไม่ได้รองรับทุกภาษาหรือระบบในทุกผลิตภัณฑ์ ซึ่งจากทั้งหมด 18 ผลิตภัณฑ์มีสัดส่วนที่รองรับดังนี้

ข้อมูลการรองรับที่แจ้งไว้บนหน้าเว็บ Firebase

วิธีการตรวจสอบว่าผลิตภัณฑ์ไหนรองรับอะไรบ้าง

สามารถตรวจสอบได้จากหน้า Products

และดูชื่อบริการที่สนใจ แล้วสังเกตไอคอนด้านล่างชื่อผลิตภัณฑ์ ทางขวาของคำว่า “Pay to scale” จะมีสัญลักษณ์สิ่งที่ผลิตภัณฑ์รองรับ เช่น Cloud Firestore รองรับ iOS, Android และ Web (สามารถชื่อที่ไอคอนเพื่อดูชื่อได้)

ข้อมูล Cloud Firestore (ยังเป็นเวอร์ชัน Beta) รองรับ iOS, Android และ Web

ค่าใช้จ่าย

มีทั้งฟรีไปเลย และฟรีแบบมีข้อจำกัด ให้สังเกตจากหน้า Products เช่นเคย (สังเกตจากรูป Cloud Firestore ข้างบนก็ได้) ถ้าหากผลิตภัณฑ์ไหนมีคำว่า “Pay to scale” แล้วล่ะก็ ผลิตภัณฑ์นั้นสามารถใช้ฟรีได้จำนวนหนึ่งแล้วต้องจ่ายเงินหากต้องการใช้งานมากขึ้น

ซึ่งมีรูปแบบการจ่ายอยู่ 2 แบบคือ

  1. จ่ายแบบตายตัว ราคา $25 ต่อเดือน เพื่อเพิ่มข้อจำกัดการใช้งาน
  2. จ่ายตามจริงเท่าที่ใช้ ไม่มีข้อจำกัดและเพิ่มเติมอีก 5 อย่าง คือ
  • Realtime Database: สามารถสร้างได้หลาย Database ในโครงการเดียวกัน
  • Storage: สามารถสร้างได้หลาย Buckets ในโครงการเดียวกัน
  • Hosting: สามารถสร้างได้หลายเว็บบนโครงการเดียวกัน จากเดิมได้เพียง 1 เว็บ
  • ML Kit: สามารถใช้ Cloud Vision APIs ได้
  • Google Cloud Platform: สามารถใช้ BigQuery หรือ Infrastructure-as-a-Service (IaaS) อื่น ๆ ร่วมกับ Firebase ได้
ค่าใช้จ่าย Firebase แบบตายตัว (ค้นหาคำว่า “แปลง $25 เป็นบาท” บน Google)

สามารถตรวจสอบรายละเอียดเพิ่มเติมหรือทดลองคำนวนค่าใช้จ่ายได้ที่หน้า Pricing

ภาพตัวอย่างหน้าราคาผลิตภัณฑ์
ภาพตัวอย่างโปรแกรมคำนวนค่าใช้จ่าย

** แถม **

หลังจากดูเรื่องค่าใช้จ่ายมาประมาณหนึ่ง ผมไม่พบว่ามีส่วนไหนที่บอกจำนวนโครงการต่อ 1 บัญชีเลย อย่างมากสุดที่เจอคือ น่าจะมีจำกัดแต่ไม่รู้เท่าไหร่ ผมจึงลองสร้าง 11 โครงการดู ก็สร้างได้ ซึ่งก็นับว่าเยอะแล้วนะ จึงหยุดการทดลองเพียงเท่านี้ ท่านใดทราบจำนวนที่แน่นอนคอมเม้นบอกกันได้นะครับ ^_^

ทดลองสร้าง 11 โครงการ และสามารถสร้างได้สำเร็จ

ทดลองใช้ Firebase ด้วยโครงการสาธิต

สำหรับใครที่นึกไม่ออก อยากเห็นหน้าตา หรือการตั้งค่าของแผงควบคุม Firebase โดยที่ไม่ต้องสร้างโครงการของตนเอง ทาง Firebase มีโครงการสาธิตให้เข้าไปลองดูการทำงานคร่าว ๆ ได้นะครับ

จะสามารถเห็นการตั้งค่า ลูกเล่นต่าง ๆ ได้โดยไม่ต้องสร้างโครงการจริง ๆ ก่อนได้ ตามลิ้งค์ที่แนบมานี้ (ภาพที่บทความนี้หลายภาพก็นำมาจากที่นี่)

ทิ้งท้าย

จบครบถ้วนทุกกระบวนความแล้วนะครับกับสรุปเนื้อหาเกี่ยวกับ Firebase เขียนกันข้ามปีเลยทีเดียว กว่าจะเสร็จ

หวังว่าจะรู้จัก Firebase มากขึ้น และช่วยให้การตัดสินใจในการเลือกใช้เทคโนโลยีในการพัฒนาแอปพลิเคชันของท่านได้ดียิ่งขึ้น

ขาดตกอะไรไปแสดงความคิดเห็นเพิ่มเติมกันมาได้ข้างใต้นี้เลยนะครับ เพื่อเป็นประโยชน์ต่อท่านอื่น ๆ ต่อไป หรือแม้แต่ข้อผิดพลาดก็ตาม จะรีบแก้ไขให้โดยเร็วที่สุด

หากต้องการติดตามข่าวสาร ทำความรู้จักผลิตภัณฑ์ต่าง ๆ ตั้งแต่ Zero จนเป็น Hero แนะนำติดตามคุณ Jirawatee ในบทความนี้ได้อิงเนื้อหาจากเขาเยอะเลย ขอบคุณครับที่ช่วยเขียนบทความดี ๆ เกี่ยวกับ Firebase มากมายขนาดนี้

ขอบคุณทุกท่านที่เหลือในอ้างอิงที่ไม่ได้กล่าวถึงด้วยนะครับ

--

--