web-applications - requerimientos - se puede crear una pagina web gratis
¿Qué implica hacer un sitio web que necesite escalar? (5)
Además de todo lo que se menciona aquí, debe observar el tiempo de su tráfico. ¿Es relativamente constante en el tiempo? ¿O viene en ráfagas, donde obtendrá una mayor cantidad de tráfico en un corto período de tiempo?
En general, querrá diseñar un sistema que pueda manejar las cargas máximas con gracia (aunque no necesariamente en el nivel de rendimiento ideal). Si su tráfico es muy explosivo, tendrá que dedicar más esfuerzo a escalarlo que si tuviera la misma cantidad de tráfico gradualmente.
Estoy planeando construir una aplicación que obtendrá una gran cantidad de tráfico. (Por favor, no diga que no obtendré tráfico, esto es para una red interna, por lo que el tráfico estará allí. Solo tratando de evitar el ''No obtendrá mucho tráfico, no se preocupe por eso'').
En cuanto al tipo de tráfico que estoy esperando, los usuarios explorarán varios creados dinámicamente (según los detalles de la cuenta del usuario). En esos sitios el usuario puede enviar entradas de texto. Tanto la carga de las páginas como el manejo de las entradas del usuario llegarán a la base de datos. Las cargas obviamente serán lecturas, pero el manejo de la entrada requerirá tanto lecturas como escrituras. Las entradas también pueden afectar las vistas de otros usuarios. Si esto sucede, tendré que notificar a los otros usuarios para actualizar la página.
¿Qué tipo de cosas debo hacer para que no se bloquee bajo la carga de una gran cantidad de usuarios?
¿En qué se convierten los factores limitantes? Cosas de la base de datos? E / S con extremo delantero?
Nunca he desarrollado una aplicación web seria antes y estoy buscando ayuda.
EDITAR: Estaba considerando usar Erlang para el backend ya que lo he usado un poco y realmente me gustan todas las cosas de concurrencia. ¿Sería esta una opción viable o debería intentar algo más tradicional?
El almacenamiento de back-end, el manejo de bases de datos, el contenido dinámico de front-end y el almacenamiento en caché es una cosa. La consideración de su proveedor de servicios de host y el ancho de banda de red disponible es la otra.
Verifique con su servicio de alojamiento los límites de ancho de banda, la asignación de memoria máxima por solicitud, el tamaño máximo de carga de archivos y las consultas de base de datos máximas. Si su host actual no ofrece servicios económicos que coincidan con sus requisitos de escalado, entonces muévase a otro host antes de que lo cierren o lo sorprendan con una factura mensual de tres dígitos para superar su ancho de banda asignado.
Edición: simplemente releer y capturó su referencia de "red interna". Por lo tanto, en este caso, es probable que su administrador de red no se quede estancado con un billete de varios cientos de dólares, pero aún así pueden cancelarlo. Asegúrese de mantener abiertas las líneas de comunicación con los administradores de la red y los administradores de cualquier otro servicio con el que interactúe su propio sitio, o es probable que se convierta en enemigos de ellos con bastante rapidez. En otras palabras: buena etiqueta de red.
Además, si realmente posee y construye el servidor, asegúrese de que el sistema operativo, la pila de software y el hardware estén todos actualizados solo con versiones estables de software y firmware, que puedan manejar la carga y que se supervisen para que funcionen sin problemas en todo momento.
Edición n. ° 2: Sé que usted preguntó específicamente cómo su aplicación puede manejar la carga, y es posible que simplemente me esté desviando del tema, pero también debe considerar si usted y sus compañeros de equipo pueden manejar la carga. El ancho de banda de Manpower es igual de importante, y desalentarse por la carga de trabajo es cómo fracasan los proyectos como este. Beer es el mejor amigo de un programador, especialmente cuando se enfrenta a tareas de programación complejas y creativas, pero puede llevar a problemas graves de consumo de alcohol si la mano de obra no se gestiona correctamente o si faltan recursos de personal. ¿Quién va a responder a esa notificación de corte a las 3 de la mañana? ¿Quién responderá a los correos electrónicos de los fundamentalistas o trolls religiosos, o rastreará a través de la ley y las patentes para verificar si el aviso de retiro es falso? A menos que sea un concierto que pueda pagar las facturas, es probable que la mayoría de las personas no puedan dedicar mucho tiempo y energía. No pretendo desalentarte en absoluto, y espero que ya hayas cubierto esto.
En lo que respecta a Erlang: suena como un lenguaje aceptablemente bueno (basado en lo poco que sé sobre él), pero ciertamente no es una varita mágica que te da escalabilidad. Hay docenas de diferentes factores y productos a considerar. La elección del idioma es solo una de ellas ... y probablemente una de las menos significativas.
Puede que sea mejor ir con lo que ya sabe y aprender a escalarlo, en lugar de ir a una tecnología nueva / desconocida y esperar que se adapte a usted.
Este es un tema muy grande, y probablemente querrá hacer tanta investigación como el tiempo lo permita. Hay varios grandes temas a considerar.
Estado de la sesión de almacenamiento. Obviamente, el almacenamiento de sesión ocupa memoria o espacio en disco. Debe tener una estrategia para almacenar la información de la sesión correctamente y de una manera que pueda ser utilizada por una granja de servidores web.
Caching Una sólida estrategia de almacenamiento en caché puede reducir las cargas drásticamente. Investigue un montón acerca de cuándo, qué y dónde debe guardar el caché.
Escalabilidad y pruebas de carga. Se debe tener un pensamiento adicional en cada operación de obtención de recursos para asegurarse de que se está haciendo tan pocas veces como sea necesario. Las pruebas de carga y la creación de perfiles de código pueden ayudar a identificar cuellos de botella aquí si utiliza buenas herramientas.
Optimización de la base de datos. Asegúrese de entender cómo optimizar adecuadamente su base de datos para miles (¿millones?) De operaciones por minuto. Si su aplicación tiene una gran cantidad de escritura, es posible que deba revisar el almacenamiento de datos antiguos que ya no necesitan incluirse en los índices para acelerar sus operaciones de escritura.
Ruta de actualización. ¿Su tráfico va a aumentar con el tiempo? Asegúrese de comprender cómo conectaría más servidores y memoria a su aplicación en caso de que sea necesario, y lo que se requeriría.
Hay muchos libros en los que podrías invertir y que probablemente darían lugar a grandes dividendos. Realice una búsqueda de "creación de aplicaciones web escalables" en Amazon o en los capítulos y probablemente encontrará muchos textos para continuar, tanto de tecnología específica como de agnóstico.
Simplemente no hagas más de lo que necesitas. si mantiene esto, puede manejar la mayoría de las cosas que no sean los efectos de metablog.