Controla los gastos de tu proyecto de Firebase 🔥
Evita sorpresas desagradables por abusos en tu proyecto de Firebase 😨
El motivo de este artículo es que esta semana he tenido un error programando una de mis aplicaciones que consume como base de datos Firestore de Firebase. Si no llega a ser porque el proyecto en Firebase lo tenía configurado en el plan gratuito Spark me hubiera dolido mucho la cabeza y sobre todo la cartera 💸
Te explicaré en este artículo cómo establecer presupuestos personalizados para que cuando te vayas acercando a dicho presupuesto Google te aviso por email y así puedas comprobar qué está pasando y si está todo correcto.
Cómo he escrito en otros artículos, Firebase está muy bien para comenzar con un proyecto ya que te permite tener tu MVP (Minimum Viable Product) muy rápido en producción, pero si no tienes cuidado el proyecto te puede costar mucho dinero por algún tipo de abuso o porque tu producto escale mucho.
¿Qué error casi me lleva a la ruina?
El error que casi me lleva a la ruina fue el típico de consultar un documento de Firestore subscribiéndome a él y dentro de la subscripción actualizar dicho documento sin cancelar la subscripción, de forma que entraba en un bucle infinito.
Para darte más detalle, quería actualizar las unidades de venta de una posición de un pédido, para lo cual, me subscribía al pedido y mantenía la subscripción abierta para que cuando modificara las unidades de la posición se viera reflejado automáticamente, así que dentro de la subscripción al pedido, modificaba dicho pedido con las nuevas unidades de la posición que quería modificar.
ERROR de principiante 💣
Como te puedes imaginar, al probar mi código rápidamente alcancé la cuota gratuita del plan Spark de Firebase de 20.000 escrituras diarias.
Para solventar el problema lo que hice fue solicitar el nuevo número de unidades con un modal, de forma que hacía la actualización del pedido en el modal y tras la actualización cerraba dicho modal evitando así que al refrescarse el pedido por la modificación se volviera a guardar 😎
A continuación te voy a explicar cómo programar avisos en la consola de Google y así evitar en un mes te encuentres facturas de cientos e incluso miles de euros. Hay por ahí historias de aplicaciones que usaban como backend a Firebase con factura mensual de casi un millón de dólares 😱
Programar alertas de presupuesto en Firebase
Antes se podía programar un límite de gasto diario para Firestore, pero desde el 12 de diciembre del 2019 Google eliminó esta opción en el App Engine (punto negativo para Google)
Lo que actualmente podemos hacer, es programar alertas de presupuesto, de manera que cuando nos vayamos acercando a dicho prepuesto Google nos avisará por email. Para ello:
Ve a la consola de Google, abre tu proyecto y escribe en el buscador presupuesto
También puedes hacer clic sobre Facturación de las opciones del menú lateral y después en Presupuestos y alertas
Aquí podrás configurar tanto el presupuesto como las alertas
Muy bien, hasta aquí detectaremos que nos acercamos a nuestros presupuesto configurado, pero qué hacer después de que detectemos que nos estamos acercando al límite establecido y además se está haciendo de una forma no controlada
¿Cómo inhabilitar aplicación en Firebase?
Si detectas un abuso en tu aplicación o un fallo está provocando un alto consumo lo que debes hacer es inhabilitar la aplicación, para ello:
Ve a las opciones del App Engine en las opciones del menú lateral de la consola de Google
Inhabilita/desactiva la aplicación. Podrás volver a habilitarla cuando quieras.
Inhabilitar la aplicación no provocará pérdidas de datos guardados, así que lo puedes hacer tranquilamente 😊
Hasta luego 🖖