¿Cuáles son los problemas asociados con los sitios web, servidores y bases de datos a medida que crecen significativamente? ¿Hay buenos libros, artículos o conferencias en línea que discutan este tema en profundidad?

Respuesta corta: aprenda sobre notación big-O y concurrencia .

Respuesta larga:

El primer problema es, como señala Thomas e Ivan, el ancho de banda. Lo más probable es que su ISP simplemente apague su conexión a Internet si el sitio se vuelve popular; su acuerdo con ellos no cubrirá el alojamiento completo. Pero eso es fácil de resolver, solo obtén un host compartido decente y listo.

Pero aparte de eso, su propio código probablemente será el problema. Si este es uno de sus primeros trabajos en PHP, lo recordará en 2 años y dice “qué demonios es esta mierda, qué estaba PENSANDO”. Lo sé, porque comencé mi carrera en la programación hace unos 12 años con PHP, y todavía tengo algo de eso.

Su primer problema será el puro rendimiento de su aplicación. Es poco probable que los aceleradores como los recomendados por algunas otras respuestas lo ayuden aquí, porque el rendimiento de ellos será tan abismalmente lento que las partes del código deben desecharse y reescribirse. Créeme, hablo por experiencia.

Lo que debe comenzar a aprender es mirar el código que escribió y hacerse la pregunta: “¿Cuál es la O (n) de este fragmento de código?” (Si no sabe qué es O (n), lo que no sabrá si no ha leído ciencias de la computación, lea esto: http://rob-bell.net/2009/06/a-be…)

Si el O (n) es realmente malo, eso podría estar bien a menos que el código sea muy afectado. Cuanto más probable sea que una solicitud golpee un fragmento de código, más importante será la O (n) para ese código. Si el rendimiento de su código se degrada exponencialmente en lugar de lineal, no hay un acelerador en el mundo que pueda ayudarlo.

Su segundo problema será la concurrencia. Esto es mucho, mucho peor, y si tienes suerte, no te encontrarás con eso al principio de tu carrera. Un problema de concurrencia es cuando dos solicitudes llegan al mismo código exactamente al mismo tiempo, y la persona que escribió el código no lo tuvo en cuenta. Esto causa errores horribles, tales pagos simplemente yendo al pedido incorrecto, pedidos de artículos de otros que aparecen en su carrito, etc. También son muy difíciles de depurar, porque no aparecen en absoluto en el desarrollo, pero una vez que obtiene miles de visitantes por minuto, la probabilidad de errores de concurrencia es bastante grande.

Y, si encuentra útil una respuesta, ¡no olvide el voto a favor y siga los botones!

El arte de la escalabilidad
Reglas de escalabilidad
¡Liberarlo!

Esos son algunos libros que quizás desee leer que lo ayudarán a pensar y planificar con anticipación.

Las cosas que probablemente debería hacer más inmediatamente, en este orden aproximado, son:

1. Mueva su aplicación a un entorno de alojamiento adecuado fuera de su hogar. AWS o Rackspace Cloud son probablemente buenas opciones.
2. separe su aplicación y las instancias de base de datos
3. agregue un poco de caché en la capa de aplicación (código de operación como APC)
4. agregue más CDN de almacenamiento en caché del proveedor al que se cambió en el n. ° 1
4.5 Quizás agregue memcached (o algo parecido) entre su DB y la aplicación.
5. agregar equilibrio de carga en el nivel DC
6. agregue un segundo nodo de servidor de aplicaciones
7. agregar esclavo de la base de datos
8. Divide tus lecturas a los esclavos

Más allá de ese nivel de descomposición, las cosas comienzan a ponerse más difíciles, pero si eres capaz de lograr todo eso, tendrás una base razonable para un crecimiento continuo.

Sin embargo, si no ha diseñado para los números 3, 4, 6, 4, 5 y 8, entonces no están exentos de desafíos.

Entonces, hay más que una pista y si sigues ese camino llegarás bastante lejos.

Por último, su situación variará dependiendo de muchas cosas. Por lo tanto, es posible que sea necesario modificar el orden anterior o incluso algunas de las ideas para satisfacer sus necesidades reales. El escalado es muy contextual.

Hay muchas recomendaciones que puede hacer para que los sitios manejen el próximo crecimiento del tráfico.

Probablemente, lo más importante es usar buenos sistemas de almacenamiento en caché, como almacenar páginas generadas en archivos de caché o servidores de memoria caché para evitar accesos excesivos a la base de datos, pero también una extensión de almacenamiento en caché de código de operación PHP como eAccelerator, APC u otros, para evitar la sobrecarga de la recompilación el mismo código PHP cada vez que se ejecuta.

Una vez que escribí este artículo sobre prácticas defensivas para manejar grandes cargas de tráfico sin aumentar tanto los gastos de alojamiento.

http://www.phpclasses.org/blog/p