Cómo escalar una aplicación móvil

“Escalar” generalmente significa que todo lo que esté trabajando puede manejar la presión de cientos, miles o incluso millones de clientes que solicitan la misma información de una vez.

Así que repasemos las palabras que mencionaste:
Una API es una forma en que un recurso de Internet (generalmente un sitio) puede comunicarse con otra cosa. Por ejemplo, Page en jeremylspencer.com es el sitio web que construí para alojar toda la información sobre mi sitio. Sin embargo, si miras a tu alrededor, esto no es muy fácil de leer para el cliente, solo parece una tontería. Eso es porque es una API en JSON (notación de objeto javascript). No está destinado a ser visto por el cliente, solo por otro sitio web o servicio. Ahora mi sitio frontal (Jeremy L Spencer) puede leer la información de mi API e imprime el sitio que ves.

En segundo lugar, no necesita una “nube”, una nube es una palabra de moda elegante últimamente, todo lo que realmente necesita es un servidor. Una nube es solo un servidor al que se le puede dar más RAM, CPU y espacio en el disco duro si lo necesita.

Ahora, la razón por la que necesita saber esto para crear una aplicación es porque es muy probable que la aplicación consuma una API. Construirá la interfaz de la aplicación (lo que ve el usuario) y luego extraerá todos los datos reales de su servidor a través de una API.

Por ejemplo, si quisieras crear una aplicación que tuviera información sobre vinos, no empacarías todas las aplicaciones con todos los datos sobre vinos, eso sería una locura. Esa aplicación terminaría ocupando mucho espacio. Entonces, en su lugar, lo empaqueta con la interfaz y una forma de obtener su API, desde un servidor que posee, con la API que diseñó, e imprimirla en un formato legible para humanos.

Si tiene alguna otra pregunta, deje un comentario.

Imagina que estás abriendo un negocio de restaurantes. Se convierte en un éxito instantáneo. ahora está inundado de clientes a los que no puede atender. ¿Qué hará?

Del mismo modo, en el diseño de software, si crea una aplicación que se convierte en un éxito de la noche a la mañana, necesitará más y más CPU, red, RAM para satisfacer las necesidades de las personas. Sin importar cuán grande sea el servidor que tome, su limitación física es la cantidad de solicitudes que puede atender. Cloud promete una solución al permitirle escalar fácilmente al asignar más servidores / ancho de banda / ram. Esto es fundamental para construir cualquier aplicación moderna que espere manejar una cantidad multiplicada de carga con una inversión inicial baja.

Ahora imagine que tiene más espacio en su restaurante al agregar agregando un piso más al edificio (nube 🙂). Luego encontrará que la base de clientes ya no será única. A medida que más y más clientes entran, ves que muchos de ellos piden comida china, india del norte y mexicana mientras que solo sirven comida del sur de la India. ¿Qué harás? Imprimirás un menú para que tus clientes sepan al instante lo que quieres.

El menú es su API para el mundo exterior. Del mismo modo, para buenas aplicaciones, que se adaptan a una gran cantidad de dispositivos (Windows, Android, iOS, escritorio, Linux, Mac), primero creará una capa API y luego tomará cada plataforma individualmente para crear aplicaciones personalizadas para cada una.

Sin embargo, la nube y la API son solo el comienzo de crear una aplicación escalable. Necesitará saber muchas más cosas tecnológicas como el ajuste de db, el almacenamiento en caché, la codificación optimizada, la optimización de la red, etc. para crear realmente una aplicación que pueda llegar al nivel de 10 millones de usuarios.

Estamos en la misma página con mi aplicación de desarrollo.

Esto podría ayudarlo a aclarar las cosas del CTO de Evernote:
http://venturebeat.com/2013/06/1

Lección 3: si realmente quieres escalar, crea primero tu API

La mayoría de las compañías web hoy en día comienzan sus operaciones construyendo su interfaz de aplicación primero y luego agregando una API más adelante, pero Engberg dice que a menudo ese es el camino equivocado.

¡Buena suerte!

Otros han mencionado la escalabilidad en términos de limitaciones técnicas y requisitos.

Tiendo a pensar en la escalabilidad como un plan bien construido. Comprenda qué recursos requiere su empresa cuando tiene 100 usuarios, 10,000 usuarios, 1,000,000 de usuarios. Sepa cuáles serán sus costos. Sepa qué tipo de sistemas necesitará para implementar su negocio y proteger su flujo de ingresos.

Comience pequeño, pero piense en grande!

Me gusta la respuesta de Jeremy Spencer. Agregaré que la implementación en la nube hace que sea más fácil (como señala Vivek Anand) escalar en algunos aspectos (por ejemplo, arrojarle más hardware). Sin embargo, la escalabilidad es más que solo hardware. Se trata de descubrir dónde está el cuello de botella y luego resolverlo. Si su aplicación está diseñada para ser escalable, puede escalar infinitamente siempre y cuando continúe lanzándole hardware. Sin embargo, a menudo, lo que impide que la aplicación pueda utilizar el hardware y la escala tiene que ver con la arquitectura y el diseño del software. Por ejemplo, si es de un solo subproceso, solo usa una CPU a la vez, sin importar cuántas CPU le arroje.

Antes de confundirse aún más, aquí hay otro aspecto a considerar. Si la aplicación solo se ejecutara en un dispositivo móvil (por ejemplo, un juego que no tiene mucha necesidad de obtener nada de una fuente externa que usa Internet) o requeriría datos constantes de una fuente externa a través de Internet (por ejemplo, un juego como scrabble donde haces un movimiento y otro oponente ubicado en algún lugar de Internet hace el siguiente movimiento). Para el segundo caso, debe preocuparse por la escalabilidad, para el primer caso, no mucho. Lo que debe tener en cuenta es que lograr escalabilidad es un negocio costoso, pero si su aplicación resulta muy popular, probablemente obtendrá los recursos para pagar a las personas que tienen experiencia en esta área.

La API proporciona puntos finales o URL desde donde su aplicación puede obtener datos. Cuando desarrolle y diseñe la aplicación, tenga en cuenta que están acoplados de forma flexible para que pueda tener la flexibilidad de realizar cambios en la aplicación fácilmente y con dependencias mínimas. Y los servicios en la nube como los servicios web de Amazon, el motor de cómputo de Google, etc., le facilitarán la vida al escalar su sistema hacia arriba, hacia abajo o hacia el lado

More Interesting

¿Es posible construir un dispositivo de 'registro' en una tienda minorista que funcione con su teléfono móvil, pero que no requiera una descarga previa de la aplicación?

¿Se puede excluir mi aplicación de la tarifa de corte del 30%?

¿Hay alguna aplicación que sea mucho mejor que WhatsApp y otras aplicaciones?

¿Cuáles son las opiniones de la gente sobre la aplicación de Android Opera Max?

¿Qué herramientas se recomiendan para hacer que la interfaz de usuario HTML5 funcione en Android y iPhone?

¿Cuál es la mejor aplicación para letras de canciones sin conexión para Android, Windows Phone y Windows 8.1?

Además de los obvios como Facebook, Whatsapp, etc., ¿cuál es la aplicación más útil que ha descargado en su teléfono y por qué?

¿Puede una aplicación de teléfono inteligente con detector de radar imitar la precisión / tecnología de un detector de radar por hardware?

He creado un juego y lo estoy publicando en la tienda de aplicaciones. ¿Cómo lo promociono?

¿Tiene sentido que el software empresarial tenga versiones de aplicaciones específicas del sistema operativo móvil?

¿Es más rentable hacer una aplicación móvil gratuita y pegar anuncios en ellos o cobrar por la aplicación y no tener ningún anuncio?

¿Es posible desarrollar una aplicación móvil que reciba instrucciones a través de bluetooth?

¿Cuál es el marco de aplicación móvil híbrido más popular?

¿Qué aplicación se necesita en el mercado?

¿Cómo agrego soporte URI a mi aplicación?