
Resiliencia a través de la diversidad

En lugar de pensar en una aplicación, incluso una aplicación altamente distribuida que consta de muchos componentes, como una sola entidad para ser desplegada y ejecutada en la plataforma de computación, ¿qué si pudiéramos desplegar y ejecutar cientos o miles de instancias de la aplicación simultáneamente? Si estos casos eran en realidad variantes ligeras entre sí, tal vez generados automáticamente (por ejemplo, a través de la programación genética [9]), entonces existe una probabilidad estadística de que sus propiedades de rendimiento y / o calidad difieren de alguna manera interesante, como la libertad de algunos error o vulnerabilidad de seguridad.


Para abordar este problema, argumentamos que la administración de recursos debe tener una visión holística de los recursos a través de múltiples niveles de plataforma. Sin el apoyo para tales políticas de gestión de alto nivel, la multiplicidad de recursos informáticos desperdicia recursos físicos y, por lo tanto, proporciona un mal servicio a las aplicaciones.
Observe que algunas de estas ideas tienen que ver con el diseño de aplicaciones, algunas con la validación de esos diseños, y otras con el funcionamiento de las aplicaciones. Así, la multiplicidad la informática tendría un impacto en casi todos los aspectos de cómo vamos en la ingeniería de las aplicaciones.

INGENIERIA DE SOFTWARE

La creciente abundancia de recursos informáticos casi seguramente se acompañará de una fuerte caída en el costo unitario de la informática. Con el tiempo, sin embargo, las aplicaciones tienden a usar más unidades que el mismo número de unidades a menor costo (normalmente debido a que su funcionalidad aumenta, el uso disciplinado de los recursos disminuye o ambos). Al final, los costos operativos seguirán siendo un tema crítico. Por ejemplo, una aplicación puede abandonar los núcleos disponibles localmente para un mayor número de núcleos en un centro de datos remoto, aceptando el incremento en la latencia de la comunicación. ¿Qué pasaría si pudiéramos optimizar libremente el coste tanto horizontal como verticalmente a través de la plataforma, teniendo en cuenta las diferentes propiedades de cada nivel de plataforma al asignar recursos a las aplicaciones?