Primeros días en línea: cómo no matar su sitio

Supongamos que tiene este nuevo y elegante sitio, con muchos datos (como grandes imágenes), y está a punto de ponerlo en línea. Si haces "demasiado" publicidad, durante los primeros días, el sitio será abrumado con las requestes.

¿Cómo puedo mitigar este riesgo?

He pensado en

  • va en directo gradualmente, como SO y SF: beta "privada", beta pública, pública
  • permitir que X conexiones sesiones simultáneamente, por lo que el usuario conectado todavía tiene una buena experiencia del sitio, y los demás tienen un buen post de disculpa

No puedo:

  • comprar más serveres, como después de los primeros días, el sitio tendrá mucho less tráfico 🙂

  1. Cache todo lo que pueda. Las páginas creadas dinámicamente deben almacenarse en caching para que los usuarios obtengan una versión estática. En los componentes de página que consultan el db también se deben almacenar en caching.
  2. Trate de utilizar un service externo como Amazon S3 para servir imágenes y multimedia (o tenerlo listo para usar si el sitio de repente se golpea con una tonelada de tráfico).

Ir a vivir gradualmente puede trabajar para SOF y SF porque ya tenían publicidad y demanda, debido a la popularidad de los blogs de Jeff y Joel. Si usted no tiene una base de usuario casi garantizada como lo hicieron, a continuación, ir a vivir gradualmente podría ser fatal.

Yo evitaría la limitación por sesiones simultáneas, ya que es difícil definir el final de una session causada por la inactividad. Si un usuario se va por 15 minutos e intenta recargar su página, sólo para get un post de error – acaba de perder un usuario.

¿Cuánto planificó en su model de datos? ¿Ha diseñado un esquema que le permitirá incrementar su volumen de consultas sin types caros, columnas binarias o combinaciones complejas? ¿Ha afinado su backend de database (asumiendo que tiene uno)?

¿Cómo estás sirviendo tus 'grandes imágenes'? ¿Se puede dividir eso en un process de server web independiente, incluso un dominio independiente?

¿Ha probado su sistema? Herramientas como ApacheBench y Siege son invaluables.

¿Es toda su configuration en svn? ¿Su implementación está automatizada? Usted estará contento de eso cuando usted tiene que rodar nuestra aplicación hacia fuera al 2do server.

Un sistema de invitación puede a veces ser una buena manera de controlar la absorción del usuario de un sitio. Pasar un cierto número de invita al principio, para que el sitio no se convierta en abrumado. A continuación, dar a cada usuario unas pocas invitaciones para pasar a otros, poco a poco la construcción de la cantidad de usuarios en el sitio. De esa manera usted no conseguirá demasiada gente que golpea el sitio en el principio, y usted no consigue un pico masivo del tráfico.

La desventaja, por supuesto, es que puede estar rechazando un montón de usuarios al principio que no tienen invitaciones, y que no puede volver más tarde. A less que tenga un sitio realmente bueno que la gente está muy emocionada de usar, entonces esto podría ser un mal movimiento. Depende del sitio realmente. Además, tendrías que tener un time de desarrollo adicional para agregar un sistema de invitación.

Me aseguraría de que tuviera una sólida infraestructura de monitoreo en su lugar antes del lanzamiento. Usted necesita tener datos para basar sus decisiones en – esto significa medir la carga de la CPU a través de los serveres, comprobando que su carga se distribuye uniformemente entre las cajas, y que si algo se derrite, usted sabe cuál era.

Saber dónde está el problema networkingucirá drásticamente el time que tarda en responder. He visto que muchos sitios se lanzan sin monitoreo de ningún tipo, con la intención de que se instale más tarde … después de que el fuego se apague. Esto es profundamente incorrecto.

Es posible que desee ver en la tercera parte de alojamiento de contenido estático, como Amazon S3. Podría ser digno dependiendo de su aplicación también a la nube algunos (tanto como odio la palabra de moda) con Amazon EC2.

Algunos proveedores de hosting le permiten probar serveres privados con capacidad máxima durante un time y luego instalarse en una capacidad razonable después del período de testing.

DreamHost es un ejemplo:
http://www.dreamhost.com/hosting-vps.html