มาลองเช็คว่า Node ไหนถูกใช้มากน้อยแค่ไหนใน Firebase RTDB ด้วย Firebase Profile Tool กัน

Komkrit Kunanusont
Product MuvMi
Published in
3 min readOct 6, 2022

ปีนี้ปี 2022 แล้ว นักพัฒนาซอฟต์แวร์เกือบทุกคนน่าจะรู้จัก Firebase เป็นอย่างดี แต่ถ้าคุณไม่รู้จักก็ไม่เป็นไรครับ สามารถลองไปส่อง ๆ ดูได้ที่นี่

และเพราะว่าเป็นปี 2022 แล้ว เชื่อว่านักพัฒนาส่วนใหญ่ ถ้าจะเลือกใช้ Database ของ Firebase ก็คงจะเลือกใช้ Firestore มากกว่า Firebase Realtime Database ทาง Firebase เองก็มี tool ให้ช่วยตัดสินใจด้วยนะสำหรับคนที่อยากเลือกให้ตรงกับ use case ของตัวเองจริง ๆ ลองตามไปกดกันได้ที่นี่เลย

แต่ถ้าคุณเป็นคนหนึ่งที่ตกอยู่ในสถานการณ์เดียวกับผม นั่นคือ

  • คุณมี Project หนึ่ง หรือหลาย ๆ Projects ที่ใช้ Realtime Database อยู่
  • Projects เหล่านั้นของคุณประกอบด้วยหลาย ๆ clients (Apps, Web, หรือ Backend Services) ที่ใช้ Realtime Database เดียวกัน
  • วันดีคืนดีคุณสังเกตพบว่า ปริมาณการใช้ Realtime Database ของคุณเริ่มสูงขึ้นอย่างแปลก ๆ
  • คุณสงสัยว่ามาจากไหน แต่จับต้นชนปลายไม่ถูก อยากจะลองส่อง ๆ ดูแบบง่าย ๆ ว่า Node ไหนถูกใช้มากน้อย จะได้พอมีไอเดีย
  • คุณลองเข้า Firebase Console ไปคุ้ย ๆ ดูแล้ว แต่ไม่เจอสิ่งที่ต้องการ

ยินดีด้วยครับ คุณมาอยู่ถูกที่แล้ว ในบทความสั้น ๆ นี้ ผมจะเล่าให้ฟังถึงสิ่งที่ชื่อว่า Database Profiler Tool ซึ่งถูกออกแบบมาเพื่อ ‘ส่อง’ ว่า ใครมาเขียน หรืออ่าน Database ของเรา ที่ไหนบ้าง ในช่วงเวลาหนึ่ง

TL; DR ขี้เกียจอ่านยาว? เอาเลย ลอกการบ้านได้

ขั้นตอนแบบรวบรัดมีดังนี้

  1. Install npm
  2. Install Firebase CLI npm install -g firebase-tools
  3. (Oct 2022) Install nvm & use node version 16.4.0
  4. Login Firebase CLI firebase login
  5. See project id from firebase projects:list
  6. Run firebase database:profile —-project <project_id>

สำหรับคนที่อยากอ่านยาว ๆ ส่วนนี้จะเป็นการเรียบเรียงรายละเอียดของขั้นตอนต่าง ๆ พร้อมคำอธิบายครับ

เนื่องจากสิ่งที่เราจะทำ ต้องใช้ command line tools ของ Firebase ที่เรียกว่า Firebase CLI ครับ และการจะใช้ Firebase CLI ได้ แบบที่ง่ายที่สุดก็คือลงผ่าน Node Package Manager หรือว่า npm นั่นเอง ดังนั้นขั้นตอนแรกสุดเราเลยต้องลงเจ้า npm นี้ก่อน

Install npm

ถ้าเครื่องของคุณเป็น Windows หรือ Mac สามารถไปศึกษาวิธีลงจากเว็บนี้ได้ครับ

ถ้าใช้ Ubuntu ก็ตามไปที่นี่ได้เลย

https://linuxize.com/post/how-to-install-node-js-on-ubuntu-18.04/

หลังจากลงสำเร็จแล้วก็ลองทดสอบซะหน่อย เรียกดู version ซิว่าใช้ได้ไหม ด้วย

npm --version

output ควรจะออกมาเป็นเลข version ของ npm ที่ลงไปครับ เช่น 7.18.1

Install Firebase CLI

ขั้นตอนต่อไปเราจะมาลง Command Line Tools ของ Firebase กัน ใช้คำสั่งนี้ได้เลย

npm install -g firebase-tools

เสร็จแล้วก็ใช้ท่าเดิมตรวจว่าสำเร็จมั้ย (ถ้ามั่นใจแล้วก็ข้ามไปได้ครับ)

firebase --version

ที่จริงแล้วตัว Firebase CLI เนี่ย ทำอะไรได้หลายอย่างเลยนะ จะสร้าง apps ใหม่ register app เข้า project, สร้าง project จากตรงนี้ก็ได้แบบไม่ต้องเข้าไปกดเองใน console รายละเอียดเพิ่มเติมดูจากนี่ได้เลยครับ

(Oct 2022) Install nvm & use node version 16.4.0

พอดีว่า ณ ตอนที่ผมจะใช้คำสั่ง Firebase CLI ก็มีเจอ error ว่า version ของ node ที่ใช้ ไม่ compatible กัน

Firebase CLI v11.14.0 is incompatible with Node.js v14.15.4 Please upgrade Node.js to version ^14.18.0 || >=16.4.0

ก็เลยต้องเปลี่ยน node version มาเป็น 16.4.0 ตามที่ Firebase CLI ต้องการก่อน ซึ่งวิธีที่สะดวกที่สุดก็คือใช้ Node Version Manager หรือ nvm ครับ

วิธี install nvm ก็ตามดูจากบทความนี้ได้เลย

หลังจากนั้นก็ใช้คำสั่ง nvm use 16.4.0

และถ้าคุณเป็นคนย้ำคิดย้ำทำ ก็ตรวจสอบ node version ได้ด้วย node --version ครับ

Login Firebase CLI

ต่อไปเราจะมา Login เข้า Firebase CLI กัน ซึ่งทำได้ด้วยคำสั่ง

firebase login

ซึ่งจะมี output ออกมาแบบนี้

i  Firebase optionally collects CLI usage and error reporting information to help improve our products. Data is collected in accordance with Google's privacy policy (https://policies.google.com/privacy) and is not used to identify you.? Allow Firebase to collect CLI usage and error reporting information? (Y/n)

หลัก ๆ ก็คือเขา (Firebase team) จะขออนุญาตเก็บข้อมูลการใช้งานของเราไปเพื่อพัฒนา Products ของเขาครับ ถ้าอยากให้ก็กด Y แต่ถ้าไม่ก็ n แล้ว Enter

หลังจากนั้น browser ของเราก็จะเปิดหน้า Google Login ที่น่าจะคุ้นเคยกันดีขึ้นมา

เราก็ Login ด้วย account ที่มี Firebase Projects ที่ต้องการนั้นตามปกติครับ

อาจจะมีหน้าจอที่ขอ permission เล็กน้อย ก็กดยอมรับไปได้เลย ถ้าทุกอย่างเรียบร้อย จะมีหน้าจอนี้ขึ้นมา

เราก็ปิด browser tab นั้นได้เลย แล้วกลับมาที่ Terminal ของเรา ซึ่งควรจะแสดงข้อความประมาณนี้

 Success! Logged in as <email>

Run Profiling

ต่อไปก็ได้เวลา Run Profiling ซักทีแล้ว

แรกสุดถ้าเราไม่รู้ id ของ Firebase Project นั้น ให้เราใช้คำสั่งนี้

firebase projects:list

แล้ว copy id ของ Project ที่เราต้องการจะทำ Profiling เอาไว้

หลังจากนั้นก็ใช้คำสั่ง

firebase database:profile --project <project_id>

โดยที่ <project_id> คือ id ของ Firebase Project ที่เราเพิ่ง copy มานั่นเอง

ขณะที่ Profiling กำลัง run อยู่ ที่ Terminal ของเราจะแสดงข้อความนี้

⠦ <xxx> operations recorded. Press [enter] to stop

ซึ่งตรง xxx จะค่อย ๆ เพิ่มขึ้นเรื่อย ๆ ตามเวลา ถ้ามีใครมา Read / Write ที่ Firebase Realtime Database ของเราใน Project นั้น เราก็ปล่อยทิ้งไว้เรื่อย ๆ ตามแต่ที่เราต้องการครับ เมื่อไหร่ที่พอใจก็กด Enter แล้วมันก็จะพ่นข้อมูลออกมาให้เรา ซึ่งสามารถอ่าน guidelines ว่าแต่ละ fields หมายความว่ายังไงบ้างได้ที่นี่เลย

อย่าลืม!

ลองอ่าน Section ที่เขียนว่า The profiler tool: Not a billing tool ของ link Profile Your Database ด้านบนด้วยนะครับ เพราะว่าเขาบอกว่าเราไม่ควรใช้ tool ตัวนี้ในการประเมิน cost เพราะว่าจะมีบางส่วนที่ไม่ได้รวมอยู่ใน Profile Result แต่ถูกนำไปคิดใน Billing ด้วยครับ

จบแล้วครับสำหรับบทความสั้น ๆ เรื่องการใช้ Firebase Realtime Database Profiling Tool ใน Firebase CLI ถ้าใครลองใช้แล้วได้ผลหรือไม่ได้ผลอย่างไรก็แบ่งปันพูดคุยกันได้ หรือถ้ามีวิธีอื่นที่ใช้แล้วได้ผลกว่าก็แชร์ได้เลยครับ

--

--

Komkrit Kunanusont
Product MuvMi

Mainly a Mobile developer, sometimes leading a small software devs team, sometimes thinking, sometimes coding, sometimes dreaming and coding in parallel