Cómo migrar servicios del entorno estándar al entorno flexible

El entorno flexible de App Engine no proporciona las bibliotecas de API presentes en el SDK de App Engine. Si decides migrar tu aplicación del entorno estándar de App Engine al entorno flexible, debes actualizar tu código para que use los servicios y las API que están disponibles en todos los entornos de Google Cloud Platform.

Consulta las siguientes secciones para obtener instrucciones sobre cómo migrar servicios y API específicos del entorno estándar al entorno flexible.

Diferencias entre el entorno estándar y el entorno flexible

Además de las diferencias clave que se describen aquí, existen diferencias menores que debes tener en cuenta cuando migras del entorno estándar al entorno flexible:

  • Las rutas de acceso con /_ah/ no están bloqueadas en el entorno flexible. Si tu aplicación en el entorno estándar usa rutas con /_ah/ para acceder a servicios específicos, consulta la sección correspondiente a continuación.

  • Los límites de gastos solo son compatibles con el entorno estándar de App Engine. En el entorno flexible, deberías considerar crear presupuestos y configurar alarmas.

Identidad de la aplicación

Para obtener información sobre tu aplicación, puedes usar una combinación de variables del entorno y el servicio de metadatos de Google Compute Engine cuando se ejecutan en el entorno flexible:

Información de la aplicación Cómo acceder
Aplicación/ID del proyecto Ya sea la variable de entorno GOOGLE_CLOUD_PROJECT o el recurso /project/project-id en el servidor de metadatos
Nombre de host predeterminado Método apps.get de la API de Administrador de App Engine
Nombre de cuenta de servicio El recurso /instance/service-accounts en el servidor de metadatos
Token de acceso de OAuth 2.0 El recurso /instances/service-accounts en el servidor de metadatos. Consulta la Documentación de autenticación con credenciales de la cuenta de servicio de Compute Engine

La siguiente funcionalidad no está disponible de manera directa:

  • No hay un depósito de Cloud Storage predeterminado para tu proyecto. Para usar un depósito en la aplicación, puedes crear un depósito de Cloud Storage y usar el ID del proyecto como nombre del depósito. A continuación, puedes usar la variable de entorno GOOGLE_CLOUD_PROJECT en tu aplicación como el nombre del depósito.
  • No puedes firmar los BLOB con la cuenta de servicio predeterminada. Puedes solucionar esto con la API de administración de identidades y accesos (IAM) de Google o proporcionando una clave privada de cuenta de servicio a tu aplicación cuando la implementes.
  • Del mismo modo, no existe una API incorporada para obtener certificados públicos a fin de verificar firmas. Sin embargo, los certificados públicos de cada cuenta de servicio se encuentran disponibles en https://www.googleapis.com/robot/v1/metadata/x509/{service account email}.
  • Las API de SystemProperty no se encuentran disponibles para el entorno flexible de App Engine. Sin embargo, puedes configurar las variables del entorno en app.yaml y usar System.env para obtener los valores, como se describe en Cómo definir variables de entorno.

Hilos en segundo plano

Debido a que el entorno flexible no tiene limitaciones en la zona de pruebas, puedes crear hilos o procesos que estén fuera del entorno de solicitud. Por lo general, solo necesitas usar las herramientas integradas de creación de hilos o multiprocesamiento de tu lenguaje.

Blobstore

Cloud Storage ha reemplazado en gran medida el uso del servicio de Blobstore en los entornos estándar y flexible. Usa las Bibliotecas cliente de Google Cloud para almacenar y recuperar datos en Cloud Storage.

Para obtener más información, consulta la siguiente guía:

Capacidades

No existe una funcionalidad similar al servicio de capacidades disponible fuera del entorno estándar.

WebSockets

El entorno flexible y el entorno estándar no admiten los WebSockets. Si necesitas usar WebSockets, puedes usar Compute Engine o GKE.

Cloud Datastore

Puedes acceder a Cloud Datastore desde cualquier lugar con la API de Cloud Datastore. Usa las Bibliotecas cliente de Google Cloud para almacenar y recuperar los datos de Cloud Datastore.

Los mismos datos de Cloud Datastore están disponibles sin importar si usas las bibliotecas de App Engine, las bibliotecas cliente de Google Cloud o si llamas directamente a la API.

En este momento, las bibliotecas ORM que se encuentran disponibles en el entorno estándar, como ndb y Objectify, no se admiten fuera del entorno estándar.

Para obtener más información, consulta la siguiente guía:

Imágenes

El servicio de Imágenes no se encuentra disponible fuera del entorno estándar. Sin embargo, puedes entregar imágenes directo desde tu aplicación o desde Cloud Storage con facilidad.

Si necesitas procesar imágenes, puedes instalar y usar cualquier biblioteca de procesamiento de imágenes como ImageJ2, imgscalr o thumbnailator

El servicio de Imágenes también proporcionó una funcionalidad para evitar las solicitudes dinámicas a tu aplicación mediante el control del cambio de tamaño de las imágenes con una URL de entrega. Si deseas una funcionalidad similar, puedes generar las imágenes redimensionadas por adelantado y subirlas a Cloud Storage para entregarlas. Por otra parte, podrías usar un servicio de red de entrega de contenido (CDN) de terceros que ofrezca cambio de tamaño de imagen.

Para obtener más recursos, consulta las siguientes guías:

Cómo crear registros

Los registros funcionan de forma automática en el entorno flexible y en el entorno estándar. Sin embargo, se recopilan en un formato diferente. Los registros no se podrán agrupar en paquetes por solicitudes y los registros de stdout y stderr se recopilarán por separado.

Si deseas tener más control sobre el registro de aplicaciones, la capacidad de agrupar registros y de registrar metadatos adicionales, puedes usar la API de Stackdriver Logging de forma directa con las Bibliotecas cliente de Google Cloud.

Para obtener más detalles, consulta la siguiente guía:

Correo electrónico

El servicio de Correo electrónico de App Engine no se encuentra disponible fuera del entorno estándar. Deberás usar un proveedor de correo de terceros como SendGrid, Mailgun o Mailjet para enviar correos electrónicos. Todos estos servicios ofrecen las API para enviar correos electrónicos desde aplicaciones que se ejecutan en cualquier lugar.

Las siguientes guías muestran cómo usar estos servicios con el entorno flexible:

Memcache

Por el momento, el servicio de Memcache no está disponible para el entorno flexible de App Engine. Una versión Alfa del servicio de Memcache estará disponible en breve. Si deseas recibir una notificación cuando el servicio esté disponible, llena este formulario de acceso anticipado.

Si necesitas acceder a un servicio de Memcache de inmediato, puedes usar el servicio de Memcache de terceros de Redis Labs. Para acceder a este servicio, consulta Cómo almacenar datos de aplicación en caché con Memcache de Redis Labs.

También puedes usar Redis Cloud de Redis Labs, un servicio administrado en su totalidad por terceros. Para acceder a este servicio, consulta Cómo almacenar en caché los datos de aplicación con Redis de Redis Labs.

Modules

La API de Modules no está disponible fuera del entorno estándar. Sin embargo, puedes usar una combinación de variables de entorno y la API de Administrador de App Engine para obtener información sobre los servicios en ejecución de tu aplicación y modificarlos:

Información del servicio Cómo acceder
Nombre del servicio actual Variable de entorno GAE_SERVICE
Versión del servicio actual Variable de entorno GAE_VERSION
ID de instancia actual Variable de entorno GAE_INSTANCE
Nombre de host predeterminado Método apps.get de la API de Administrador de App Engine
Lista de servicios Método apps.services.list de la API de Administrador de App Engine
Lista de versiones para un servicio. Método apps.services.versions.list de la API de Administrador de App Engine
Versión predeterminada para un servicio, incluidas las divisiones del tráfico Método apps.services.get de la API de Administrador de App Engine
Lista de instancias en ejecución para una versión Método apps.services.versions.instances.list de la API de Administrador de App Engine

También puedes usar la API de Administrador de App Engine para implementar y administrar servicios y versiones en tu aplicación.

Espacios de nombres

Solo Cloud Datastore admite la modalidad multiusuario directamente fuera del entorno estándar. Para obtener otros servicios, deberás gestionar la modalidad multiusuario de forma manual. Para generar instancias de servicios totalmente aisladas, puedes crear proyectos nuevos de manera programática con la API de Cloud Resource Manager y acceder a los recursos de todos los proyectos.

OAuth

El servicio de OAuth no se encuentra disponible en el entorno flexible. Si necesitas verificar los tokens de OAuth 2.0, puedes hacerlo con el método oauth2.tokeninfo de la API de OAuth 2.0.

API remota

El servicio de API remota no es aplicable al entorno flexible. La mayoría de los servicios de copia de seguridad, como Cloud Datastore, a los que se puede acceder desde el entorno flexible, también son accesibles desde cualquier lugar.

El servicio de Búsqueda no se encuentra disponible fuera del entorno estándar. Puedes alojar bases de datos de búsqueda de texto completo, como ElasticSearch en Google Compute Engine, y acceder a ellas desde los entornos estándar y flexible.

Sockets

El entorno flexible no tiene restricciones de zona de pruebas, por lo que puedes abrir y usar sockets de salida de forma normal.

Lista de tareas en cola

Para usar el servicio push de la lista de tareas en cola fuera del entorno estándar de la primera generación, puedes usar la API Beta de Cloud Tasks.

En muchos casos en los que puedes usar listas de extracción, como colas de tareas o mensajes que extraerán y procesarán trabajadores independientes, Cloud Pub/Sub puede ser una buena alternativa, ya que ofrece funcionalidades similares y garantías de entrega.

Recuperación de URL

El servicio de Recuperación de URL no se encuentra disponible en el entorno flexible. Sin embargo, no hay restricciones en la zona de pruebas, por lo que tu aplicación puede usar cualquier biblioteca HTTP para obtener la funcionalidad de recuperación de URL. Recomenzamos usar la biblioteca cliente HTTP de Google para Java o, también OkHttp.

Usuarios

El servicio de Usuarios no se encuentra disponible fuera del entorno estándar. Puedes usar cualquier mecanismo de autenticación basado en HTTP en el entorno flexible, como los siguientes:

Ten en cuenta que, debido a que el servicio de Usuarios no se encuentra disponible, no puede usarse appengine-web.xml. para que las URL sean accesibles solo por los administradores. Tendrás que controlar esta lógica dentro de tu aplicación.

Pasos siguientes

Si deseas obtener una descripción general de las diferencias clave entre el entorno flexible y el entorno estándar con pautas para las aplicaciones que usan ambos, consulta Entorno de App Engine Flexible para usuarios del entorno de App Engine Standard.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Entorno flexible de App Engine para documentos de Java