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:
- ¿Cuáles son algunos ejemplos épicos de bikeshedding?
- ¿Por qué los ejecutables producidos con compiladores que no sean C / C ++ son más lentos que los producidos con C / C ++?
- ¿Por qué decidió DropBox volver a implementar sus servicios backend de Python en lugar de Java?
- ¿Cuáles son algunas formas en que un ingeniero de software puede ofrecer voluntariamente su trabajo calificado?
- Cómo mejorar en la arquitectura de una aplicación de software
- 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
- 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 😉