¿Cómo construir una infraestructura de aplicaciones móviles escalable?
¿Está buscando escalar una infraestructura de aplicaciones móviles? Aquí hay un tutorial que detalla lecciones de la vida real sobre cómo escalar la infraestructura de aplicaciones móviles.
Contents
- 1 ¿Qué es una aplicación móvil?
- 2 ¿Cuál es la definición de una arquitectura de aplicación escalable?
- 3 ¿Cómo es la infraestructura de una aplicación móvil?
- 3.1 Plataformas de publicación de aplicaciones
- 3.2 SDKs – Software Development Kits
- 3.3 API (Application Programming Interfaces): Interfaces de Programación de Aplicaciones
- 3.4 CDN (Content Delivery Network): Red de Entrega de Contenido
- 3.5 Almacenamiento de objetos
- 3.6 Balanceadores de carga
- 3.7 Servidores de aplicaciones
- 3.8 Servidores de base de datos
- 4 ¿Cómo escalar una aplicación móvil?
- 5 Conclusión
- 6 Preguntas frecuentes
- 7 ¿Qué es una aplicación móvil?
- 8 ¿Cómo es la infraestructura de una aplicación móvil?
- 9 ¿Cómo crear una infraestructura de aplicaciones móviles escalable?
¿Qué es una aplicación móvil?
Una aplicación móvil es una aplicación que se ejecuta en un dispositivo móvil como smartphones, tablets y relojes. Hay varios tipos de aplicaciones móviles, incluidas aplicaciones nativas, aplicaciones híbridas y aplicaciones web.
- Las aplicaciones nativas funcionan para un sistema operativo específico como Android o iOS;
- Las aplicaciones web se codifican utilizando tecnologías como HTML5 y CSS;
- Las aplicaciones híbridas funcionan como aplicaciones web pero están enmarcadas dentro de un contenedor nativo.
Siga leyendo para obtener más información sobre una arquitectura de infraestructura de aplicaciones móviles.
¿Cuál es la definición de una arquitectura de aplicación escalable?
Crear aplicaciones móviles a escala no es fácil y muchas variables son esenciales al definir una arquitectura escalable.
Una aplicación móvil grande y escalable probablemente admita miles o incluso millones de usos y debe ser eficaz, confiable y segura.
Significa que la mejor arquitectura de su clase no tendrá tiempos de inactividad, bloqueos, velocidades de carga rápidas y seguridad de última generación.
Este artículo considerará estos factores para proponer una infraestructura backend escalable para aplicaciones móviles.
¿Cómo es la infraestructura de una aplicación móvil?
Varios elementos componen una arquitectura de aplicación móvil y, a continuación, se encuentra la infraestructura necesaria para las aplicaciones móviles.
- Plataformas de publicación de aplicaciones
- SDK (Software Development Kits): Kits de Desarrollo de Software
- API
- CDN (Content Delivery Network): Red de Entrega de Contenido
- Almacenamiento de objetos
- Balanceadores de carga
- Servidores de aplicaciones
- Servidores de base de datos
Siga leyendo para obtener más información sobre una arquitectura de aplicación móvil escalable y cada una de las capas descritas anteriormente.
Plataformas de publicación de aplicaciones
Es posible construir una aplicación móvil usando diferentes tecnologías. Desde lenguajes de desarrollo nativos de iOS y Android como Swift y Kotlin/Java hasta marcos de desarrollo multiplataforma como React Native o Flutter.
Las tecnologías descritas anteriormente crearán la interfaz de una aplicación móvil o la interfaz del lado del cliente. Las tiendas de aplicaciones como Google Play y App Store proporcionan el ecosistema para distribuir aplicaciones móviles a los usuarios finales.
Los desarrolladores deben enviar sus aplicaciones móviles a estas plataformas de publicación, esperar su revisión y solo después de completar este paso podrán tener la aplicación en funcionamiento.
Tanto Google Play como App Store tienen diferentes pautas de publicación y es esencial leerlas primero para evitar problemas que podrían impedir la publicación de una aplicación.
Para evitar pasar por el escrutinio de las tiendas de aplicaciones, una alternativa es desarrollar una PWA (Progressive Web Applications): Aplicaciones Web Progresivas utilizando tecnologías como React, Angular e Ionic.
SDKs – Software Development Kits
Los kits de desarrollo de software son un paso esencial en la creación de una infraestructura de aplicaciones móviles escalable. Un SDK consta de un paquete instalable con herramientas como API, bibliotecas, depurador, documentación, etc.
Es probable que un SDK de backend móvil incluya elementos que unen la interfaz entre el backend y el frontend.
Un ejemplo fácil de entender es enviar una notificación push desde el backend al frontend. Un SDK facilitará esta acción y acelerará la integración de los elementos funcionales.
API (Application Programming Interfaces): Interfaces de Programación de Aplicaciones
aplicaciones móviles. Las API son interfaces de software que conectan el frontend (lado del cliente) con el backend de una aplicación móvil (lado del servidor).
Las ventajas de usar API en una implementación de backend de aplicación móvil incluyen la automatización de tareas, la personalización de funciones, la entrega flexible de información y la distribución de nuevos servicios.
CDN (Content Delivery Network): Red de Entrega de Contenido
Una CDN es un grupo de servidores distribuidos geográficamente que trabajan juntos para proporcionar una entrega de contenido rápida. Estos servidores están ubicados más cerca de los usuarios finales y permitirán una transferencia más rápida de activos para cargar contenido de Internet (imágenes, videos, etc.).
Las ventajas adicionales de la implementación de CDN incluyen la reducción del tiempo de comunicación entre el lado del cliente de una aplicación móvil y el lado del servidor a través de un enrutamiento óptimo, la reducción de los costos de ancho de banda y la seguridad (ataques DDoS, certificados, etc.)
Almacenamiento de objetos
Este elemento de la infraestructura de la aplicación móvil se conectará a la CDN y abarcará el almacenamiento de archivos, el almacenamiento de videos, el almacenamiento de imágenes, etc. La CDN almacenará en caché el contenido y acelerará el tiempo de entrega a la ubicación más cercana al usuario final.
Balanceadores de carga
La siguiente capa en la creación de una infraestructura de aplicaciones móviles son los balanceadores de carga. En la computación en la nube, los balanceadores de carga distribuyen las tareas entre un conjunto de servidores para que su procesamiento general sea más eficiente.
La CDN se conectará a los balanceadores de carga, y el software del balanceador de carga distribuirá las solicitudes del lado del cliente de manera eficiente, garantizará una alta disponibilidad y escalará hacia arriba o hacia abajo según la demanda.
Servidores de aplicaciones
El siguiente paso en la construcción de una arquitectura de aplicaciones móviles son los servidores de aplicaciones. Esta parte de la infraestructura se encargará de la lógica comercial y permanecerá en el medio entre los servidores de la base de datos y la CDN.
Servidores de base de datos
El último paso para configurar una infraestructura de aplicaciones móviles es crear los servidores de bases de datos. Un clúster de base de datos comprende instancias de alta potencia que almacenan y manipulan los datos almacenados.
Una infraestructura de base de datos puede ser redundante o no. Las arquitecturas redundantes proporcionarán al menos dos instancias de sincronización de datos en tiempo real.
¿Cómo escalar una aplicación móvil?
Existen principalmente dos formas de crear una infraestructura de aplicaciones escalable. La primera es usar servicios administrados como un backend móvil como servicio, y la segunda forma es hacer el backend desde cero usando un proveedor de infraestructura como servicio.
El uso de un servicio BaaS incluye una infraestructura escalable y lista para usar, bloques de construcción listos para usar para acelerar el desarrollo de backend y SDK para optimizar la integración del lado del servidor y del lado del cliente. En general, el escalado de aplicaciones es más fácil de lograr usando una plataforma de backend.
El desarrollo de un backend desde cero proporcionará a los desarrolladores más flexibilidad y control sobre la mayoría de los elementos de la infraestructura. Por otro lado, deberán administrar el backend y escalar hacia arriba y hacia abajo la infraestructura según la carga de trabajo.
Exploremos con más detalle cada una de estas dos opciones.
BaaS – Backend as a Service
Escalar el backend de una aplicación móvil usando un BaaS es extremadamente fácil y todos los elementos están en su lugar para lograr este objetivo. El negocio principal de una plataforma BaaS es ofrecer una arquitectura escalable, segura y sin complicaciones a sus clientes.
Algunos proveedores de backend como Back4App permitirán a los usuarios crear un backend en solo unos minutos. El primer paso es registrarse y nombrar la primera aplicación.
El siguiente paso está completamente automatizado y la plataforma entregará un modelo de datos, servidores de aplicaciones, políticas de escalado, copias de seguridad y seguridad en solo unos minutos.
La siguiente pantalla proporciona una GUI: interfaz gráfica de usuario que abarca el modelo de datos, las funciones sin servidor, las API y la configuración de la infraestructura.
El backend está listo para usar, tiene escalabilidad integrada y todo lo que el usuario tiene que hacer es conectar el frontend de la aplicación al backend a través de SDK, cargar datos y codificar la lógica comercial.
Back4App ofrece muchos SDK listos para usar, incluidos React Native, Flutter, Android, iOS, JavaScript, Xamarin, etc.
Para conocer con más detalles cómo crear su primera aplicación con Back4App, consulte el tutorial Cree su primera aplicación con Back4App.
Ejemplos de la vida real de cómo escalar una infraestructura de aplicaciones móviles
A continuación, se muestran dos ejemplos prácticos de las ventajas de usar un Backend como Servicio para escalar una infraestructura de aplicaciones móviles.
- Broadcast
El primer ejemplo que utilizaremos es la startup noruega Broadcast Oslo. La compañía es una guía gratuita para festivales, conciertos y clubes en Oslo.
Broadcastoslo es una aplicación primera para móviles y distribuye su aplicación tanto en Google Play como en App Store. Los usuarios descargan y tienen acceso a todos los eventos futuros que sucederán en Oslo en los próximos meses.
La aplicación también permite a los usuarios acceder a los horarios de los festivales en tiempo real, y ahí es donde comienzan los desafíos de escalabilidad de la infraestructura.
El Musikkfest Oslo 2022 ocurrió el 4 de junio y contó con aproximadamente 20 mil participantes. Por lo tanto, imagine cuán escalable debe ser la infraestructura para admitir que miles de usuarios accedan y recuperen datos de una aplicación al mismo tiempo.
El equipo técnico de Broadcast decidió usar Back4App para resolver este problema, ¡y los resultados fueron excelentes! Esto es lo que dijo Tim Harris, CEO de Broadcast, sobre la experiencia.
Gracias nuevamente por toda su ayuda, ha sido un día muy exitoso para nosotros, ¡y tan importante que no tuvimos ningún problema con las personas que accedieron a la aplicación!
Tim Harris, director ejecutivo de Broadcast
- Fight List
Fight List tiene más de 10 millones de descargas y es un juego muy exitoso creado por Two4Tea. Es un juego de preguntas y respuestas, distribuido en más de siete idiomas, y alcanzó los primeros puestos en los rankings de Estados Unidos y Francia.
El juego tiene desafíos de escalado sofisticados y requiere que miles de usuarios accedan a la aplicación simultáneamente.
Two4Tea eligió Back4app para resolver el desafío de la infraestructura y procesó más de 10.000 solicitudes por segundo en el pico de uso. Esto es lo que dijo Nicolas Boulch, CEO de Two4Tea, sobre la experiencia.
En ese momento nos dimos cuenta de que Back4App era la elección correcta porque podían analizar nuestra aplicación específicamente y crear una solución personalizada para nosotros.
Nicolás Boulch, director ejecutivo de Two4Tea
Cree un backend personalizado en cualquier proveedor de nube importante
La segunda opción para construir una infraestructura de aplicaciones móviles escalable es construir el backend utilizando proveedores de la nube como AWS, Google Cloud, Azure, Digital Ocean, etc.
Las ventajas de optar por esta configuración se basan principalmente en la flexibilidad que proporcionará, más control sobre la infraestructura de backend y visibilidad sobre cada paso del proceso.
Las desventajas se basan en los esfuerzos de ingeniería para construir y mantener la infraestructura de backend, desarrollar código de backend estándar y monitorear los sistemas las 24 horas del día.
AWS es el proveedor de nube más utilizado a nivel mundial. Usemos este proveedor para ilustrar los pasos para crear un backend de aplicación móvil escalable.
El primer paso es crear y activar una cuenta con AWS. Siga el tutorial Cómo creo y activo una nueva cuenta de AWS para obtener más detalles sobre cómo proceder.
El siguiente paso es definir los productos que admitirán la implementación del backend. Usaremos lo siguiente en este ejemplo:
- Instancias EC2
- EBS (Elastic Block Storage): Almacenamiento de Bloques Elásticos
- S3: Sistema de almacenamiento sencillo
- Balanceadores de carga
- CDN: Frente a la nube
Exploremos con más detalle cada paso.
Creación de instancias EC2
Una infraestructura backend escalable requerirá máquinas virtuales de aplicaciones y bases de datos. El primer paso es definir el modelo de instancia que se usará en el clúster.
AWS ofrece varios tipos de instancias que están optimizados para muchos casos de uso. La lista abarca instancias de propósito general, optimizadas para computación, optimizadas para memoria, computación acelerada y optimizadas para almacenamiento.
Para este ejemplo, utilizaremos una instancia de propósito general. Comencemos con una instancia t4g.medium que proporciona una arquitectura basada en Arm; es excelente para cargas de trabajo ampliables y ofrece un excelente precio por hora. A continuación se detallan los pasos iniciales a seguir
- Iniciar sesión en AWS
- Ir a EC2
- Instancias
- Lanzar una nueva instancia
Este paso debe definir el sistema operativo, el tipo y el tamaño de la instancia, la configuración de la red, agregar almacenamiento en bloque a la instancia, la configuración de seguridad, etc.
Para obtener más información sobre cómo configurar una instancia EC2, siga el tutorial Crear y lanzar una instancia EC2.
Tan pronto como el clúster de servidores esté listo, el siguiente paso es configurar las políticas de escalado en función de la carga de trabajo.
Hay dos formas de escalar un clúster de servidores: escalado horizontal y escalado vertical.
- Escalado horizontal: agregar más instancias al clúster para hacer frente a nuevas cargas de trabajo.
- Escalado vertical: agregar más recursos (CPU/RAM) a una instancia para cumplir con la nueva carga de trabajo, es decir, aumentar el tamaño de la instancia.
En términos generales, los servidores de aplicaciones utilizarán el escalado horizontal como mecanismo de escalado preferido. Un clúster de base de datos utilizará el escalado vertical como método de escalado preferido.
El escalado horizontal de un clúster de aplicaciones es, en general, un proceso simple. La forma de hacerlo usando AWS es accediendo al menú de escalado automático y lanzando una nueva configuración.
El escalado vertical de la base de datos es un proceso más complejo porque es imposible cerrar la instancia y cambiar el tamaño de la instancia. De esta forma, el clúster se enfrentaría a un tiempo de inactividad.
La forma correcta es crear una nueva instancia más grande, sincronizar los datos y transferir el procesamiento de la carga de trabajo a la instancia más grande. Para hacer eso no se necesita mucha ciencia, pero automatizar este proceso lleva mucho tiempo.
Si la carga de trabajo de la aplicación crece tanto que el escalado vertical de la base de datos ya no es posible, distribuir la carga de trabajo en varias instancias será el único camino a seguir. Es una implementación complicada y debe usarse solo como última opción.
Para conocer los pasos detallados sobre cómo agregar el escalado automático a EC2, siga el tutorial de Introducción al escalado automático de Amazon EC2.
EBS – Elastic Block Storage
Cada instancia requerirá un volumen de EBS adjunto. La excepción son las instancias efímeras con el almacenamiento integrado en el hardware.
Es un paso sencillo que se realiza durante la configuración inicial de la máquina virtual. El desafío es determinar el tamaño correcto de EBS para evitar costos innecesarios y una capacidad adecuada para almacenar datos.
Elegir el tipo de EBS correcto también es esencial. Hay muchas opciones de EBS, incluidos SSD y discos magnéticos. Seleccionar el tipo de EBS adecuado es vital para garantizar un buen equilibrio entre rendimiento y costes.
Para obtener más información sobre cómo adjuntar un volumen de EBS a una máquina virtual, consulte Adjuntar un volumen de Amazon EBS a una instancia.
S3 – Simple Storage Service
Una infraestructura de backend robusta y escalable requerirá almacenamiento de objetos. Hacer eso con AWS es una tarea fácil y S3 es el producto ideal para lograr este objetivo.
El primer paso para crear un depósito S3 es definir la región para almacenar los archivos. En términos generales, deberá elegir la misma región que la instancia EC2.
Como parte del proceso de creación, es necesario definir la propiedad del objeto, las reglas de acceso público, el control de versiones del depósito y los requisitos de cifrado.
Los depósitos de AWS S3 son escalables de forma predeterminada y los usuarios solo pagarán por los recursos utilizados. Para obtener información adicional sobre cómo crear un depósito S3, siga el tutorial Creación de un depósito S3.
Balanceadores de carga
Una infraestructura escalable requiere una implementación correcta del balanceador de carga. AWS ofrece varios tipos de balanceadores de carga como parte de sus productos.
Los balanceadores de carga de la aplicación enrutarán las solicitudes a las instancias EC2 correctas y monitorearán el estado de estas instancias.
Adjuntar el balanceador de carga a las instancias no es un proceso complejo y cubre los siguientes pasos:
- Vaya al panel de EC2
- Balanceo de carga
- Cree el balanceador de carga
- Seleccione el tipo de balanceador de carga
- Configure el balanceador de carga con respecto al tipo de dirección IP, VPC, zonas de disponibilidad y servicios adicionales.
Para obtener información detallada sobre cómo configurar un balanceador de carga, consulte el tutorial Introducción a los balanceadores de carga de aplicaciones.
Cloudfront CDN
Cloudfront es una red de entrega de contenido integrada disponible en AWS que admite alrededor de 300 ubicaciones de borde en todo el mundo. El producto acelera la distribución de contenido estático y dinámico, aumenta la seguridad y es fácil de integrar con otros productos de AWS.
Como parte de una arquitectura backend escalable, Cloudfront se conectará con los cubos S3 y con los balanceadores de carga.
Los usuarios pueden conectar Cloudfront a los balanceadores de carga a través del tablero de EC2, creando un balanceador de carga, apuntando a grupos y configurando una distribución de Cloudfront. Hay más detalles disponibles en Configuración de una distribución de Cloudfront para EC2.
Conectar Cloudfront a un depósito S3 también es sencillo. La conexión se realiza a través del panel de control de Cloudfront, creando una distribución de Cloudfront y agregando el dominio de origen. Puede leer la publicación de blog Creación de distribución de AWS CloudFront con S3 Origin para obtener más información.
Conclusión
Una aplicación móvil funciona en dispositivos como teléfonos móviles, tablets y relojes. Las implementaciones más comunes son aplicaciones nativas, híbridas y web.
Una infraestructura de aplicaciones móviles escalable consiste en un sistema diseñado para no tener tiempos de inactividad ni bloqueos, y ser súper rápido y seguro.
Los elementos esenciales de una infraestructura escalable incluyen plataformas de publicación de aplicaciones, SDK, API, CDN, balanceadores de carga y servidores de aplicaciones y bases de datos.
Las dos formas más comunes de lograr la mejor infraestructura de aplicaciones móviles escalables de su clase son usar soluciones listas para usar, como un backend como servicio, o configurar un backend personalizado en servicios en la nube como AWS.
Las soluciones de backend como servicio proporcionarán una implementación más rápida, funciones de escalado listas para usar y protocolos de seguridad predefinidos. Por otro lado, un backend personalizado brindará un entorno y un control más flexibles.
Espero que haya disfrutado leyendo este artículo y que lo haya ayudado a comprender mejor los fundamentos de una buena arquitectura de aplicaciones móviles. Si no desea las molestias de crear, mantener y escalar un backend, comuníquese con Back4App para obtener más información sobre cómo podemos ayudarlo.
Preguntas frecuentes
¿Qué es una aplicación móvil?
Una aplicación móvil funciona en dispositivos como teléfonos móviles, tablets y relojes. Las implementaciones más comunes son aplicaciones nativas, híbridas y web.
¿Cómo es la infraestructura de una aplicación móvil?
Los elementos esenciales de una infraestructura escalable incluyen plataformas de publicación de aplicaciones, SDK, API, CDN, balanceadores de carga y servidores de aplicaciones y bases de datos.
¿Cómo crear una infraestructura de aplicaciones móviles escalable?
Las dos formas más comunes de lograr la mejor infraestructura de aplicaciones móviles escalables de su clase son usar soluciones listas para usar, como un backend como servicio, o configurar un backend personalizado en servicios en la nube como AWS.