Retail Store en Google Cloud Platform

1

Lo que aprender谩s sobre GCP para ecommerce

2

Etapas clave y MLOps

3

Arquitectura de alto nivel

4

Tour de la aplicaci贸n de retail

5

Backend as a Service y modelo de seguridad

6

Introducci贸n al proyecto

7

Medici贸n de interacciones

8

Setup de Google Tag Manager

9

Etiquetando con Google Tag Manager

10

Etiquetas relevantes para CLV

11

Integraci贸n con servicios

Exposici贸n de servicios con Apigee

12

Servicios expuestos con APIs

13

驴Qu茅 son las APIs?

14

Apigee

15

Creaci贸n de tu primer API Proxy en Apigee

16

Administraci贸n de APIs con Apigee

17

Creando un portal de desarrolladores

18

Interactuando con el portal de desarrolladores

19

Insights to Actions

Generaci贸n de modelos AI/ML

20

Machine Learning con datos estructurados

21

BigQuery para modelos de Forecasting y LTV

22

Bigquery ML - Manos a la Obra

23

Auto ML vs. Bigquery ML

24

Consideraciones para entrenar un modelo en BigQueryML

25

Entrenamiento del modelo en BigQuery ML

26

C贸mo exportar modelos hechos en BQML

27

Exportando un modelo hecho con BQML

Consumo de servicios de AI/ML

28

C贸mputo Serverless y Contenedores

29

驴Qu茅 es Kubernetes?

30

Consumo de modelos ML mediante BigQuery API

31

Almacenamiento de predicciones

32

Ejecuci贸n de predicciones y persistencia

33

Despliegue continuo con Cloud Run

34

Ejecuci贸n de despliegue con Cloud Run

35

Escalamiento de servicios en Cloud Run

36

AuthN y AuthZ con Cloud Run

Google Marketing Platform

37

An谩lisis de las predicciones

38

Segmentamos nuestras Predicciones

39

Caso pr谩ctico para definir tu estrategia de activaci贸n

40

Generemos nuestros modelos en la plataforma

41

Segmentamos nuestras audiencias en BigQuery

42

Carga tus audiencias y conecta tu medio de activaci贸n

Introducci贸n al proyecto

6/42

Lectura

Esta gu铆a asume que tienes una cuenta de Google y que est谩s autenticado en tu navegador con esa cuenta. En caso de que no tengas una cuenta de Google, puedes crearla de manera gratuita en este enlace.

Para llevar a cabo el setup del proyecto tendr谩s que realizar los siguientes pasos:

1 - Instalar el SDK de Google Cloud

Google Cloud cuenta con un SDK que te permite interactuar con Google Cloud Platform. Desde crear m谩quinas virtuales hasta desplegar modelos de Machine Learning. Lo importante de esta librer铆a es que nos permite automatizar la creaci贸n de recursos de nube a partir de l铆nea de comandos y hace que tus despliegues sean versionables, portables y confiables.

El SDK est谩 disponible para la mayor铆a de los sistemas operativos m谩s populares. Lleva a cabo la instalaci贸n del SDK seg煤n tu sistema operativo siguiendo estas instrucciones:

https://cloud.google.com/sdk/docs/quickstart

2 - Generar credenciales de acceso por defecto

Todas las interacciones con la nube de Google se hacen de manera segura utilizando TLS e identidades con permisos acotados. Es decir, si quieres que un backend sea capaz de interactuar con un modelo de Machine Learning, puedes crear una identidad para esta aplicaci贸n (denominada una cuenta de servicio) y asignar los permisos apropiados para llevar a cabo su objetivo.

En este caso, vamos a utilizar la identidad de tu cuenta de Google para formar las peticiones que se originen desde tu m谩quina local. El SDK de Google Cloud te permite crear credenciales que son utilizadas por las librer铆as de cliente de cada uno de los servicios que vamos a utilizar (como storage, firebase, etc). En tu terminal ejecuta el siguiente comando:

gcloud auth application-default login

Este comando te llevar谩 a la p谩gina de sign-in de Google donde puedes elegir la cuenta que deseas utilizar. Termina el flujo presentado y al final deber谩s recibir confirmaci贸n de que est谩s autenticado con el Google Cloud SDK. Es posible que tambi茅n recibas una alerta por correo electr贸nico notificando del intento de sign-in.

3 - Crear un proyecto en la consola de Firebase

Firebase es la plataforma de desarrollo de aplicaciones m贸viles de Google Cloud. Su misi贸n es hacer que los desarrolladores de apps tengan 茅xito. Firebase tambi茅n cuenta con un sabor para aplicaciones web, que ser谩 el que vamos a usar en este curso.

Visita console.firebase.google.com y selecciona la opci贸n de 鈥楢dd Project鈥. Selecciona un nombre de proyecto representativo, en mi caso utilizare 鈥楶latzi Grocery Storefront鈥
image13.png

A continuaci贸n deshabilita el uso de Google Analytics en el proyecto. Lo configuraremos despu茅s.
image12.png

Finalmente selecciona la opci贸n de Create project. En unos segundos tu proyecto estar谩 listo y ser谩s direccionado a la consola de Firebase.

4 - Habilitar Firestore y Cloud Storage

Firebase es considerado como un Backend as a Service (BaaS). Esto significa que cuenta con ciertos servicios, como una capa de almacenamiento y una capa de c贸mputo serverless, que te permite enfocarte en la creaci贸n de tu app en lugar de la administraci贸n de servidores.

En la consola de Firebase, selecciona la opci贸n de Cloud Firestore en el men煤 izquierdo. Una vez que la p谩gina cargue, darle click al bot贸n Create Database localizado en el banner superior.

image3.png

Al seleccionar Create database deber谩s elegir un perfil para aplicar ciertas reglas de seguridad base. Si estuvieras desarrollando una aplicaci贸n de cero, probablemente empezar铆as en modo prueba para poder interactuar con tu base de datos en las primeras iteraciones de desarrollo. En este caso vamos a empezar en modo producci贸n y vamos a aplicar reglas de seguridad a la medida en un paso posterior.

image11.png

Finalmente, debes de elegir la ubicaci贸n de tu base de datos. Por defecto, la opci贸n que se presenta es nam5 (us-central), misma que es bastante atractiva porque tus datos vivir谩n en un esquema multi-regional, mejorando la postura de confiabilidad de toda tu app.

Puedes seleccionar otra regi贸n, quiz谩s porque cuentas con despliegues existentes en otras regiones de Google Cloud o porque otra regi贸n puede quedar m谩s cerca de tu base de usuario objetivo. En mi caso dejar茅 la opci贸n por defecto. Algo importante que mencionar es que no puedes cambiar la ubicaci贸n de la base de datos una vez seleccionada. Si quieres cambiar la ubicaci贸n deber谩s crear un proyecto nuevo.

image7.png

5 - Habilitar Firebase Authentication

En la consola de Firebase, selecciona la opci贸n de 鈥楢uthentication鈥 en el men煤 izquierdo. Una vez que la p谩gina cargue, darle click al bot贸n 鈥楪et Started鈥 localizado en el banner superior.

image1.png

En las opciones desplegadas, expande la autenticaci贸n usando Google como proveedor, habilita el motor de autenticaci贸n y provee un mail de soporte. Normalmente aparece una opci贸n para utilizar el mismo correo que utilizaste para crear tu cuenta de Google Cloud.

image5.png

Una vez que des click en Save deber铆as de ver el motor de autenticaci贸n habilitado.

6 - Clonar el repositorio

Visita el repositorio en la siguiente URL y clona el c贸digo utilizando git clone

URL: https://github.com/pvpablo/grocery-store-showcase

git clone https://github.com/pvpablo/grocery-store-showcase.git

7 - Habilitar Firebase Hosting

En la consola de Firebase, selecciona la opci贸n de Hosting en el men煤 izquierdo. Una vez que la p谩gina cargue, darle click al bot贸n Get Started localizado en el banner superior.

El flujo desplegado te pedir谩 instalar firebase-tools, un SDK espec铆fico de Firebase que nos permite entre otras cosas desplegar versiones de tus apps, reglas de seguridad, etc. Para llevar a cabo la instalaci贸n de firebase-tools necesitas tener npm previamente instalado. En caso de no tenerlo te recomiendo instalar node.js que lo trae en paquete (y que de todas formas usaremos m谩s adelante).

image8.png

El siguiente paso en el flujo es autenticarse con el SDK de Firebase. Este paso es similar al que hicimos previamente para el SDK de Google Cloud. En tu terminal ejecuta el siguiente comando y sigue las instrucciones:

firebase login

El paso para iniciar firebase lo haremos m谩s adelante, por lo que no es necesario que lo hagas ahora.

image4.png

El 煤ltimo paso para habilitar firebase hosting es desplegar la aplicaci贸n. Lo haremos posteriormente, por ahora puedes seleccionar la opci贸n de continuar.

image15.png

Una vez que lleves a cabo estos pasos, ver谩s algunos dominios que autom谩ticamente se habilitaron para tu aplicaci贸n. Estas son URLs seguras que puedes usar para acceder a tu aplicaci贸n una vez que la despliegues. Tambi茅n existe la opci贸n de conectar un dominio propio, pero queda fuera del alcance del curso.

image9.png

8 - Inicializar Firebase

Firebase tiene la opci贸n de utilizar diferentes ambientes (DEV, QA, Staging, etc.). En la terminal utiliza el siguiente comando y selecciona el proyecto que creaste previamente.

firebase use --add.

La l铆nea de comandos te pedir谩 un nombre para este proyecto, utiliza la palabra default.

9 - Crear archivo .env.local

En el directorio ra铆z del proyecto crea un nuevo archivo llamado .env.local y copia el contenido del archivo .env.template. Luego de esto, dir铆gete a la secci贸n de Project Settings en la consola de Firebase, ubicado en el men煤 contextual izquierdo en el 铆cono del engrane:

image6.png

En la parte inferior del tab general encontrar谩s variables de configuraci贸n para tu app. Sustituye estos valores en el archivo .env.local que creaste previamente.

image2.png

El resultado se debe ver de esta manera:

image10.png

Estas variables son sensibles, por lo que se recomienda que no las compartas, subas a un repositorio o hagas p煤blicas por alg煤n motivo.

10 - Carga de fixtures

Para cargar cat谩logos base y las im谩genes de referencia de la aplicaci贸n prepar茅 un script de carga. Previamente a correr este script de carga debes crear dos variables de ambiente. Dependiendo de tu sistema operativo la creaci贸n de las variables de ambiente puede variar.

export PROJECT_ID="<PROJECT_ID>"
export DATABASE_URL="https://<PROJECT_ID>.firebaseio.com"

Donde tienes que reemplazar <PROJECT_ID> por el ID 煤nico de tu proyecto.

Ejecuta el script de carga con el siguiente comando:

cd script
node index.js

11 - Configurar reglas de seguridad

Firebase utiliza un modelo de reglas para determinar si ciertas acciones sobre tu modelo de datos deben ser permitidas. Un ejemplo com煤n es asegurar que un usuario 煤nicamente pueda crear 贸rdenes de compra para s铆 mismo y no para otros compradores. Puedes explorar m谩s acerca de las reglas de seguridad en este enlace.

En la ra铆z del proyecto, ejecuta los siguientes comandos:

firebase deploy --only storage
firebase deploy --only firestore:rules

12 - Crea 铆ndices de consultas

Para garantizar el rendimiento de tus queries, Firestore puede requerir la creaci贸n de ciertos 铆ndices sobre tu modelo de datos. Cuando un 铆ndice es necesario en tu modelo de datos Firestore te avisar谩 mostrando un error. Puedes conocer m谩s acerca de 铆ndices en este enlace.

Para nuestra aplicaci贸n necesitamos crear dos 铆ndices compuestos. Uno sobre la colecci贸n de stats y otro sobre la colecci贸n de orders.

En la consola de Firebase, selecciona la opci贸n de Cloud Firestore en el men煤 izquierdo. Una vez que la p谩gina cargue, selecciona el tab de Indexes. Los 铆ndices que debes de crear son los siguientes:

image17.png

Para crear un 铆ndice selecciona el bot贸n de Add Index o +Create Index y llena el formulario de la siguiente manera:

image16.png

Repite la misma operaci贸n para el 铆ndice de la colecci贸n de stats. Los 铆ndices pueden tardar un par de minutos en construirse, mientras tanto puedes disfrutar de un buen caf茅 o ver alg煤n video cool en Youtube. Cuando los 铆ndices se terminen de construir quedar谩n etiquetados como habilitados.

12 - Correr la aplicaci贸n localmente

Para correr la aplicaci贸n de manera local debes ejecutar los siguientes comandos en la ra铆z del proyecto:

npm install
npm run serve

13 - Desplegar la aplicaci贸n a Firebase Hosting (opcional)

Para desplegar la aplicaci贸n en Firebase Hosting debes ejecutar los siguientes comandos:

npm run build
firebase deploy --only hosting

Consulta el app utilizando las URLs seguras que Firebase genera autom谩ticamente para t铆. Puedes consultar las URLs en el tab de Firebase Hosting.

14 - 隆Dale star al repo y ay煤dame a mejorarlo!

Tambi茅n puedes activar las notificaciones para futuros cambios o enviar tus pull requests si consideras que puede mejorar.

Aportes 19

Preguntas 1

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Si tienen el siguiente problema en el punto numero 10, cuando ejecutan el Script que carga los datos a firestore

Cannot find module firebase-admin

Lo solucionan agregando la siguiente dependencia en el package.json que se encuentra en la carpeta Script,

鈥淍firebase/component鈥: "0.1.0

Luego que lo agreguen deben ejecutar npm install para que se agregue la dependencia a su proyecto.

Me qued茅 en el punto 9 jajaja. Supongo que debo crear el archivo .env.local en la terminal pero tampoco encuentro el .env.template.

No puedo visualizar las variables de configuraci贸n de mi app en Firebase. Hasta ese punto he seguido todos los pasos de la gu铆a, excepto realizar el deploy. 驴Es necesario el deploy para ver las variables de configuraci贸n o qu茅 me faltar铆a realizar?

Gracias.

Lo complicado lo deja en escrito y no hace una clase, la teor铆a debe ser escrito y la pr谩ctica en video as铆 entender los que no tienen base de que es esto ya est谩n perdidos

Complicado pero se logro ejecutar 馃槃
Menci贸n especial a la comunidad que sin sus comentarios no hubiera podido lograrlo.

Resumen.
antes del punto 9

falta una dependencia, yo lo correg铆 ejecutando en la ra铆z del proyecto
npm install firebase-admin (en la terminal)

si llegas al final y no te cargan las im谩genes, en el punto 10 debes ejecutar antes
gcloud auth login
gcloud config set project <PROJECT_ID>
y ya luego
SET SET PROJECT_ID="<PROJECT_ID>"
SET DATABASE_URL=鈥渉ttps://<PROJECT_ID>.firebaseio.com鈥 (windows).

y corres el script

-todo esto en la terminal

y Listo 馃槃

Hola , me quede atorado en el paso 8, al momento de poner el comando firebase use --add en la terminal de Google Cloud SDK Shell para seleccionar el proyecto previamente creado, me dice que no se reconoce como un comando, ya busqu茅 en Firebase intente agregar npm y me arrojo Warnings y Errors, baje Node.js y sigue sin darme la opci贸n del comando. Alguien que me pueda guiar? Se los agradezco de antemano. Saludos!

Done 馃槂 . Hay que asegurarse que las variables de entorno esten bien definidas para que el script no de errores.

Ya hice todo lo que comentan aqui, pero al momento de subir las imagenes cuando ejecuto el node index.js me nada un error que dice Invalid bucket name: 鈥樷減latzi-storefront-2a01a鈥.appspot.com鈥 y de ahi no paso la aplicacion ya se ve pero en blanco sin imagenes, alguien me puede ayudar?

Hola, he le铆do los comentarios de los compa帽eros he instalado el firebase/component y guardado las variable con SET SET PROJECT_ID="<PROJECT_ID>"
SET DATABASE_URL=鈥渉ttps://<PROJECT_ID>.firebaseio.com鈥 pero al aplicar el node index.js me sale una lista larga de errores espero me puedan ayudar

Bien, solo creo que en el paso 10 falt贸 mencionar que hay que hacer:

gcloud auth login
gcloud config set project <PROJECT_ID> 

Despu茅s de esta lectura qued茅 con ganas de profundizar y ver el curso de Firebase

A alguien m谩s les salen estos errores al ejecutar el script index.js ?

Luego de realizar todos los pasos, me carga ok la pagina, pero no veo los producos. En firebase storage veo que los productos estan cargados correctamente. A alguien mas le paso?. Borre todo y volvi a realizar todo el proceso de cero nuevamente y me sigue sucediendo. A Alguien mas le paso?

Hola. En que parte del tutorial se habilita la webapp? En el paso 7 solo se habilita el hosting sin iniciar ni levantar nada (dice que se har谩 en pasos posteriores) y en el paso 9 piden que vayamos a settings del proyecto y que tomemos los par谩metros de nuestra app para meterlos en el archivo .env.local pero no hay nada en settings porque no hay webapp.

Hay alg煤n curso en el que se lleve a cabo este proyecto de la tienda de platzi?

Disculpen la pregunta (tal vez tonta), 驴El paso 1 donde lo realizo?, pueden ayudarme con los pasos para ejecutar el paso 1?
Gracias.

驴Cu谩l es la diferencia entre el comando gcloud auth application-default login y gcloud init?

驴Es necesario ejecutar ambos?

quede en el punto 10 no me quedo claro 驴C贸mo hago esto en diferentes sistemas operativos?