30 marzo 2011

PaaS Plataforma como Servicio en Java I

Cuando la moda del Cloud Computing inicio, muchos predijeron el fin de Java; el lenguaje de programación era para ellos demasiado engorroso para las demandas de desempeño rápido y liviano que la computación basada en Internet requería. La introducción de VMForce y la adición de soporte para Java en Google App Engine y Microsoft Azure probó que Java tenía su lugar en la nube. Los desarrollos recientes de Plataforma como Servicio (PaaS) sugieren que Java tiene un futuro promisorio por delante.



VMWare finiquito su adquisición de SpringSource ofreciendo una nueva plataforma para el desarrollo de aplicaciones en la nube llamada VMforce. Spring Framework desplegado en la nube se utilizaría para producir aplicaciones Java que se ejecutan en la infraestructura de Salesforce Force.com.

VMforce combina a dos lideres en distintos segmentos del mercado (la virtualización de VMWare junto con la infraestructura de Software como Servicio de Salesforce) para ofrecer a los desarrolladores una plataforma para el desarrolo de aplicaciones utilizando Java.



Algunas de las características más destacadas de esta plataforma son:
  • El desarrollador puede utilizar el IDE de SpringSource basado en Eclipse.
  • Se puede utilizar Java estándar (POJOs, JSPs y Servlets) para crear las aplicaciones.
  • Puede desplegar su aplicación con un Click.
  • Utiliza SpringSource TC Server, una edición empresarial de Tomcat. 
  • Acceso al servicio Chatter de Force.com, con lo cual puede agregar funciones colaborativas a su aplicación (una red social privada).
  • Los desarrolladores tienen acceso a los servicios preconstruidos por Force.com sin escribir código personalizado.
  • Se puede utilizar la base de datos relacional de Force.com que incluye escalabilidad automática, alta disponibilidad, auto-tuning, backup y recuperación de incidentes.

 
 
      

CloudBees ofrece dos soluciones, una para desarrollar y otra para simplemente desplegar una aplicación ya existente:

DEV@cloud ofrece una serie de servicios basados en la nube para solventar los problemas más comentes durante el ciclo de desarrollo de una aplicación. En el núcleo de la oferta de CloudBees se utiliza el sistema de integración continua Jenkins, el cual ofrece recursos para los desarrolladores y los equipos de QA (Quality Assurance) sin el costo de comprar, administrar y mantener sus propios entornos de desarrollo.



RUN@cloud utiliza el poder de la plataforma de CloudBees para permitir a los desarrolladores deplegar las aplicaciones en la nube. RUN@Cloud ofrece desplegar las aplicaciones web en la nube agregando balanceo de carga, escalabilidad y alta disponiblidad. El equipo de desarrollo puede escribir el software en la manera tradicional, utilizando las mismas herramientas (IDEs) y desplegarlos instantáneamente en la nube.



RUN@Cloud se destaca por:
  • Soporta aplicaciones web desarrolladas en Java EE y en Spring, se encuentran agregando la funcionalidad para soportar JBoss Application Server.
  • Escalabilidad automática a partir de la utilización de recursos.
  • Entrega autorecuperación, redundancia y escalabilidad ilimitada.
  • Monitoreo a nivel de servicio.
  • Estrategias de recuperación configurables.
  • Clustering para el balanceo sobre HTTP.
  • Servidores compartidos o dedicados.
  • Entorno de pruebas local.
  • Balanceo local para JDBC.
  • Backups automáticos, incluida la base de datos.
  • Se puede seleccionar el IaaS sobre el que se ejecutarían las aplicaciones si es necesario.
  • Transición sencilla entre los entornos de desarrollo y producción.




En la próxima entrega de este artículo se conocerán otros proveedores de PaaS para Java.




20 marzo 2011

Opciones de Plataforma como Servicio (III)

PaaS para el desarrollo en Ruby/ Ruby on Rails

¿Que es Ruby?

Ruby es un lenguaje de programación con un cuidadoso balance. Su creador, Yukihiro Matsumoto, mezcló partes de sus lenguajes favoritos (Perl, Smalltalk, Eiffel, Ada, y Lisp) para formar un nuevo lenguaje que incorporara tanto la programación funcional como la programación imperativa. Es un lenguaje de programación dinámico y de código abierto enfocado en la simplicidad y productividad, su elegante sintaxis se siente natural al leerla y fácil al escribirla.


¿Que es Ruby on Rails?

Ruby on Rails es un framework de código abierto que usa convenciones para acelerar el desarrollo de aplicaciones web, define una estructura comun para todo proyecto permitiendo que cualquier desarrollador Rails pueda comprender rápidamente como funciona una aplicación sin necesidad de recibir capacitación alguna, permite migrar un modelo de datos facilmente de un entorno de pruebas con SQLite a un entorno de producción usado MySQL ó PostgreSQL gracias a ActiveRecord, a nivel de arquitectura permite usar el Patron REST para exponer los recursos de una aplicación a través de consultas por URL, y gracias a las conveciones del estandar Rails protegue automaticamente a las aplicaciones de ataques de seguridad como Cross Site Request Forguery (CSRF).

Estas son algunas de las alternativas existentes de plataformas como servicio para el desarrollo de soluciones en el lenguaje Ruby:





Características:
  • Permite aumentar las capacidades de su aplicación mediante addons.
  • Permite modificar las instancias donde se ejecuta su aplicación para tener mayor capacidad.
  • Ofrece diferentes opciones de base de datos SQL como MySQL y NoSQL como MongoDB.
  • Disponibilidad de Memcached.
  • Acceso SSL a sus aplicaciones.
  • Almacenamiento de archivos generados por la aplicación o por los usuarios en la nube.
  • Dominio personalizado.
  • Auto escalamiento de aplicaciones



Características:


  • Permite configurar los permisos de instalación y despliegue de aplicaciones Rails en un solo clic.
  • Habilita la ejecución de servidores, el configurar y añadir un balanceador de carga en una sola acción.
  • Integrado con repositorio de código como GitHub / SVN, para que puedas confirmar los cambios y poner en marcha nuevos servidores en cuestión de segundos.
  • Cuenta con un monitor de servicio que permite obtener una visión completa del uso de CPU, memoria y espacio en disco en el servidor para saber cuándo tomar acción.
  • Permite realiza un desarrollo ágil, facilitando el crear y compartir proyectos de desarrollo, puesta en escena, o la producción, así como el lanzamiento de servidores bajo demanda.




Plataforma como Servicio recientemente adquirida por SALESFORCE por un valor de $212 millones de dolares, a continuación presentamos la estructura de la plataforma de Heroku:

  • HTTP Reverse Proxy: Esta capa usa el servidor de alto rendimiento Nginx y sólo se ocupa de procesamiento a nivel HTTP, en operaciones tales como acceso SSL y compresión gzip, antes de pasar las conexiones a la pila de ejecución.
  • HTTP Cache: Usan el Servidor Varnish, para reducir la cantidad de solicitudes y ofrecer mayor velocidad para el acceso a contenido que se encuentre disponible en esta cache.
  • Routing Mesh: La malla de enrutamiento que permite registrar, optimizar y balancear las solicitudes dirigidas a las aplicaciones que se encuentran desplegadas en la Dyno Grid.
  • DynoGrid: Es el contenedor de las aplicaciones desarrolladas en Rails, similar a Mongrel con la unica diferencia de que se ejecuta sobre un entorno distribuido con lo cual se garantiza su escalabilidad y disponibilidad.
  • SQL Database: La capa de persistencia soportada por el servicio Amazon RDS con MySQL, pero que tambien permite el uso de soluciones NoSQL como Redis, MongoDB y CouchDB.
  • MemoryCache: La capa de memoria Cache implementada con Memcached que permite un acceso rapido a consulta de datos.


Características:
  • Ofrece una pila integrada de todos los componentes necesarios para el desarrollo en Ruby on Rails como son servidores Web, bases de datos, funciones de supervisión y gestión de procesos, una distribución Linux optimizada, caches de memoria y un continuo monitoreo de vulnerabilidades de seguridad y la instalación de actualizaciones a medida que son descubiertas nuevas brechas de seguridad.
  • Permite realizar un seguimiento del uso de los recursos esenciales para su aplicación(memoria, almacenamiento, procesamiento) de modo que pueda alertarle(email) de la necesidad de capacisas adicional o de cuando se detecte un mal funcionamiento en el comportamiento normal de sus aplicaciones.
  • Facilita con las Plantillas de aplicación, tener toda la información de configuración que necesita su aplicación en un sistema de gestión de configuraciones que le permite clonar a voluntad su aplicación y desplegarla en muy pocos pasos.
  • Facilita el sumar y restar instancias de aplicación a demanda por medio de la interfaz de usuario Engine Yard AppCloud. El panel de AppCloud hace que sea fácil ver el estado de su solicitud, el agregar ó quitar capacidad e implementar nuevas versiones de la aplicación.
  • Brinda la funcionalidad para crear replicas de lectura de la base de datos de la aplicación, impactando positivamente en la atención de incrementos en el trafico de las aplicaciones, o para la ejecución de procesos de análisis de datos, toma de backups, todo este sin sacrificar el rendimiento de las aplicaciones.


Otras alternativas:











Algo curioso que podemos mencionar de algunas de las alternativas de PaaS para Ruby mencionadas en este articulo es que muchas de ellas sino todas están soportadas en Amazon Web Services, (DuoStack, SimpleDeployer, Heroku, engineyard, Morph). La pregunta que constantemente nos hacemos es que si con la aparición de AWS Elastic Beanstalk estas plataformas perderán fuerza y Amazon AWS se convertirá en el monopolio de las PaaS e IaaS.