¿Cómo pueden los sitios web manejar a millones de usuarios?

No es tanto el sitio web el que puede manejar a millones de usuarios sino los servidores que alojan el sitio.

Si toma un sitio web creado con HTML / CSS / JS estático y lo aloja en un único servidor web, la sobrecarga de su servidor es extremadamente baja. El sitio estático no requeriría mucho procesamiento del lado del servidor (a diferencia de un sitio dinámico que aprovecha PHP, Python, Ruby, etc.). En este ejemplo, el único proceso que el servidor estaría gravando sería un motor http como Apache o nginx. Un servidor simple y rentable para este tipo de sitio web podría ser capaz de manejar un par de cientos de usuarios simultáneamente.

Algunos de los métodos más comunes para escalar un sitio web para millones de espectadores a menudo incluyen (pero no se limitan a) una combinación de lo siguiente: almacenamiento en caché del lado del servidor / cliente, aprovechando una red de entrega de contenido (CDN), generación de sitios estáticos y equilibrio de carga en varios nodos del servidor. De estos, creo que es importante resaltar lo siguiente:

  1. Equilibrio de carga: donde se implementa un clúster de servidores para entregar un sitio web. Por ejemplo, un clúster podría incluir dos servidores que actúan como directores de tráfico. A medida que el tráfico web fluye hacia su sitio web, estos dos servidores son la primera parada. Dirigen y canalizan el tráfico entrante a “sub-servidores” que albergan la misma versión de su sitio web. De esta manera, no todos los 1 millón de usuarios están llegando a un solo servidor; más bien, cientos de miles están llegando a múltiples servidores al mismo tiempo, lo que disminuye la sobrecarga en cada servidor individual.
  2. Red de entrega de contenido: de manera similar a una configuración de equilibrio de carga, un CDN es esencialmente una red de clústeres de servidores físicamente dispersos en una variedad de centros de datos ubicados en diferentes ciudades y países de todo el mundo. Aprovechar una CDN puede garantizar que los usuarios de diferentes ubicaciones se conecten a los servidores más cercanos a ellos para que los tiempos de conexión del servidor / sitio web estén lo más optimizados posible.

En última instancia, con la implementación de un sitio web estático, su capacidad para escalar suele ser mucho más fácil y requiere el uso de menos recursos. Dicho esto, no es necesario obligarse a implementar un sitio web estático. Existe una gran superposición entre las técnicas utilizadas para escalar un sitio web (independientemente de su complejidad).

Creo que también es importante tocar los métodos de prueba utilizados para comparar la capacidad de carga de un sitio web / servidor. Existen herramientas como el JMeter de Apache que puede utilizar para hacer una prueba de esfuerzo de su sitio web en un servidor en particular con tantos usuarios / conexiones simultáneas como desee.

Espero que esto ayude, al menos como punto de partida!

Como se ha observado en preguntas similares, los problemas son:

  • usuarios por período de tiempo
  • páginas estáticas vs dinámicas
  • tamaño y complejidad del código de la página

Como ejemplo, una Raspberry Pi, una computadora pequeña de placa única, con un procesador relativamente lento, 1 GB de RAM y unos pocos GB de almacenamiento flash y USB conectado puede manejar de uno a dos millones de visitas por día (para imágenes estáticas mixtas / texto) HTML y JS). La Fundación Pi hizo esto como una prueba de concepto cuando se lanzó la Raspberry P 3. Costo total de hardware / software: muy por debajo de $ US 100. Si estuviéramos hablando de un millón de usuarios / mes, esto es posible con un sistema tan mínimo. Si habla de cientos a miles de usuarios concurrentes durante cualquier período, necesitará una arquitectura mucho más compleja, robusta y costosa.

Todo depende de los detalles del requisito. El número de usuarios, sin otras calificaciones, casi no tiene sentido.

Cada negocio tiene su propio modelo en el sentido de que define su lógica empresarial.

se basa en el procesamiento de su sistema y el ancho de banda de la red.