En el pasado, he trabajado en una variedad de entornos. Aplicaciones de escritorio, juegos, elementos integrados, servicios web, trabajos de línea de comandos, sitios web, informes de bases de datos, etc. Todos estos entornos compartían el mismo rasgo: sin importar su complejidad, sin importar su tamaño, siempre podría tener un subconjunto o una porción de la aplicación en mi máquina o en un entorno de desarrollo para probar.
Hoy no lo hago. Hoy me encuentro en un entorno cuyo enfoque principal es la escalabilidad. Reproducir el medio ambiente es prohibitivamente costoso. Tomar una porción del entorno, aunque sea plausible (algunas de las piezas tendrían que ser simuladas o utilizadas en un modo de instancia única para el que no están hechas), frustra un poco el propósito ya que oscurece la concurrencia y la carga que El sistema real se encuentra. Incluso un pequeño sistema de "prueba" tiene sus defectos. Las cosas se comportarán de manera diferente cuando tenga 2 nodos y cuando tenga 64 nodos.
Mi enfoque habitual para la optimización (medir, probar algo, verificar la corrección, medir las diferencias, repetir) realmente no funciona aquí, ya que no puedo hacer los pasos 2 y 3 de manera efectiva para las partes del problema que importan (solidez de la concurrencia y rendimiento bajo carga). Sin embargo, este escenario no parece único. ¿Cuál es el enfoque común para hacer este tipo de tarea en este tipo de entorno?
Hay algunas preguntas relacionadas:
- Esta pregunta tiene que ver con que el hardware (como los analizadores de espectro) no está disponible, lo que se puede emular (relativamente) fácilmente.
- Esta pregunta trata sobre la localización de errores que solo existen en entornos de producción, lo cual es útil, pero es un tipo diferente de actividad.
Reproducing the environment is prohibitively costly.
- ¿Cuánto cuesta un error de producción espectacular? ¿Qué hay de 2 errores? En momentos impredecibles (muy probablemente cuando la mayoría de sus usuarios están cargando el sistema al mismo tiempo). Compare eso con el costo de configurar un entorno de reproducción mínimo: es posible que, después de todo, no sea tan costoso.
prohibitively costly
.