Cosas a tener en cuenta cuando desarrollas aplicaciones Cloud

 

 

No es habitual encontrar gente que hable sobre los desarrolladores en el mundo del Cloud Computing. Estamos tan cegados por las facilidades que nos ofrece, que nos olvidamos que no todas las aplicaciones están preparadas para aprovechar sus ventajas.

No lo entiendo.

La única explicación que encuentro a esto es la inmadurez del paradigma. Vamos, que todavía no hay mucha gente que se haya dedicado a desarrollar aplicaciones que aprovechen al máximo la potencia del Cloud Computing. Y los que lo han hecho, son todavia los visionarios y los ‘early adopters’.

Paul Krill en Infoworld enumera algunas de las cosas a tener en cuenta. Resumiendo:

  • Evita almacenar el estado o estados de tu aplicacion en cualquier sitio que no sea la base de datos. La vieja cantinela del ‘El estado es el infierno’ que casi todos los desarrolladores web que han tenido que desplegar en cluster ya conocen. Si un nodo falla, debe poderse recuperar el estado con facilidad.
  • Diseña tu aplicación para que autoaprovisione sus recursos. Las aplicaciones solicitarán los recursos que necesiten bajo demanda, cuando lo necesiten. Es un cambio fundamental respecto a las aplicaciones enterprise tradicionales, y único del Cloud Computing.
  • Usa las bases de datos en La Nube adaptándote a sus características. Las bases de datos en La Nube no siguen el modelo relacional. Así que hay que diseñar las aplicaciones teniendo en cuenta las nuevas formas de acceso a datos. Especialmente importante es por ejemplo que la propiedad de Consistencia ACID no se garantiza en algunos proveedores Cloud, como Amazon SimpleDB, que implementa ‘Consistencia Eventual‘, en mi opinión una fuente potencial de problemas enorme.
  • Las aplicaciones en la Nube cambian más rápido. Parece que es un hecho esto; es más fácil incorporar cambios en aplicaciones tipo SaaS. Si te basas en ellas, debes tener en cuenta que pueden cambiar y mucho. Y tus aplicaciones también pueden cambiar más. Y es que una característica del Cloud Computing como la autogestión de los entornos tiene como efecto secundario la subida más frecuente de cambios a los entornos de producción.
  • Cuidado con los modelos de precios y licencias. Cada proveedor de Cloud tiene su propio esquema de precios, así que haz tus cuentas antes de desarrollar, para que no haya sorpresas. Por ejemplo, en una aplicación desarrollada que usaba Amazon SimpleDB fui capaz de reducir la factura mensual en más de un 90% implementando una caché de nivel 2 en la aplicación.

¿Qué otras cosas debemos considerar en el diseño de nuestras aplicaciones?

Relacionado:

  1. ¿Serán los humanos irrelevantes monitorizando aplicaciones Cloud?
  2. Amazon anuncia su Virtual Private Cloud, o como decir Privada cuando debería decir Pública
  3. Abiquo pagará hasta 3000€ a quien desarrolle aplicaciones con su framework
  • http://josempelaez.com josempelaez

    Diego, una pregunta. ¿Estaría preparada para ser explotada en una cloud una aplicación montada sobre un SGBD grid y un servidor de aplicaciones Java?

    Es decir, si el software de base empleado está ya diseñado para poder correr sobre varios ordenadores que se reparten la carga dinámicamente, ¿qué más hay que tener en cuenta?

  • http://nubeblog.com Diego Parrilla

    @josempelaez,

    si fuera un talibán cloud (a veces lo soy), te diría que lo que tienes es una aplicación preparada para escalar de manera horizontal hasta cierto punto. Ese punto viene dado normalmente no solo por diseño de tus arquitectos, sino de las decisiones de los arquitectos de los productos que usas. Si usas stacks típicos tipo LAMP, o .NET+IIS+ SQL, o Java+Weblogic+Oracle (u otra combinación J2EE), cada producto tiene su límite. Así que ese ‘Nirvana’ de escalabilidad ilimitada del Cloud Computing no es posible. Puedes tener una solución altamente escalable, pero no infinitamente escalable. Para tener una solución infinitamente escalable tus arquitectos deberían liberarse de las limitaciones de los productos usados, tomando las decisiones de arquitectura adecuadas. Es decir, diseñar tu aplicación tomando premisas que no son las que tenían las aplicaciones de hace unos años.

    si no fuera un talibán cloud (a veces no lo soy), te diría que eso del escalado infinito es un imposible, y que el Cloud Computing puede servir para aplicaciones que escalen de manera razonable. Es decir, de manera finita.

    Se que no te he contestado, pero es que no se la respuesta.