Supongo que por agnóstico en la nube quiere decir agnóstico a la plataforma particular en la que se está ejecutando, como GAE, Amazon EC2 o Azure y desea escribir una, implementar en cualquier lugar.
En teoría, eso debería ser posible si todos los proveedores de la nube admiten los mismos idiomas. Por lo que sé, GAE admite Python y Java. Amazon EC2 puede usar prácticamente cualquier cosa en el servidor real y Azure es una plataforma totalmente .net. Entonces, el lado del procesamiento real de las cosas, es decir, escribir el servicio web de la cola y las unidades de procesamiento, puede ser difícil.
Otra barrera es que no hay una API común unificada para llamar a servicios de computación en la nube. Las implementaciones son diferentes en GAE/Azure/EC2 de todos modos, por lo que los métodos que expone su API son todos diferentes y para ese fin, su código de primera línea necesitará saber qué tipo de API está llamando para controlar los recursos de computación en la nube.
Sin embargo, por naturaleza, los servicios web están débilmente acoplados. Significado siempre que haga un esfuerzo para abstraer el control de recursos para poder crear una instancia en la nube que desee, si esa nueva instancia es otra unidad que maneja la entrada/computación de un servicio web y el servicio web expuesto es el mismo en GAE como EC2, por ejemplo, no hay nada que detenga a los dos hablando. Del mismo modo, siempre que utilice algún tipo de servicio web/protocolo entre instancias, aún debería poder hablar con otras instancias a través de Internet a través de plataformas informáticas. Dicho esto, al hacerlo, exponer los datos de su aplicación interna al mundo en general y, por lo tanto, presentar un riesgo de seguridad.
Estoy de acuerdo con el rechazo: Java es una muy buena forma de hacerlo. Hay una gran cantidad de contenedores EJB e incluso más servidores de servicios web como Tomcat. Supongo que EC2 lo soporta (bueno, definitivamente lo hace, pero si ejecutan Tomcat/Geromino en lugar de las ediciones de IBM y cómo son los cargos, no lo sé). GAE suena limited based on this blog post: sea lo que sea lo que Google esté haciendo en el back-end, han diseñado algo muy extraño.
Google es la ingeniería para servicios web de baja latencia. Es una forma completamente diferente de pensar acerca de las aplicaciones web de alto rendimiento, y una que todavía no he asimilado. Todavía no descubrí toda la interfaz de la base de datos. Quería implementar una serie de webapps en GAE, pero probablemente tendré que realizar una ingeniería inversa desde un contenedor J2EE estándar cuando haya terminado. –
Pensé mucho y decidieron implementar el contenedor Java Servlet y las unidades de procesamiento JSP, pero se perdieron el resto de la pila J2EE para que todo se haga a través de servicios web y no de servicio-web-middleware (ejb) -database . Según tengo entendido, su almacén de datos es una tarea para sacarlo y, por lo tanto, un archivo, básicamente, la funcionalidad relacional depende del programador. Por qué SQLite no habría hecho, no lo sé. Hubiera preferido que fueran "estándar" o algo nuevo. –