Conexión a la nube, Parte 1: Máximo aprovechamiento de la nube en las aplicaciones

Aproveche el modelo híbrido

Explore la computación en nube y las ofertas de los principales proveedores de plataformas para nube: Amazon, Google, Microsoft®, y SalesForce.com. En la primera parte de una serie de tres, tomaremos un ejemplo de una aplicación empresarial típica que utiliza una cola JMS, y examinaremos qué implicaría hibridizar parte de esta infraestructura JMS en la nube.

Mark O'Neill, CTO, Vordel

Mark O'Neill is CTO at Vordel, an XML Networking company. He is also author of the book "Web Services Security" and contributing author to "Hardening Network Security", both published by McGraw-Hill/Osborne Media. Mark is responsible for overseeing Vordel's product development roadmap and also advises Global 2000 firms and governments worldwide on their tactical and strategic adoption of XML, Web Services and SOA technologies. He holds degrees in mathematics and psychology from Trinity College Dublin and graduate qualifications in neural network programming from Oxford University. Mark lives in Boston, Massachusetts.



27-04-2009 (Primera publicación 31-03-2009)

Introducción

Durante años, la convención ha sido que los diagramas de la red utilizaran una nube (específicamente un cúmulus) para representar a Internet. La imagen de la nube indicaba algo amorfo, intangible pero aún así necesario para incluir en el diagrama. Las líneas de la red no hacían otra cosa que viajar a través de la nube, indicando los datos que pasaban por Internet. En los diagramas enfocados a la seguridad, la línea a través de la Nube podía incluir un candado a su lado, para indicar que la conexión era segura.

Ahora, la nube ha sido ascendida a actor de primera clase en el diagrama mismo de la red. Las aplicaciones pueden hacer uso de la nube para pedir valor agregado, como por ejemplo, almacenamiento, colas y aplicaciones huésped. Las aplicaciones mismas pueden ser alojadas en la nube. Más que simplemente pasar a través de la nube, las líneas ahora se conectan a la nube y la utilizan como parte de una aplicación, volviendo a la nube más tangible.

Siglas frecuentemente utilizadas

  • Ajax: Asynchronous JavaScript + XML (JavaScript asincrónico + XML)
  • API: application programming interface (Interfaz de programación de aplicaciones)
  • HTML: Hypertext Markup Language (Lenguaje de marcas de hipertexto)
  • HTTP: Hypertext Transfer Protocol (Protocolo de transferencia de hipertextos)
  • JMS: Java™Message Service (Servicio de mensajería Java)
  • REST: Representational State Transfer (Transferencia de estado representacional)
  • XML: Extensible Markup Language (Lenguaje de marcas extensible)

En esta serie de tres partes, usted examinará cómo se manifiesta la computación en nube. El número de proveedores de computación en nube es relativamente pequeño, y cada uno llega al área desde un sentido diferente y brinda distintos servicios. Las opciones del lenguaje de programación varían desde Python, pasando por C#, a Java u otros lenguajes registrados. También varían las interfaces a la nube, aunque se prefiere una interfaz REST liviana, incluso si la misma no es ofrecida en la actualidad por todos los proveedores de computación en nube.


Modelo híbrido

En la Parte 1 de la serie, se mostrará un ejemplo de híbrido, es decir, una aplicación privada que se amplifica con los servicios y la infraestructura de la computación en nube. Mientras analiza la aplicación híbrida, descubra qué es lo que le ofrece la computación en nube. Para ello, usted examinará los antecedentes, y qué es lo que ofrecen actualmente los principales proveedores de computación en nube. La Parte 2 de esta serie se ocupará del desarrollo de la aplicación híbrida diseñada en la Parte 1. La Parte 3 se centrará en los problemas de seguridad y control de esta solución.


De todos modos, ¿qué es la computación en nube?

IBM define la computación en nube como un paradigma de programación emergente en el cual los datos y servicios residen en centros de datos sustancialmente escalables, y es posible acceder a ellos desde cualquier dispositivo conectado a Internet. Brinda un poder de escalabilidad masiva a las aplicaciones, además de (en el caso de Amazon Elastic Computing Cloud—comúnmente denominada Amazon EC2) proporcionar el hosting de las aplicaciones propiamente dichas.

La computación en nube no es para todos, pero resulta particularmente atractiva a las organizaciones cuyas necesidades de programación no son parejas a lo largo del tiempo. Si el negocio de una organización requiere una capacidad de procesamiento y almacenamiento variable, como por ejemplo, todos los sábados a medianoche para el procesamiento de lotes, resultará sensato utilizar un proveedor de nube para esta tarea, en lugar de contar con un centro de datos que permanece desocupado la mayor parte del tiempo.

La computación en nube resulta, además particularmente atractiva para las empresas incipientes. Muchos de los fundadores de estas empresas conocerán la pregunta que formula todo financista de riesgo: “¿Cómo escalará su tecnología?” La computación en nube brinda una respuesta convincente a esta pregunta. Sin embargo, como usted verá en otras partes de esta serie, la computación en nube plantea también cuestiones de propiedad, seguridad y costos.


Formación de nubes

Servicios Web de IBM y Amazon

IBM y AWS se encuentran trabajando en equipo para brindar acceso al middleware de IBM en un entorno informático virtual. La experiencia Amazon EC2 le permite evaluar y utilizar software sin tener que instalarlos en su sistema. Puede ajustar la capacidad de manera prácticamente instantánea, construyendo aplicaciones en un entorno confiable de alto rendimiento donde usted sólo paga por el tiempo y la capacidad que utiliza. Nuestras ofertas de middleware en EC2 incluyen:

  • DB2 Express-C 9.5
  • Versión 11.5 de Informix Dynamic Server Developer
  • WebSphere® Portal Server y Lotus Web Content Management Standard Edition
  • WebSphere sMash

Se trata de un código a nivel del producto, que tiene habilitadas todas las características y opciones. Para obtener más información y descargar Amazon Machine Images para estos productos, consulte la página sobre computación en nube Amazon EC2 en developerWorks.

Para ver más recursos de computación en nube, consulte el Espacio de computación en nube de developerWorks.

Antes de que la computación en nube fuera ampliamente conocida, existían la computación distribuida (grid computing) y la computación bajo demanda (utility computing). Una diferencia clave entre la computación distribuida y la computación en nube es que mientras que los entornos de computación distribuida tienden a estar compuestos por diferentes máquinas, los entornos de computación en nube tienden a ser más controlados, y las máquinas de back-end son generalmente las mismas. Computación bajo demanda es un término que se refiere al modelo de negocios donde se paga según el tráfico de datos o el uso de las aplicaciones. No obstante, aquí el concepto de crecimiento “elástico” del servicio no prevalece tanto, mientras que en la computación en nube, la capacidad de agregar (o quitar) capacidad a medida que cambia la utilización es una parte importante de este recurso.

Entre principios y mediados de la década del 2000, Google y Amazon desarrollaron independientemente sus propias arquitecturas de computación en nube, sobre las cuales manejan sus negocios. Habiendo desarrollado la infraestructura, se dieron cuenta de que ésta se convirtió en un servicio en sí misma, que podía venderse a los desarrolladores en función del uso que éstos le dieran. Amazon, en particular, descubrió el valor clave de esta plataforma, al punto que es perfectamente concebible que algún día Amazon sea tan famosa por su plataforma informática como por su sitio online de venta minorista. Amazon se dio cuenta de que puede vender su Plataforma como Servicio (a menudo abreviado PaaS—de manera similar a la abreviatura de “Software as a Service” [software como Servicio]: SaaS). En consecuencia, a menudo se ve a Amazon como uno de los grandes favoritos en la comercialización de computación en nube, especialmente porque ideó los modelos de facturación y utilización.

La experiencia en el diseño de un entorno informático basado en la nube ha tendido quedar reducida a un pequeño número de proveedores exitosos, que incluye a Amazon y Google. Con este conocimiento, en 2007 Google, IBM, y una serie de universidades formó una Nube de investigación con el fin de brindar un entorno de nube para que los estudiantes investigadores desarrollaran nuevas técnica y aplicaciones informáticas. Si bien en tamaño no es comparable a la infraestructura de Amazon o Google, esta nube de investigación brinda un entorno en el cual los estudiantes pueden investigar los servicios de la nube. Las investigaciones realizadas en esta nube de investigación permitirán un mayor desarrollo de la computación en nube, incluyendo el desarrollo de Nubes privadas por parte de las organizaciones que cuenten con los medios para crearlas.


Impulso al modelo híbrido

Más que tirar nuestras aplicaciones locales para utilizar exclusivamente la nube o, de manera opuesta, basarse sólo en las aplicaciones locales e ignorar la nube, lo más sabio sería utilizar una combinación de aplicaciones locales y la nube. Esto se denomina Modelo híbrido. Este modelo permite a la empresa mantener el control sobre sus aplicaciones clave mientras aprovecha al máximo la computación en nube en aquellas áreas donde tiene sentido utilizarla. Por ejemplo, numerosas empresas han descubierto que resulta económico utilizar el Amazon Simple Storage Service o S3 (Servicio de almacenamiento simple) para almacenar objetos tales como imágenes, videos y documentos. El modelo híbrido, además, se presta a un enfoque incremental.

Incluso si piensa que resultaría sensato pasar la mayor parte de sus aplicaciones a la nube, podría ser demasiado riesgoso pasar todo al mismo tiempo. Con el modelo híbrido, usted elige lo más sencillo (como el almacenamiento de archivos) para pasar a la nube en primer lugar. Luego, una vez que usted se encuentre más cómodo con este modelo de implementación, podrá pasar a la nube partes más significativas de su aplicación. Este es el enfoque que adoptaré en la serie. Observe la aplicación que usted va a hibridizar al mover parte de su infraestructura.


Diseño de una aplicación híbrida

Esta aplicación híbrida de muestra será un sistema asincrónico de notificaciones por email. El mismo puede ser un subsistema dentro de un sistema de flujo de tareas. Cuando se presenta una nueva actividad que requiere aprobaciones, se envían emails a los directivos correspondientes, quienes aprobarán o rechazarán las actividades. Este tipo de sistema puede utilizarse también para un sistema de cumplimiento. Cuando se despacha un pedido, se envía un email para hacer saber que el mismo está en camino. Es posible imaginar muchos tipos de aplicaciones que podrían utilizar este sistema. De todos modos, el email es asincrónico por naturaleza, por lo tanto un mecanismo asincrónico para generar emails constituye un modo eficaz de satisfacer este tipo de caso de uso.

No resulta difícil imaginar una aplicación existente que ya cuente con un sistema implementado. Este tipo de sistema se puede implementar de muchas maneras, pero un mecanismo bastante elegante para hacerlo consiste en utilizar una JMS. La especificación JMS es una parte importante de la pila de tecnología de J2EE™. Existen numerosas implementaciones de la norma con marca registrada y código abierto. Es fácil imaginar un sistema que envía notificaciones a una cola JMS, y otro sistema que lee la cola periódicamente y crea notificaciones de email para cada mensaje de la cola JMS.

Para obtener un modelo híbrido, usted puede comenzar por pasar la cola JMS a la nube. En otras palabras, usted la reemplazará por un servicio que funciona en la nube. ¿Qué tipo de servicio será? ¿De qué manera deberán cambiar sus aplicaciones para que puedan realizar un interfaz con este servicio? Esto depende del tipo de plataforma de nube que usted utilice. A continuación, veremos las diversas plataformas y el modo de utilizarlas para implementar o, en este caso, reimplementar la funcionalidad de una cola JMS.


Servicios Web Amazon

Como pionero en la monetización de la computación en nube, Amazon brinda un número de ofertas maduras que resultan de interés a los desarrolladores. Quizás, el servicio de nube más conocido de Amazon sea el servicio EC2 o Elastic Computing Cloud (Nube de computación elástica). Este servicio permite la creación de instancias de máquinas virtuales (denominadas AMI o—Amazon Machine Images: Imágenes de máquinas Amazon) que funcionan sobre la propia infraestructura de Amazon. Puede decirse que esto está más relacionado con los servicios de un proveedor de hosting, pero en realidad, las máquinas que se utilizan no son máquinas reales, y el pago se realiza en función de la utilización de tráfico, más que por el alquiler de las máquinas mismas.

El servicio S3 de Amazon es un servicio de almacenamiento online que resulta particularmente atractivo para las empresas incipientes que necesitan escalar su capacidad de almacenamiento. Este servicio se puede utilizar como un agregado a otros servicios de la Nube Amazon, como por ejemplo el EC2. Esto significa que una máquina AMI, o quizás Linux™con PHP puede utilizar el Amazon S3 como almacén de datos. A medida que aumenta el tráfico de datos, el servicio S3 se expande de manera elástica. Amazon SimpleDB es una base de datos rápida y simple basada en la nube que brinda clasificación, almacenamiento y acceso. Es significativamente más simple que una base de datos relacional, ya que no requiere esquemas, clasifica los datos automáticamente y produce las API de almacenamiento y acceso.

Amazon SQS (Simple Queue Service [Servicio simple de cola]) brinda un servicio de cola, similar al JMS pero con una interfaz RESTful. Usted también puede utilizar SQS en conjunto con otros servicios de nube de Amazon, o como parte de cualquier otra aplicación que pueda conectarse a él mediante un simple HTTP GET o POST. Para la aplicación híbrida, constituye un reemplazo adecuado para una cola JMS. Se puede acceder a él a través de su interfaz RESTful, XML, lo cual permite una fácil integración con las aplicaciones existentes. SQS es, probablemente, la elección más obvia para este tipo de aplicación híbrida.

Numerosos proveedores de software se han asociado a Amazon para ayudar a sus clientes a aprovechar EC2 al máximo. Por ejemplo, IBM y Amazon se han asociado para ofrecer muchos de los programas empresariales más populares de IBM, como por ejemplo DB2®, Informix®, y WebSphere® en EC2.


Google

Google es muy famosa por sus rápidas y precisas búsquedas, las cuales constituyen, para muchos usuarios, la manifestación de la frase de Arthur C Clarke en el sentido de que "toda tecnología suficientemente avanzada se vuelve indistinguible de la magia." Gracias a la tecnología que posibilita esta magia, Google es un candidato ideal para proporcionar una plataforma para la computación en nube. Es comprensible que un desarrollador se entusiasme con la posibilidad de ejecutar una aplicación en la plataforma de Google.

Google ofrece una plataforma para computación en nube denominada App Engine, que está basada en la tradicional plataforma subyacente de Google. Incluye GFS (Google's File System – sistema de archivos Google) y Bigtable, sistema de base de datos construido en GFS. La programación en el Google App Engine se realiza con Python. Los programadores escriben sus aplicaciones con Python y luego las ejecutan en el marco de App Engine. En el futuro, se brindará soporte a lenguajes que no sean Python. Es posible descargar un emulador local para el entorno de App, con fines de desarrollo. App Engine es gratuito e incluye hasta 500 MB de almacenamiento y un ancho de banda de CPU suficiente para brindar vistas de 5.000.000 de páginas diarias.

Google App Engine brinda cierta infraestructura útil, que incluye su almacén de datos derivados de GFS y una implementación de memcache. Sin embargo, no brinda un mecanismo de cola de fábrica. Si usted cuenta con un entorno completo de programación Python, puede simplemente crear su propio reemplazo JMS sobre el App Engine. El almacén de datos sirve para su aplicación híbrida, y la creación de una interfaz RESTful a su cola demanda muy poco de Python.


Microsoft Azure

Como usted esperará, Windows® y .NET se presentan principalmente en Windows Azure. Microsoft ha provisto un entorno en el cual pueden alojarse aplicaciones creadas utilizando Visual Studio®, las cuales pueden ser ejecutadas sobre el entorno Windows Azure. La plataforma Azure brinda numerosos servicios, como por ejemplo, los servicios de infraestructura como almacenamiento y acceso de datos, así como servicios más especializados, tales como búsquedas y gestión de contactos. También incluye el .NET Service Bus (Bus de servicios .NET). Esta es la implementación de Microsoft del patrón de diseño del clásico Enterprise Service Bus (ESB). Uno de los casos de uso más simples para un ESB es una cola de mensajes, de manera que puede definitivamente servir de reemplazo para su cola JSM. El .NET Service Bus es fácil de usar para los desarrolladores. Brinda soporte tanto a una interfaz RESTful liviana que usa XML, como a una interfaz más fuerte basada en SOAP que incluye la implementación completa de las normas WS-*. Ambas interfaces permiten la interoperabilidad entre su aplicación existente y el .NET Service Bus.


SalesForce.com

SalesForce.com brinda un modelo en el cual los desarrolladores utilizan su lenguaje de desarrollo Apex para acceder a los servicios de SalesForce.com. SalesForce llama a Apex "el primer lenguaje de programación a pedido del mundo”. Este aspecto (a demanda) se relaciona con el hecho de que el código se aloja en el Servicio de la Nube de SalesForce's Force.com, y funciona en ese contexto. En pocas palabras, Apex es similar a los lenguajes Java o C#.

El código Apex se utiliza en la generación de páginas Web que se presentan en la capa de VisualForce, que es la verdadera interfaz de usuario. Utiliza el modelo Model-View-Controller (MVC), que es similar al modelo por el cual puede usarse un código C# compilado detrás de una página ASPX en .NET. Las páginas de VisualForce pueden incluir HTML, Ajax (XMLHttpRequest object), y Adobe Flex.

VisualForce permite a los desarrolladores crear variaciones en las interfaces con SalesForce.com Web. Esto resulta útil para las empresas similares a SalesForce.com, pero que desean agregar capacidades a la interfaz. En lugar de solicitar la construcción de esta funcionalidad a SalesForce.com, los clientes de Salesforce.com pueden construirla ellos mismos con la creación de páginas en VisualForce y su envío al back-end de SalesForce.com con código Apex.

Salesforce ofrece también Controladores, que se utilizan para conectar la presentación de la página a los datos subyacentes de la base de datos SalesForce, e incluye rutinas estándar tales como Editar y Guardar. La nube de Force.com ha resultado un gran éxito. Ofrece a los desarrolladores un modo de no sólo construir aplicaciones en la nube, sino de construir aplicaciones que puedan cobrarse a los usuarios mediante un modelo de distribución directa. Sin embargo, ésta es una nube muy especializada. No se presta bien al enfoque incremental. Generalmente se construye para la nube de Force.com.


Resumen


Modelo híbrido

En este artículo, usted observó la variedad de capacidades que ofrecen los diferentes proveedores de servicios de nube, y el modo en que puede utilizarlas para reemplazar una cola JMS y convertir una aplicación existente en una aplicación de nube híbrida. En los siguientes dos artículos, usted verá cómo se logra el modelo híbrido, que vincula una aplicación local con servicios de nube. Además, analizará los importantes problemas de seguridad y control que afectan a la computación en nube.

Recursos

Aprender

Obtener los productos y tecnologías

Comentar

Comentarios

developerWorks: Ingrese

Los campos obligatorios están marcados con un asterisco (*).


¿Necesita un IBM ID?
¿Olvidó su IBM ID?


¿Olvidó su Password?
Cambie su Password

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


La primera vez que inicie sesión en developerWorks, se creará un perfil para usted. La información en su propio perfil (nombre, país/región y nombre de la empresa) se muestra al público y acompañará a cualquier contenido que publique, a menos que opte por la opción de ocultar el nombre de su empresa. Puede actualizar su cuenta de IBM en cualquier momento.

Toda la información enviada es segura.

Elija su nombre para mostrar



La primera vez que inicia sesión en developerWorks se crea un perfil para usted, teniendo que elegir un nombre para mostrar en el mismo. Este nombre acompañará el contenido que usted publique en developerWorks.

Por favor elija un nombre de 3 - 31 caracteres. Su nombre de usuario debe ser único en la comunidad developerWorks y debe ser distinto a su dirección de email por motivos de privacidad.

Los campos obligatorios están marcados con un asterisco (*).

(Por favor elija un nombre de 3 - 31 caracteres.)

Al hacer clic en Enviar, usted está de acuerdo con los términos y condiciones de developerWorks.

 


Toda la información enviada es segura.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=90
Zone=Lotus, SOA y servicios web
ArticleID=394976
ArticleTitle=Conexión a la nube, Parte 1: Máximo aprovechamiento de la nube en las aplicaciones
publish-date=04272009