Es fácil pensar que atender a una gran audiencia requiere una sala de servidores del tamaño de un almacén. Sin embargo, este no es siempre el caso. Si su sitio es estático, una máquina pequeña puede manejar cientos de miles de visitantes. Imagine un Celeron simple de 500MHz ejecutando Linux y Apache. Conéctese a una línea T3 (45 millones de bits por segundo). Esta configuración maneja cantidades muy grandes de tráfico. Los ISP alquilan la configuración completa por menos de 1.000 dólares al mes.

Pero aquí está el problema. Los sitios más populares no son pequeños. Rápidamente chocaron contra la pared. Un cuadro no se puede ampliar indefinidamente.

“Si tienes que lidiar con millones de visitantes y contenido dinámico, tu máquina se estropeará”.

Los límites aparecen cuando se alcanza un cierto umbral. En primer lugar, es posible que deba admitir millones de visitantes todos los días. Una sola CPU tiene limitaciones. El segundo es un fallo de hardware. Si uno de sus servidores deja de funcionar, su sitio se apagará hasta que lo reemplace por uno nuevo y lo configure nuevamente. En tercer lugar, las páginas grandes o complejas consumen recursos rápidamente. Cuarto, si la página tiene que cambiar dinámicamente para cada usuario, el servidor tiene que trabajar más. Finalmente, el procesamiento en segundo plano agrega latencia. La mayoría de los sitios grandes cumplen todos estos criterios y, por lo tanto, requieren una infraestructura extensa.

Las tres estrategias de escalamiento más importantes

Si el presupuesto lo permite, los ingenieros pueden elegir tres rutas principales durante las horas pico de tráfico.

  1. Compre una máquina enorme con potencia y redundancia ilimitadas.
  2. Divida la carga entre muchas máquinas más pequeñas.
  3. Combine los dos métodos.

El enfoque distribuido es más común en aplicaciones web de gran tamaño. Es posible que incluso hayas visto esto en acción sin darte cuenta. Si la URL cambia ligeramente cada vez que visita y actualiza el sitio web (por ejemplo, www1.xyz.com y www2.xyz.com ), eso es una pista. Este sitio utiliza una serie de computadoras independientes. Todo el mundo utiliza software de servidor web. Todos utilizan la misma copia de la página del sitio web.

La verdadera magia está en cómo se distribuyen las solicitudes entrantes. Esto puede suceder de dos maneras principales.

Equilibrio de carga basado en DNS

El Sistema de nombres de dominio (DNS) traduce nombres legibles por humanos en direcciones IP. Algunas configuraciones de DNS utilizan un enfoque de operación por turnos. Los servidores DNS recorren la lista de direcciones IP disponibles cada vez que se recibe una solicitud.

Esto distribuye naturalmente la carga. Cada servidor recibe una parte del tráfico. No hablan entre ellos sobre la carga. Proporcione únicamente contenido estático o pregenerado al que tengan acceso.

Interruptor de equilibrio de carga

Un enfoque más avanzado implica un equilibrador de carga. Todo el tráfico de la red llega primero al conmutador central. Esta máquina actúa como policía de tránsito. Reenvía la solicitud a un servidor disponible.

El interruptor no se limita a adivinar. Verifique cada servidor para ver cuál está menos ocupado. Esto garantiza una división equitativa del trabajo. HowStuffWorks ha adoptado este enfoque. El equilibrador de carga de la empresa distribuye el tráfico entre tres servidores web diferentes. Si uno de ellos falla, los otros dos mantendrán el sitio activo. Sin tiempo de inactividad para el usuario.

Esta configuración redundante tiene claras ventajas. La falla de una máquina no colapsa todo el sitio. También puedes aumentar la capacidad por etapas. ¿Necesitas más potencia? Añade otro cuadro. Es flexible.

Hay un inconveniente. Estas máquinas distribuidas todavía suelen depender de bases de datos centralizadas para el procesamiento de transacciones. A medida que crece el tráfico, esta base de datos se convierte en un cuello de botella.

Una máquina enorme

No todo el mundo distribuye. TerraServer de Microsoft toma la ruta de la “única máquina grande”.

TerraServer almacena terabytes de imágenes de satélite. Maneja millones de solicitudes de esos datos. Utiliza un enorme hardware de clase empresarial. Tomemos como ejemplo el Digital AlphaServer 8400. Dispone de ocho procesadores de 64 bits a 440 MHz. Contiene 10 GB de RAM corregida y comprobada de errores.

Eso es mucha potencia en un solo chasis. Esto evita la complejidad de la coordinación de la red entre múltiples servidores. Pero es caro. Si falla un AlphaServer, el servicio se detiene.

La elección depende de su modelo de negocio. El contenido estático favorece las configuraciones simples. Las transacciones dinámicas exigen redundancia. Las aplicaciones con uso intensivo de datos pueden requerir energía bruta.

Si desea obtener más información, hay muchos recursos. El W3C establece los estándares. Microsoft ha publicado un documento técnico sobre el equilibrio de carga de Windows NT. IBM proporciona un libro rojo sobre equilibrio de servidores. Un artículo sobre servidores web colaborativos distribuidos describe esta teoría.

Pero la realidad central sigue siendo simple. Escalas de tráfico. Límites de hardware. Los ingenieros tienden un puente entre los dos. La forma de construirlo depende de para qué se utilizará realmente su sitio web.