Servicios de backend de apps para dispositivos móviles

En este artículo, se proporciona una guía para compilar, conectar, probar y supervisar servicios de backend móviles con Google Cloud Platform (GCP). Los vínculos de las muestras de código y de aplicaciones se encuentran después de cada patrón de diseño.

La mayoría de las aplicaciones y juegos para dispositivos móviles necesitan un servicio de backend en situaciones que no se pueden resolver por sí solas en el dispositivo, como compartir y procesar datos de varios usuarios o almacenar archivos grandes. Si quieres aprender más sobre servicios de backend específicos para juegos, consulta la descripción general de la infraestructura de juegos en la nube.

Selecciona un patrón de diseño

Compilar un servicio de backend para aplicaciones destinadas a dispositivos móviles es similar a compilar un servicio basado en la Web, con algunos requisitos adicionales:

  • Limitar el almacenamiento de datos en el dispositivo
  • Sincronizar datos en varios dispositivos
  • Manejar el caso sin conexión con facilidad
  • Enviar notificaciones y mensajes
  • Minimizar el agotamiento de batería

En los siguientes patrones de diseño, se demuestran formas diferentes de usar GCP para crear servicios de backend que abordan estos requisitos. Si quieres obtener más información, selecciona un patrón para acceder a una descripción detallada del patrón.

Patrón de diseño de Firebase Firebase con patrón de diseño de App Engine Firebase con patrón de diseño del entorno flexible de App Engine Entorno estándar de App Engine con patrón de diseño de Endpoints Patrón de diseño de Compute Engine

Los tres primeros patrones usan Firebase, una arquitectura de dos niveles, en la cual las aplicaciones para dispositivos móviles y Firebase manipulan los datos de forma directa. Esto genera diferencias importantes en la forma en que la seguridad y la validación de datos se manejan.

En un modelo tradicional de tres niveles, como los dos últimos patrones, hay una capa de comunicación entre la aplicación para dispositivos móviles y el servicio de backend. En general, se escribe código de autenticación y de validación de datos en esta capa.

En Firebase, se especifica la autenticación y la validación como reglas declarativas en la IU web de Firebase sin necesidad de escribir código. Para obtener más información, consulta Autenticación de Firebase en la documentación de Firebase.

Además, estos patrones de diseño pasan de una plataforma administrada por completo, Firebase, a una no administrada en absoluto, Compute Engine. En plataformas administradas, Google maneja por ti tareas como las actualizaciones y el ajuste de escala automático, pero impone algunas limitaciones en la configuración. En las plataformas no administradas, tienes el control total de la configuración de tu servidor, pero debes manejar las tareas de administración tú mismo.

En la siguiente tabla, se detallan las diferencias entre estos patrones de diseño.

Característica Firebase Firebase y el entorno estándar de App Engine Firebase y el entorno flexible de App Engine Entorno estándar de App Engine y Cloud Endpoints Compute Engine y REST/gRPC
Capacidad de escalamiento automático Sí Sí Sí Sí Si configuras un escalador automático
Sincronización automática de datos en tiempo real Sí Sí Sí

Mantenimiento automático del servidor Sí Sí Sí Sí

Lógica de backend

Sí Sí Sí Sí
Llama a binarios nativos, escribe en el sistema del archivo o hace otras llamadas al sistema

Sí

Sí
Almacenamiento de datos Sí Sí Sí Si agregas otros servicios de GCP Si agregas otros servicios de GCP
Almacenamiento de archivos Sí
Sí
Sí
Sí
con Cloud Storage
Sí
con Cloud Storage
Autenticación de usuario sencilla Sí Sí Sí OAuth 2.0

Compatibilidad de lenguajes para servicios de backend móviles No disponible Consulta la documentación de App Engine Consulta la documentación de marcos de trabajo de Endpoints Cualquiera
Mensajes y notificaciones, como notificaciones push Sí
Sí
Sí
Sí
con Cloud Messaging
Sí
con Cloud Messaging
Plataformas compatibles iOS, Android, Web iOS, Android, Web iOS, Android, Web iOS, Android, Web iOS, Android, Web
Requiere código para ejecutarse dentro de una zona de pruebas.

No disponible

Sí

Sí

Requiere SSL

Sí

Sí

Firebase

Firebase es una plataforma administrada por completo para compilar aplicaciones web, de iOS y de Android que proporcionan sincronización automática de datos, servicios de autenticación, mensajería, almacenamiento de datos, estadísticas y más. Comenzar con Firebase es una forma eficiente de compilar o crear prototipos de servicios de backend móviles.

Firebase

Recomendado para estas situaciones:

  • Limitar el almacenamiento de datos en el dispositivo mediante el almacenamiento de datos JSON en Firebase Realtime Database y de archivos en Firebase Storage
  • Enviar notificaciones con Firebase Cloud Messaging
  • Sincronización automática de datos en tiempo real en varios dispositivos
  • Manejar con facilidad el caso sin conexión
  • Autenticar usuarios a través de una variedad de proveedores de identidad
  • Desarrollo rápido de un servicio de backend

No se recomienda para estas situaciones:

  • Apps que necesitan un servicio de backend para modificar los datos sincronizados

Primeros pasos con Firebase

Cómo comenzar a usar Firebase

Muestras de código de Firebase

Aplicaciones de muestra que usan Firebase

Firebase y el entorno estándar de App Engine

El entorno estándar de App Engine es una plataforma de aplicaciones que supervisa, actualiza y escala el entorno de hosting; todo lo que necesitas hacer es escribir el código de tu servicio de backend móvil.

Si tu aplicación necesita procesar datos del usuario o necesita organizar eventos, ampliar Firebase con el entorno estándar de App Engine te da el beneficio de poder sincronizar de forma automática datos en tiempo real.

Firebase y App Engine

Recomendado para estas situaciones:

  • Apps de Firebase que necesitan un servicio de backend para modificar los datos sincronizados
  • Servicios de backend que se ejecutan de forma periódica para procesar o analizar datos de Firebase

No se recomienda para estas situaciones:

  • Servicios de backend que llaman a binarios nativos, escriben en el sistema de archivos o hacen otras llamadas al sistema
  • Conexiones persistentes a Firebase, ya que el entorno estándar de App Engine recupera las conexiones de socket después de dos minutos

Firebase y el entorno flexible de App Engine

Al igual que el entorno estándar de App Engine, el entorno flexible de App Engine es una plataforma de aplicaciones que supervisa, actualiza y escala el entorno de hosting; todo lo que necesitas hacer es escribir el código de tu servicio de backend móvil.

La diferencia es que el entorno flexible ejecuta el servicio de backend dentro de contenedores de Docker que puedes configurar. Esto significa que puedes llamar a binarios nativos, escribir en el sistema de archivos y hacer otras llamadas al sistema.

Si tu aplicación necesita procesar datos del usuario o necesita organizar eventos, ampliar Firebase con el entorno flexible de App Engine te da el beneficio de poder sincronizar de forma automática datos en tiempo real, sin la necesidad de ejecutar tu código dentro de la zona de pruebas de App Engine.

Firebase y el entorno flexible de App Engine

Recomendado para estas situaciones:

  • Aplicaciones de Firebase que necesitan un servicio de backend para modificar los datos sincronizados y, a su vez, ese servicio necesita una configuración de servicio personalizada o bibliotecas de terceros no compatibles con el entorno estándar de App Engine.
  • Servicios de backend que necesitan una conexión persistente a Firebase para recibir notificaciones de cambios en los datos. El entorno flexible puede mantener una conexión abierta durante 24 horas.

Compila una app para dispositivos móviles con Firebase y el entorno de App Engine Flexible

En este instructivo, se demuestra cómo escribir una app para dispositivos móviles con almacenamiento de datos de backend, sincronización en tiempo real y registro de eventos de usuarios con Firebase. Los servlets de Java que se ejecutan en el entorno flexible de App Engine escuchan a registros de usuarios nuevos almacenados en Firebase y los procesan.

App Engine y Endpoints

Los marcos de trabajo de Endpoints en el entorno estándar de App Engine generan API, bibliotecas cliente y documentación de descubrimiento para una aplicación de App Engine. Usar Endpoints significa que no tienes que escribir wrappers para manejar la comunicación con App Engine. Con las bibliotecas cliente que genera Endpoints, puedes hacer llamadas directas a la API desde tu app para dispositivos móviles.

Usar Endpoints con App Engine brinda una plataforma de aplicaciones que supervisa, actualiza y escala el entorno de hosting.

App Engine y Endpoints

Recomendado para estas situaciones:

  • Generar de forma automática de bibliotecas cliente que las aplicaciones pueden usar para llamar directamente al servicio de backend
  • Mover archivos a Cloud Storage para reducir el almacenamiento en el dispositivo
  • Enviar notificaciones mediante una llamada a Cloud Messaging

No se recomienda para estas situaciones:

  • Apps que requieren sincronización automática de datos en tiempo real en varios dispositivos
  • Servicios de backend que requieren un servidor personalizado o bibliotecas de terceros
  • Sistemas que no admiten SSL, porque Endpoints lo requiere

Hello Endpoints

Un conjunto de instructivos de introducción que muestran cómo compilar la app de muestra Hello Endpoints que envía mensajes simples. El servicio de backend se implementa en App Engine y se expone en la app para dispositivos móviles con Endpoints.

Tres en línea

Una app de muestra que demuestra cómo llamar a un servicio de backend que se ejecuta en App Engine para crear un juego simple. El servicio de backend de tres en línea se implementa en Java.

Compute Engine y REST o gRPC

Compute Engine te permite crear y ejecutar máquinas virtuales en la infraestructura de Google. Tienes derechos de administrador en el servidor y control total de su configuración. Esto también significa que eres responsable de las actualizaciones y el mantenimiento.

Compute Engine y REST

Hay dos protocolos principales que se usan para conectarse a instancias de Compute Engine: REST y gRPC. REST es el protocolo más adoptado. gRPC es más nuevo y ofrece beneficios en cuanto a transmisiones más eficientes, las cuales pueden minimizar el agotamiento de la batería y mejorar la seguridad. Para obtener más información sobre REST y gRPC, consulta Conecta tu aplicación a tu servicio de backend personalizado.

Recomendado para estas situaciones:

  • Adaptar un servicio de backend existente que se ejecuta en un servidor local o una máquina virtual
  • Servicios de backend que requieren un servidor personalizado o bibliotecas de terceros

No se recomienda para estas situaciones:

  • Apps que requieren sincronización automática de datos en tiempo real en varios dispositivos
  • Mantenimiento automático: Debes mantener y actualizar el servidor tú mismo
  • Ajuste de escala automático: Debes configurar y administrar un escalador automático de forma manual

Usa Compute Engine y REST en una app para dispositivos móviles

Una muestra de extremo a extremo que usa REST con el fin de conectar una aplicación para dispositivos móviles a un servicio de backend alojado en Compute Engine. La aplicación de muestra, Stickynotes, envía texto al servicio, el cual muestra una imagen generada como respuesta.

La muestra de Stickynotes está disponible en las versiones de REST y gRPC, así que puedes comparar los dos protocolos.

iOS

Usa Compute Engine y gRPC en una app para dispositivos móviles

Una muestra de extremo a extremo que usa gRPC y búferes de protocolo con el fin de conectar una aplicación para dispositivos móviles a un servicio de backend alojado en Compute Engine. La aplicación de muestra, Stickynotes, envía texto al servicio, el cual muestra una imagen generada como respuesta.

La muestra de Stickynotes está disponible en las versiones de REST y gRPC, así que puedes comparar los dos protocolos.

iOS

Compila tu servicio de backend móvil

Google proporciona una variedad de herramientas y servicios que puedes usar para compilar servicios de backend que se integran a los servicios de GCP.

Android Studio

Android Studio es el IDE oficial del desarrollo de apps para Android, basado en IntelliJ IDEA, y ofrece funciones adicionales, como herramientas de Lint, un sistema de compilación basado en Gradle y plantillas de código.

Además, Android Studio cuenta con compatibilidad integrada para incorporar Firebase y servicios de GCP a tu app. Para obtener más información, consulta Cloud Tools for Android Studio.

API de Google para iOS

Google distribuye varios SDK y API específicos de iOS con CocoaPods. CocoaPods es un administrador de dependencias de código abierto para proyectos de Cocoa en Swift y Objective-C que puedes usar con el fin de instalar o actualizar SDK nuevos cuando trabajas con Xcode.

SDK de Cloud

El SDK de Cloud contiene herramientas y bibliotecas que puedes usar para crear y administrar recursos en GCP.

Cloud Source Repositories

Cloud Source Repositories son repositorios de Git alojados en GCP con todas las características.

Cada proyecto que creas en Google Cloud Platform Console tiene un Cloud Source Repositories asociado. Puedes usar este repositorio para el desarrollo colaborativo de cualquier aplicación o servicio, incluso de aquellos que se ejecutan en App Engine y Compute Engine.

Si usas Stackdriver Debugger, puedes usar Cloud Source Repositories y herramientas relacionadas en GCP Console para ver información de depuración junto con tu código durante el entorno de ejecución de la app.

Stackdriver Debugger

Puedes usar Debugger para inspeccionar el estado de una app de Java, en cualquier ubicación de código, sin detenerla y sin disminuir su velocidad. Puedes usar Debugger en las instancias de producción y etapa de pruebas de tu app.

Puedes usar Debugger con estas apps:

Conecta tu aplicación al servicio de backend para dispositivos móviles

Después de compilar tu servicio de backend necesitas establecer comunicación desde las instancias de tu app para dispositivos móviles y hacia ellas.

Conecta tu aplicación a Firebase

Si tu servicio de backend usa Firebase, el proceso de conectar tu app para dispositivos móviles a Firebase es el siguiente:

  • Crea una cuenta de Firebase.
  • Obtén una URL de aplicación de Firebase.
  • Importa las bibliotecas cliente a tu app. Estas están disponibles para iOS, Android, apps web y REST.
  • Llama a las bibliotecas desde tu aplicación y haz referencia a su URL.

Para ver guías sobre cómo hacer esto, consulta las guías de introducción en la documentación de Firebase.

Conecta tu app al servicio de backend personalizado

Hay varios protocolos con los que puedes llamar a un servicio de backend desde tu app para dispositivos móviles. Los protocolos que más se usan con GCP son REST, Endpoints y gRPC.

REST

REST es una arquitectura de apps en red que usa solicitudes HTTP para publicar, leer y borrar datos. Puedes compilar API de REST en instancias de Compute Engine, del entorno estándar de App Engine y del entorno flexible de App Engine a las que tu app puede llamar para acceder al servicio de backend que compiles.

Las herramientas comunes para compilar servicios RESTful en GCP son estas:

Para ver código de muestra que demuestra cómo usar REST en un servicio de backend, consulta Compute Engine y REST o gRPC.

También puedes usar REST para comunicarte con Firebase. Para obtener más información, consulta API de REST de Firebase Database en la documentación de Firebase.

Endpoints

Endpoints genera API y bibliotecas cliente para una app de App Engine. Usar Endpoints significa que no tienes que escribir wrappers para manejar la comunicación con App Engine. Con las bibliotecas cliente que genera Endpoints, puedes hacer llamadas directas a la API desde tu app para dispositivos móviles.

Endpoints requiere SSL y solo funciona con una app que se ejecute en App Engine.

Para ver código de muestra que demuestra cómo usar Endpoints en un servicio de backend, consulta App Engine y Endpoints.

gRPC

gRPC es un marco de trabajo que le permite a una app para dispositivos móviles llamar métodos en un servicio de backend de forma directa como si fuera un objeto local.

gRPC usa el estándar HTTP/2, el cual ingresa la transmisión bidireccional, el control de flujo, la compresión del encabezado y la habilidad de multiplexar solicitudes en una sola conexión de TCP. Puedes usar gRPC y hacer que tu app para dispositivos móviles sea más eficiente en el ancho de banda y reducir la latencia entre tu aplicación y el servicio de backend que se ejecuta en GCP.

Puedes escribir clientes y servidores de gRPC en cualquier lenguaje compatible con gRPC. Por ejemplo, podrías crear un servidor de gRPC en Java con clientes en Go, Python o Ruby.

Para ver código de muestra que demuestra cómo usar gRPC en un servicio de backend, consulta Compute Engine y REST o gRPC.

Envía notificaciones a tu app

Las notificaciones son una función importante de la mayoría de las apps para dispositivos móviles. Puedes usarlas para comunicarte con los usuarios, sin importar si tu app está abierta en sus dispositivos.

Firebase Cloud Messaging

Firebase Cloud Messaging (FCM) es una solución de mensajería multiplataforma que puede usarse para enviar mensajes y notificaciones de forma confiable a dispositivos cliente que ejecutan tu app.

Con FCM, tienes las siguientes funciones:

  • Distribuir mensajes a tu app cliente de una de estas tres formas: a dispositivos individuales, a grupos de dispositivos o a dispositivos suscritos a temas.
  • Enviar notificaciones de hasta 2 kb, cargas útiles de datos de hasta 4 kb y enviar mensajes con notificaciones y cargas útiles de datos.
  • Enviar mensajes de confirmación, de chat y de otros tipos desde los dispositivos a tu servidor a través del canal de conexión confiable de FCM que consume poca batería.

Si quieres comenzar a usar Cloud Messaging para enviar notificaciones, consulta:

Firebase Notifications

Compilado con Firebase Cloud Messaging y el SDK de FCM, Firebase Notifications proporciona una consola gráfica que puedes usar para enviar mensajes a dispositivos cliente que ejecutan tu app.

Prueba tu servicio de backend para dispositivos móviles

Uno de los desafíos de crear una app para dispositivos móviles es probarla en todas las configuraciones posibles de un dispositivo. GCP proporciona las herramientas con las que puedes probar tu app para dispositivos móviles en dispositivos físicos y virtuales, así como herramientas que permiten probar la seguridad y el rendimiento de tu servicio de backend.

También puedes configurar que tu app para dispositivos móviles trabaje con un servicio de backend de pruebas y así aislar tu entorno de producción de cualquier efecto secundario que produzcan las pruebas. Para obtener más información, consulta Compatibilidad con entornos diferentes en la documentación de Firebase.

Cloud Test Lab

Cloud Test Lab ofrece una infraestructura basada en la nube para probar apps de Android. Con una sola operación, puedes comenzar a probar tu app en una amplia variedad de dispositivos y configuraciones. Los resultados de las pruebas (que incluyen registros, videos y capturas de pantalla) aparecen en tu proyecto en GCP Console. Incluso si todavía no escribiste un código de prueba para la app, Test Lab puede analizarla de forma automática en busca de fallas.

Cloud Test Lab admite dos tipos de dispositivos. Cada uno tiene características que lo hacen más apropiado para una fase particular del desarrollo de apps. Una variedad de los modelos está disponible para cada tipo de dispositivo.

  • Los dispositivos virtuales son simulaciones virtuales de alta fidelidad de dispositivos Android específicos. Estos dispositivos tienen la disponibilidad de programación más amplia y son los más apropiados para el desarrollo diario o las pruebas continuas.

  • Los dispositivos físicos son dispositivos Android físicos y reales, instalados y en ejecución en un centro de datos de Google. Las pruebas de dispositivos físicos son las más apropiadas para las pruebas previas al lanzamiento, ya que te ayudan a detectar los problemas que puede que no ocurran cuando se prueba tu app en dispositivos virtuales.

Cloud Security Scanner

Cloud Security Scanner identifica vulnerabilidades en la seguridad de tus aplicaciones web de App Engine. Rastrea tu aplicación, para lo cual sigue todos los vínculos dentro del alcance de tus URL de inicio y trata de ejecutar la mayor cantidad posible de controladores de eventos y entradas del usuario.

En este momento, Cloud Security Scanner solo admite instancias del entorno estándar de App Engine. Todavía no está habilitado para el entorno flexible de App Engine, Compute Engine o algún otro recurso de GCP.

Stackdriver Trace

Trace recopila datos de latencia de aplicaciones de App Engine y muestra los datos casi en tiempo real en GCP Console.

Con Trace, puedes averiguar cuánto tiempo le lleva a tu aplicación manejar solicitudes entrantes de otros usuarios o aplicaciones y cuánto tiempo le lleva completar operaciones (en especial, llamadas de RPC) realizadas cuando se manejan las solicitudes.

En este momento, Trace recopila datos de latencia de extremo a extremo en solicitudes a URI de App Engine y datos adicionales para llamadas de RPC de ida y vuelta a servicios de App Engine como Cloud Datastore, URL Fetch y Memcache.

Supervisa tu servicio de backend para dispositivos móviles

Lanzar un servicio de backend es solo el comienzo: necesitas supervisarlo para asegurarte de que funciona de la forma prevista.

La supervisión del estado la hace App Engine de forma automática para los entornos estándar y flexible, los cuales generan nuevas instancias cuando es necesario. También puedes configurar el ajuste de escala automático en Compute Engine para reemplazar las instancias que no responden.

GCP también proporciona herramientas para recopilar y analizar registros y un panel de supervisión que puedes configurar con el fin de enviar alertas cuando tu aplicación funciona fuera de los límites especificados.

Stackdriver Logging

Logging recopila y almacena registros de aplicaciones y servicios en GCP. La lista de registros te muestra los registros a los que puedes acceder. Después de recopilar los registros, puedes hacer lo siguiente:

Stackdriver Monitoring

Monitoring proporciona paneles y alertas para tus aplicaciones de GCP.

Puedes configurar Monitoring con Monitoring Console. Usa la API de Stackdriver Monitoring para recuperar datos de supervisión y crear métricas personalizadas.

Con Monitoring, puedes revisar métricas de rendimiento para servicios de GCP, máquinas virtuales y servidores de código abierto comunes como MongoDB, Apache, Nginx, Elasticsearch, y más.

Pasos siguientes

  • Prueba otras características de Google Cloud Platform tú mismo. Revisa nuestros instructivos.
¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…