Con respecto al MVP de una aplicación móvil, ¿debería preocuparme demasiado el escalado?

Su pregunta se responde a sí misma: “Demasiado preocupado” implica más de lo que debería ser.

¿Debería estar preocupado por la escala? Hay algunas personas que dirán que no. Y hay algunas circunstancias en las que estaría de acuerdo.

Diría que depende del dominio y de qué etapa de MVP estás hablando.

En al menos una descripción de un MVP que he leído, realmente enfatizan el M: el producto mínimo absoluto para el cliente, con un backend profundamente no escalable. Por ejemplo, un nuevo sitio web de venta de libros donde cada “compra” genera un correo electrónico que hace que alguien corra a una librería, compre el libro y lo deje en el correo.

Ese tipo de MVP es útil para evaluar el mercado. Si se vuelve más popular de lo que puede soportar, entonces crea una versión de lanzamiento.

Pero si está trabajando con alguien que realmente está hablando de un lanzamiento alfa de la aplicación, con características mínimas pero un backend completo, y hablan de ampliarlo durante los pocos meses posteriores al lanzamiento, entonces planear escalar el diseño es defensa personal simple

La mejor manera de lograr un compromiso es simplemente usar una pila que pueda escalar. NodeJS es una gran opción, aunque si conoce Rails y sabe cómo, probablemente pueda escalarlo lo suficientemente bien.

Pero las otras capas son probablemente el desafío más grande: cualquier base de datos o capa de mensajería es donde encontrarás cuellos de botella a medida que las cosas crecen.

Solo use una base de datos ACID como Postgres si necesita una. Pista: probablemente no lo hagas. Pero es posible que desee utilizar un esquema informal de todos modos.

MongoDB es un estándar en estos días para una base de datos NoSQL escalable, pero tiene problemas conocidos con consistencia; RethinkDB no es tan rápido, pero se puede hacer consistente incluso cuando se distribuye en docenas de servidores, y tiene una increíble supervisión de cambios en tiempo real. Redis es ideal para comportamientos similares a la caché o para falsificar una cola de mensajes. ZeroMQ es excelente por ser una simple cola de mensajes. Todo lo anterior es realmente fácil de conectar bajo NodeJS, y debería estar bajo Rails.

Nginx es excelente para equilibrar la carga, el proxy y ser su servidor de aplicaciones.

Si utiliza todas estas herramientas juntas en una configuración óptima, entonces no debería tener que preocuparse por el escalado. Si choca con los cuellos de botella de rendimiento, entonces solo es cuestión de perfilar.

Buena suerte.

EDITAR: También puede leer la opinión de Paul Graham en Do Things that Don’t Scale.

Usualmente no. Las personas tienden a preocuparse por la optimización demasiado pronto, incluso antes de que tengan la oportunidad de demostrar que su MVP es algo viable.

También depende de qué tipo de aplicación sea. Si se trata de una aplicación de chat, por ejemplo, es probable que necesite al menos entre cientos y miles de usuarios activos para ver cómo es viable. Si se trata de una aplicación empresarial, es posible que solo necesite admitir un puñado de usuarios.

Pero en cualquier caso, si su aplicación se rompe porque no puede escalar, es un buen problema. Scaling tiene soluciones conocidas, un producto que no se ajusta al mercado no tiene solución.