Esta guía le ayudará a comprender, desplegar y usar la plataforma de comercio electrónico con computación sin servidor. Esta solución muestra cómo crear y ejecutar una aplicación de comercio electrónico para una empresa minorista, con un sitio web de tienda online visible públicamente. En ella se explica cómo crear una aplicación que se adapte a los picos de uso (por ejemplo, durante eventos de gran escala como una rebaja de temporada) y que pueda gestionar las solicitudes en función de la ubicación del visitante. Este diseño ayuda a la tienda online a ofrecer un servicio coherente a los clientes distribuidos geográficamente.
Esta solución es un buen punto de partida si quieres aprender a desplegar aplicaciones web de comercio electrónico escalables con funciones sin servidor. Si quieres tener un control operativo granular, consulta la solución Aplicación web de comercio electrónico desplegada en Kubernetes.
En este documento se da por supuesto que tienes conocimientos básicos sobre la nube, aunque no necesariamente Google Cloud. Tener experiencia con Terraform es útil.
Objetivos
Esta guía de soluciones te ayudará a hacer lo siguiente:
- Consulta cómo diseñar una arquitectura de sistema para un sitio web de comercio electrónico.
- Optimizar un sitio web de comercio electrónico para mejorar el rendimiento, la escalabilidad y la capacidad de respuesta.
- Monitoriza y anticipa las limitaciones de carga.
- Usa el seguimiento y los informes de errores para comprender y gestionar los problemas.
Productos
La solución usa los siguientes productos de Google Cloud :
- Cloud Run: un servicio totalmente gestionado que te permite crear y desplegar aplicaciones en contenedores sin servidor. Google Cloud se encarga del escalado y de otras tareas de infraestructura para que puedas centrarte en la lógica empresarial de tu código.
- Cloud SQL: una base de datos PostgreSQL basada en la nube que está totalmente gestionada en la infraestructura de Google Cloud .
- Secret Manager: un servicio que te permite almacenar, gestionar y acceder a secretos en forma de blobs binarios o de cadenas de texto. Puedes usar Secret Manager para almacenar contraseñas de bases de datos, claves de API o certificados TLS que necesite una aplicación durante el tiempo de ejecución.
- Cloud Storage: un servicio listo para empresas que proporciona almacenamiento de objetos ilimitado y a un coste bajo para diversos tipos de datos. Se puede acceder a los datos desde dentro y fuera de Google Cloud , y se replican con redundancia geográfica.
- Firebase Hosting: un servicio de hosting totalmente gestionado para desplegar y servir tus aplicaciones web y tu contenido estático.
- Cloud Logging: un servicio que te permite almacenar, buscar, analizar, monitorizar y recibir alertas sobre datos de registro y eventos de Google Cloud y otras nubes.
- Cloud Trace: un sistema de análisis de trazas distribuidas para Google Cloud que te ayuda a saber cuánto tarda tu aplicación en gestionar las solicitudes entrantes de los usuarios u otras aplicaciones, así como en completar operaciones como las llamadas a RPC que se realizan al gestionar las solicitudes.
- Error Reporting: este servicio agrega y muestra los errores que se producen en los servicios en la nube que se están ejecutando. Error Reporting agrupa los errores que se considera que tienen la misma causa raíz.
Arquitectura
En el siguiente diagrama se muestra la arquitectura de la solución:
Flujo de solicitud
A continuación, se muestra el flujo de procesamiento de solicitudes de la plataforma de comercio electrónico. Los pasos del flujo se numeran como se muestra en el diagrama de arquitectura anterior.
- Un frontend de cliente de Firebase Hosting. El frontend usa Lit y componentes web para renderizar los datos de la API en el lado del cliente.
- El cliente web llama a un backend de API que se ejecuta como un servicio de Cloud Run. El servidor de la API de Cloud Run se ha escrito en Django con Django REST Framework.
- La configuración y otros secretos de la aplicación de Python se almacenan en Secret Manager.
- Los recursos estáticos de la aplicación se almacenan en Cloud Storage.
- Se usa una base de datos de Cloud SQL con PostgreSQL como backend de base de datos relacional para la aplicación Python.
- Cloud Logging, Cloud Trace y Error Reporting almacenan registros, trazas de OpenTelemetry e informes de errores enviados por otros productos de Google Cloud y el servidor de la API de Cloud Run. Estos datos permiten monitorizar el comportamiento correcto de la aplicación y solucionar problemas inesperados.
Coste
Para obtener una estimación del coste de los Google Cloud recursos que utiliza la solución de plataforma de comercio electrónico con computación sin servidor, consulta la estimación precalculada en la Google Cloud calculadora de precios.
Usa la estimación como punto de partida para calcular el coste de tu implementación. Puedes modificar la estimación para reflejar los cambios de configuración que tengas previsto hacer en los recursos que se usan en la solución.
La estimación precalculada se basa en suposiciones sobre determinados factores, como los siguientes:
- Las Google Cloud ubicaciones en las que se despliegan los recursos.
- Tiempo durante el que se usan los recursos.
Antes de empezar
Para implementar esta solución, primero necesitas un Google Cloud proyecto y algunos permisos de gestión de identidades y accesos.
Crea o elige un Google Cloud proyecto
Cuando implementas la solución, eliges el Google Cloud proyecto en el que se implementan los recursos. Puede crear un proyecto o usar uno que ya tenga para la implementación.
Si quieres crear un proyecto, hazlo antes de empezar la implementación. Usar un proyecto nuevo puede ayudar a evitar conflictos con recursos aprovisionados anteriormente, como los que se usan para cargas de trabajo de producción.
Para crear un proyecto, sigue estos pasos:
-
Ensure that you have the Project Creator IAM role
(
roles/resourcemanager.projectCreator
). Learn how to grant roles. -
In the Google Cloud console, go to the project selector page.
-
Click Create project.
-
Name your project. Make a note of your generated project ID.
-
Edit the other fields as needed.
-
Click Create.
Obtener los permisos de gestión de identidades y accesos necesarios
Para iniciar el proceso de implementación, necesitas los permisos de gestión de identidades y accesos (IAM) que se indican en la siguiente tabla.
Si has creado un proyecto para esta solución, tienes el roles/owner
rol básico
en ese proyecto y todos los permisos necesarios. Si no tienes el rol roles/owner
, pide a tu administrador que te conceda estos permisos (o los roles que los incluyan).
Se necesita el permiso de gestión de identidades y accesos | Rol predefinido que incluye los permisos necesarios |
---|---|
|
Administrador de Uso de Servicio ( roles/serviceusage.serviceUsageAdmin ) |
|
Administrador de cuentas de servicio ( roles/iam.serviceAccountAdmin ) |
|
Administrador de IAM del proyecto ( roles/resourcemanager.projectIamAdmin ) |
config.deployments.create config.deployments.list |
Administrador de Cloud Infrastructure Manager ( roles/config.admin ) |
iam.serviceAccount.actAs |
Usuario de cuenta de servicio ( roles/iam.serviceAccountUser ) |
Acerca de los permisos temporales de cuentas de servicio
Si inicias el proceso de implementación a través de la consola, Google crea una cuenta de servicio para implementar la solución en tu nombre (y para eliminar la implementación más adelante si quieres). A esta cuenta de servicio se le asignan determinados permisos de gestión de identidades y accesos temporalmente, es decir, los permisos se revocan automáticamente una vez que se completan las operaciones de implementación y eliminación de la solución. Google recomienda que, después de eliminar la implementación, elimines la cuenta de servicio, tal como se describe más adelante en esta guía.
Ver los roles asignados a la cuenta de servicio
Estos roles se indican aquí por si un administrador de tuGoogle Cloud proyecto u organización necesita esta información.
- Administrador de Cloud SQL (
roles/cloudsql.admin
) - Administrador de Compute Engine (
roles/compute.admin
) - Administrador de red de Compute Engine (
roles/compute.networkAdmin
) - Agente de servicio de gestión de servicios de Firebase (
roles/firebase.managementServiceAgent
) - Administrador de Firebase Hosting (
roles/firebasehosting.admin
) - Administrador de cuentas de servicio (
roles/iam.serviceAccountAdmin
) - Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) - Administrador de gestión de identidades y accesos del proyecto (
roles/resourcemanager.projectIamAdmin
) - Administrador de Cloud Run (
roles/run.admin
) - Administrador de Secret Manager (
roles/secretmanager.admin
) - Administrador de Cloud Storage (
roles/storage.admin
)
Desplegar la solución
Para ayudarte a desplegar esta solución con el mínimo esfuerzo, se proporciona una configuración de Terraform en GitHub. La configuración de Terraform define todos los Google Cloud recursos necesarios para la solución.
Puedes implementar la solución con uno de los siguientes métodos:
A través de la consola: usa este método si quieres probar la solución con la configuración predeterminada y ver cómo funciona. Cloud Build implementa todos los recursos necesarios para la solución. Cuando ya no necesites la solución implementada, puedes eliminarla a través de la consola. Es posible que tengas que eliminar por separado los recursos que crees después de implementar la solución.
Para usar este método de implementación, sigue las instrucciones que se indican en el artículo Implementar a través de la consola.
Con la CLI de Terraform: usa este método si quieres personalizar la solución o automatizar el aprovisionamiento y la gestión de los recursos con el enfoque de infraestructura como código (IaC). Descarga la configuración de Terraform de GitHub, personaliza el código según sea necesario y, a continuación, despliega la solución con la CLI de Terraform. Una vez que hayas desplegado la solución, podrás seguir usando Terraform para gestionarla.
Para usar este método de implementación, sigue las instrucciones que se indican en Implementar con la CLI de Terraform.
Implementar a través de la consola
Sigue estos pasos para implementar la solución preconfigurada.
En el catálogo de soluciones Jump Start, vaya a la solución Plataforma de comercio electrónico con computación sin servidor. Google Cloud
Ir a la solución de plataforma de comercio electrónico con computación sin servidor
Revisa la información que se proporciona en la página, como el coste estimado de la solución y el tiempo de implementación estimado.
Cuando lo tengas todo listo para empezar a implementar la solución, haz clic en Implementar.
Se muestra un panel de configuración paso a paso.
Completa los pasos del panel de configuración.
Anota el nombre que le asignes a la implementación. Este nombre es obligatorio más adelante, cuando elimines la implementación.
Cuando haces clic en Implementar, se muestra la página Implementaciones de soluciones. En el campo Estado de esta página se muestra el valor Implementando.
Espera a que se implemente la solución.
Si el despliegue falla, el campo Estado muestra Error. Puedes usar el registro de Cloud Build para diagnosticar los errores. Para obtener más información, consulta Errores al implementar a través de la consola.
Una vez completada la implementación, el campo Estado cambia a Implementado.
Para ver y usar la aplicación web de comercio electrónico desplegada, sigue las instrucciones que se indican en Explorar la implementación de Avocano.
Para ver los Google Cloud recursos que se han implementado y su configuración, haz una visita interactiva.
Cuando ya no necesites la solución, puedes eliminar la implementación para evitar que se te siga facturando por los Google Cloud recursos. Para obtener más información, consulta Eliminar la implementación.
Desplegar con la CLI de Terraform
En esta sección se describe cómo puedes personalizar la solución o automatizar el aprovisionamiento y la gestión de la solución mediante la CLI de Terraform. Las soluciones que despliegues con la CLI de Terraform no se mostrarán en la página Despliegues de soluciones de la consola de Google Cloud .
Configurar el cliente de Terraform
Puedes ejecutar Terraform en Cloud Shell o en tu host local. En esta guía se describe cómo ejecutar Terraform en Cloud Shell, que tiene Terraform preinstalado y configurado para autenticarse con Google Cloud.
El código de Terraform de esta solución está disponible en un repositorio de GitHub.
Clona el repositorio de GitHub en Cloud Shell.
Se muestra un mensaje para confirmar la descarga del repositorio de GitHub en Cloud Shell.
Haz clic en Confirmar.
Cloud Shell se inicia en una pestaña del navegador independiente y el código de Terraform se descarga en el directorio
$HOME/cloudshell_open
de tu entorno de Cloud Shell.En Cloud Shell, comprueba si el directorio de trabajo actual es
$HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
. Este es el directorio que contiene los archivos de configuración de Terraform de la solución. Si necesitas cambiar a ese directorio, ejecuta el siguiente comando:cd $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
Inicializa Terraform ejecutando el siguiente comando:
terraform init
Espera hasta que veas el siguiente mensaje:
Terraform has been successfully initialized!
Configurar las variables de Terraform
El código de Terraform que has descargado incluye variables que puedes usar para personalizar la implementación según tus requisitos. Por ejemplo, puedes especificar el Google Cloud proyecto y la región en los que quieres que se implemente la solución.
Asegúrate de que el directorio de trabajo actual sea
$HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
. Si no es así, ve a ese directorio.En el mismo directorio, crea un archivo de texto llamado
terraform.tfvars
.En el archivo
terraform.tfvars
, copia el siguiente fragmento de código y asigna valores a las variables obligatorias.- Sigue las instrucciones que se proporcionan como comentarios en el fragmento de código.
- Este fragmento de código solo incluye las variables para las que debes definir valores. La configuración de Terraform incluye otras variables que tienen valores predeterminados. Para consultar todas las variables y los valores predeterminados, consulta el archivo
variables.tf
disponible en el directorio$HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
. Asegúrate de que cada valor que definas en el archivo
terraform.tfvars
coincida con el tipo de variable declarado en el archivovariables.tf
. Por ejemplo, si el tipo definido para una variable en el archivovariables.tf
esbool
, debes especificartrue
ofalse
como valor de esa variable en el archivoterraform.tfvars
.# This is an example of the terraform.tfvars file. # The values in this file must match the variable types declared in variables.tf. # The values in this file override any defaults in variables.tf. # ID of the project in which you want to deploy the solution project_id = "PROJECT_ID" # Google Cloud region where you want to deploy the solution # Example: us-central1 region = "REGION" # Google Cloud zone where you want to deploy the solution # Example: us-central1-a zone = "ZONE" # Container Registry that hosts the client image client_image_host = "hsa-public/serverless-ecommerce" # Container Registry that hosts the server image server_image_host = "hsa-public/serverless-ecommerce"
Para obtener información sobre los valores que puede asignar a las variables obligatorias, consulte lo siguiente:
- PROJECT_ID: Identificar proyectos
- REGION y ZONE: regiones y zonas disponibles
Validar y revisar la configuración de Terraform
Asegúrate de que el directorio de trabajo actual sea
$HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
. Si no es así, ve a ese directorio.Verifica que la configuración de Terraform no tenga errores:
terraform validate
Si el comando devuelve algún error, haz las correcciones necesarias en la configuración y vuelve a ejecutar el comando
terraform validate
. Repite este paso hasta que el comando devuelva el siguiente mensaje:Success! The configuration is valid.
Revisa los recursos definidos en la configuración:
terraform plan
Si no has creado el archivo
terraform.tfvars
como se ha descrito anteriormente, Terraform te pedirá que introduzcas valores para las variables que no tengan valores predeterminados. Introduce los valores necesarios.El resultado del comando
terraform plan
es una lista de los recursos que Terraform aprovisiona cuando aplicas la configuración.Si quieres hacer algún cambio, edita la configuración y vuelve a ejecutar los comandos
terraform validate
yterraform plan
.
Aprovisionar los recursos
Cuando no sea necesario hacer más cambios en la configuración de Terraform, implementa los recursos.
Asegúrate de que el directorio de trabajo actual sea
$HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
. Si no es así, ve a ese directorio.Aplica la configuración de Terraform:
terraform apply
Si no has creado el archivo
terraform.tfvars
como se ha descrito anteriormente, Terraform te pedirá que introduzcas valores para las variables que no tengan valores predeterminados. Introduce los valores necesarios.Terraform muestra una lista de los recursos que se crearán.
Cuando se te pida que realices las acciones, escribe
yes
.Terraform muestra mensajes que indican el progreso de la implementación.
Si no se puede completar la implementación, Terraform muestra los errores que han provocado el fallo. Revisa los mensajes de error y actualiza la configuración para corregirlos. A continuación, vuelve a ejecutar el comando
terraform apply
. Si necesitas ayuda para solucionar errores de Terraform, consulta Errores al desplegar la solución con la CLI de Terraform.Una vez que se hayan creado todos los recursos, Terraform mostrará el siguiente mensaje:
Apply complete!
Para ver y usar la aplicación web de comercio electrónico desplegada, sigue las instrucciones que se indican en Explorar la implementación de Avocano.
Para ver los Google Cloud recursos que se han implementado y su configuración, haz una visita interactiva.
Cuando ya no necesites la solución, puedes eliminar la implementación para evitar que se te siga facturando por los Google Cloud recursos. Para obtener más información, consulta Eliminar la implementación.
Explorar tu implementación de Avocano
Ya has implementado la aplicación del sitio web de Avocano. Puedes visitar el sitio web de Avocano y echar un vistazo. Después, descubre cómo funciona la solución en la Google Cloud consola. Ten en cuenta que el sitio puede tardar unos minutos en aparecer en la dirección proporcionada después de implementar la aplicación.
¿Qué es Avocano?
Esta solución usa una aplicación de ejemplo llamada Avocano para mostrar la implementación y la gestión de una aplicación web con muchas de las herramientas y los productos que se usan en las aplicaciones sin servidor. Avocano es una aplicación que imita una implementación real de una aplicación web de comercio electrónico.
El frontend de Avocano presenta una tienda falsa en la que puedes añadir artículos al carrito e intentar completar el proceso de compra, pero entonces la tienda revela que es falsa (Avoca--no!). Aunque no puedes comprar un aguacate, la aplicación muestra cómo se gestiona el inventario disminuyendo en uno la cantidad de producto disponible.
Explorar el frontend
Para iniciar el frontend de la implementación de tu solución, sigue estos pasos:
- Abre la consola de Firebase.
- Selecciona el proyecto.
- Ve a la sección Compilación > Hosting.
- Selecciona el dominio que termina en web.app. El frontend de tu aplicación de ejemplo se abrirá en una nueva ventana del navegador.
Ahora puedes interactuar con el sitio web de Avocano tal como lo verían sus clientes, como navegar por los productos, añadirlos al carrito de la compra y completar la compra como invitado.
Ver la configuración de autoescalado y simultaneidad
Cloud Run escala automáticamente las instancias de contenedor vertical u horizontalmente desde cero en función del tráfico para que tu aplicación se inicie rápidamente.
Acerca de los ajustes de autoescalado y simultaneidad
Es importante tener en cuenta que los ajustes de escalado automático y simultaneidad de Cloud Run pueden afectar al rendimiento y a los costes de tu aplicación:
Instancias mínimas: puedes definir el ajuste de instancias mínimas para habilitar las instancias inactivas de tu servicio. Si aumentas el número mínimo de instancias antes de que se produzca un aumento del tráfico, puedes minimizar el tiempo de respuesta de los primeros N usuarios. Si tu servicio requiere una latencia reducida, sobre todo al pasar de cero instancias activas, puedes especificar un número mínimo de instancias de contenedor que se mantengan activas y listas para atender solicitudes.
Instancias máximas: aumentar el ajuste de instancias máximas en Cloud Run puede ayudarte a gestionar un tráfico excepcionalmente alto. En ese caso, también deberías evaluar tu cuota actual y plantearte solicitar un aumento. Reducir el ajuste de instancias máximas puede ayudarte a evitar costes inesperados o un mayor uso de la infraestructura subyacente (como la capacidad de tu base de datos).
Simultaneidad: el ajuste de simultaneidad de Cloud Run especifica el número máximo de solicitudes que puede procesar simultáneamente una instancia de contenedor determinada. Si optimizas la memoria, la CPU y la simultaneidad del comportamiento de tu aplicación, te asegurarás de que cada instancia de contenedor tenga el mejor uso posible y minimizarás la necesidad de ampliar a nuevas instancias. Para obtener más información, consulta Optimizar la simultaneidad.
Ver la configuración de autoescalado y simultaneidad
Para ver la configuración actual de instancias mínimas y máximas, así como la configuración de simultaneidad de tu servicio de Cloud Run, sigue estos pasos:
- Ir a Cloud Run
- Haz clic en el servicio que te interese para abrir la página Detalles del servicio.
- Haz clic en la pestaña Revisiones.
- En el panel de detalles de la derecha, se muestran los valores actuales de instancias mínimas, instancias máximas y simultaneidad en la pestaña Contenedor.
Si quieres saber cómo ajustar estos ajustes para optimizar el rendimiento de la aplicación, consulta los consejos generales para desarrolladores en la documentación de Cloud Run.
Ver registros de tráfico
Puedes usar las herramientas de registro de Cloud Run para monitorizar el tráfico de tu aplicación y recibir alertas cuando surjan problemas.
Para ver los registros de tu servicio de Cloud Run, sigue estos pasos:
- Ir a Cloud Run
- Haz clic en el servicio elegido en la lista que se muestra.
- Haz clic en la pestaña Registros para obtener los registros de solicitudes y de contenedores de todas las revisiones de este servicio. Puedes filtrar por nivel de gravedad del registro.
Cloud Run registra automáticamente los registros de muchos sitios: todo lo que se escribe en la salida estándar y el error estándar, todo lo que hay en /var/log/
y otros.
También se registra cualquier registro manual que se haga con las bibliotecas de Cloud Logging.
También puedes ver los registros de este servicio directamente en Cloud Logging haciendo clic en Ver en Explorador de registros.
En la aplicación Avocano, prueba las siguientes acciones de usuario para activar la salida correspondiente, que puedes ver en los registros.
Acción de usuario | Salida de registro |
---|---|
Compra el carrito de la compra con la opción Recoger como tipo de pago y el importe del producto del carrito no supera el número de unidades del inventario. | En el registro de salida se muestra un registro info con el estado httpRequest 200. |
Compra el carrito de la compra con Collect como tipo de pago, pero el importe del producto del carrito supera el recuento del inventario. | El resultado del registro muestra un registro Warning (Advertencia) con el estado httpRequest
400. |
Compra el carrito con la opción Crédito como tipo de pago. | El resultado del registro muestra un registro de Error con el estado httpRequest
501. |
Puedes ver el código que genera el error que lleva a la respuesta HTTP 400/501
en el archivo serializers.py
. Cloud Run registra la respuesta y genera una entrada de registro de solicitudes correspondiente.
Puedes usar alertas basadas en registros para recibir una notificación cuando aparezca un mensaje específico en los registros incluidos.
Ver la instrumentación de trazas y las trazas capturadas
Esta solución usa la instrumentación automática de Open Telemetry Python para recoger datos de telemetría de la aplicación Avocano.
Entender cómo se implementa el rastreo
La solución implementa el siguiente código y los ajustes de configuración para generar trazas mediante la instrumentación automática:
- Añada las dependencias de Cloud Trace en el archivo requirements.txt, incluidas las siguientes:
opentelemetry-distro
: instala la API, el SDK y las herramientas de línea de comandos de Open Telemetry.opentelemetry-instrumentation
: añade compatibilidad con la instrumentación automática de Python.opentelemetry-exporter-gcp-trace
: proporciona compatibilidad para exportar trazas a Cloud Trace.opentelemetry-resource-detector
: proporciona asistencia para detectar Google Cloud recursos.opentelemetry-instrumentation-django
: permite rastrear solicitudes de aplicaciones Django.
- Define el enlace de gestión de identidades y accesos en el archivo
iam.tf
para permitir que el servidor escriba en Cloud Trace. - Configura la variable de entorno
OTEL_TRACES_EXPORTER
en el archivoservices.tf
para usar el exportador de Cloud Trace. - En
server/Procfile
, configura el servidor para que ejecute el comandoopentelemetry-instrument
en la aplicación Avocano. Este comando detecta paquetes en Avocano y aplica instrumentación de seguimiento automática en ellos, si es posible.
Para obtener más información sobre cómo recoger datos de Cloud Trace para Python, consulta Python y OpenTelemetry.
Ver los datos de latencia
Para ver los datos de latencia de las solicitudes, siga estos pasos:
- Ir a Cloud Trace
- En la sección Seleccionar un rastreo de la página Lista de rastreos, haz clic en el punto azul, que representa un rastreo capturado. La columna Latencia muestra la latencia de los rastreos capturados.
También puede ver los datos de traza con las siguientes visualizaciones en la página Lista de trazas:
- Gráfico de cascada: representa una solicitud completa a través de la aplicación. Cada paso de la cronología es un intervalo en el que puedes hacer clic para ver los detalles. Cloud Run crea automáticamente intervalos para operaciones internas, como la gestión de solicitudes y el balanceo de carga. Estos intervalos aparecen en el mismo gráfico de cascada que los intervalos producidos por Avocano, lo que le permite ver la duración completa de la solicitud.
- Detalles del intervalo: muestra las etiquetas o anotaciones que hayas añadido al código de la aplicación cuando la instrumentaste para el rastreo.
Si quieres añadir trazas personalizadas, consulta la sección Instrumentación manual de la documentación de Open Telemetry.
Recomendaciones de diseño
En esta sección se ofrecen recomendaciones para usar la plataforma de comercio electrónico con la solución de computación sin servidor para desarrollar una arquitectura que cumpla tus requisitos de seguridad, fiabilidad, coste y rendimiento.
Para ver las recomendaciones de diseño de cada área, haga clic en la pestaña correspondiente.
Mejorar la seguridad
Diseño | Recomendaciones |
---|---|
Encriptado de datos |
De forma predeterminada, Cloud Run encripta los datos mediante un Google-owned and Google-managed encryption key. Para proteger tus contenedores con una clave que controles, puedes usar claves de cifrado gestionadas por el cliente. Para obtener más información, consulta Usar claves de cifrado gestionadas por el cliente. |
Seguridad de la cadena de suministro de software | Para asegurarte de que solo se desplieguen imágenes de contenedor autorizadas en los servicios de Cloud Run, puedes usar la autorización binaria. |
Mejorar la fiabilidad
Diseño | Recomendaciones |
---|---|
Escalado de aplicaciones | Los servicios de Cloud Run de la solución están configurados para escalar horizontalmente las instancias de contenedor automáticamente en función de la carga de solicitudes. Revisa y ajusta los parámetros de autoescalado en función de tus requisitos. Para obtener más información, consulta Información sobre el autoescalado de instancias de contenedor. |
Gestión de solicitudes | Para mejorar la capacidad de respuesta de los servicios de Cloud Run que almacenan el estado específico del cliente en instancias de contenedor, puedes usar la afinidad de sesión. Las solicitudes del mismo cliente se dirigen a la misma instancia de contenedor en la medida de lo posible. Para obtener más información, consulta Configurar la afinidad de sesión (servicios). |
Durabilidad de los datos | Para proteger tus datos frente a pérdidas, puedes usar copias de seguridad automáticas de la base de datos de Cloud SQL. Para obtener más información, consulta el artículo Acerca de las copias de seguridad de Cloud SQL. |
Alta disponibilidad de la base de datos | La base de datos de Cloud SQL de la solución se despliega en una sola zona. Para la alta disponibilidad, puedes usar una configuración multizona. Para obtener más información, consulta el artículo Acerca de la alta disponibilidad. Si la alta disponibilidad de la base de datos es un requisito fundamental, AlloyDB para PostgreSQL es un servicio alternativo Google Cloud que puedes tener en cuenta. |
Fiabilidad de la base de datos | La instancia de Cloud SQL de esta solución usa el tipo de máquina Una instancia de Cloud SQL que usa el tipo de máquina |
Cuotas y límites | El número de recursos de Cloud Run está limitado. Si prevé un aumento del tráfico, por ejemplo, debido a un evento de temporada o a rebajas, debe solicitar un aumento de la cuota. Para obtener más información, consulta Cómo aumentar la cuota. Algunas solicitudes de cuota requieren aprobación manual, por lo que debes planificarlas con antelación. También puedes configurar alertas sobre tu progreso para alcanzar tu cuota. |
Optimizar costes
Diseño | Recomendaciones |
---|---|
Eficiencia de recursos | Cloud Run determina el número de solicitudes que se deben enviar a una instancia de contenedor en función del uso de la CPU y la memoria. Si aumentas el ajuste de simultaneidad máxima, puedes reducir el número de instancias de contenedor que Cloud Run necesita crear y, por lo tanto, reducir los costes. Para obtener más información, consulta Número máximo de solicitudes simultáneas por instancia (servicios). Los servicios de Cloud Run de esta solución están configurados para asignar CPUs solo durante el procesamiento de solicitudes. Cuando un servicio de Cloud Run termina de gestionar una solicitud, se inhabilita el acceso de la instancia de contenedor a las CPUs. Para obtener información sobre el efecto de esta configuración en el coste y el rendimiento, consulta Asignación de CPU (servicios). |
Mejorar el rendimiento
Diseño | Recomendaciones |
---|---|
Tiempo de inicio de la aplicación | Para reducir el efecto de los arranques en frío en el rendimiento, puedes configurar el número mínimo de instancias de contenedor de Cloud Run con un valor distinto de cero. Para obtener más información, consulta Consejos generales para desarrollar aplicaciones en Cloud Run. |
Ajustar la simultaneidad | Esta solución se ha optimizado para maximizar el rendimiento de los contenedores individuales. Cloud Run ajusta automáticamente la simultaneidad para atender varias solicitudes. Sin embargo, debe ajustar la simultaneidad máxima predeterminada si su contenedor no puede procesar muchas solicitudes simultáneas o si puede gestionar un mayor volumen de solicitudes. Para obtener más información, consulta Optimizar la simultaneidad. |
Rendimiento de la base de datos | En el caso de las aplicaciones sensibles al rendimiento, puedes mejorar el rendimiento de Cloud SQL usando un tipo de máquina más grande y aumentando la capacidad de almacenamiento. Si el rendimiento de la base de datos es un requisito fundamental, puedes considerar AlloyDB para PostgreSQL como servicio alternativo. Google Cloud |
Ten en cuenta lo siguiente:
- Antes de hacer cualquier cambio en el diseño, evalúa el impacto en los costes y ten en cuenta las posibles ventajas e inconvenientes de otras funciones. Puedes evaluar el impacto económico de los cambios de diseño con la Google Cloud calculadora de precios.
- Para implementar cambios en el diseño de la solución, debes tener experiencia en la programación de Terraform y conocimientos avanzados de los servicios de Google Cloud que se usan en la solución.
- Si modificas la configuración de Terraform proporcionada por Google y, después, se producen errores, crea incidencias en GitHub. Los problemas de GitHub se revisan en la medida de lo posible y no están pensados para responder preguntas de uso general.
- Para obtener más información sobre cómo diseñar y configurar entornos de producción en Google Cloud, consulte Diseño de la zona de aterrizaje en Google Cloud y la lista de comprobación de la configuración deGoogle Cloud .
Eliminar la implementación de la solución
Cuando ya no necesites el despliegue de la solución, elimínalo para evitar que se te siga facturando por los recursos que has creado.
Eliminar a través de la consola
Sigue este procedimiento si has implementado la solución a través de la consola.
En la Google Cloud consola, ve a la página Implementaciones de soluciones.
Selecciona el proyecto que contenga la implementación que quieras eliminar.
Busca el despliegue que quieras eliminar.
En la fila de la implementación, haga clic en
Acciones y, a continuación, seleccione Eliminar.Es posible que tengas que desplazarte para ver Acciones en la fila.
Introduce el nombre del lanzamiento y haz clic en Confirmar.
En el campo Estado se muestra Eliminando.
Si no se puede eliminar, consulta la guía para solucionar problemas en Error al eliminar un despliegue.
Cuando ya no necesites el proyecto que has usado para la solución, puedes eliminarlo. Google Cloud Para obtener más información, consulta Opcional: Eliminar el proyecto.
Eliminar con la CLI de Terraform
Sigue este procedimiento si has desplegado la solución con la CLI de Terraform.
En Cloud Shell, comprueba que el directorio de trabajo actual sea
$HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
. Si no es así, ve a ese directorio.Elimina los recursos aprovisionados por Terraform:
terraform destroy
Terraform muestra una lista de los recursos que se van a destruir.
Cuando se te pida que realices las acciones, escribe
yes
.Terraform muestra mensajes que indican el progreso. Una vez que se hayan eliminado todos los recursos, Terraform mostrará el siguiente mensaje:
Destroy complete!
Si no se puede eliminar, consulta la guía para solucionar problemas en Error al eliminar un despliegue.
Cuando ya no necesites el proyecto que has usado para la solución, puedes eliminarlo. Google Cloud Para obtener más información, consulta Opcional: Eliminar el proyecto.
Opcional: Eliminar el proyecto
Si has implementado la solución en un proyecto nuevo y ya no lo necesitas, elimínalo siguiendo estos pasos: Google Cloud
- En la Google Cloud consola, ve a la página Gestionar recursos.
- En la lista de proyectos, selecciona el proyecto que quieras eliminar y haz clic en Eliminar.
- Cuando se te pida, escribe el ID del proyecto y haz clic en Cerrar.
Si decides conservar el proyecto, elimina la cuenta de servicio que se creó para esta solución, tal como se describe en la sección siguiente.
Opcional: Eliminar la cuenta de servicio
Si has eliminado el proyecto que has usado para la solución, puedes saltarte esta sección.
Como se ha mencionado anteriormente en esta guía, cuando implementaste la solución, se creó una cuenta de servicio en tu nombre. A la cuenta de servicio se le han asignado ciertos permisos de gestión de identidades y accesos temporalmente, es decir, los permisos se han revocado automáticamente una vez completadas las operaciones de implementación y eliminación de la solución, pero la cuenta de servicio no se ha eliminado. Google recomienda que elimines esta cuenta de servicio.
Si has implementado la solución a través de la Google Cloud consola, ve a la página Implementaciones de soluciones. Si ya estás en esa página, actualiza el navegador. Se activará un proceso en segundo plano para eliminar la cuenta de servicio. No es necesario hacer nada más.
Si has desplegado la solución con la CLI de Terraform, sigue estos pasos:
En la Google Cloud consola, ve a la página Cuentas de servicio.
Selecciona el proyecto que has usado para la solución.
Selecciona la cuenta de servicio que quieras eliminar.
El ID de correo de la cuenta de servicio que se ha creado para la solución tiene el siguiente formato:
goog-sc-DEPLOYMENT_NAME-NNN@PROJECT_ID.iam.gserviceaccount.com
El ID de correo contiene los siguientes valores:
- DEPLOYMENT_NAME: el nombre del despliegue.
- NNN: un número aleatorio de 3 dígitos.
- PROJECT_ID: el ID del proyecto en el que has implementado la solución.
Haz clic en Eliminar.
Solución de errores
Las acciones que puedes llevar a cabo para diagnosticar y resolver errores dependen del método de implementación y de la complejidad del error.
Errores al implementar a través de la consola
Si la implementación falla al usar la consola, haz lo siguiente:
Ve a la página Implementaciones de soluciones.
Si el despliegue ha fallado, en el campo Estado se muestra Error.
Consulta los detalles de los errores que han provocado el fallo:
En la fila de la implementación, haz clic en
Acciones.Es posible que tengas que desplazarte para ver Acciones en la fila.
Selecciona Ver registros de Cloud Build.
Revisa el registro de Cloud Build y toma las medidas oportunas para solucionar el problema que ha provocado el fallo.
Errores al desplegar con la CLI de Terraform
Si la implementación falla al usar Terraform, el resultado del comando terraform
apply
incluye mensajes de error que puedes revisar para diagnosticar el problema.
En los ejemplos de las siguientes secciones se muestran errores de implementación que pueden producirse al usar Terraform.
Error de API no habilitada
Si creas un proyecto y, a continuación, intentas implementar la solución en el nuevo proyecto, es posible que la implementación falle y se muestre un error como el siguiente:
Error: Error creating Network: googleapi: Error 403: Compute Engine API has not
been used in project PROJECT_ID before or it is disabled. Enable it by visiting
https://console.developers.google.com/apis/api/compute.googleapis.com/overview?project=PROJECT_ID
then retry. If you enabled this API recently, wait a few minutes for the action
to propagate to our systems and retry.
Si se produce este error, espera unos minutos y vuelve a ejecutar el comando terraform apply
.
Error al asignar la dirección solicitada
Cuando ejecutas el comando terraform apply
, puede producirse un error cannot assign requested address
con un mensaje como el siguiente:
Error: Error creating service account:
Post "https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts:
dial tcp [2001:db8:ffff:ffff::5f]:443:
connect: cannot assign requested address
Si se produce este error, vuelve a ejecutar el comando terraform apply
.
Error al eliminar una implementación
En algunos casos, es posible que no se pueda eliminar un despliegue:
- Después de implementar una solución a través de la consola, si cambias algún recurso que haya aprovisionado la solución y, a continuación, intentas eliminar la implementación, es posible que no se pueda eliminar. En el campo Estado de la página Implementaciones de soluciones se muestra el valor Fallo y el registro de Cloud Build muestra la causa del error.
- Después de desplegar una solución con la CLI de Terraform, si cambias algún recurso con una interfaz que no sea de Terraform (por ejemplo, la consola) y, a continuación, intentas eliminar el despliegue, es posible que no se pueda eliminar. Los mensajes de la salida del comando
terraform destroy
muestran la causa del error.
Revisa los registros y mensajes de error, identifica y elimina los recursos que han provocado el error y, a continuación, vuelve a intentar eliminar la implementación.
Si no se elimina un despliegue basado en la consola y no puedes diagnosticar el error con el registro de Cloud Build, puedes eliminar el despliegue con la CLI de Terraform, tal como se describe en la siguiente sección.
Eliminar un despliegue basado en consola con la CLI de Terraform
En esta sección se describe cómo eliminar una implementación basada en la consola si se producen errores al intentar eliminarla a través de la consola. Con este método, descargas la configuración de Terraform del despliegue que quieres eliminar y, a continuación, usas la CLI de Terraform para eliminarlo.
Identifica la región en la que se almacenan el código de Terraform, los registros y otros datos de la implementación. Esta región puede ser diferente de la que seleccionaste al implementar la solución.
En la Google Cloud consola, ve a la página Implementaciones de soluciones.
Selecciona el proyecto que contenga la implementación que quieras eliminar.
En la lista de implementaciones, busque la fila de la implementación que quiera eliminar.
Haz clic en
Ver todo el contenido de la fila.En la columna Ubicación, anota la segunda ubicación, tal como se destaca en el siguiente ejemplo:
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Crea variables de entorno para el ID del proyecto, la región y el nombre de la implementación que quieras eliminar:
export REGION="REGION" export PROJECT_ID="PROJECT_ID" export DEPLOYMENT_NAME="DEPLOYMENT_NAME"
En estos comandos, sustituye lo siguiente:
- REGION: la ubicación que has anotado anteriormente en este procedimiento.
- PROJECT_ID: el ID del proyecto en el que has implementado la solución.
- DEPLOYMENT_NAME: el nombre de la implementación que quieres eliminar.
Obtén el ID de la última revisión del despliegue que quieras eliminar:
export REVISION_ID=$(curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \ | jq .latestRevision -r) echo $REVISION_ID
El resultado debería ser similar al siguiente:
projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME/revisions/r-0
Obtén la ubicación de Cloud Storage de la configuración de Terraform de la implementación:
export CONTENT_PATH=$(curl \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/${REVISION_ID}" \ | jq .applyResults.content -r) echo $CONTENT_PATH
A continuación, se muestra un ejemplo del resultado de este comando:
gs://PROJECT_ID-REGION-blueprint-config/DEPLOYMENT_NAME/r-0/apply_results/content
Descarga la configuración de Terraform de Cloud Storage a Cloud Shell:
gcloud storage cp $CONTENT_PATH $HOME --recursive cd $HOME/content/infra
Espera a que se muestre el mensaje
Operation completed
, como se muestra en el siguiente ejemplo:Operation completed over 45 objects/268.5 KiB
Inicializa Terraform:
terraform init
Espera hasta que veas el siguiente mensaje:
Terraform has been successfully initialized!
Elimina los recursos implementados:
terraform destroy
Terraform muestra una lista de los recursos que se van a destruir.
Si se muestra alguna advertencia sobre variables no declaradas, ignórala.
Cuando se te pida que realices las acciones, escribe
yes
.Terraform muestra mensajes que indican el progreso. Una vez que se hayan eliminado todos los recursos, Terraform mostrará el siguiente mensaje:
Destroy complete!
Elimina el artefacto de implementación:
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}?force=true&delete_policy=abandon"
Espera unos segundos y, a continuación, comprueba que se ha eliminado el artefacto de implementación:
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \ | jq .error.message
Si el resultado muestra
null
, espera unos segundos y vuelve a ejecutar el comando.Una vez que se elimina el artefacto de implementación, se muestra un mensaje como el del ejemplo siguiente:
Resource 'projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME' was not found
- Para enviar comentarios sobre la documentación, los tutoriales de la consola o la solución, usa el botón Enviar comentarios de la página.
Si el código no se ha modificado, crea incidencias en el repositorio de GitHub correspondiente:
Los problemas de GitHub se revisan en la medida de lo posible y no están pensados para responder preguntas de uso general.
- Si tienes problemas con los productos que se usan en la solución, ponte en contacto con Cloud Customer Care.
- Consejos generales para el desarrollo en Cloud Run
- Prácticas recomendadas para las pruebas de carga de Cloud Run
- Tutorial sobre la autenticación de usuarios finales en Cloud Run
- Sirve contenido dinámico y aloja microservicios con Firebase Hosting.
Enviar comentarios
Las soluciones Jump Start se proporcionan únicamente con fines informativos y no son productos con asistencia oficial. Google puede cambiar o eliminar soluciones sin previo aviso.
Para solucionar los errores, consulta los registros de Cloud Build y el resultado de Terraform.
Para enviar comentarios, sigue estos pasos:
Siguientes pasos
Esta solución muestra cómo desplegar una aplicación web de comercio electrónico con Cloud Run. Para seguir descubriendo más información sobre los Google Cloud productos y las funciones, consulta los siguientes artículos: