Share via


Entrevista MSDN: Una nube en desarrollo

imageComo en cada edición, este mes MSDN Flash ha publicado una entrevista a un profesional destacado: Carlos Guevara. Carlos cuenta con más de 14 años dedicados a la programación Web, desarrollando para importantes empresas de la región, y es además un activo expositor en eventos Microsoft. Con cada vez más compañías trabajando en la nube, compartimos en este espacio sus puntos de vista:

 

  • MSDN Flash: Se multiplican las organizaciones que utilizan aplicaciones y servicios en la nube ¿Qué prestaciones le pedirías a una plataforma cloud para montar allí tus aplicaciones?

Carlos Guevara: Como todo, a nivel de tecnología en el mundo de hoy, los requerimientos y prestaciones que uno espera de una plataforma computacional dependen mucho de las características de la solución a desarrollar, así que posiblemente no exista una respuesta totalmente correcta o que aplique a todas las necesidades de los departamentos de IT de nuestra región. Aun así, hay múltiples consideraciones que deberían tomarse en cuenta siempre, y yo normalmente las agrupo en cuatro categorías diferentes que serían las Características de la plataforma en la nube, Los Niveles de Servicio y Respuesta que se ofrecen, la localización de los recursos y el Costo Beneficio de los mismos.

Posiblemente la más cambiante de estas categorías es la de Características, por lo rápido que se mueve la tecnología en estos momentos, y por lo variado de las necesidades de los diferentes clientes. En mi experiencia algunas de estas características que son de suma importancia incluyen: la facilidad de desarrollar para esa plataforma, la facilidad de administración y delegación de los aspectos de configuración de la misma, la capacidad de integración a los componentes de mi infraestructura y aplicaciones de legado – como lo son mecanismos de autenticación y seguridad, y la integración y exposición de servicios desde y hacia aplicaciones existentes internas y externas entre otras cosas.

Obviamente cuando se contratan servicios de computación en la nube, uno de los principales beneficios es la garantía de escalabilidad y disponibilidad de nuestras aplicaciones hospedadas allí, por lo que el SLA o Acuerdo de Niveles de Servicio/Respuesta, es un factor de extrema importancia. Estos acuerdos deben verse minuciosamente y deben tomarse muy en cuenta a la hora de escoger un proveedor.

Otro tema que muchas personas no toman en consideración, es el lugar final donde van a residir las aplicaciones. El proveedor de servicios debe identificar sus centros de operaciones, ya que muchas veces por temas legales, o temas de accesibilidad de la información, el cliente debe poder tener opciones para escoger dónde deben residir sus datos o aplicaciones y en cuantos lugares deben poder replicarse los mismo.

Por último, el costo siempre es un factor determinante. Especialmente cuando consideramos que uno de los más grandes beneficios de la computación en la nube es el de poder controlar de la forma más granular el costo de nuestras operaciones. Mientras más granular sea el manejo del costo, y más fácil y rápido sea el cambiar la configuración de nuestro esquema en cuanto a instancias, tamaño de las mismas y demás, mejor será el costo beneficio de la misma.

 

  • MSDN Flash: ¿En qué casos prefieres la infraestructura como servicio (IAAS) y en cuáles la plataforma (PAAS)?

CG: Este tema en realidad pareciera muy subjetivo, pero en realidad depende mucho del motivo por el cual una empresa específica escoge utilizar la nube para manejar sus operaciones tecnológicas. Normalmente yo explico la diferencia entre IAAS y PAAS como la diferencia entre un programador de C++ y uno de .NET. El programador de C++ escoge ese lenguaje porque quiere acceso directo a la infraestructura, porque no quiere que se instalen componentes o librerías que no le sirvan a él y prefiere ese nivel de control para garantizar que su aplicación rinde al máximo para su requerimiento, aunque sabe que va a tener que trabajar mucho más para lograr su cometido. El programador de .NET está consciente que utiliza controles y objetos pre-hechos, que están orientados a dar el mejor beneficio para la mayoría de los usuarios, pero no necesariamente optimizados a su solución misma, pero esto no afecta en gran manera sus necesidades.

IAAS es un esquema de computación en la nube que para algunos departamentos de IT parecerá más natural. Mantendrán absoluto control de lo que se instale en sus servidores y de su manejo. Pero este nivel de control implica que no se puede reducir en gran manera la carga a su departamento de IT. El principal objetivo es reducir la cantidad de compras y facilitar los mecanismos de procuraduría para poder crecer más rápidamente, pero cada uno de estos “crecimientos” va a implicar un alto nivel de trabajo, pruebas, etc.

Los usuarios que escojan PAAS cuentan con una solución que elimina grandemente los dolores de cabeza de crecimiento. La aplicación puede crecer sin gran esfuerzo por parte del departamento de infraestructura de tecnología de la empresa. La escalabilidad es más rápida, más fluida y más confiable.

Normalmente yo recomiendo IAAS solo para empresas que necesitan un alto nivel de control, como empresas de desarrollo de software, especialmente las que trabajan en construir aplicaciones tipo SAAS (Software as a Service) y que necesitan mucho control sobre funcionamientos específicos de la infraestructura. También se recomienda para empresas que tengan requerimientos de legado muy específicos, que no estén provistos en las soluciones PAAS normales, pero en ambos casos, es mi experiencia que son muy pocas empresas las que requieren tomar esta decisión.

 

  • MSDN Flash: ¿Qué herramientas recomiendas para desarrollar pensando en la nube?

CG: Existen numerosas herramientas, y en mucho dependen de tu plataforma de desarrollo favorita y el esquema de arquitectura en la nube o proveedor seleccionado. Existe una solución open source llamada Cloud Tools que es muy recomendada especialmente para ciertos tipos de aplicaciones en JAVA y que funciona muy bien con Amazon Elastic Compute Cloud (Amazon EC2), y Google tiene un SDK muy poderoso, aunque un poquito complejo para su solución de computación en la nube.

Claro que yo estoy mucho más parcializado a las soluciones de Microsoft, pues Visual Studio 2008 y 2010 tienen excelentes características para desarrollar soluciones a la nube y en particular hacia Windows Azure. Estas hacen que la programación sea mucho más dinámica y fácil de implementar.

Y para los que quieren empezar a programar hacia AZURE, Microsoft tiene una solución llamada WebMatrix que mediante plantillas y wizards o asistentes, ayuda a crear diferentes tipos de proyectos que se pueden hospedar ya sea localmente o en Windows Azure. En realidad los ejemplos documentación y soluciones que provee WebMatrix son sumamente útiles, prácticos y educativos para los que están aprendiendo o los que quieren soluciones rápidamente.

 

  • MSDN Flash: A partir de la experiencia, ¿hay conceptos de desarrollo que no aplican para la nube?

CG: Al ponderar esta pregunta, inmediatamente vino a mi mente lo mucho que ha avanzado la tecnología de computación en la nube en los últimos tres años. En ese momento hubiera podido contestar con numerosos ejemplos por la falta de integración de mecanismos de autenticación como Active Directory, o integración con modelos de arquitecturas distribuidas, que se hacían imposibles de manejar en la nube.

Pero las empresas y en particular Microsoft han avanzado mucho, muy rápidamente. El hecho que Microsoft haya dedicado los últimos dos PDCs (Professional Developer Conference) a mejoras en Windows Azure como AppFabric, han avanzado tanto la capacidad de su plataforma que no puedo considerar una solución que no sea posible hacer en la nube.

El único factor determinante serían aplicaciones de legado muy antiguas que no pudieran conectarse a sistemas en la nube.

 

  • MSDN Flash: ¿Cuáles son las prestaciones de Windows Azure y SQL Azure que más ayudan a los desarrolladores?

CG: Uno de los puntos más interesantes para mí acerca de Azure es su CDN (Content Delivery Network), lo cual permite que aunque mi aplicación esté hospedada en la región Noreste de Estados Unidos, por ejemplo, existan mecanismos para hacer CACHE DINÁMICO de datos e información de mi aplicación en múltiples lugares alrededor del mundo, para garantizar disponibilidad y tiempo de respuesta de la aplicación hospedada.

Adicionalmente, AppFabric es una de las características que como desarrollador más me orientan a escoger las soluciones de Windows Azure, pues es el “MiddleWare” ideal para facilitar la interconexión de aplicativos, servicios e infraestructura como Active Directory (ADFS) a nuestras aplicaciones. AppFabric reduce la complejidad de aplicativos interconectados como nada que yo haya visto anteriormente.

Por último, la interoperabilidad de AZURE hacia productos y plataformas de múltiples proveedores brinda un gran valor y beneficio al desarrollador. Poder contar con optimizaciones no solo para Visual Studio y las plataformas .NET, sino también para aplicaciones en JAVA y PHP entre otras, y que todas convivan como aplicaciones nativas y de primer mundo en la plataforma es increíblemente valioso, y más cuando no es necesario una gran cantidad de esfuerzo para que estos componentes se hablen entre sí.