Bienvenida e Introducci贸n

1

Qu茅 aprender谩s sobre las firebase cloud functions

2

Qu茅 es firebase y las cloud functions

Consola web de administraci贸n

3

Consola de administraci贸n y documentaci贸n

4

Creaci贸n del proyecto de Cloud Functions

Extendiendo la Gesti贸n de Usuarios con Cloud Functions.

5

Creaci贸n de las cloud functions de autenticaci贸n

6

Probando y desplegando las Cloud Functions de autenticaci贸n

Extendiendo Firestore con Cloud Functions.

7

Creaci贸n de las cloud functions de Firestore

8

Probando y desplegando las cloud functions de Firestore

Extendiendo el Almacenamiento con Cloud Functions.

9

Creaci贸n de las cloud functions para el storage

10

Terminando de crear cloud functions para el storage y probando su funcionamiento

11

Probando y desplegando las cloud functions de almacenamiento con Firestore

Creando Cloud Functions HTTPS

12

Creaci贸n de la cloud function HTTPS

13

Bonus: Construyendo un controlador para la funci贸n HTTP

14

Probando y desplegando las cloud function HTTPS

Extendiendo el Hosting con Cloud Functions.

15

Usando las firebase cloud functions desde el hosting

Extendiendo crashlytics con Cloud Functions.

16

Creaci贸n de las cloud functions de Crashlytics

17

Probando y desplegando la cloud function de Crashlytics

Extendiendo Analytics con Cloud Functions.

18

Creaci贸n de las cloud functions cuando se registra un evento en las anal铆ticas de Firebase

19

Probando y desplegando la cloud function de anal铆ticas

Creaci贸n de pruebas unitarias a las Cloud Functions.

20

Creando pruebas unitarias en Firebase Cloud Functions

Optimizando las Cloud Functions.

21

Buenas practicas para las cloud functions

Cierre

22

Conclusiones finales y cierre

Curso de Firebase Cloud Functions 2019

Curso de Firebase Cloud Functions 2019

Juan Guillermo G贸mez Torres

Juan Guillermo G贸mez Torres

Buenas practicas para las cloud functions

21/22

Lectura

Ahora hablaremos de buenas pr谩cticas, soportes de lenguaje y optimizaci贸n de las cloud functions:

Lenguajes Soportados

Las cloud functions pueden ser escritas en dos lenguajes de programaci贸n por ahora, en Javascript y Typescript. Si deseas usar Typescript puedes seleccionar el lenguaje cuando creas el proyecto y tendr谩s una estructura adecuada y transpilaci贸n transparente. Ahora si tienes un proyecto typescript y deseas desplegarlo como funciones tendr谩s que usar los 鈥減redeploy hook鈥 [1]. Typescript es una buena opci贸n ya que ofrece ventajas como el manejo m谩s simple de c贸digo as铆ncrono con async/await lo cual simplifica el manejo de promesas y ya que es tipado evita muchos errores en ejecuci贸n [2].

Buenas pr谩cticas y optimizaciones

  • Es importante administrar el ciclo de vida de las funciones para asegurarse que terminan correctamente para evitar que queden en ciclos infinitos o que duren mucho m谩s de lo normal o que terminen antes que finalice correctamente, en algunas ocasiones podr铆a causar cargos de pago extra.
  • Siempre retorna una promesa en una funci贸n as铆ncrona esto permite cerrar el ciclo de vida en el momento adecuado.
  • Siempre colocar return en una funci贸n s铆ncrona esto permite cerrar el ciclo de vida en el momento adecuado.
  • Termina las funciones HTTP con res.redirect, o res.send() o resp.end() o resp.json().
  • Utiliza las promesas de Javascript el cual agrega mantenibilidad al c贸digo cuando se desarrolla funciones as铆ncronas.
  • Desarrolla pruebas unitarias de tus funciones.
  • Si la ejecuci贸n de una funci贸n as铆ncrona es muy importante, marca en la consola de Google Cloud Platform 鈥淩eintentar tras Fallo鈥 esto volver谩 a intentar la ejecuci贸n de la funci贸n, hasta un m谩ximo de siete(7) d铆as. Recomendaci贸n aplica las buenas pr谩cticas para ello. Puedes encontrar m谩s info aqu铆 [3].
  • Maneja siempre variables de entorno y no hagas 鈥渉ardcoded鈥 de valores, es buena pr谩ctica por seguridad y para que no tengas que desplegar de nuevo el c贸digo si requieres cambiar un valor. [4].
  • No hagas actividades en background, ya que una vez termina la ejecuci贸n de la funci贸n puede que no se termine lo que se dej贸 en background por eso siempre maneja promesas.
  • Si necesitas crear un archivo en una funci贸n debes hacerlo en el directorio de temporales y deben ser de tama帽o peque帽o ya que consumen memoria de la funci贸n, por eso elim铆nalos despu茅s de una invocaci贸n ya que podr铆an persistir en otras invocaciones o p谩salo al storage.
  • En desarrollo trata de usar el emulador de cloud functions (shell o serve) ya que el despliegue puede demorar y se vuelve tedioso probar.
  • Importa las dependencias que verdaderamente usas en tu funci贸n, las que no usas elim铆nalas de tu archivo, ya que cuando se invoca por primera vez una funci贸n se carga los m贸dulos importados y esto puede tomar un respectivo tiempo dependiendo del tama帽o.
  • No hay garant铆a que el estado de una funci贸n persista para pr贸ximas invocaciones, sin embargo en algunas ocasiones se recicla entornos de ejecuci贸n de una previa invocaci贸n, as铆 que si tu declaras variables globales, el valor puede ser reutilizado en otra invocaci贸n. De esta forma puedes guardar en cach茅 objetos que son pesados de crear. Te recomiendo solo crees variables de forma global sin van a ser utilizadas por varias funciones, porque si no puede afectar el rendimiento cuando se tenga que crear el entorno por primera vez.
  • Si requieres hacer solicitudes HTTP desde una funci贸n puedes reutilizar la conexi贸n generada por la funci贸n, as铆 reduces el tiempo de CPU necesario para crear la nueva conexi贸n. Recuerda que en Firebase se cobra por tiempo de uso de CPU. [5].
  • Si usas librer铆as clientes de google como Pub/Sub o alguna de Machine Learning, crea la constante que tiene el objeto cliente de manera global as铆 no tiene que crear una conexi贸n y consultas al DNS en cada invocaci贸n.
  • Si tienes muchas funciones, como buena pr谩ctica y por rendimiento despliega solo la funci贸n que modificaste o creaste, con el comando de firebase deploy --only functions:NOMBREFUNCION

Estas son algunas buenas pr谩cticas para optimizar el rendimiento, despliegue y minimizar cobros por uso de recursos. Recuerda crear capas, m贸dulos para tener un c贸digo m谩s mantenible, como tambi茅n automatizar tareas por medio de scripts de npm y realizar pruebas unitarias y de rendimiento a las funciones y evaluar su funcionamiento y cuotas de cobro.

Enlaces que van a servirte:

Referencias:

[1]. https://firebase.google.com/docs/cli/#predeploy_and_postdeploy_hooks
[2]. http://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html
[3]. https://firebase.google.com/docs/functions/retries
[4]. https://firebase.google.com/docs/functions/config-env
[5]. https://firebase.google.com/docs/functions/networking

Aportes 2

Preguntas 0

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

Excelente aporte!

Buenisimo!