Desarrollo en la nube: 9 trucos que debe conocer antes de comenzar

El desarrollo y las pruebas de aplicaciones en la nube están ganando popularidad a medida que más empresas lanzan iniciativas de computación en la nube pública y privada. El desarrollo en la nube generalmente incluye entornos de desarrollo integrados, componentes de gestión del ciclo de vida de las aplicaciones (como gestión de pruebas y calidad, gestión de configuración y código fuente, herramientas de entrega continua) y componentes de pruebas de seguridad de aplicaciones.

Aunque los ejecutivos y desarrolladores de tecnología con experiencia en el desarrollo basado en la nube dicen que el desarrollo en estos entornos tiene beneficios claros, como el ahorro de costos y una mayor velocidad de comercialización, también advierten que hay desafíos y sorpresas a tener en cuenta.

[Obtenga las explicaciones y los consejos serios que necesita para aprovechar realmente la computación en la nube en el informe especial en PDF de 21 páginas sobre computación en la nube de los editores. | Manténgase al día en la nube con el boletín informativo 'Cloud Computing Report. ]

No está claro qué tan común será el desarrollo en la nube. Pero el análisis de la industria muestra que va en aumento. En una nota de investigación de febrero de 2011, Gartner dijo que los clientes que asistieron a los simposios de la firma en 2010 expresaron "un gran interés" en la computación en la nube para mejorar el desarrollo y mantenimiento de las aplicaciones web personalizadas existentes.

"Lo veo más en la creación de prototipos y el desarrollo de ramas paralelas, pero también hay un gran crecimiento en el espacio de pruebas de carga y rendimiento", dice Eric Knipp, analista de investigación principal de Gartner.

Si está buscando aventurarse en el desarrollo de la nube por primera vez, aquí hay nueve tipos de obstáculos que puede encontrar y sugerencias sobre cómo abordarlos de los desarrolladores que realmente han hecho el trabajo.

Problema 1 del desarrollo en la nube: la nube no siempre funciona como el "mundo real"

Los desarrolladores pueden encontrar que la configuración que utilizan en producción es difícil de replicar en los servicios en la nube. Por ejemplo, con una aplicación que desarrollas en la nube antes de volver a ejecutarla localmente, es posible que debas probar con un sistema heredado que no puedes simplemente copiar en un servicio en la nube, dice Knipp: "Eso significa que puede haber muchos más cosas que los desarrolladores tienen que eliminar para poner en marcha una aplicación de prueba ".

La tecnología de virtualización de servicios puede ayudar, dice Knipp, y los desarrolladores pueden aprovechar las ofertas del mercado que permiten el desarrollo de sucursales múltiples / paralelas. Tomemos el caso de iTKO, que ofrece un paquete de software llamado Lisa que ayuda a las empresas a trasladar aplicaciones empresariales a la nube.

Los desarrolladores acostumbrados al desarrollo fuera de la nube también pueden encontrar sorpresas cuando se trata de crear aplicaciones web en la nube. Por ejemplo, Greg Taylor, que creó una aplicación de registro en línea para la Asociación de Educación Musical de Ohio, no esperaba que necesitara una comprensión tan profunda de la estructura de la base de datos y cómo los usuarios interactuarían con ella cuando creó la aplicación.

La aplicación, que maneja el registro de intérpretes de música escolar en contenidos musicales estatales, utiliza una base de datos MySQL como back-end y Alpha Five 10.5 de Alpha Software para el front-end. "Vengo de una experiencia en FileMaker Pro [y] ese producto es extremadamente indulgente con respecto a la estructura de la base de datos", dice Taylor. "Un diseño deficiente todavía se puede utilizar con un éxito razonable".

Pero desarrollar con MySQL obligó a Taylor a ser extremadamente organizado para que la aplicación web tuviera el mejor rendimiento posible. Volver a la estructura de la tabla para agregar más campos lleva mucho tiempo, ya que implica rotar entre diferentes herramientas de desarrollo, Navicat para MySQL y Alpha Five para el diseño de la página web real, dice. 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 para ingresar y editar información en la base de datos.

"Esto puede no ser un problema para los desarrolladores que aprovechan una base de datos que ya ha sido creada", dice Taylor. "Simplemente usarían Alpha Five para desarrollar las páginas web a las que accedería un usuario. En mi caso, estaba desarrollando simultáneamente la base de datos y las páginas web, lo que me habría obligado a cambiar entre las herramientas de desarrollo si no hubiera planeado cuidadosamente."

Para evitar ese continuo viaje de ida y vuelta, Taylor tuvo que cambiar su enfoque de desarrollo de la base de datos: "Al desarrollar un ERD [diagrama de relación de entidades] claro con todos los campos necesarios primero, mi aplicación web es eficiente y mi tiempo de desarrollo general se reduce considerablemente".

En algunos casos, las herramientas de desarrollo en la nube funcionan como el mundo real, al menos, como la versión de ayer del mundo real. Jeff Hensley, analista senior de HRIS en DaVita, una firma de atención médica especializada en diálisis renal, se sorprendió de que los desarrolladores que trabajaban en la nube necesitaran usar herramientas de línea de comandos, XML y SQL, "lo que me recordó los viejos tiempos de DOS". Él espera que el enfoque de la vieja escuela cambie con el tiempo a medida que aumenta la adopción.

DaVita utiliza plataformas de entrega de aplicaciones basadas en la nube y servidores alojados para desarrollar y entregar aplicaciones de inteligencia empresarial y almacenamiento de datos de recursos humanos.

Problema 2 del desarrollo en la nube: algunas aplicaciones no son ideales para el desarrollo en la nube

Por ejemplo, Dan Stueck, vicepresidente de TI para Faith Educational Ministries, evita el desarrollo de aplicaciones de alta gama en la nube que tienen seguridad de datos extrema o restricciones regulatorias, o que dependen de proyectos de codificación heredados, como los de Cobol. "Probablemente sea mejor mantener esos dos en casa", dice, "el primero debido a las obvias preocupaciones de seguridad, y el segundo debido al problema del idioma 'muerto'".

Donde Stueck ha utilizado la nube es para ejecutar un servidor de desarrollo en el servicio de nube pública de Amazon.com y para construir un sistema de información de estudiantes, un archivo de expedientes académicos de estudiantes y una aplicación de venta de libros escolares en casa en la nube.

El problema del desarrollo en la nube 3: a los desarrolladores a menudo no les gusta el territorio desconocido de la nube

"Lo que probablemente fue más inesperado fue qué tan bien recibió todo el proyecto [de desarrollo en la nube] por parte de los equipos de administración y ventas y todos los que usan el sistema, [y] qué tan mal fue recibido por la organización de TI y en particular los desarrolladores, "dice Mark Warren, arquitecto jefe en 20/20.

La gente de TI estaba acostumbrada a trabajar con Microsoft .Net, SQL Server, Java y otras plataformas de desarrollo tradicionales, dice Warren, y Force.com era un modelo completamente diferente. "Si conoces SQL y Java, esa es tu caja de herramientas, y no querrás ir a esta plataforma completamente ajena que está entrando", dice Warren.

Como resultado, la aplicación de ventas fue desarrollada principalmente por personal comercial, no por desarrolladores de TI. Eso trajo su propio conjunto de desafíos, dice Warren, el mayor de los cuales fue la falta de comprensión entre los empresarios sobre la gestión del cambio y el gobierno de TI. "TI tiene un nivel de disciplina que los empresarios no están acostumbrados a imponer", dice Warren. "Tuvimos que ponerlos al tanto de los problemas de gestión de cambios".

En cuanto a abordar la renuencia de la gente de tecnología a desarrollar en un entorno de nube, hay programas que TI puede implementar para ayudar a adoptar la computación en nube internamente, dice Warren. "La formación es sin duda un buen método para facilitar", dice. "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".

Desarrollo en la nube gotcha 4: la falta de documentación obstaculiza a los desarrolladores de la nube

"Definitivamente esperaría que eso cambie a medida que aumenta la demanda y más y más empresas comienzan a adaptar el concepto de nube", dice Hensley. "Pudimos combatir eso al asociarnos con una firma consultora".

Problema 5 del desarrollo en la nube: los problemas de red pueden afectar a los entornos de la nube privada

Embarcadero está utilizando su centro de datos virtualizado para la creación y prueba de aplicaciones. "Para las nubes privadas internas, tenemos un par de opciones: elegir la fecha / hora programadas y establecer qué servidores se realizan en un orden determinado", dice Intersimone. "Hay procesos de construcción y prueba de humo automatizados que se ejecutan todo el tiempo en nuestra principal nube privada y también en las oficinas de desarrollo regionales".

Para obtener un entorno más disponible, Intersimone dice que está buscando un contenedor en la nube y una oferta de red privada virtual de CohesiveFT que se puede instalar en nubes públicas y privadas para proporcionar escalado bajo demanda, conmutación por error, recuperación ante desastres y preparación ante desastres.

Otros problemas que pueden afectar el desarrollo y las pruebas son los retrasos y la latencia de la red y el tamaño de las tuberías de la red, especialmente en determinadas partes del mundo. Embarcadero tiene centros de investigación y desarrollo en Scotts Valley, Calif., Monterey, Calif., Toronto, St. Petersburg, Fla. E Iasi, Rumania, además de algunos equipos e individuos más pequeños en todo el mundo.

El entorno de desarrollo geográficamente diverso de Embarcadero "dificulta la sincronización de registros, compilaciones y pruebas automatizadas", dice Intersimone. Para resolver algo de esto, los desarrolladores realizan compilaciones locales y regionales, así como en el registro de código, en los servidores virtuales disponibles para todos. Los desarrolladores también realizan compilaciones locales en sus propias máquinas. Embarcadero asegura que estos no se desincronicen con las versiones maestras en la nube privada mediante el uso de Subversion, una herramienta de código abierto para el control del código fuente.

"Cuando ocurre una compilación, se ejecuta una prueba automatizada para validar la compilación", dice Intersimone. "Luego, las notificaciones se envían a todos los equipos de desarrollo y la compilación pasa automáticamente por un muro chino a una gran cantidad de máquinas virtuales de prueba automatizadas en nuestros centros de desarrollo". Se realizan pruebas automáticas y manuales en la compilación resultante para verificar el estado, y los correos electrónicos se envían a otros miembros del equipo después de que se completa este proceso. "Todo esto sucede continuamente durante la vida de desarrollo de un proyecto", dice.

El desarrollo en la nube tiene razón 6: es fácil dejar que el medidor funcione innecesariamente en la nube

Otro problema potencial es gastar dinero en tarifas de la nube. Los desarrolladores pueden olvidar o dejar de apagar fácilmente las máquinas virtuales que no están usando. "He escuchado de algunos clientes que permiten que los desarrolladores se vuelvan locos con los recursos de las máquinas virtuales, que a veces los desarrolladores simplemente dejaban las cosas en funcionamiento, digamos durante un fin de semana", dice Knipp de Gartner. "Cuando estaba en un servidor interno con capitalización, esto no era gran cosa. Pero cuando está en recursos alquilados y medidos por uso como con la computación en nube pública, esto es una pérdida de dinero".

Knipp dice que espera que esto se convierta en un nuevo desafío para las empresas a medida que implementan iniciativas de nube privada.

Si bien hay poco riesgo en recibir una factura grande e inesperada por el uso de la máquina virtual del desarrollador en una nube privada, "en un entorno IaaS privado de autoservicio, un desarrollador puede activar las máquinas virtuales y nunca apagarlas", dice Knipp. "Éstos consumirán efectivamente los recursos de las máquinas que no se están utilizando de manera efectiva y podrían resultar en que la organización compre demasiada capacidad a medida que la planificación se desvíe".

Desarrollo en la nube gotcha 7: las licencias en la nube pueden contener restricciones de implementación sorprendentes

Entre los problemas no técnicos de la nube que pueden tener un impacto en el desarrollo se encuentran las restricciones de licencia. Hace dos años, Kelly Services, una agencia temporal nacional, decidió utilizar el desarrollo basado en la nube para muchas de sus aplicaciones locales, con la plataforma Force.com de Salesforce.com actuando como vehículo de entrega.

El desarrollo de la nube ha traído beneficios como un tiempo de respuesta más rápido en el desarrollo de aplicaciones y menores costos, dice Joe Drouin, CIO de Kelly Services. Pero la compañía también encontró algunos problemas inesperados con las licencias, específicamente con respecto a los tipos de asientos de usuario que tenía y las limitaciones que tenían. Por ejemplo, un asiento puede tener un número determinado de objetos a los que puede acceder un usuario. Como resultado, "en algunos puntos nos sorprendió lo que podíamos o no podíamos hacer" con el desarrollo, dice Drouin.

Problema 8 del desarrollo en la nube: la integración puede ser más difícil de solucionar