การกำหนด quota บน GCP เพื่อป้องกันการเรียก Maps API เยอะจนตังค์หมด

หากใครที่กำลังพัฒนา application และมีการเรียกใช้งาน Google Maps Platform ที่เป็นบริการให้ข้อมูลด้านแผนที่ เส้นทาง หรือสถานที่ต่างๆ Google มี quota ให้ใช้งานได้ฟรี $200 ทุกเดือน

Google ให้ใช้ Maps API ได้ฟรี $200 ทุกเดือน

ส่วนที่เกินจาก $200 นั้นจะคิดค้าใช้งานตามจำนวนการเรียกใช้ API ตามรายละเอียดในหน้า Pricing & Plans

ตารางราคา Places API ที่คิดค่าใช้จ่ายทุก 1,000 request

จุดที่ต้องระวังคือ ระหว่างที่กำลังพัฒนา application อยู่นั้น มีความเป็นไปได้ที่ code ที่ยังเขียนไม่สมบูรณ์ จะมีการเรียกใช้ API เป็นจำนวนมาก (เช่น การวน loop ไปเรื่อยๆ) ทำให้เกิดค่าใช้จ่ายโดยไม่จำเป็น (และไม่รู้ตัว)

ค่าใช้จ่ายที่เกิดจากการเรียกใช้ Places API ที่พุ่งสูงผิดปกติ


ค่าใช้จ่ายที่เกิดจากการเรียกใช้ Maps API โดยไม่ได้ตั้งใจ

การป้องกันเหตุการณ์ดังกล่าว นอกจากจะควบคุมกระบวนการพัฒนา application ให้รัดกุม รอบคอบมากขึ้นแล้ว เรายังสามารถป้องกันได้จากการกำหนด quota ที่ project บน GCP ได้ด้วยครับ

หากเรามีการแยก environment หรือ project บน GCP เป็น dev, test, production ก็สามารถกำหนด quota ดังกล่าวแยกตาม environment หรือ project ได้เลย เช่น บน dev อาจจะกำหนดให้ quota น้อยหน่อย ส่วนบน production ก็ใช้ default quota ไปตามปกติ

วิธีการกำหนด quota บน GCP

1. ที่หน้า cloud console เลือก project ที่ต้องการ และไปที่เมนู IAM & Admin > Quotas


2. ระบบจะแสดง quota ของ service แต่ละตัวใน project


3. กดที่ Services และเลือก None เพื่อซ่อน quota ที่ไม่เกี่ยวข้องทั้งหมดออกไปก่อน


4. ที่ช่อง Service พิมพ์ชื่อ API ที่ต้องการกำหนด quota (ในที่นี้คือ Places API) เพื่อแสดง quota ของ service ที่เราสนใจ


5. เลือก API ที่ต้องการ และกด "EDIT QUOTA" (สังเกตุว่า quota ปัจจุบันคือ 2,000,000)


6. ระบบจะแสดงกล่องข้อความสำหรับใส่ค่า limit ทางด้านขวา


7. ใส่ต้วเลข limit ที่ต้องการ (ในที่นี้คือ 2,000)


8. กด "Submit request"


9. ระบบขึ้นข้อความสรุปการเปลี่ยนแปลง หากถูกต้องให้กด "CONFIRM"


10. ที่ column Limit จะแสดงตัวเลขใหม่ที่เพิ่งกำหนดไป


หากเรากำหนด limit ไว้ ก็สบายใจได้ระดับหนึ่งว่า การเรียกใช้งานจะไม่เกินจาก limit ที่ต้้งไว้ กรณีที่มีการ request API มากเกินปกติจากความไม่ตั้งใจ ก็ยังอยู่ในระดับที่เราควบคุมได้

นอกจากนำมาใช้กำหนด Maps API แล้ว ยังสามารถนำมาใช้กำหนด quota ของ service อื่นๆ บน GCP ได้เช่นกันครับ (แต่ส่วนมากจะมาหลุดกับ Maps API กันมากกว่า)

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

การเรียกใช้งาน Google Apps Script

ลดเวลาการเรียก API ใน Apps Script ด้วย fecthAll

ออกแบบระบบให้คุยข้าม module กันได้ ด้วย Pub/Sub