Hace doce años, Lily fundó la cadena de clínicas veterinarias Pet Theory. Con
el tiempo, abrió más clínicas y ahora 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 Lily desea mejorarla.
Actualmente, Patricio, administrador de TI de Pet Theory, procesa los
resultados de las pruebas de forma manual. Siempre que recibe los resultados
de una prueba, 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.
Objetivos
En este lab, aprenderás a hacer lo siguiente:
Crear un tema y una suscripción de Pub/Sub
Crear servicios de Cloud Run para publicar y recibir mensajes
Crear una suscripción a Pub/Sub que active un servicio de Cloud Run
Probar la resiliencia de un sistema
Requisitos previos
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:
Nota: Para realizar este lab, accede a la consola de Google Cloud como Username 1. De lo contrario, encontrarás errores durante el lab.
Antes de hacer clic en el botón Comenzar lab
Lee estas instrucciones. Los labs cuentan con un temporizador que no se puede pausar. El temporizador, 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:
Acceso a un navegador de Internet estándar. Se recomienda el navegador Chrome.
Nota: Usa una ventana del navegador privada o de incógnito (opción recomendada) para ejecutar el lab. Así evitarás conflictos entre tu cuenta personal y la cuenta de estudiante, lo que podría generar cargos adicionales en tu cuenta personal.
Tiempo para completar el lab (recuerda que, una vez que comienzas un lab, no puedes pausarlo).
Nota: Usa solo la cuenta de estudiante para este lab. Si usas otra cuenta de Google Cloud, es posible que se apliquen cargos a esa cuenta.
Cómo iniciar tu lab y acceder a la consola de Google Cloud
Haz clic en el botón Comenzar lab. Si debes pagar por el lab, se abrirá un diálogo para que selecciones la forma de pago.
A la derecha, se encuentra el panel Configuración del lab y acceso, que tiene los siguientes elementos:
El botón Abrir la consola de Google Cloud
Las credenciales temporales (nombre de usuario y contraseña) que debes usar para este lab
Otra información para completar el lab (si es necesaria)
Ten en cuenta que el cronómetro del lab se encuentra cerca de la parte superior de la página y muestra el tiempo restante.
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 los recursos y abre otra pestaña, en la que se muestra la página de acceso.
Sugerencia: Ordena las pestañas en ventanas separadas, una junto a la otra.
Nota: Si ves el diálogo Elegir una cuenta, haz clic en Usa otra cuenta.
De ser necesario, copia el nombre de usuario a continuación y pégalo en el diálogo Acceder.
{{{user_0.username | "Username"}}}
También puedes encontrar el nombre de usuario en el panel Configuración del lab y acceso.
Haz clic en Siguiente.
Copia la contraseña que aparece a continuación y pégala en el diálogo Te damos la bienvenida.
{{{user_0.password | "Password"}}}
También puedes encontrar la contraseña en el panel Configuración del lab y acceso.
Haz clic en Siguiente.
Importante: Debes usar las credenciales que te proporciona el lab. No uses las credenciales de tu cuenta de Google Cloud.
Nota: Usar tu propia cuenta de Google Cloud para este lab podría generar cargos adicionales.
Haz clic para avanzar por las páginas siguientes:
Acepta los Términos y Condiciones.
No agregues opciones de recuperación ni autenticación de dos factores, ya que esta cuenta es temporal.
No te registres para obtener pruebas gratuitas.
Después de un momento, se abrirá la consola de Google Cloud en esta pestaña.
Nota: Para acceder a los productos y servicios de Google Cloud, haz clic en el menú de navegación o escribe el nombre del servicio o producto en el campo Buscar.
Activa Cloud Shell
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.
Haz clic en Activar Cloud Shell en la parte superior de la consola de Google Cloud.
Haz clic para avanzar por las siguientes ventanas:
Continúa en la ventana de información de Cloud Shell.
Autoriza a Cloud Shell para que use tus credenciales para realizar llamadas a la API 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:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
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.
Puedes solicitar el nombre de la cuenta activa con este comando (opcional):
gcloud auth list
Haz clic en Autorizar.
Resultado:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
Puedes solicitar el ID del proyecto con este comando (opcional):
gcloud config list project
Resultado:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Nota: Para obtener toda la documentación de gcloud, en Google Cloud, consulta la guía con la descripción general de gcloud CLI.
Configura tu región y zona
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 Cloud Shell para establecer la región y la zona predeterminadas de tu lab:
gcloud config set compute/zone "{{{project_0.default_zone|ZONE}}}"
export ZONE=$(gcloud config get compute/zone)
gcloud config set compute/region "{{{project_0.default_region|REGION}}}"
export REGION=$(gcloud config get compute/region)
Situación
En Pet Theory, quieren automatizar el proceso utilizado para compartir los
resultados de las pruebas de los clientes. Tienen cada vez más citas y se les
dificulta procesarlas, por lo que Lily le pidió ayuda a Rita.
Lily, 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.
Lily
Rita, asesora de software
Hola Lily:
¡Claro! Voy a analizarlo. Se me ocurren algunas formas de mejorar la
situación.
Rita
Tarea 1: Arquitectura
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 endpoint web
correspondiente de Pet Theory. La siguiente ilustración es 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:
Recibir la solicitud HTTP POST y confirmar su recepción al laboratorio
médico
Enviar los resultados de la prueba por correo electrónico al cliente
Enviar un mensaje de texto (SMS) y un correo electrónico con los resultados
de la prueba al cliente
El diseño de Rita aísla cada una de las actividades anteriores y requiere lo
siguiente:
Un servicio que cree la solicitud y la respuesta de los resultados médicos
Un servicio que envíe los resultados de la prueba por correo electrónico al
cliente
Un servicio que envíe un mensaje de texto (SMS) al cliente
El uso de Pub/Sub para la comunicación entre servicios
El uso de una infraestructura sin servidores para la arquitectura de la
aplicación
Rita pretende aprovechar las funciones de un solo uso para usar código más
fácil de escribir y con menos errores.
Rita, asesora de software
Hola Patricio:
Lily me pidió crear un prototipo para agilizar el procesamiento de
historias clínicas.
Para comenzar, quisiera pedirte que configures un tema de Pub/Sub
llamado new-lab-report.
Rita
Patricio, administrador de TI
Hola Rita:
Me parece un proyecto grandioso. Lo tendré listo hoy mismo por la
mañana, ya que ambas actividades se pueden configurar muy rápido en
Google Cloud.
Patricio
Crea un tema de Pub/Sub
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 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.
Ejecuta el siguiente comando para crear un tema de Pub/Sub:
gcloud pubsub topics create new-lab-report
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.
A continuación, habilita Cloud Run para que ejecute tu código en la nube:
gcloud services enable run.googleapis.com
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear un tema de Pub/Sub
No olvides avisarle a Rita que el tema de Pub/Sub ya está listo.
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 arma el prototipo.
¿Te parece si trabajamos juntos?
Patricio
Rita, asesora de software
Hola Patricio:
¡Buenísimo! Gracias por la rapidez. Fijaré un horario y comenzaremos con
el desarrollo.
Rita
Tarea 2: Crea el servicio de informes de laboratorio
Ayuda a Rita a configurar el nuevo servicio de informes de laboratorio.
El servicio tendrá fines de prototipado, por lo que solo realizará dos tareas:
Recibir la solicitud HTTPS POST correspondiente al informe de laboratorio y
que contiene los datos de dicho informe
Publicar un mensaje en Pub/Sub
Agrega el código del servicio de informes de laboratorio
En Cloud Shell, clona el repositorio que se necesita para este lab:
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 “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:
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
Nota: Asegúrate de agregar el código tal como se te proporciona, incluida la coma final:
"start": "node index.js",
De lo contrario, encontrarás errores durante la implementación.
Crea un nuevo archivo llamado index.js y agrégale este código:
const {PubSub} = require('@google-cloud/pubsub');
const pubsub = new PubSub();
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
app.use(bodyParser.json());
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log('Listening on port', port);
});
app.post('/', async (req, res) => {
try {
const labReport = req.body;
await publishPubSubMessage(labReport);
res.status(204).send();
}
catch (ex) {
console.log(ex);
res.status(500).send(ex);
}
})
async function publishPubSubMessage(labReport) {
const buffer = Buffer.from(JSON.stringify(labReport));
await pubsub.topic('new-lab-report').publish(buffer);
}
Estas dos líneas realizan el trabajo principal del servicio:
const labReport = req.body;await publishPubSubMessage(labReport);
Específicamente, estas líneas:
Extraen el informe de laboratorio de la solicitud POST.
Publican un mensaje de Pub/Sub con los datos del informe de laboratorio que
se acaba de publicar.
Ahora crea un archivo llamado Dockerfile y agrégale el
siguiente código:
FROM node:18
WORKDIR /usr/src/app
COPY package.json package*.json ./
RUN npm install --only=production
COPY . .
CMD [ "npm", "start" ]
Ese archivo define cómo empaquetar el servicio de Cloud Run en un contenedor.
Implementa el servicio lab-report-service
Crea un archivo llamado deploy.sh y pega allí los siguientes
comandos:
En Cloud Shell, ejecuta lo siguiente para que el archivo sea ejecutable:
chmod u+x deploy.sh
Llegó la hora de implementar el servicio de informes de laboratorio. Ejecuta
la secuencia de comandos de implementación:
./deploy.sh
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:
Service [lab-report-service] revision [lab-report-service-00001] has been deployed and is serving traffic at https://lab-report-service-[hash].a.run.app
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.
Haz clic en Revisar mi progreso para verificar el objetivo.
Implementar el servicio de informes de laboratorio: desarrollar
Haz clic en Revisar mi progreso para verificar el objetivo.
Implementar el servicio de informes de laboratorio: crear revisión
Prueba el servicio de informes de laboratorio
Para validar el servicio de informes de laboratorio, simula tres solicitudes
HTTPS POST realizadas por el laboratorio, cada una con un informe. A los fines
de la prueba, los informes de laboratorio creados solo incluirán un ID.
Primero, coloca la URL que dirige al informe en una variable de entorno para
que sea más fácil trabajar con ella.
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.
Haz que la secuencia de comandos post-reports.sh sea
ejecutable:
chmod u+x post-reports.sh
Ahora prueba el endpoint del servicio de informes de laboratorio. Para ello,
publica allí tres informes de laboratorio con la secuencia de comandos antes
mencionada:
./post-reports.sh
Esta secuencia de comandos publicó tres informes 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”.
Tarea 3: Servicio de correo electrónico
Ayuda a Rita a configurar el nuevo servicio de correo electrónico.
Agrega el código del servicio de correo electrónico
Accede al directorio del servicio de correo electrónico:
cd ~/pet-theory/lab05/email-service
Instala estos paquetes para que el código pueda procesar las solicitudes
HTTPS entrantes:
npm install express
npm install body-parser
El comando anterior actualizará el archivo package.json, en el
que se describen la app 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:
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
Nota: Asegúrate de agregar el código tal como se te proporciona, incluida la coma final:
"start": "node index.js",
De lo contrario, encontrarás errores durante la implementación.
Crea un nuevo archivo llamado 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:
Decodificará el mensaje de Pub/Sub y, luego, intentará llamar a la función
sendEmail().
Si se completa correctamente el primer paso y no se arroja ninguna
excepción, devolverá el código de estado 204 para indicarle a Pub/Sub que se
procesó el mensaje.
Si ocurre una excepción, devolverá el código de estado 500 para indicarle a
Pub/Sub que no se procesó el mensaje y que debe volver a publicarlo en el
servicio más tarde.
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.
Ahora crea un archivo llamado Dockerfile y agrégale el
siguiente código:
FROM node:18
WORKDIR /usr/src/app
COPY package.json package*.json ./
RUN npm install --only=production
COPY . .
CMD [ "npm", "start" ]
Ese archivo define cómo empaquetar el servicio de Cloud Run en un contenedor.
Implementa el servicio de correo electrónico
Crea un nuevo archivo llamado deploy.sh y agrégale lo
siguiente:
Cuando la implementación esté lista, verás un mensaje similar al siguiente:
Service [email-service] revision [email-service-00001] has been deployed and is serving traffic at https://email-service-[hash].a.run.app
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.
Implementar el servicio de correo electrónico: desarrollar
Haz clic en Revisar mi progreso para verificar el objetivo.
Implementar el servicio de correo electrónico: crear revisión
Configura Pub/Sub para activar el servicio de correo electrónico
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.
Crea una cuenta de servicio nueva destinada a activar los servicios que
responden a los mensajes de Pub/Sub:
gcloud iam service-accounts create pubsub-cloud-run-invoker --display-name "PubSub Cloud Run Invoker"
Haz clic en Revisar mi progreso para verificar el objetivo.
Crear una cuenta de servicio
Otorga permiso a la nueva cuenta de servicio para invocar el servicio de
correo electrónico:
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.
Crear la suscripción a Pub/Sub
Prueba los servicios de informes de laboratorio y de correo electrónico juntos
Con la secuencia de comandos que creaste anteriormente, vuelve a publicar
datos en los informes de laboratorio:
~/pet-theory/lab05/lab-service/post-reports.sh
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 se actualice el
registro.
¡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.
Tarea 4: Servicio de SMS
Ayuda a Rita a configurar el nuevo servicio de SMS.
Agrega el código del servicio de SMS
Accede al directorio del servicio de SMS:
cd ~/pet-theory/lab05/sms-service
Instala los paquetes necesarios para recibir las solicitudes HTTPS
entrantes:
npm install express
npm install body-parser
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:
...
"scripts": {
"start": "node index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
...
Nota: Asegúrate de agregar el código tal como se te proporciona, incluida la coma final:
"start": "node index.js",
De lo contrario, encontrarás errores durante la implementación.
Crea un nuevo archivo llamado index.js y agrégale lo siguiente:
Ahora crea un archivo llamado Dockerfile y agrégale el
siguiente código:
FROM node:18
WORKDIR /usr/src/app
COPY package.json package*.json ./
RUN npm install --only=production
COPY . .
CMD [ "npm", "start" ]
Ese archivo define cómo empaquetar el servicio de Cloud Run en un contenedor.
Ahora que ya creaste el código, el paso siguiente es implementar el servicio.
Implementa el servicio de SMS
Crea un archivo llamado deploy.sh y agrégale el siguiente
código:
Cuando la implementación esté lista, se mostrará un mensaje similar al
siguiente:
Service [sms-service] revision [sms-service-00001] has been deployed and is serving traffic at https://sms-service-[hash].a.run.app
Implementaste 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.
Implementar el servicio de SMS
Configura Cloud Pub/Sub para activar el servicio de SMS
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.
Configura los permisos necesarios para que Pub/Sub pueda activar el servicio
de SMS:
Vuelve a ejecutar la secuencia de comandos de prueba para publicar tres
informes de laboratorio en el servicio de informes de laboratorio:
~/pet-theory/lab05/lab-service/post-reports.sh
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. Sin embargo, Patricio
está preocupado porque no se probó la resiliencia como parte del proceso de
validación inicial.
Tarea 5: Prueba la resiliencia del sistema
¿Qué sucede si deja de funcionar uno de los servicios? Patricio ya conoce bien
este tipo de fallas, pues son frecuentes.
Ayuda a Rita a investigar cómo garantizar que el sistema pueda lidiar con ese
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.
Regresa al directorio email-service:
cd ~/pet-theory/lab05/email-service
Agrega texto no válido a la aplicación del servicio de correo electrónico para
provocar un error.
Edita el archivo 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:
...
function sendEmail() {
throw 'Email server is down';
console.log('Sending email');
}
...
Agregar este código provocará una falla en el servicio cuando se lo invoque.
Implementa esta versión con errores del servicio de correo electrónico:
./deploy.sh
Cuando se haya completado correctamente la implementación del servicio de
correo electrónico, vuelve a publicar datos en los informes de laboratorio
y, luego, observa detenidamente el estado del registro de
email-service:
~/pet-theory/lab05/lab-service/post-reports.sh
Abre los registros del servicio de correo electrónico para obtener
detalles sobre la versión con errores:
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.
Abre el archivo 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:
function sendEmail() {
console.log('Sending email');
}
Implementa la versión corregida del servicio de correo electrónico:
./deploy.sh
Cuando la implementación haya finalizado, haz clic en el ícono de
actualización, ubicado en la esquina superior derecha.
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.
Conclusiones
Usar Pub/Sub para la comunicación asíncrona entre servicios (en vez de usar
llamadas directas entre ellos) aumenta la resiliencia del sistema.
El activador del servicio de informes de laboratorio es independiente de
otros servicios gracias al uso de Pub/Sub. Por ejemplo, si los clientes
también quisieran recibir los resultados de laboratorio a través de otro
servicio de mensajería, este se podría agregar sin necesidad de actualizar
el servicio de informes de laboratorio.
Cloud Pub/Sub se encargó de los reintentos, de modo que los servicios no
debieron hacerlo. Los servicios solo se necesitan para devolver un código de
estado: correcto o con errores.
Además, gracias a los reintentos de Pub/Sub, si deja de funcionar un
servicio, el sistema puede “repararse” automáticamente cuando el servicio
vuelva a estar en línea.
¡Felicitaciones!
Con tu ayuda, Rita logró crear el prototipo de un sistema 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 se lleva un reconocimiento más que merecido.
Lily, 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.
Este viernes, vamos a organizar un pequeño festejo y nos encantaría que
fueras nuestra invitada de honor.
Lily
Macarena, directora general
Rita:
Recibí comentarios muy positivos sobre tu trabajo en Pet Theory. Tu
aporte al equipo ha sido sencillamente excepcional.
Aprovechando que terminaste con este encargo, me gustaría ofrecerte un
puesto de mayor nivel en un proyecto nuevo.
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: 23 de julio de 2024
Prueba más reciente del lab: 23 de julio de 2024
Copyright 2026 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.
Antes de comenzar
Los labs crean un proyecto de Google Cloud y recursos por un tiempo determinado
.
Los labs tienen un límite de tiempo y no tienen la función de pausa. Si finalizas el lab, deberás reiniciarlo desde el principio.
En la parte superior izquierda de la pantalla, haz clic en Comenzar lab para empezar
Usa la navegación privada
Copia el nombre de usuario y la contraseña proporcionados para el lab
Haz clic en Abrir la consola en modo privado
Accede a la consola
Accede con tus credenciales del lab. Si usas otras credenciales, se generarán errores o se incurrirá en cargos.
Acepta las condiciones y omite la página de recursos de recuperación
No hagas clic en Finalizar lab, a menos que lo hayas terminado o quieras reiniciarlo, ya que se borrará tu trabajo y se quitará el proyecto
Este contenido no está disponible en este momento
Podemos enviarte una notificación por correo electrónico cuando esté disponible
¡Genial!
Podemos comunicarnos contigo por correo electrónico si está disponible
Un lab a la vez
Confirma para finalizar todos los labs existentes y comenzar este
Usa la navegación privada para ejecutar el lab
Usar una ventana de incógnito o de navegación privada es la mejor forma de ejecutar
este lab. Así evitarás cualquier conflicto entre tu cuenta personal
y la cuenta de estudiante, lo que podría generar cargos adicionales en
tu cuenta personal.
Usa Cloud Run y Pub/Sub para ejecutar un servicio que administre la comunicación por medio de HTTP POST, correo electrónico y SMS.
Duración:
1 min de configuración
·
Acceso por 60 min
·
20 min para completar