2010-01-13 17 views
15

A menudo se me pide que realice un dimensionamiento y planificación de capacidad para nuestros clientes. Cuando nuestros clientes compran nuestros productos (básicamente aplicaciones web J2EE), a menudo preguntan qué hardware necesitarán para ejecutar esos productos. Nuestras recomendaciones a menudo resultan en adquisiciones de hardware de alto costo.Consejos de planificación de dimensionamiento y capacidad y procedimientos

Hasta ahora, la mejor heurística que desarrollé es comparar las proyecciones de utilización (número de usuarios registrados y concurrentes a los que debe asistir la aplicación) con los datos recopilados en nuestras instalaciones existentes. Algo así como: si la instalación A atiende a 100 usuarios concurrentes con hardware X, entonces la instalación B necesitará hardware 2 * X para atender a 200 usuarios concurrentes.

Este enfoque, sin embargo, tiene una serie de problemas. Los clientes a menudo usan diferentes plataformas de hardware y software. El conjunto de productos que nos compran generalmente nunca es el mismo y, en general, las partes de la aplicación se crean según el pedido de un cliente específico. Tenga en cuenta que las versiones de software están cambiando, etc. y hay tantos parámetros que pueden dificultar la tarea de dimensionar.

Estudié algunos libros sobre el tema y algunos proponen el uso de modelos matemáticos complejos. El número de parámetros que estos enfoques requieren como entrada (por ejemplo, la clasificación detallada de las características de la aplicación) me hace pensar que estos son apenas útiles. El hardware generalmente se ordena antes incluso de que se definan los requisitos básicos, sin mencionar que estos variarán a lo largo del desarrollo de la aplicación y el ciclo de vida. Entonces, ¿cómo se hace para dimensionar y planificar la capacidad? Cualquier consejo y cómo se apreciaron.

Respuesta

3

Si el hardware debe pedirse antes de que se definan los requisitos básicos, bueno, lo mejor que puede hacer es estabilizar la capacidad mirando su base instalada para un conjunto similar de proyectos (como lo está haciendo ahora). Lleve un registro de la experiencia de sus clientes actuales en cuanto a escala y capacidad a medida que crecen sus instalaciones, y si tiene una base lo suficientemente grande, probablemente pueda hacer una curva aproximada agrupando proyectos similares con hardware similar y analizando las necesidades de capacidad. Observe cómo cambian las necesidades de capacidad de los clientes existentes durante el crecimiento, así como los puntos de datos adicionales.

Idealmente, la compra inicial de HW/SW es ​​para una instalación piloto, y usted compara la configuración del piloto una vez que está funcionando y cumpliendo con las especificaciones. Use esos resultados para proyectar las necesidades de capacidad para pasar de piloto a producción. Por supuesto, esto requiere tiempo en el programa de piloto a producción para comparar la aplicación, luego ordenar y recibir la entrega del equipo. Pero dará una estimación de capacidad más precisa que hacerlo todo por adelantado.

0

Si la aplicación escala horizontalmente de una manera elegante, una estimación inicial aproximada está bien como punto de partida. Agregar o eliminar cuadros adicionales según sea necesario debería ser fácil una vez que la aplicación se ejecuta en producción.

+0

El problema es comercial, no técnico. Los clientes deben tener una idea de inicial y TCO de antemano. Además, negociar con proveedores de hardware es más fácil si conoce el producto exacto que necesita. Estime demasiado grande y el cliente está atrapado con HW que no necesita; estimar muy poco y alterar su presupuesto, no tener un apalancamiento con el proveedor, etc. – Dan

4

No hay una fórmula fácil o matemática para predecir la escala en la descripción que proporcionó. Si usted o su empresa lo toman en serio, la mejor manera es crear un entorno de prueba de escalabilidad & donde puede configurar fácilmente & derribar varias configuraciones de cliente y enviar carga a ellos para ver cómo van a hacer. Debido a que está creando componentes personalizados, un componente mal escrito o un índice que falta puede estropear todo, por lo que tener un entorno como este es donde puede resolver estas cuestiones antes de dárselo al cliente. Una vez que tenga este tipo de entorno, puede agregar memoria & cpu a las bases de datos de los servidores de aplicaciones & para ver cómo se escala su aplicación.

Sugeriría un entorno de VM donde pueden agregar fácilmente la memoria de la CPU & en función de las necesidades de la aplicación, junto con algunas pruebas de carga/escala realistas utilizando un servicio como watchmouse o browsermob.