Cómo hacer que una aplicación web escalable sea un principiante

Como principiante, nunca tendrá que preocuparse por los problemas de escala. Si se enfoca en mantener la arquitectura y la codificación simple (como la normalización de tablas en mysql / postgresql, mantener las clases PHP simples, etc.), generalmente no debería tener problemas de escala. E incluso si lo ha hecho, cuando necesite más escalado para su aplicación web, será lo suficientemente rico como para contratar expertos en escalado para su proyecto.

Por ejemplo, Mark Zuckerberg nunca tuvo que enfrentar problemas de escala él mismo cuando desarrolló Facebook. Todo lo que hizo fue codificar una aplicación web de pequeño tamaño (sí, en cuanto a funcionalidad, FB no es demasiado grande, todo lo que hace es escalar a niveles astronómicos). Cuando FB comenzó a despegar, Zuckerberg era el dueño de una nueva y genial startup en Silicon Valley y pudo contratar a otros expertos en dominios que luego se encargaron de los problemas de escalado.

Todavía es útil saber acerca de los problemas asociados con el escalado, pero no es absolutamente necesario saberlo usted mismo si está trabajando en un equipo. Contrariamente a la opinión popular de muchas personas, los problemas de escala no están asociados con el rendimiento bruto del lenguaje de programación. Usar Java en lugar de PHP / Python no va a escalar mágicamente su aplicación (de lo contrario, no estaríamos ejecutando Quora y Reddit en código Python). De dónde provienen los cuellos de botella generalmente es el mal diseño de la base de datos (como tener demasiadas uniones) o las malas prácticas de codificación (niveles insanos de abstracción o el uso excesivo de un marco hinchado). Para escalar por encima de un cierto límite, también necesitará una cola de mensajes para actuar como un búfer entre su base de datos y la aplicación. La aplicación siempre obtiene un número astronómico de visitas (o solicitudes) en una aplicación popular (como Quora / Reddit). La base de datos por sí sola no puede manejar un volumen tan alto de solicitudes, por lo que necesita un buffer intermedio (aunque algunas bases de datos como postgresql tienen esta característica incorporada).

Aparte de eso, escalar es solo cuestión de escalar verticalmente (arrojando más recursos como CPU, RAM, etc. para sus máquinas que manejan la carga), o escalar horizontalmente (arrojando más cantidad de máquinas para manejar su carga).