02.23.10
Posted in Arquitectura at 3:04 pm by Miguel
Desde hace unos años atrás los entornos virtualizados se abren camino y cada día se encuentran presentes con mayor frecuencia en el mundo del desarrollo de aplicaciones.
La virtualización presenta una mejora principal que es el ahorro de costes asociado a la compra de servidores. Ya no va a ser necesario comprar n máquinas encargadas de soportar servidores web, servidores de base de datos, servidores de ficheros, correo electrónico. Cada máquina viene a representar un coste en Hardware más que significativo. Con la virtualización es posible disponer de un único soporte hardware que albergue n servidores virtualizados a nivel de software y que puedan dar soporte a las necesidades de la organización. Es mucho más económico adquirir uno o dos servidores para la virtualización, donde albergar n máquinas virtuales, que n servidores físicos.
Otra de las mejoras presentes con la virtualización es la escabilidad, la portabilidad y el control. Desde nuestros servidores de entornos virtualizados se puede gestionar de forma centralizada qué máquinas virtuales están activas en un momento dado así como el consumo de memoria ram y de disco de cada una de ellas. Esto nos permite tomar decisiones, y poder en un momento dado apagar una de las máquinas virtuales que no esté en uso para liberar recursos del servidor de virtualización. El despliegue de nuevos entornos virtualizados se torna también más sencillo, una vez disponemos de una máquina virtual modelo, podemos realizar réplicas para los diferentes entornos y/o proyectos, que queden expuestas a los desarrolladores una vez se han publicado en el servidor de virtualización pertinente. Respecto a la escalabilidad, las máquinas virtuales puede ser configuradas de forma dinámica con un tamaño de disco y memoria determinados, que puede variar en el tiempo, por lo que a mayores recursos necesarios para la máquina virtual, vamos a poder escalarlos mediante configuración (siempre que la máquina física disponga de los medios necesarios, claro).
Es común el uso de entornos virtualizados para dar soporte al desarrollo de aplicaciones, como por ejemplo para crear un entorno de desarrollo donde participen diferentes entidades como servidores de aplicaciones y de base de datos. También es fácil encontrar que incluso se utilice esta práctica para entornos pre-productivos.
Respecto a las pegas de estos sistemas, la principal problemática asociada es la del rendimiento, de ahí que se descarte el uso de la virtualización en muchos casos en entornos de producción, donde la velocidad de respuesta en muchos casos puede resultar crítica.
En el mercado podemos encontrar dos productos principales que ofrecen soporte respecto a la virtualización: VMWare y Virtual PC de Microsoft.
Saludos.
Miguel.
Permalink
02.16.10
Posted in Humor, Programación at 11:43 pm by Miguel
Uso de genéricos.
Ejemplo de Definición de Clase Genérica
public class Recurso<T>
{
T proyecto;
public void ResolverProyecto(T proyecto)
{
//TODO: Incluir código
}
}
Ejemplo de Instanciación
Recurso<granmarron> obj = new Recurso<granmarron>();
Conclusión
Al mal tiempo, buena cara.
Saludos.
Permalink
02.06.10
Posted in AgilePoint, Arquitectura, Team Foundation Server at 12:56 pm by Miguel
A continuación un simple ejemplo de lo que podría ser un entorno de desarrollo para N desarrolladores trabajando conjuntamente en el desarrollo de un aplicativo sobre AgilePoint BPM, y con la gestión de código fuente de la aplicación mediante Team Foundation Server.

El entorno del desarrollador que podría distribuirse facilmente mediante máquinas virtuales, cuenta con todo lo necesario para la construcción. Visual Studio 2008 SP1 + Framework 3.5 SP1 para trabajar con las últimas versiones estables y consolidadas en el mercado de tecnología .NET. En el caso de estar trabajando en el desarrollo de aplicaciones web, un IIS local donde desplegar las aplicaciones web y hacer las pertinentes pruebas de desarrollo y debugs. A Visual Studio se le incorpora el plugin AgilePoint Developer para el desarrollo a medida de nuevos AgileWorks, AgileParts y AgileConnectors. Finalmente se cuenta con la disponibilidad de Microsoft Visio 2007 más el plugin AgilePoint Envision, para el desarrollo en local de las plantillas (flujos de trabajo) de AgilePoint.
En el repositorio central se almacena todo el código fuente generado por los desarrolladores mediante el uso de Team Foundation Server, que garantiza la trazabilidad del código, gestión de versiones, etc; además de poder convertirse en una herramienta de gestión y control centralizado del trabajo asociado al desarrollador. Asignación de trabajo mediante el uso de Work Items, y el control de los bugs existentes en la aplicación son algunas de sus capacidades. Al mismo tiempo, mientras el uso de Sharepoint, permite crear fácilmente portales asociados a cada uno de los proyectos en desarrollo, donde el equipo de construcción puede compartir documentación de forma centralizada y todo tipo de información de gestión o técnica asociada a cada uno de los proyectos. Debemos tener en cuenta que este entorno deberá mantener también el control de versiones asociado a las plantillas de Visio que se vayan generando mediante NVision.
El entorno de desarrollo de Agilepoint, que centraliza tanto el AgilePoint Server, la gestión web del mismo a través del Enterprise Manager, y el interfaz de servicios web que permite gestionar de forma remota y transparente el acceso a las facilidades que provee el motor de Agilepoint.
Finalmente se expone un último entorno, representativo de cada tipo de aplicación, que no hace más que definir la posible existencia de un tercer entorno de integración, necesario para el desarrollo de la aplicación, como otros servicios de comunicación u otros aplicativos existentes en el sistema sobre los que nuestra aplicación en desarrollo deba integrarse.
Un saludo.
Miguel.
Permalink