
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Create a Pub/Sub topic
/ 10
Deploy the Lab Report Service: Build
/ 15
Create a Revision for Cloud Run
/ 15
Deploy the Email Service: Build
/ 15
Create a new Revision
/ 15
Create a service account
/ 10
Create a Pub/Sub subscription
/ 10
Deploy the SMS Service
/ 10
Para los labs del curso Serverless Cloud Run Development, leerás el caso de una empresa ficticia y ayudarás a los personajes con su plan de migración a una tecnología sin servidores.
Hace doce años, Liliana fundó la cadena de clínicas veterinarias Pet Theory. Con el paso del tiempo, abrieron más clínicas y surgió la necesidad de buscar soluciones de automatización. La manera en que Pet Theory procesa los resultados de las pruebas médicas que recibe del laboratorio es demasiado lenta y propensa a errores, por lo que Liliana desea mejorarla.
Actualmente, Patricio, el administrador de TI de Pet Theory, procesa los resultados de las pruebas de forma manual. Siempre que recibe los resultados de una prueba, Patricio sigue dos pasos: primero, redacta y envía un correo electrónico al dueño de la mascota en cuestión y, luego, transcribe los resultados en un mensaje de texto que envía a dicho cliente desde su teléfono.
Patricio está trabajando con Rita, una asesora de software, para diseñar un sistema más escalable. Quieren crear una solución que no requiera tanto mantenimiento continuo y decidieron optar por la tecnología sin servidores.
En este lab, aprenderás a hacer lo siguiente:
Para este lab, se da por sentado que el usuario tiene conocimientos previos sobre los entornos de shell y la consola de Cloud. Además, como este lab forma parte de una serie, haber realizado otros anteriores podría ser útil, aunque no es obligatorio:
Lee estas instrucciones. Los labs son cronometrados y no se pueden pausar. El cronómetro, que comienza a funcionar cuando haces clic en Comenzar lab, indica por cuánto tiempo tendrás a tu disposición los recursos de Google Cloud.
Este lab práctico te permitirá realizar las actividades correspondientes en un entorno de nube real, no en uno de simulación o demostración. Para ello, se te proporcionan credenciales temporales nuevas que utilizarás para acceder a Google Cloud durante todo el lab.
Para completar este lab, necesitarás lo siguiente:
Haga clic en el botón Comenzar lab. Si debe pagar por el lab, se abrirá una ventana emergente para que seleccione su forma de pago. A la izquierda, se encuentra el panel Detalles del lab, que tiene estos elementos:
Haz clic en Abrir la consola de Google Cloud (o haz clic con el botón derecho y selecciona Abrir el vínculo en una ventana de incógnito si ejecutas el navegador Chrome).
El lab inicia recursos y abre otra pestaña en la que se muestra la página de acceso.
Sugerencia: Ordene las pestañas en ventanas separadas, una junto a la otra.
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
También puedes encontrar el nombre de usuario en el panel Detalles del lab.
Haz clic en Siguiente.
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
También puedes encontrar la contraseña en el panel Detalles del lab.
Haz clic en Siguiente.
Haga clic para avanzar por las páginas siguientes:
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Cloud Shell es una máquina virtual que cuenta con herramientas para desarrolladores. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud. Cloud Shell proporciona acceso de línea de comandos a tus recursos de Google Cloud.
Cuando te conectes, habrás completado la autenticación, y el proyecto estará configurado con tu PROJECT_ID. El resultado contiene una línea que declara el PROJECT_ID para esta sesión:
gcloud
es la herramienta de línea de comandos de Google Cloud. Viene preinstalada en Cloud Shell y es compatible con la función de autocompletado con tabulador.
Haz clic en Autorizar.
Ahora, el resultado debería verse de la siguiente manera:
Resultado:
Resultado:
Resultado de ejemplo:
gcloud
, consulta la guía con la descripción general de gcloud CLI en Google Cloud.
Algunos recursos de Compute Engine se encuentran en regiones y zonas. Una región es una ubicación geográfica específica donde puedes ejecutar tus recursos. Cada región tiene una o más zonas.
Ejecuta los siguientes comandos de gcloud en la consola de Cloud para establecer la región y la zona predeterminadas de tu lab:
En Pet Theory, quieren automatizar el proceso utilizado para compartir los resultados de las pruebas de los clientes. Tienen cada vez más consultas y se les dificulta procesarlas, por lo que Liliana le pidió a Rita que los ayudara.
Liliana, fundadora de Pet Theory |
Hola Rita: Gracias por organizar el portal de seguros. Quisiera saber si se puede hacer algo respecto de los resultados de las pruebas médicas, ya que necesitamos una manera más eficiente de enviárselos a nuestros clientes. Liliana |
Rita, asesora de software |
Hola Liliana: Por supuesto. Déjeme ver qué puedo hacer. Tengo algunas ideas que podrían mejorar la situación. Rita |
Pet Theory recurre a una empresa externa para realizar las pruebas médicas. Una vez que el laboratorio completa una prueba médica, comparte los resultados con Pet Theory.
Para ello, la empresa envía una solicitud HTTP(S) POST al extremo web correspondiente de Pet Theory. En la siguiente ilustración, se puede consultar un esquema de la arquitectura general.
Tras analizar el proceso general seguido en Pet Theory, Rita considera que se puede diseñar un sistema que les permita hacer lo siguiente:
El diseño de Rita aísla cada una de las actividades anteriores y requiere lo siguiente:
Por medio del empleo de funciones de un solo uso, Rita pretende desarrollar un código que sea más fácil de escribir y que contenga menos errores.
Rita, asesora de software |
Hola Patricio: Liliana me pidió crear un prototipo para agilizar el procesamiento de las historias clínicas. Para comenzar, quisiera pedirte que configures un tema de Pub/Sub llamado Rita |
Patricio, administrador de TI |
Hola Rita: Parece ser un proyecto grandioso. Puedo hacer lo que me pides esta misma mañana, ya que ambas actividades se pueden configurar muy rápido en Google Cloud. Patricio |
Ayuda a Patricio a crear un tema de Pub/Sub llamado new-lab-report
.
Cuando un servicio publica un mensaje de Pub/Sub, se debe etiquetar dicho mensaje con un tema. El servicio que se está por crear consumirá el informe de laboratorio y publicará un mensaje para cada informe encontrado.
Primero, debes crear un tema que se pueda utilizar para esta tarea.
Todos los servicios suscritos al tema “new-lab-report” podrán consumir los mensajes que publique el servicio de informes de laboratorio. En el diagrama anterior, puedes ver dos consumidores de este tipo: el servicio de correo electrónico y el servicio de SMS.
Haz clic en Revisar mi progreso para verificar el objetivo.
No olvides avisarle a Rita que el tema de Pub/Sub ya está listo para su uso.
Patricio, administrador de TI |
Hola Rita: Ya hice lo que me pediste. Si tienes tiempo, me gustaría ver paso a paso cómo se crea este prototipo. ¿Crees que podríamos trabajar juntos en este proyecto? Patricio |
Rita, asesora de software |
Hola Patricio: ¡Genial! Gracias por hacerlo tan rápido. Fijaré un horario y comenzaremos con la compilación. Rita |
Ayuda a Rita a configurar el nuevo servicio de informes de laboratorio.
Se compilará este servicio con fines de prototipado, por lo que solo realizará dos tareas:
lab-service
:Con estos comandos, se actualiza el archivo package.json
para indicar las dependencias que requiere este servicio.
Ahora, debes editar el archivo package.json
para que Cloud Run sepa cómo iniciar tu código.
Abre el archivo package.json
.
En la sección de “scripts” del archivo package.json
, agrega la línea de código "start": "node index.js",
en la línea 7 (como se muestra a continuación) y, luego, guarda el archivo:
"start": "node index.js",
De lo contrario, encontrarás errores durante la implementación.
index.js
y agrégale este código:const labReport = req.body;
await publishPubSubMessage(labReport);
Específicamente, estas líneas:
Dockerfile
y agrégale el siguiente código:Este archivo define cómo empaquetar el servicio de Cloud Run en un contenedor.
deploy.sh
y pega allí estos comandos:Debido a cuestiones de tiempo, es posible que recibas un mensaje de error la primera vez que ejecutes este comando. De ser así, solo vuelve a ejecutar deploy.sh
.
Una vez que se haya completado correctamente la implementación, verás un mensaje similar a este:
Buen trabajo. Se implementó el servicio de informes de laboratorio, que consumirá los resultados médicos del laboratorio a través de HTTP. Ahora, puedes probar si funciona correctamente el servicio nuevo.
Haz clic en Revisar mi progreso para verificar el objetivo.
Haz clic en Revisar mi progreso para verificar el objetivo.
Para validar el servicio de informes de laboratorio, simula tres solicitudes HTTPS POST realizadas por el laboratorio, cada una con un informe de laboratorio. A los fines de la prueba, los informes de laboratorio creados solo incluirán un ID.
post-reports.sh
y agrégale el siguiente código:La secuencia de comandos anterior utilizará el comando curl
para publicar tres IDs distintos en la URL del servicio de informes de laboratorio. Se ejecutará cada comando individualmente en segundo plano.
post-reports.sh
sea ejecutable:Esta secuencia de comandos publicó tres informes de laboratorio en tu servicio de informes de laboratorio. Revisa los registros para ver los resultados.
En la consola de Cloud, haz clic en el Menú de navegación () > Cloud Run.
Ahora deberías ver el servicio lab-report-service que acabas de implementar en la lista Servicios. Haz clic en él.
En la página siguiente, se muestran detalles sobre tu servicio lab-report-service. Haz clic en la pestaña Registros.
En la página Registros, se incluyen los resultados de los tres informes de prueba que acabas de publicar con la secuencia de comandos. Con suerte, se devolverá el código HTTP 204, como se ilustra a continuación. Este código significa que está todo bien y que no hay contenido. Si no ves ninguna entrada, desplázate hacia arriba y hacia abajo con la barra de desplazamiento de la derecha. Eso volverá a cargar el registro.
La próxima tarea consiste en escribir los servicios de correo electrónico y SMS, que se activarán cuando el servicio de informes de laboratorio publique un mensaje de Pub/Sub en el tema “new-lab-report”.
Ayuda a Rita a configurar el nuevo servicio de correo electrónico.
El comando anterior actualizará el archivo package.json
, que describe la aplicación y sus dependencias. Se debe indicar a Cloud Run cómo ejecutar el código. Para ello, agrega la instrucción start
.
Abre el archivo package.json
.
En la sección “scripts”, agrega la línea "start": "node index.js",
como se muestra a continuación y guarda el archivo:
"start": "node index.js",
De lo contrario, encontrarás errores durante la implementación.
index.js
y agrégale lo siguiente:Se ejecutará este código cuando Pub/Sub publique un mensaje en el servicio y hará lo siguiente:
sendEmail()
.Tras asegurarse de que funcione la comunicación entre los servicios, Rita agregará código a la función sendEmail()
para efectivamente enviar el correo electrónico.
Dockerfile
y agrégale el siguiente código:Este archivo define cómo empaquetar el servicio de Cloud Run en un contenedor.
deploy.sh
y agrégale lo siguiente:deploy.sh
sea ejecutable:Cuando la implementación esté lista, verás un mensaje similar al siguiente:
Se implementó correctamente el servicio de correo electrónico. Ahora, debes asegurarte de que se active cuando haya un mensaje de Pub/Sub disponible.
Haz clic en Revisar mi progreso para verificar el objetivo.
Haz clic en Revisar mi progreso para verificar el objetivo.
Siempre que se publique un nuevo mensaje de Pub/Sub con el tema “new-lab-report”, se debería activar el servicio de correo electrónico. Para que eso suceda, configura una cuenta de servicio que procese automáticamente las solicitudes asociadas con este servicio.
Haz clic en Revisar mi progreso para verificar el objetivo.
A continuación, configura Pub/Sub para que invoque el servicio de SMS cuando se publique un nuevo mensaje de “new-lab-report”.
A continuación, habilita el proyecto para crear tokens de autenticación de Pub/Sub.
Buen trabajo. Ya se configuró el servicio para que responda a los mensajes de Cloud Pub/Sub. El siguiente paso es validar el código para confirmar que cumple con los requisitos.
Haz clic en Revisar mi progreso para verificar el objetivo.
Luego, abre el registro (Menú de navegación > Cloud Run). Verás los dos servicios de Cloud Run, email-service y lab-report-service, en tu cuenta.
Haz clic en email-service y, luego, en Registros.
Verás el resultado de este servicio activado por Pub/Sub. Si no ves los mensajes que esperas, es posible que debas desplazarte hacia arriba y hacia abajo con la barra de desplazamiento para que el registro se actualice.
Buen trabajo. El servicio de correo electrónico ahora puede escribir información en el registro siempre que se procese un mensaje de la cola de temas de Cloud Pub/Sub. La última tarea consiste en escribir el servicio de SMS.
Ayuda a Rita a configurar el nuevo servicio de SMS.
Abre el archivo package.json
.
En la sección “scripts”, agrega la línea "start": "node index.js",
como se muestra a continuación y guarda el archivo:
"start": "node index.js",
De lo contrario, encontrarás errores durante la implementación.
index.js
y agrégale lo siguiente:Dockerfile
y agrégale el siguiente código:Este archivo define cómo empaquetar el servicio de Cloud Run en un contenedor. Ahora que ya se creó el código, el paso siguiente es implementar el servicio.
deploy.sh
y agrégale el siguiente código:deploy.sh
sea ejecutable:Cuando la implementación esté lista, se mostrará un mensaje similar al siguiente:
Se implementó correctamente el servicio de SMS, pero aún no está vinculado al servicio de Cloud Pub/Sub. Corrígelo en la próxima sección.
Haz clic en Revisar mi progreso para verificar el objetivo.
Tal como sucede con el servicio de correo electrónico, se debe configurar la vinculación entre Cloud Pub/Sub y el servicio de SMS para que se puedan consumir los mensajes.
A continuación, configura Pub/Sub para que invoque el servicio de SMS cuando se publique un nuevo mensaje de "new-lab-report".
Confirma que se haya capturado SMS_SERVICE_URL:
Luego, crea la suscripción a Pub/Sub:
Luego, abre el registro (Menú de navegación > Cloud Run). Verás los tres servicios de Cloud Run, email-service, lab-report-service y sms-service, en tu cuenta.
Haz clic en sms-service y, luego, en Registros. Verás el resultado de este servicio activado por Pub/Sub.
Se creó y probó correctamente el sistema prototípico, pero Patricio está preocupado porque no se probó la resiliencia como parte del proceso de validación inicial.
¿Qué sucede si deja de funcionar uno de los servicios? Eso ya le sucedió a Patricio, puesto que es una situación que se da con frecuencia.
Ayuda a Rita a investigar cómo garantizar que el sistema pueda lidiar con este tipo de situaciones. Ella desea probar qué sucede cuando falla un servicio y, para ello, implementará una versión con errores del servicio de correo electrónico.
email-service
:Agrega texto no válido a la aplicación del servicio de correo electrónico para provocar un error.
index.js
y agrega la línea de throw
a la función sendEmail()
, como se muestra a continuación. Se arrojará una excepción, como si no funcionara el servidor de correo electrónico:Agregar este código provocará una falla en el servicio cuando se lo invoque.
Abre los registros del servicio de correo electrónico para ver la información sobre el servicio de correo electrónico deficiente: Menú de navegación > Cloud Run.
Cuando veas los tres servicios de Cloud Run en tu cuenta, haz clic en email-service.
Si bien se invocará el servicio de correo electrónico, este fallará una y otra vez. Si te desplazas un poco hacia atrás en los registros, encontrarás la causa raíz: “Email server is down”. También podrás ver que el servicio devuelve el código de estado 500 y que Pub/Sub sigue reintentando llamar al servicio.
Si observas los registros del servicio de SMS, verás que este funciona correctamente.
Ahora, corrige el error en el servicio de correo electrónico para restablecer la aplicación.
index.js
, quita la línea de throw que ingresaste anteriormente y, luego, guarda el archivo.La función sendEmail
del archivo index.js
ahora debería verse similar a lo siguiente:
Verás que finalmente se enviaron los correos electrónicos correspondientes a los informes 12, 34 y 56, que el servicio de correo electrónico devolvió el código de estado 204 y que Pub/Sub dejó de invocar el servicio. No se perdió ningún dato. Pub/Sub siguió reintentando hasta que pudo completar correctamente la tarea. Esta es la base de un sistema sólido.
Con tu ayuda, Rita logró compilar un sistema prototípico resiliente. El servicio puede enviar automáticamente un correo electrónico y un mensaje de texto (SMS) a cada cliente. Si dejan de funcionar temporalmente los servicios individuales, el sistema implementará un mecanismo de reintentos para que no se pierda ningún dato. Rita recibe varios elogios bien merecidos.
Liliana, fundadora de Pet Theory |
Hola Rita: No alcanzan las palabras para agradecerte por tu arduo trabajo y liderazgo. En muy poco tiempo, se renovaron por completo nuestros sistemas esenciales. El viernes, haremos una pequeña reunión para celebrar, y sería grandioso si pudieras asistir como nuestra invitada de honor. Liliana |
|
Rita: Recibí comentarios muy positivos sobre tu trabajo en Pet Theory. Se te considera un recurso sumamente valioso en el equipo. Ahora que finalizaste esta asignación, quisiera ofrecerte un puesto de mayor nivel en un proyecto nuevo. Macarena Directora general Computer Consulting Inc. |
Recibe la formación que necesitas para aprovechar al máximo las tecnologías de Google Cloud. Nuestras clases incluyen habilidades técnicas y recomendaciones para ayudarte a avanzar rápidamente y a seguir aprendiendo. Para que puedas realizar nuestros cursos cuando más te convenga, ofrecemos distintos tipos de capacitación de nivel básico a avanzado: a pedido, presenciales y virtuales. Las certificaciones te ayudan a validar y demostrar tus habilidades y tu conocimiento técnico respecto a las tecnologías de Google Cloud.
Última actualización del manual: 1 de febrero de 2024
Prueba más reciente del lab: 20 de septiembre de 2023
Copyright 2025 Google LLC. All rights reserved. Google y el logotipo de Google son marcas de Google LLC. Los demás nombres de productos y empresas pueden ser marcas de las respectivas empresas a las que estén asociados.
Este contenido no está disponible en este momento
Te enviaremos una notificación por correo electrónico cuando esté disponible
¡Genial!
Nos comunicaremos contigo por correo electrónico si está disponible
One lab at a time
Confirm to end all existing labs and start this one