Al diseñar la arquitectura de datos para una nueva aplicación móvil, ¿cuáles son algunas de las mejores prácticas relacionadas con la escalabilidad?

Pregunta interesante y bastante específica. Arquitectura de datos , aplicación móvil y escalabilidad .

La respuesta de Mike Holdsworth cubre algunas de las mejores prácticas comunes, pero algunas no son explícitamente relevantes para esta pregunta. HTTP / JSON es el protocolo nativo de la web, pero el mejor diseño depende de su aplicación. Los microservicios ayudan a escalar y simplificar el desarrollo y la implementación de su servidor, pero no están relacionados con dispositivos móviles o datos. Los servicios de notificación push como Urban Airship reducirán parte de su esfuerzo y brindan servicios de valor agregado, pero no lo ayudan a escalar (los servicios de plataforma subyacentes APNS y GCM lo hacen sin embargo).

Hay algunas prácticas clave de diseño, que puedo expresar de manera bastante simple:

  1. cliente inteligente y eidético : ubique la mayor cantidad de procesamiento y estado (datos) en el cliente posible; las interacciones con el servidor deberían aprovechar el estado del lado del cliente para reducir la frecuencia y el tamaño
  2. servidor perezoso : apunte a que el procesamiento del servidor para cada cliente sea “explosivo”, no prolongado O asegúrese de que el trabajo del servidor sea generalizado o relevante para la mayoría de los clientes

Hay muchas mejores prácticas específicas que se relacionan con estos principios y su pregunta, la mayoría de las cuales dependen de la aplicación móvil específica que desea construir. Aquí hay algunos:

  • CDN : distribuya datos grandes y / o relativamente estáticos para estar cerca del cliente
  • minimizar la transmisión de datos : codificación adecuada (JSON compacto o incluso binario puede tener sentido) y compresión (HTTP comprimido puede ser suficiente o puede que necesite más)
  • almacenamiento de datos escalable , casi seguramente una tienda NoSQL; la mejor opción dependerá del saldo de lectura / escritura, la necesidad de transacciones o idempotencia, la necesidad de contar con datos de series de tiempo o contar, o el soporte para JSON o el procesamiento de Mapa / Reducir o …

Como la mayoría de las cosas, es fácil hacerlo bien … y es fácil hacerlo mal 😉

Me viene a la mente el término “débilmente acoplado”. Diseño para interacciones desconectadas. No estoy muy seguro de qué tan lejos de la madriguera del conejo quieres bucear, así que aquí hay algunas líneas de investigación que te gustaría seguir.

JSON sobre HTTP se está convirtiendo en el estilo arquitectónico elegido para muchas aplicaciones modernas. Integración en la API, JSON representa la Vista y HTTP como mecanismo de intercambio. Todo esto aprovecha la funcionalidad de Internet existente y proporciona buenos niveles de abstracción de los detalles de implementación.

Podría hacer mucho peor que leer y comprender la tendencia actual hacia Microservicios. Estos son los componentes del lado del servidor con los que su aplicación interactuará. Aquí hay un ejemplo de lo que implican los conceptos clave sobre este tipo de arquitectura. Es posible que pueda ver que depende en gran medida de la API que se centra en la capacidad empresarial.
Esta es la arquitectura que sigue mi proyecto de código abierto FlockData. De hecho, estamos buscando ofrecer esto como una arquitectura de gestión de datos móviles en breve. El código está en BitBucket si quieres mirar debajo del capó.

Es posible que también desee considerar los servicios de inserción: obtener datos del servidor al dispositivo. Productos como UrbanAirship posiblemente pueden ayudar en este sentido.

Simplifique la lógica y use estructuras de datos fácilmente escalables.