Tradicionalmente, conforme los precios del hardware fueron descenciendo, las empresas invirtieron en nuevos servidores conforme sus requerimientos crecían. El esquema de arquitectura utilizado era de 1 a 1, en el cual un servidor físico estaba dedicado a alojar una única aplicación empresarial.
En este tipo de infraestructura, los servidores fueron infrautilizados ya que sólo estaban siendo aprovechados al 10-15% de su máxima capacidad. Pero además nos econtrabamos ante la situación de que a mayor demanda de servidores mayor demanda de espacio, consumo energético, necesidades de refrigeración y complejidad de red.
Ante esta situación, una nueva tecnología permite solucionar todas estos complejidades y aprovechar al máximo los recursos hardware disponibles: la virtualización. La virtualización es una tecnología que abstrae el sistema operativo de la capa de hardware. De este modo, los recursos hardware son compartidos por diferentes sistemas operativos que funcionan de manera independiente como si fueran servidores dedicados en sí mismos.
¿Qué recursos hardware se comparten? Habitualmente capacidad de procesamiento (CPU), memoria (RAM), almacenamiento y red.
Teniendo en cuenta todos estos beneficios, cada vez son más las empresas que están implementando infraestructuras de virtualización con el objetivo de reducir costes a través de la consolidación de hardware.
Sin embargo, en muchos casos la implantación de una infraestructura de virtualización no es tan simple. Es habitual que se pasen por alto factores como la conectividad en el acceso a datos y sus efectos en el rendimiento de la aplicación.
Durante años, los fabricantes han hecho grandes avances en la optimización de bases de datos así como en el rendimiento de los procesadores y otros componentes hardware. Como resultado de estos avances, el cuello de botella en el rendimiento de las bases de datos se ha trasladado a los driivers (software) que permiten la conectividad entre las aplicaciones y el sistema de bases de datos utilizado.
En entornos tradicionales (no virtualizados), la capa de conectividad a datos (relativa a los drivers) suma entre el 75%-95% del tiempo total utilizado para acceder a una base de datos. En entornos virtualizados, con recursos compartidos por varias máquinas virtuales, se introducen complicaciones adicionales en el acceso a datos:
1.- Sobrecarga introducida por la virtualización
En sí mismo, el software de virtualización utilizado consume recursos. Es lógico pensar que cualquier persona que considere implementar un entorno de virtualización, planifique la capacidad de hardware requerida por sus aplicaciones.
2.- Requerimientos de la aplicación
Las aplicaciones cada vez requieren más recursos. Hasta ahora la solución más habitual era añadir más RAM, pero esto va en contra de los objetivos de la virtualización.
3.- Over-provisioning en entornos virtualizados
Es habitual que, para justificar la inversión en virtualización, se haga overprovisioning (máqinas virtuales configuradas de tal manera que los recursos máximos que puedan utilizar superen a los disponibles físicamente) de los recursos hardware lo que ha menudo desemboca en una degradación en el rendimiento.
Por lo tanto, para poder aprovechar al máximo los recursos hardware sin afectar al rendimiento de la aplicación, todos los componentes virtualizados deben ejecutarse tan eficientemente como sea posible. Entre ellos los drivers de acceso a datos, que deben estar optimizados para una arquitectura de virtualización. Si éstos no son eficientes en la utilización de CPU, memoria, almacenamiento y red, los esfuerzos realizados en virtualizar pueden resultar inútiles.
Teniendo en cuenta el hardware disponible, el entorno en que será utilizada nuestra aplicación y el número de accesos concurrentes que tenga, podremos decantarnos por los drivers que utilizamos habitualmente (ODBC, JDBC, ADO.NET, etc) o por soluciones ad-hoc específicas para entornos virtualizados que aumentan el rendimiento en el acceso a datos a nivel de driver.
Actualmente, uno de los líderes del mercado en soluciones de este tipo es el fabricante Progress DataDirect. Éste provee drivers para acceder a las principales bases de datos del mercado: Oracle, DB2, SQL Server, Sybase, Salesforce, MySQL y PostgreSQL. Según estudios realizados por el propio fabricante, consigue disminuir el uso de CPU y el tiempo de respuesta en el acceso a base de datos en entornos virtualizados.