Esta guía te ayuda a comprender, implementar y usar la solución de plataforma de comercio electrónico con computación sin servidores. En esta solución, se muestra cómo compilar y ejecutar una aplicación de comercio electrónico para una organización de venta minorista, con un sitio web de tienda en línea visible de forma pública. Muestra cómo crear una aplicación que se escala para manejar los aumentos repentinos de uso (por ejemplo, durante eventos de escala máxima, como una oferta de temporada) y que puede administrar solicitudes basadas en la ubicación del visitante. Este diseño ayuda a que la tienda en línea proporcione un servicio coherente a los clientes distribuidos geográficamente.
Esta solución es un buen punto de partida si deseas aprender a implementar apps web de comercio electrónico escalables con funciones sin servidores. Si deseas un control operativo detallado, consulta la solución App web de comercio electrónico implementada en Kubernetes.
En este documento, se supone que conoces los conceptos básicos de la nube, aunque no necesariamente Google Cloud. Es útil tener experiencia en Terraform.
Objetivos
Esta guía de soluciones te ayuda a hacer lo siguiente:
- Aprende a diseñar una arquitectura de sistemas para un sitio web de comercio electrónico.
- Optimiza un sitio web de comercio electrónico para mejorar el rendimiento, la escalabilidad y la capacidad de respuesta.
- Supervisa y anticipa las limitaciones de carga.
- Usa el seguimiento y los informes de errores para comprender y administrar los problemas.
Productos
En la solución, se usan los siguientes productos Google Cloud :
- Cloud Run: Un servicio completamente administrado que te permite compilar y, además, implementar apps alojadas en contenedores sin servidores. Google Cloud controla el escalamiento y otras tareas de infraestructura para que puedas enfocarte en la lógica empresarial de tu código.
- Cloud SQL: Una base de datos de PostgreSQL basada en la nube que está completamente administrada en la infraestructura de Google Cloud .
- Secret Manager: un servicio que te permite almacenar, administrar y acceder a objetos Secret como BLOB binarios o strings de texto. Puedes usar Secret Manager para almacenar contraseñas de bases de datos, claves de API o certificados TLS que una aplicación necesita en el entorno de ejecución.
- Cloud Storage: un servicio preparado para empresas que proporciona almacenamiento de objetos de bajo costo y sin límites para varios tipos de datos. Se puede acceder a los datos desde dentro y fuera de Google Cloud , y replicarlos con redundancia geográfica.
- Firebase Hosting: Un servicio de hosting completamente administrado para implementar y entregar tus aplicaciones web y contenido estático.
- Cloud Logging: Un servicio que te permite almacenar, buscar, analizar, supervisar y generar alertas sobre eventos y datos de registro de Google Cloud y otras nubes.
- Cloud Trace: Es un sistema de seguimiento distribuido para Google Cloud que te ayuda a comprender cuánto tiempo le lleva a tu aplicación manejar las solicitudes entrantes de usuarios o de otras aplicaciones y cuánto tiempo lleva completar operaciones, como las llamadas RPC realizadas cuando se manejan las solicitudes.
- Error Reporting: Este servicio agrega y muestra errores generados en tus servicios en ejecución en la nube. Error Reporting agrupa los errores que se considera 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 están numerados como se muestra en el diagrama de arquitectura anterior.
- Un frontend de cliente de Firebase Hosting El frontend usa Lit y componentes web para la renderización del lado del cliente de los datos de la API.
- 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 está escrito en Django con el framework REST de Django.
- La configuración y otros secretos para la aplicación de Python se almacenan en Secret Manager.
- Los recursos estáticos para la aplicación se almacenan en Cloud Storage.
- Una base de datos de Cloud SQL, a través de PostgreSQL, se usa como backend de la base de datos relacional para la aplicación de Python.
- Cloud Logging, Cloud Trace y Error Reporting almacenan registros, seguimientos de OpenTelemetry y los informes de errores que envían otros productos de la nube y el servidor de la API de Cloud Run. Estos datos permiten supervisar el comportamiento correcto de la aplicación y solucionar problemas relacionados con comportamientos inesperados.
Costo
Para obtener una estimación del costo de los Google Cloud recursos que usa la plataforma de comercio electrónico con la solución de computación sin servidores, consulta la estimación calculada previamente en la Google Cloud calculadora de precios.
Usa la estimación como punto de partida para calcular el costo de la implementación. Puedes cambiar la estimación para que refleje cualquier cambio de configuración que planeas hacer para los recursos que se usan en la solución.
La estimación calculada previamente se basa en suposiciones para ciertos factores, incluidos los siguientes:
- Las Google Cloud ubicaciones en las que se implementan los recursos.
- La cantidad de tiempo que se usan los recursos.
Antes de comenzar
Para implementar esta solución, primero necesitas un proyecto de Google Cloud y algunos permisos de IAM.
Crea o elige un proyecto de Google Cloud
Cuando implementas la solución, eliges el proyecto de Google Cloud en el que se implementan los recursos. Puedes crear un proyecto nuevo o usar uno existente para la implementación.
Si deseas crear un proyecto nuevo, hazlo antes de comenzar la implementación. El uso de un proyecto nuevo puede ayudar a evitar conflictos con los recursos aprovisionados con anterioridad, como los recursos que se usan para cargas de trabajo de producción.
Para crear un proyecto, completa los siguientes pasos:
-
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.
Obtén los permisos de IAM necesarios
Para iniciar el proceso de implementación, necesitas los permisos de Identity and Access Management (IAM) que se enumeran en la siguiente tabla.
Si creaste un proyecto nuevo para esta solución, tienes el rol básico
roles/owner
en ese proyecto y tienes todos los permisos necesarios. Si no tienes el
rol roles/owner
, pídele a tu administrador que te otorgue estos permisos (o
los roles que incluyen estos permisos).
Se requiere permiso de IAM | Rol predefinido que incluye los permisos necesarios |
---|---|
|
Administrador de Service Usage ( roles/serviceusage.serviceUsageAdmin ) |
|
Administrador de cuenta de servicio ( roles/iam.serviceAccountAdmin ) |
|
Administrador de IAM de 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 de cuentas de servicio temporales
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 borrar la implementación más adelante si lo deseas). A esta cuenta de servicio se le asignan ciertos permisos de IAM de forma temporal; es decir, los permisos se revocan de forma automática después de que se completan las operaciones de implementación y eliminación de la solución. Google recomienda que, después de borrar la implementación, borres la cuenta de servicio, como se describe más adelante en esta guía.
Visualiza los roles asignados a la cuenta de servicio
Estos roles se enumeran aquí en caso de que un administrador de tu organización o proyecto de Google Cloud necesite 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 Firebase Service Management (
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 IAM de 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
)
Implementa la solución
Para ayudarte a implementar esta solución con un esfuerzo mínimo, se proporciona una configuración de Terraform en GitHub. La configuración de Terraform define todos los recursos deGoogle Cloud que se requieren 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 deseas 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, puedes borrarla desde la consola. Es posible que cualquier recurso que crees después de implementar la solución deba borrarse por separado.
Para usar este método de implementación, sigue las instrucciones en Implementa desde la consola.
Usa Terraform: Usa este método si quieres personalizar la solución o automatizar el aprovisionamiento y la administración de los recursos con el uso del enfoque de la infraestructura como código (IaC). Descarga la configuración de Terraform desde GitHub y de forma opcional personaliza el código según sea necesario e implementa la solución con Terraform. Después de implementar la solución, puedes seguir usando Terraform para administrarla.
Para usar este método de implementación, sigue las instrucciones en Implementa con la CLI de Terraform.
Implementa a través de la consola
Completa los siguientes pasos para implementar la solución preconfigurada.
En el Google Cloud catálogo de soluciones de inicio rápido, ve a la solución Plataforma de comercio electrónico con computación sin servidores.
Ir a la plataforma de comercio electrónico con solución de procesamiento sin servidores
Revisa la información que se proporciona en la página, como el costo estimado de la solución y el tiempo de implementación estimado.
Cuando estés listo para comenzar la implementación de la solución, haz clic en Implementar.
Aparecerá un panel de configuración paso a paso.
Completa los pasos del panel de configuración.
Toma nota del nombre que ingreses para la implementación. Este nombre es obligatorio más adelante cuando borres la implementación.
Cuando haces clic en Implementar, se muestra la página Implementaciones de soluciones. El campo Estado de esta página muestra Implementando.
Espera a que se implemente la solución.
Si la implementación falla, el campo Estado muestra Con errores. Puedes usar el registro de Cloud Build para diagnosticar los errores. Para obtener más información, consulta Errores cuando se implementa desde la consola.
Una vez completada la implementación, el campo Estado cambia a Implementado.
Para ver y usar la app web de comercio electrónico implementada, sigue las instrucciones en Explora tu implementación de Avocano.
Para ver los Google Cloud recursos que se implementaron y su configuración, realiza un recorrido interactivo.
Cuando ya no necesites la solución, puedes borrar la implementación para evitar que se sigan facturando los recursos de Google Cloud . Para obtener más información, consulta Borra la implementación.
Implementa con la CLI de Terraform
En esta sección, se describe cómo puedes personalizar la solución o automatizar el aprovisionamiento y la administración de la solución con CLI de Terraform. Las soluciones que implementas con el código de Terraform no se muestran en la página Implementaciones de soluciones en la consola de Google Cloud.
Configura 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 para esta solución está disponible en un repositorio de GitHub.
Clona el repositorio de GitHub en Cloud Shell.
Se muestra un mensaje para que confirmes la descarga del repositorio de GitHub en Cloud Shell.
Haz clic en Confirmar.
Cloud Shell se inicia en otra pestaña del navegador y el código de Terraform se descarga en el directorio
$HOME/cloudshell_open
de tu entorno de Cloud Shell.En Cloud Shell, verifica 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 para la solución. Si necesitas cambiar a ese directorio, ejecuta el siguiente comando:cd $HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
Inicializa Terraform con la ejecución del siguiente comando:
terraform init
Espera hasta ver el siguiente mensaje:
Terraform has been successfully initialized!
Configura las variables de Terraform
El código de Terraform que descargaste incluye variables que puedes usar para personalizar la implementación según tus requisitos. Por ejemplo, puedes especificar el proyecto de Google Cloud y la región en la que deseas 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 establece los valores para 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 establecer valores. La configuración de Terraform incluye otras variables que tienen valores predeterminados. Para revisar todas las variables y los valores predeterminados, consulta el archivo
variables.tf
que está disponible en el directorio$HOME/cloudshell_open/terraform-dynamic-python-webapp/infra
. Asegúrate de que cada valor que establezcas en el archivo
terraform.tfvars
coincida con el tipo de variable como se declara en el archivovariables.tf
. Por ejemplo, si el tipo que se define para una variable en el archivovariables.tf
esbool
, debes especificartrue
ofalse
como el 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 puedes asignar a las variables obligatorias, consulta los siguientes vínculos:
- PROJECT_ID: Cómo identificar proyectos.
- REGION y ZONE: Regiones y zonas disponibles
Valida y revisa 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 muestra algún error, realiza las correcciones necesarias en la configuración y, luego, vuelve a ejecutar el comando
terraform validate
. Repite este paso hasta que el comando muestre el siguiente mensaje:Success! The configuration is valid.
Revisa los recursos que se definen en la configuración:
terraform plan
Si no creaste el archivo
terraform.tfvars
como se describió antes, Terraform te solicita que ingreses valores para las variables que no tienen valores predeterminados. Ingresa los valores obligatorios.El resultado del comando
terraform plan
es una lista de los recursos que Terraform aprovisiona cuando aplicas la configuración.Si deseas hacer algún cambio, cambia la configuración y, luego, vuelve a ejecutar los comandos
terraform validate
yterraform plan
.
Aprovisiona los recursos
Cuando no se necesiten más cambios en la configuración de Terraform, implementa los recursos de la siguiente manera:
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 creaste el archivo
terraform.tfvars
como se describió antes, Terraform te solicita que ingreses valores para las variables que no tienen valores predeterminados. Ingresa los valores obligatorios.Terraform muestra una lista de los recursos que se crearán.
Cuando se te solicite que realices las acciones, ingresa
yes
.Terraform muestra mensajes que señalan el progreso de la implementación.
Si no se puede completar la implementación, Terraform muestra los errores que causaron la falla. Revisa los mensajes de error y actualiza la configuración para corregir los errores. Luego, vuelva a ejecutar el comando
terraform apply
. Para obtener ayuda con la solución de errores de Terraform, consulta Errores cuando se implementa 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 app web de comercio electrónico implementada, sigue las instrucciones en Explora tu implementación de Avocano.
Para ver los Google Cloud recursos que se implementaron y su configuración, realiza un recorrido interactivo.
Cuando ya no necesites la solución, puedes borrar la implementación para evitar que se sigan facturando los recursos de Google Cloud . Para obtener más información, consulta Borra la implementación.
Explora tu implementación de Avocano
Ya implementaste la aplicación del sitio web de Avocano. Puedes visitar el sitio web de Avocano y echar un vistazo y, luego, explorar cómo funciona la solución en la consola de Google Cloud. Ten en cuenta que pueden transcurrir unos minutos después de implementar la aplicación para que el sitio aparezca en la dirección proporcionada.
¿Qué es Avocano?
En esta solución, se usa una aplicación de ejemplo llamada Avocano para demostrar la implementación y administración de una app web con muchas de las herramientas y los productos que se usan en las aplicaciones sin servidores. Avocano es una aplicación que imita una implementación real de una app web de comercio electrónico.
El frontend de Avocano presenta una vidriera falsa, en la que puedes agregar artículos a tu carrito y tratar de completar un proceso de confirmación de la compra, pero la tienda revela que es falsa (Avoca--no!). Si bien no puedes comprar un aguacate, la aplicación demuestra la administración del inventario mediante la disminución de la cantidad de productos disponibles por uno.
Explora el frontend
Para iniciar el frontend de la implementación de tu solución, sigue estos pasos:
- Abre la Firebase console.
- Selecciona tu proyecto existente.
- Navega a la sección Compilar > Hosting.
- Selecciona el Dominio que termina en web.app. El frontend de la aplicación de ejemplo se abre en una ventana nueva del navegador.
Ahora puedes interactuar con el sitio web de Avocano tal como lo verían sus clientes, lo que incluye, por ejemplo, navegar por los productos, agregar productos al carrito y pagar como invitado.
Consulta la configuración del ajuste de escala automático y la simultaneidad
Cloud Run ajusta la escala automáticamente hacia arriba o hacia abajo las instancias de contenedor desde cero según el tráfico, para proporcionar un tiempo de inicio rápido para la app
Comprende la configuración del ajuste de escala automático y la simultaneidad
Es importante comprender que la configuración del ajuste de escala automático y la simultaneidad en Cloud Run puede afectar el rendimiento y los costos de tu app:
Instancias mínimas: Puedes configurar la cantidad mínima de instancias para habilitar instancias inactivas para tu servicio. Si aumentas el parámetro de configuración de instancias mínimas en previsión de un mayor tráfico, puedes minimizar el tiempo de respuesta de los primeros N usuarios. Si tu servicio requiere una latencia reducida, especialmente cuando escalas desde cero instancias activas, puedes especificar una cantidad mínima de instancias de contenedor que se deben mantener en espera y listas para entregar solicitudes.
Instancias máximas: Aumentar la configuración de instancias máximas en Cloud Run puede ayudarte a entregar un tráfico excepcionalmente alto que se anticipa. En ese caso, también debes evaluar tu cuota actual y considerar solicitar un aumento. Reducir la configuración de instancias máximas puede ayudarte a evitar costos inesperados o un mayor uso de la infraestructura de copia de seguridad subyacente (como la capacidad de tu base de datos).
Simultaneidad: La configuración de simultaneidad de Cloud Run especifica la cantidad máxima de solicitudes que una instancia de contenedor determinada puede procesar de forma simultánea. La optimización de la memoria, la CPU y la simultaneidad para el comportamiento de tu aplicación garantiza que cada instancia de contenedor tenga el mejor uso y minimice la necesidad de escalar a instancias nuevas. Para obtener más información, consulta Optimiza la simultaneidad.
Visualiza la configuración de simultaneidad y ajuste de escala automático
Para ver la configuración actual de instancias mínimas y máximas, y 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 interesa para abrir la página Detalles del servicio.
- Haz clic en la pestaña Revisiones.
- En el panel de detalles a la derecha, las instancias mínimas, máximas y la configuración de simultaneidad actuales se muestran en la pestaña Contenedor.
Si deseas obtener información para ajustar esta configuración y optimizar el rendimiento de la app, consulta las Sugerencias generales para el desarrollo en la documentación de Cloud Run.
Ver registros de tráfico
Puedes usar las herramientas de registro de Cloud Run para supervisar el tráfico hacia tu app 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.
- Hacer clic en la pestaña Registros para obtener los registros de solicitud y contenedor de todas las revisiones de este servicio. Puedes filtrar por nivel de gravedad del registro
Cloud Run captura automáticamente los registros de muchos lugares: cualquier elemento escrito en error estándar o salida estándar, cualquier elemento en /var/log/
y otros.
También se captura cualquier registro manual realizado con las bibliotecas de Cloud Logging.
También puedes ver los registros de este servicio directamente en Cloud Logging si haces clic en Ver en el Explorador de registros.
En la app de Avocano, prueba las siguientes acciones del usuario para activar el resultado correspondiente que puedes ver en los registros.
Acción del usuario | Salida de los registros |
---|---|
Compra el carrito de compras con Recopilar como tipo de pago y que el importe del producto en el carrito no supere el recuento del inventario. | El resultado del registro muestra un registro de info, con el estado httpRequest de 200. |
Compra el carrito de compras con Recopilar como tipo de pago, pero el importe del producto en el carrito supera el recuento del inventario. | El resultado del registro muestra un registro de Advertencia, con el estado httpRequest de 400. |
Compra el carrito de compras con Crédito como tipo de pago. | El resultado del registro muestra un registro de Error, con el estado httpRequest de 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 toma nota de la respuesta y genera la entrada de registro de solicitud correspondiente.
Puedes usar alertas basadas en registros para recibir notificaciones cada vez que aparezca un mensaje específico en tus registros incluidos.
Visualiza la instrumentación de seguimiento y los seguimientos capturados
En esta solución, se usa la instrumentación automática de Python de OpenTelemetry para capturar los datos de telemetría de la aplicación Avocano.
Comprende cómo se implementa el seguimiento
La solución implementa el siguiente código y la configuración para generar registros con la instrumentación automática:
- Agrega dependencias para 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
: Agrega compatibilidad con la instrumentación automática de Python.opentelemetry-exporter-gcp-trace
: Proporciona compatibilidad para exportar seguimientos a Cloud Trace.opentelemetry-resource-detector
: Proporciona compatibilidad para detectar Google Cloud recursos.opentelemetry-instrumentation-django
: Permite solicitudes de seguimiento para la aplicación de Django.
- Establece la vinculación de IAM 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 para Cloud Trace. - En
server/Procfile
, configura el servidor para que ejecute el comandoopentelemetry-instrument
en la app de Avocano. Este comando detecta paquetes en Avocano y aplica la instrumentación de seguimiento automático en ellos, si es posible.
Para obtener más información sobre cómo recopilar datos de Cloud Trace para Python, consulta Python y OpenTelemetry.
Consulta los datos de latencia
Para ver los datos de latencia de las solicitudes, sigue estos pasos:
- Ir a Cloud Trace
- En la sección Selecciona un seguimiento de la página Lista de seguimientos, haz clic en el punto azul, que representa un seguimiento capturado. En la columna Latencia, se muestra la latencia de los seguimientos capturados.
También puedes ver los datos de seguimiento con las siguientes visualizaciones en la página Lista de seguimientos:
- Gráfico de cascada: Representa una solicitud completa a través de la aplicación. Cada paso del cronograma es un intervalo en el que puedes hacer clic para ver los detalles. Cloud Run crea automáticamente intervalos para operaciones internas, como el control de solicitudes y el balanceo de cargas. Estos intervalos aparecen en el mismo gráfico de cascada que los intervalos que produce Avocano, lo que te permite ver la vida útil completa de la solicitud.
- Detalles del intervalo, que muestran cualquier etiqueta o anotación que agregaste al código de la app cuando se instrumentó para Trace.
Si deseas agregar seguimientos personalizados, consulta Instrumentación manual en la documentación de Open Telemetry.
Recomendaciones de diseño
En esta sección, se proporcionan recomendaciones para usar la plataforma de comercio electrónico con soluciones sin servidores para desarrollar una arquitectura que cumpla con tus requisitos de seguridad, confiabilidad, costos y rendimiento.
Para ver las recomendaciones de diseño de cada área, haz clic en la pestaña correspondiente.
Enfoque de diseño | Recomendaciones |
---|---|
Encriptación de datos |
De forma predeterminada, Cloud Run encripta los datos con un Google-owned and Google-managed encryption key. Para proteger tus contenedores mediante una clave que controlas, puedes usar claves de encriptación administradas por el cliente. Para obtener más información, consulta la página sobre cómo usar claves de encriptación administradas por el cliente. |
Seguridad de la cadena de suministro del software | Para garantizar que solo se implementen imágenes de contenedor autorizadas en los servicios de Cloud Run, puedes usar la autorización binaria. |
Enfoque de diseño | Recomendaciones |
---|---|
Escalamiento de apps | Los servicios de Cloud Run en la solución están configurados para escalar automáticamente las instancias de contenedor de forma horizontal según la carga de solicitudes. Revisa y ajusta los parámetros de ajuste de escala automático según tus requisitos. Para obtener más información, consulta Acerca del ajuste de escala automático de instancias de contenedor. |
Cómo administrar solicitudes | Para mejorar la capacidad de respuesta de los servicios de Cloud Run que almacenan el estado específico del cliente en instancias de contenedores, puedes usar afinidad de sesión. Las solicitudes del mismo cliente se enrutan a la misma instancia de contenedor, según el mejor esfuerzo. Para obtener más información, consulta Cómo configurar la afinidad de sesión (servicios). |
Durabilidad de los datos | Para proteger tus datos contra pérdidas, puedes usar copias de seguridad automáticas de la base de datos de Cloud SQL. Para obtener más información, consulta Acerca de las copias de seguridad de Cloud SQL. |
Alta disponibilidad (HA) de la base de datos | La base de datos de Cloud SQL en la solución se implementa en una sola zona. Para HA, puedes usar una configuración de varias zonas. Para obtener más información, consulta Acerca de la alta disponibilidad. Si la HA de la base de datos es un requisito fundamental, AlloyDB para PostgreSQL es un servicio alternativo de Google Cloud que puedes considerar. |
Confiabilidad de la base de datos | La instancia de Cloud SQL en 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 | La cantidad de recursos de Cloud Run es limitada. Si prevés un aumento repentino del tráfico, por ejemplo, debido a un evento de temporada o de ofertas, debes solicitar un aumento de la cuota. Para obtener más información, consulta Cómo aumentar la cuota. Algunas solicitudes de cuotas requieren aprobación manual, por lo que debes planificar con anticipación. También puedes establecer alertas sobre tu progreso para alcanzar tu cuota. |
Enfoque de diseño | Recomendaciones |
---|---|
Eficiencia de los recursos | Cloud Run determina la cantidad de solicitudes que se deben enviar a una instancia de contenedor según el uso de CPU y memoria. Si aumentas el parámetro de configuración de simultaneidad máxima, puedes reducir la cantidad de instancias de contenedor que Cloud Run necesita crear y, por lo tanto, reducir el costo. Para obtener más información, consulta Cantidad máxima de solicitudes simultáneas por instancia (servicios). Los servicios de Cloud Run en esta solución están configurados para asignar CPUs solo durante el procesamiento de la solicitud. Cuando un servicio de Cloud Run termina de administrar una solicitud, el acceso de la instancia del contenedor a las CPUs se inhabilita. Para obtener información sobre el costo y el efecto del rendimiento de esta configuración, consulta Asignación de CPU (servicios). |
Enfoque de diseño | Recomendaciones |
---|---|
Tiempo de inicio de la app | Para reducir el efecto de rendimiento de los inicios en frío, puedes configurar la cantidad mínima de instancias de contenedor de Cloud Run en un valor distinto de cero. Para obtener más información, consulta Sugerencias generales de desarrollo para Cloud Run. |
Ajusta la simultaneidad | Esta solución está ajustada para maximizar la capacidad de procesamiento de contenedores individuales. Cloud Run ajusta automáticamente la simultaneidad para entregar varias solicitudes. Sin embargo, debes ajustar la simultaneidad máxima predeterminada si tu contenedor no puede procesar muchas solicitudes simultáneas o si puede manejar un volumen mayor de solicitudes. Para obtener más información, consulta Optimiza la simultaneidad. |
Rendimiento de la base de datos | En el caso de las aplicaciones sensibles al rendimiento, puedes mejorar el rendimiento de Cloud SQL con un tipo de máquina más grande y con el aumento de la capacidad de almacenamiento. Si el rendimiento de la base de datos es un requisito fundamental, AlloyDB para PostgreSQL es un servicio alternativo de Google Cloud que puedes considerar. |
Ten en cuenta lo siguiente:
- Antes de realizar cambios en el diseño, evalúa el impacto del costo y considera posibles compensaciones con otras características. Puedes evaluar el impacto del costo de los cambios de diseño con la calculadora de precios deGoogle Cloud .
- Para implementar cambios de diseño en la solución, necesitas experiencia en codificación de Terraform y conocimiento avanzado de los servicios de Google Cloud que se usan en la solución.
- Si modificas la configuración de Terraform que proporciona Google y, luego, experimentas errores, crea problemas en GitHub. Los problemas de GitHub se revisan según el criterio del mejor esfuerzo y no están destinados a preguntas de uso general.
- Para obtener más información sobre el diseño y la configuración de entornos de producción en Google Cloud, consulta Diseño de la zona de destino en Google Cloud y Lista de tareas de configuración deGoogle Cloud .
Borra la implementación de la solución
Cuando ya no necesites la implementación de la solución, borra la implementación para evitar que se sigan facturando los recursos que creaste.
Borra a través de la consola
Usa este procedimiento si implementaste la solución a través de la consola.
En la consola de Google Cloud, ve a la página Implementaciones de soluciones.
Elige el proyecto que contenga la implementación que deseas borrar.
Busca la implementación que deseas borrar.
En la fila de la implementación, haz clic en
Acciones y, luego, selecciona Borrar.Es posible que debas desplazarte para ver Acciones en la fila.
Ingresa el nombre de la implementación y, luego, haz clic en Confirmar.
El campo Estado muestra Borrando.
Si la eliminación falla, consulta la guía de solución de problemas en Error cuando se borra la implementación.
Cuando ya no necesites el proyecto de Google Cloud que usaste para la solución, puedes borrarlo. Para obtener más información, consulta Opcional: Borra el proyecto.
Borra con la CLI de Terraform
Usa este procedimiento si implementaste la solución con la CLI de Terraform.
En Cloud Shell, 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.Quita los recursos que aprovisionó Terraform:
terraform destroy
Terraform muestra una lista de los recursos que se destruirán.
Cuando se te solicite que realices las acciones, ingresa
yes
.Terraform mostrará mensajes que muestran el progreso. Después de borrar todos los recursos, Terraform muestra el siguiente mensaje:
Destroy complete!
Si la eliminación falla, consulta la guía de solución de problemas en Error cuando se borra la implementación.
Cuando ya no necesites el proyecto de Google Cloud que usaste para la solución, puedes borrarlo. Para obtener más información, consulta Opcional: Borra el proyecto.
Opcional: Borra el proyecto
Si implementaste la solución en un proyecto de Google Cloud nuevo y ya no lo necesitas, sigue estos pasos para borrarlo:
- En la consola de Google Cloud, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- Cuando se te solicite, escribe el ID del proyecto y, luego, haz clic en Cerrar.
Si decides conservar el proyecto, borra la cuenta de servicio que se creó para esta solución, como se describe en la siguiente sección.
Opcional: Borra la cuenta de servicio
Si borraste el proyecto que usaste para la solución, omite esta sección.
Como se mencionó antes 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 asignaron ciertos permisos de IAM de forma temporal, es decir, los permisos se revocaron de forma automática después de que se completaron las operaciones de implementación y eliminación de la solución, pero la cuenta de servicio no se borró. Google recomienda que borres esta cuenta de servicio.
Si implementaste la solución desde la consola de Google Cloud, ve a la página Implementaciones de soluciones. (Si ya estás en esa página, actualiza el navegador). Un proceso se activa en segundo plano para borrar la cuenta de servicio. No es necesario hacer ninguna otra acción.
Si implementaste la solución con la CLI de Terraform, completa los siguientes pasos:
En la consola de Google Cloud, ve a la página Cuentas de servicio.
Elige el proyecto que usaste para la solución.
Elige la cuenta de servicio que deseas borrar.
El ID de correo electrónico de la cuenta de servicio que se creó para la solución tiene el siguiente formato:
goog-sc-
DEPLOYMENT_NAME -NNN @PROJECT_ID .iam.gserviceaccount.comEl ID de correo electrónico contiene los siguientes valores:
- DEPLOYMENT_NAME: El nombre de la implementación.
- NNN: Un número aleatorio de 3 dígitos.
- PROJECT_ID: Es el ID del proyecto en el que implementaste la solución.
Haz clic en Borrar.
Solucionar errores
Las acciones que puedes realizar para diagnosticar y resolver errores dependen del método de implementación y la complejidad del error.
Errores en la implementación a través de la consola
Si la implementación falla cuando usas la consola, haz lo siguiente:
Ve a la página Implementaciones de soluciones.
Si la implementación falló, el campo Estado muestra Con errores.
Ve los detalles de los errores que causaron la falla:
En la fila de la implementación, haz clic en
Acciones.Es posible que debas desplazarte para ver Acciones en la fila.
Selecciona Ver registros de Cloud Build.
Revisa el registro de Cloud Build y toma las medidas adecuadas para resolver el problema que causó la falla.
Errores en la implementación con la CLI de Terraform
Si la implementación falla cuando se usa 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 puedes encontrar cuando usas Terraform.
Error: API no habilitada
Si creas un proyecto y, luego, intentas implementar la solución en el proyecto nuevo de inmediato, la implementación podría fallar con 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 "No se puede asignar la dirección solicitada"
Cuando ejecutas el comando terraform apply
, es posible que se produzca 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 cuando se borra una implementación
En algunos casos, los intentos de borrar una implementación podrían fallar:
- Después de implementar una solución desde la consola, si cambias cualquier recurso que aprovisionó la solución y, luego, intentas borrar la implementación, la eliminación podría fallar. El campo Estado en la página Implementaciones de soluciones muestra Con errores, y el registro de Cloud Build muestra la causa del error.
- Después de implementar una solución con Terraform, si cambias algún recurso con una interfaz que no es de Terraform (por ejemplo, la consola) y, luego, intentas borrar la implementación, la eliminación podría fallar. Los mensajes en el resultado del comando
terraform destroy
muestran la causa del error.
Revisa los registros de errores y los mensajes, identifica y borra los recursos que causaron el error y, luego, intenta borrar la implementación.
Si una implementación basada en la consola no se borra y no puedes diagnosticar el error con el registro de Cloud Build, puedes borrar la implementación con Terraform, como se describe en la siguiente sección.
Borra una implementación basada en la consola con la CLI de Terraform
En esta sección, se describe cómo borrar una implementación basada en la consola si se producen errores cuando intentas borrarla de la consola. En este enfoque, descarga la configuración de Terraform para la implementación que deseas borrar y, luego, usa Terraform para borrar la implementación.
Identifica la región en la que se almacenan el código, los registros y otros datos de Terraform de la implementación. Esta región puede ser diferente de la región que elegiste cuando implementaste la solución.
En la consola de Google Cloud, ve a la página Implementaciones de soluciones.
Elige el proyecto que contenga la implementación que deseas borrar.
En la lista de implementaciones, identifica la fila de la implementación que deseas borrar.
Haz clic en
Ver todo el contenido de la fila.En la columna Ubicación, observa la segunda ubicación, 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 deseas borrar:
export REGION="
REGION " export PROJECT_ID="PROJECT_ID " export DEPLOYMENT_NAME="DEPLOYMENT_NAME "En estos comandos, reemplaza lo siguiente:
- REGION: Es la ubicación que anotaste antes en este procedimiento.
- PROJECT_ID: Es el ID del proyecto en el que implementaste la solución.
- DEPLOYMENT_NAME: Es el nombre de la implementación que deseas borrar.
Obtén el ID de la última revisión de la implementación que deseas borrar:
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 es similar a este:
projects/
PROJECT_ID /locations/REGION /deployments/DEPLOYMENT_NAME /revisions/r-0Obtén la ubicación de Cloud Storage de la configuración de Terraform para 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
El siguiente es un ejemplo del resultado de este comando:
gs://
PROJECT_ID -REGION -blueprint-config/DEPLOYMENT_NAME /r-0/apply_results/contentDescarga la configuración de Terraform desde Cloud Storage a Cloud Shell:
gcloud storage cp $CONTENT_PATH $HOME --recursive cd $HOME/content/infra
Espera hasta que aparezca el mensaje
Operation completed
, como se muestra en el siguiente ejemplo:Operation completed over 45 objects/268.5 KiB
Inicializa Terraform mediante este comando:
terraform init
Espera hasta ver el siguiente mensaje:
Terraform has been successfully initialized!
Quita los recursos implementados:
terraform destroy
Terraform muestra una lista de los recursos que se destruirán.
Si se muestran advertencias sobre variables no declaradas, ignora las advertencias.
Cuando se te solicite que realices las acciones, ingresa
yes
.Terraform mostrará mensajes que muestran el progreso. Después de borrar todos los recursos, Terraform muestra el siguiente mensaje:
Destroy complete!
Borra 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, luego, verifica que se haya borrado 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.Después de borrar el artefacto de implementación, aparece un mensaje como el que se muestra en el siguiente ejemplo:
Resource 'projects/
PROJECT_ID /locations/REGION /deployments/DEPLOYMENT_NAME ' was not found
Enviar comentarios
Las soluciones de inicio rápido solo tienen fines informativos y no son productos compatibles de forma oficial. Google puede cambiar o quitar soluciones sin previo aviso.
Para solucionar errores, revisa los registros de Cloud Build y el resultado de Terraform.
Para enviar comentarios, haz lo siguiente:
- Para ver la documentación, los instructivos en la consola o la solución, usa el botón Enviar comentarios en la página.
En el caso de códigos sin cambiar, crea problemas en el repositorio de GitHub adecuado:
Los problemas de GitHub se revisan según el criterio del mejor esfuerzo y no están destinados a preguntas de uso general.
- Si tienes problemas con los productos que se usan en la solución, comunícate con Atención al cliente de Cloud.
¿Qué sigue?
En esta solución, se muestra cómo implementar una aplicación web de comercio electrónico con Cloud Run. Para obtener más información sobre los productos y las capacidades de Google Cloud , consulta lo siguiente:
- Sugerencias generales de desarrollo para Cloud Run.
- Prácticas recomendadas para las pruebas de carga de Cloud Run.
- Instructivo de autenticación de usuarios finales para Cloud Run
- Entrega contenido dinámico y aloja microservicios con Firebase Hosting