¿Qué mejores prácticas deberían llevarse a cabo para un sitio web que necesita "escalar" para manejar la capacidad? Esto es especialmente relevante ahora que las personas están considerando la nube, pero pueden estar perdiendo los fundamentos.
Estoy interesado en escuchar cualquier cosa que considere una mejor práctica, desde tareas de nivel de desarrollo, hasta infraestructura y gestión.
web-development
cloud-computing
paas
scalability
goodguys_activate
fuente
fuente
Respuestas:
Diseño para concurrencia
Es decir, mientras está codificando, planee tener varios hilos en funcionamiento. Planifique el estado compartido (a menudo solo el db). Plan para múltiples procesos. Plan de distribución física.
Esto le permite distribuir su sistema en múltiples máquinas y en múltiples procesos con equilibrio de carga. Le permite tener procesos redundantes ejecutándose en caso de falla, y en caso de que necesite modificar el sistema en el lugar, no tiene que eliminar todos los servicios para hacerlo.
fuente
Algunas cosas que podrías considerar:
fuente
Compartir nada de la arquitectura.
Con eso en mente, y contrario a lo que pueda pensar, no salte a una solución de escala inmediata. La sobrecarga fuera del sistema frente a una llamada dentro del sistema no debe sopesarse. Por ejemplo, toma MUCHO más tiempo hacer una conexión DB a través de cualquier interfaz de red que hacer una llamada local. Haga un presupuesto de cuánto tiempo se necesita en administración, potencia y esfuerzo de ajuste para escalar en escala frente a los $ adicionales para un verdadero sistema grande.
De todos modos, todavía hay un gran valor en las arquitecturas de "no compartir nada" y puede aplicar capas y escalar sus sistemas cuando llegue el momento.
fuente
Paralelizar solicitudes sobre varios nombres de host
Parte del estándar HTTP es una sección que dice que los clientes web solicitarán un máximo de 2 sesiones por host DNS. Aquí hay una solución en la que usted y su alias www.domain.com obtienen una mayor concurrencia de solicitudes, lo que hace que su página se cargue más rápido:
/programming/3653609/how-do-i-code-my-asp-net-page-to-parallelize-downloads-across-hostnames
Básicamente implica editar su controlador HTTP ASP.NET para alternar los hosts de destino a los que envía clientes, donde cada host es un CNAME para "www".
fuente
DNS seguro, rápido y confiable
Encontré algunos sitios web de alta capacidad que utilizan el servidor DNS del registrador, que no tenían SLA para el tiempo de actividad o el rendimiento. Además, sus servidores estaban ubicados en India y la latencia por sí sola aumenta la posibilidad de que un spoofer DNS pueda envenenar el caché de su cliente o ISP intermedio. Esto provocaría que incluso su tráfico protegido por SSL se redirija sin que nadie lo sepa.
La velocidad de DNS también afecta el tiempo de carga inicial de su servidor, antes de que los registros se almacenen en caché.
Utilizo DynDNS o Neustar para la mayoría de mis clientes, ya que tienen una infraestructura DNS bastante sólida (aunque es costosa y no tengo otra afiliación a esas empresas).
fuente
Creo que la clave será simple:
Tener un código simple. Eso significa algo que miras y entiendes. A medida que expande y cambia servidores, necesita saber qué está sucediendo. También es posible que deba agregar codificadores que necesiten entender rápidamente. Los ganchos y los archivos XML que llaman a un código aleatorio que no es obvio es muy malo.
Entonces puedes probar y encontrar los problemas.
Mire aquí: http://blog.servint.net/2013/08/27/going-big-how-to-scale-a-website-part-1-infrastructure-that-scales/
En stellarbuild intentamos asegurarnos de que nuestros sitios web escalen sin tiempo de inactividad. Eso significa que necesita poder saber qué hace su código y dónde lo hace. Incluso si está probando una máquina diferente, no puede tardar demasiado en escalar. La mayoría de las personas solo comienzan cuando es casi demasiado tarde, por desgracia. Puede optimizar solo una vez que lo haga en mi opinión.
fuente