El desarrollo y evaluación de aplicaciones en la nube está ganando popularidad, a medida que más empresas ponen en marcha iniciativas informáticas de cloud públicas o privadas. El desarrollo cloud normalmente incluye entornos de desarrollo integrados, componentes de administración del ciclo de vida de la aplicación (por ejemplo, gestión de prueba y de calidad, administración del código fuente y de la configuración, herramientas de entrega continua), y componentes de evaluación de la seguridad de la aplicación.
Aunque los ejecutivos de tecnología y los desarrolladores con experiencia en el desarrollo basado en la nube dicen que hay claros beneficios para el desarrollo en estos ambientes -como el ahorro de costos y el aumento de la velocidad del mercado-, también advierten que hay desafíos y sorpresas a tener en cuenta.
Aún no está claro qué tan común se volverá el desarrollo en la nube. Pero el análisis de la industria muestra que está en aumento. En una nota de investigación de febrero del 2011, Gartner señaló que los clientes que asistieron a los simposios de la empresa en el 2010 expresaron su “fuerte y cada vez mayor interés” en la computación en la nube para mejorar el desarrollo y mantenimiento de las aplicaciones web personalizadas.
“Yo lo veo más en la creación de prototipos y desarrollo de la rama paralela, pero también hay un enorme crecimiento en el espacio de carga y rendimiento de pruebas,” señala Eric Knipp, analista principal de Gartner.
Si está pensando en aventurarse en el desarrollo cloud por primera vez, aquí hay nueve tipos de obstáculos que pueden surgir y sugerencias sobre cómo afrontarlos de parte de los desarrolladores que han hecho el trabajo.
La nube no siempre funciona como el “mundo real”
Los desarrolladores pueden encontrar que la configuración que utilizan en la producción es difícil de replicar en los servicios cloud. Por ejemplo, con una aplicación que se desarrolla en la nube antes de volverla a ejecutar de forma local, es posible que necesite probarla en contra de un sistema antiguo que no se puede simplemente copiar en un servicio en la nube, señala Knipp: “Eso significa que podría requerir muchas más cosas que los desarrolladores tienen que tener en cuenta para lograr que una aplicación de prueba esté en marcha”.
La tecnología de servicio de virtualización podría ayudar, señala Knipp, y los desarrolladores pueden aprovechar las ofertas de mercado que permiten el desarrollo múltiple y paralelo de sucursales. Tomemos el caso de iTKO, que ofrece una suite de software llamada Lisa que ayuda a que las empresas puedan mover sus aplicaciones empresariales hacia la nube.
Los desarrolladores acostumbrados a un desarrollo ajeno a la nube también se pueden sorprender cuando traten de crear aplicaciones web en la nube. Por ejemplo, Greg Taylor, quien construyó una solicitud de registro en línea para la Music Education Association de Ohio, no pensó que iba a necesitar un conocimiento profundo de la estructura de base de datos y cómo los usuarios interactúan en ella cuando se creó la aplicación.
La aplicación, que maneja el registro de los artistas intérpretes o ejecutantes de la escuela en todo el estado, utiliza una base de datos MySQL como back-end y Alfa Five 10,5 de Alpha Software para el front-end. “Yo vengo de un background con FileMaker Pro y ese producto es muy indulgente con respecto a la estructura de base de datos”, señala Taylor. “Un mal diseño aún se puede utilizar con un éxito razonable”.
Pero en desarrollo con MySQL forzó a que Taylor sea extremadamente organizado para que la aplicación web tenga el mejor rendimiento posible. Volver a la estructura de la tabla para agregar más campos toma mucho tiempo, ya que implica rotación entre las diferentes herramientas de desarrollo, Navicat para MySQL y Alfa Five para el diseño de la página web, señala. La primera herramienta crea la estructura de la base de datos, mientras que la segunda crea las páginas con las que el usuario interactúa con el fin de introducir y editar información en la base de datos.
“Esto no debería ser un problema para que los desarrolladores aprovechen una base de datos que ya se ha creado”, agrega Taylor. “Ellos simplemente usarían Alfa Five para desarrollar las páginas web a las que un usuario tendría acceso. En mi caso, estaba desarrollando simultáneamente la base de datos y las páginas web, lo que habría requerido que esté cambiando entre las herramientas de desarrollo si no lo hubiera planeado con cuidado.”
Para evitar ese viaje de ida y vuelta, Taylor tuvo que cambiar su enfoque de desarrollo de bases de datos: “Al desarrollar una clara ERD [diagrama de relación de entidad] con todos los campos necesarios primero, mi aplicación web es eficiente y mi tiempo de desarrollo en general se reduce considerablemente”.
En algunos casos, las herramientas de desarrollo cloud trabajan como en el mundo real -por lo menos, la versión de ayer del mundo real. Jeff Hensley, analista senior de HRIS DaVita, una empresa de cuidados de la salud especializada en diálisis renal, se sorprendió de que los desarrolladores que trabajan en la nube necesitaran utilizar las herramientas de línea de comandos, XML y SQL, “lo que me recordó los viejos tiempos de DOS”. Él esperaba que ese enfoque de la vieja escuela cambie con el tiempo a medida que aumenta la adopción.
DaVita está utilizando tanto las plataformas de entrega de aplicaciones basadas en la nube, y los servidores alojados para desarrollar y entregar los recursos humanos de almacenamiento de datos y aplicaciones de inteligencia empresarial.
Algunas aplicaciones no son las ideales para el desarrollo cloud
Cuanto más difíciles de acceder o de replicar sean los sistemas con las aplicaciones integradas, más difícil es desarrollar y probar los recursos de cloud computing, señala Knipp.
Por ejemplo, Dan Stueck, vicepresidente de TI de Faith Educational Ministries, evita el desarrollo de aplicaciones de gama alta en las nubes que tienen extremas medidas o reglamentaciones de seguridad de los datos, o se basan en proyectos heredados de codificación, como los de Cobol. “Es probablemente mejor guardarlas en casa”, agrega, “la primera tiene que ver con las preocupaciones evidentes de seguridad, y la segunda debido al problema de la “lengua muerta” “.
Cuando Stueck ha utilizado la nube ha sido para ejecutar un servidor de desarrollo en los servicios cloud públicos de Amazon.com, y para construir un sistema de información estudiantil, archivo o expediente académico, y la aplicación de venta de libros escolares en la nube.
A los desarrolladores a menudo no les gusta el desconocido territorio de la nube
La computación en la nube todavía es relativamente nueva para muchas organizaciones, y puede ser una tecnología de punta, incluso en el ámbito del desarrollo. 20/20 Cos, un proveedor externo de servicios de ventas, utiliza la plataforma cloud Force.com de Salesforce.com para construir una aplicación personalizada que permite que los representantes externos ingresen datos de ventas en la herramienta de nómina de facturas de 20/20.
“Lo que probablemente fue más inesperado es cómo todo el proyecto de desarrollo cloud fue recibido por la gerencia y el equipo de ventas y todo aquel que utilizaba el sistema, y lo mal que fue recibido por la organización de TI y desarrolladores particulares”, señala Mark Warren, arquitecto en jefe de 20/20.
El personal de TI estaba acostumbrado a trabajar con Microsoft .Net, SQL Server, Java y otras plataformas tradicionales de desarrollo, señala Warren, y Force.com es un modelo completamente diferente. “Si conoces SQL y Java, que es su caja de herramientas, no vas a querer ir a esta plataforma completamente extraña”, agrega Warren.
Como resultado, la aplicación de ventas fue desarrollada principalmente por el personal del negocio, no por los desarrolladores de TI. Lo que trajo su propio conjunto de desafíos, señala Warren; el mayor de los cuales fue la falta de entendimiento entre los empresarios sobre el cambio de administración y el gobierno de TI. “TI tiene un nivel de disciplina al que los empresarios no están acostumbrados”, indica Warren. “Tuvimos que ponerlos al día en cuestiones de cambio de administración”.
Como para hacer frente a la renuencia de las personas encargadas de la tecnología a desarrollar en un ambiente cloud, hay programas que TI puede implementar para ayudar a la adopción del cloud computing interno, señala Warren. “La capacitación es sin duda un buen método para facilitar”, agrega. “Sin embargo, a menos que la cultura de TI esté abierta a nuevos métodos y tecnologías, el cambio organizacional [conseguir nuevos desarrolladores] puede ser la única opción”.
La falta de documentación obstaculiza a los desarrolladores cloud
Jensley de DaVita se sorprendió por la falta de documentación para ayudar a que los desarrolladores entiendan la nube y las herramientas y recursos que se pueden utilizar para crear aplicaciones en ese entorno.
“Definitivamente, me gustaría esperar que eso cambie a medida que aumente la demanda, y cada vez más y más empresas comiencen a adaptarse al concepto cloud”, señala Hensley. “Hemos sido capaces de luchar contra eso asociándonos con una firma de consultoría”.
Los problemas de red pueden acosar a los entornos cloud privados
El desarrollo de la nube a veces significa el desarrollo de su propia nube privada, que puede no tener las capacidades multitenancy(multiusuario) y capacidades de movimiento de carga que mantienen las aplicaciones disponibles 24/7. En un entorno de cloud privado, “uno de los retos es diseñar y prever el mantenimiento programado y no programado de los servidores, y la forma de fallar con gracia”, señala David Intersimone, vicepresidente de relaciones con desarrolladores en Embarcadero Technologies, un proveedor de herramientas de gestión de base de datos.
Embarcadero está utilizando su centro de datos virtualizado para la construcción y evaluación de aplicaciones. “Para las nubes privadas internas, tenemos un par de opciones: elegir la programación de fecha/hora, y esperar cuando un servidor esté listo en cierto orden”, señala Intersimone. “Hay procesos de prueba automatizados construidos y de humo que se están ejecutando todo el tiempo en nuestra nube privada principal y también en las oficinas de desarrollo regional”.
Para conseguir un entorno más accesible, Intersimone señala que está buscando en un recipiente de nubes y una red virtual privada de CohesiveFT que puede ser instalada en las nubes públicas y privadas para proporcionar escalamiento, conmutación por error, recuperación de desastres y preparación ante desastres.
Otras cuestiones que pueden afectar el desarrollo y las pruebas implican retrasos en la red, la latencia y el tamaño de las tuberías de la red, especialmente en ciertas partes del mundo. Embarcadero cuenta con centros de investigación y desarrollo en Scotts Valley, California, Monterey, California, Toronto, San Petersburgo, Florida, y Iasi, Rumania, además de una pizca de equipos más pequeños y personas en todo el mundo.
La diversidad geográfica del desarrollo de entornos de Embarcadero “hace más difícil sincronizar los check-ins, construcciones, y pruebas automatizadas”, agrega Intersimone. Para resolver algo de esto, los desarrolladores hacen desarrollos locales y regionales, así como en el código de registro de entrada, en los servidores virtuales a disposición de todos. Los desarrolladores también hacen construcciones locales en sus propias máquinas. Embarcadero se asegura que estos no se desincronicen con sus versiones maestras en la nube privada utilizando Subversion, una herramienta de código abierto para el control de código fuente.
“Cuando se produce una construcción, una prueba automatizada se ejecuta para validarla”, señala Intersimone. “Entonces las notificaciones se van a todos los equipos de desarrollo y la construcción se envía automáticamente sobre una muralla china hacia un gran número de máquinas virtuales de pruebas automatizadas en nuestros centros de desarrollo”. Evaluaciones automatizadas y manuales se realizan en la construcción resultante para verificar su estado, y se envían mensajes de correo electrónico a otros miembros del equipo después que se ha completado este proceso. “Todo esto se repite continuamente durante la vida de un proyecto de desarrollo”, agrega.
Es fácil dejar correr el medidor en la nube innecesariamente
Otro problema potencial es gastar dinero en honorarios cloud. Los desarrolladores pueden fácilmente olvidar o negarse a apagar las máquinas virtuales que no están utilizando. “He escuchado de algunos clientes que permiten que sus desarrolladores se vuelvan salvajes con los recursos de la máquina virtual, y a veces dejan cosas en marcha y funcionando, por ejemplo durante un fin de semana”, señala Knipp de Gartner. “Cuando estaba en un servidor capitalizado interno, no era gran cosa. Pero cuando está con un medidor de uso o arrendados como en el cloud computing público, es una pérdida de dinero”.
Knipp señala que espera que esto se convierta en un nuevo desafío para las empresas, a medida que lanzan iniciativas cloud privadas.
Aunque hay poco riesgo de conseguir una gran e inesperada factura por el uso de una máquina virtual para desarrollo en una nube privada, “en un entorno de auto servicio, IaaS privado, el desarrollador puede activar las máquinas virtuales y no desactivarlas”, agrega Knipp. “Esto, efectivamente, consumirá los recursos de las máquinas que no están siendo debidamente utilizadas y podría resultar en que la organización compre demasiada capacidad una vez que ha empezado la planificación”.
Las licencias cloud pueden contener sorprendentes restricciones de implementación
Entre los temas no técnicos de la nube que pueden tener un impacto en el desarrollo están las restricciones de licencia. Hace dos años, Kelly Services, una agencia nacional de empleados eventuales, decidió utilizar desarrollo basado en la nube para muchas de sus propias aplicaciones, con la plataforma Salesforce.com de Force.com actuando como vehículo de entrega.
El desarrollo cloud ha traído beneficios tales como un tiempo de respuesta más rápido en el desarrollo de aplicaciones y la reducción de los costos, señala Joe Drouin, CIO de Kelly Services. Pero la compañía también se encontró con algunos problemas inesperados con las licencias, en concreto respecto a qué tipos de puestos de usuarios había y qué limitaciones tenían. Por ejemplo, un banco puede tener un número determinado de objetos a los que un usuario podría tener acceso. Como resultado, “en algunos puntos estuvimos sorprendidos por lo que se podía o no se podía hacer” con el desarrollo, señala Drouin.
La integración puede ser más difícil de solucionar
La integración de nuevas aplicaciones con las ya existentes puede ser una parte clave del proceso de desarrollo, y la nube trae aún más desafíos desde una perspectiva de integración, Drouin ha dicho: “Con el cloud computing, las empresas no suelen tener acceso abierto a la infraestructura, aplicaciones y plataformas de integración de sus proveedores”.
Kelly ha experimentado problemas de rendimiento entre aplicaciones basadas en la nube y sus sistemas en las instalaciones, así como entre varias aplicaciones en la nube. Es difícil solucionar estos problemas; a menudo la empresa solo puede hacer seguimiento de las transacciones en su propia infraestructura, indica Drouin.
Para minimizar los problemas de integración, los desarrolladores de Kelly intentan utilizar las API de los proveedores cloud siempre que sea posible; lo que ha sido bastante fácil de hacer, porque muchos proveedores de nube de exponen su API, señala Drouin.
El rápido ritmo de cambio de la nube puede ser difícil de mantener
El proveedor de servicios de TI Avanade utiliza la plataforma cloud Azure de su dueño, en parte, Microsoft, junto con herramientas de desarrollo de Microsoft, para desarrollar y evaluar tanto el trabajo interno como del cliente.
La familiaridad con las herramientas de desarrollo y la velocidad de los entornos de desarrollo y evaluación han sido ventajosas para la empresa, señala Graham Astor, director de soluciones globales de Avanade. Sin embargo, “estar en una plataforma cloud de rápido desarrollo significa que es necesario actualizar las mejores prácticas con frecuencia”, añade.
Azure se encuentra en un ciclo de lanzamiento de mejoras de rendimiento y características cada dos meses, por lo que Avanade se reúne mensualmente con los miembros de los equipos de producto de Microsoft para obtener lo que viene de primera mano. ¿Otros podrían obtener este tipo de acceso? “No tengo idea”, indica Knipp, “pero es del interés de Microsoft conseguir la mayor cantidad de empresas de consultoría como sea posible a bordo de Azure, con el fin de impulsar la adopción”.
A pesar de la curva de aprendizaje, el desarrollo cloud es atractivo. A pesar de los problemas potenciales, para muchas organizaciones tiene sentido desarrollar aplicaciones en la nube en vez limitarse a los métodos tradicionales; por esa misma razón, la computación en nube, en general, hace que tenga sentido: la elasticidad de los recursos y el costo, y la complejidad operacional reducida, las cuales conducen a menor tiempo de finalización.