Relación existente entre POA, SOA, Cloud Computing

En estos últimos años, lo que las empresas buscan es brindar un servicio de calidad que satisfaga completamente al cliente, así la utilización de  POA, SOA y Cloud Computing logra este objetivo, ya que permite a las empresas mayor flexibilidad para crear nuevos vínculos con clientes y proveedores en tiempo real.

Anuncios

SOA

SOA – Service Oriented Architecture (Arquitectura Orientada a Servicios) – es un concepto que se basa en la definición de las diferentes actividades dentro de los procesos de la empresa como servicios que pueden ser reutilizados a lo largo de toda la organización.

Estos servicios son claramente definidos y soportados por infraestructuras tecnológicas representadas por aplicaciones de software que se comunican a través de interfases que satisfacen estándares específicos, permitiendo total flexibilidad, dinamismo, agilidad y gran habilidad de adaptación al cambio en la configuración de los procesos de negocios dentro de la organización.

SOA es el nuevo concepto de arquitectura empresarial y llega a todas las áreas de la organización y no solamente al área de tecnología de la información.

SOA proporciona una metodología y un marco de trabajo para documentar las capacidades de negocio y puede dar soporte a las actividades de integración y consolidación.

La metodología de modelado y diseño para aplicaciones SOA se conoce como análisis y diseño orientado a servicios. La arquitectura orientada a servicios es tanto un marco de trabajo para el desarrollo de software como un marco de trabajo de implementación. Para que un proyecto SOA tenga éxito los desarrolladores de software deben orientarse ellos mismos a esta mentalidad de crear servicios comunes que son orquestados por clientes para implementar los procesos de negocio. El desarrollo de sistemas usando SOA requiere un compromiso con este modelo en términos de planificación, herramientas e infraestructura.

Existen diversos estándares relacionados a los servicios web. Incluyen los siguientes:

  • XML
  • HTTP
  • SOAP
  • WSDL
  • UDDI

Hay que considerar, sin embargo, que un sistema SOA no necesariamente necesita utilizar estos estándares para ser “orientado a servicios” pero es altamente recomendable su uso.

En un ambiente SOA, los nodos de la red hacen disponibles sus recursos a otros participantes en la red como servicios independientes a los que tienen acceso de un modo estandarizado. La mayoría de las definiciones de SOA identifican la utilización de Servicios Web (empleando SOAP y WSDL) en su implementación, no obstante se puede implementar SOA utilizando cualquier tecnología basada en servicios.

Los beneficios que puede obtener una organización que adopte SOA son:

  • Mejora en los tiempos de realización de cambios en procesos.
  • Facilidad para evolucionar a modelos de negocios basados en tercerización.
  • Facilidad para abordar modelos de negocios basados en colaboración con otros entes (socios, proveedores).
  • Poder para reemplazar elementos de la capa aplicativa SOA sin disrupción en el proceso de negocio
  • Facilidad para la integración de tecnologías disímiles

Referencias:

http://es.wikipedia.org/wiki/Arquitectura_orientada_a_servicios

http://arquitecturaorientadaaservicios.blogspot.com/

http://www.ifactum.com/doc.cfm?id=2328&action=published

POA

POA: la Programación Orientada a Aspectos, conocida en el idioma inglés como AOP: Aspect Oriented Programming.

La POA es un nuevo paradigma de programación, creado por Gregor Kiczales. Cuya intención es permitir una adecuada modularización de las aplicaciones y posibilitar una mejor separación de conceptos. Gracias a la POA se pueden encapsular los diferentes conceptos que componen una aplicación en entidades bien definidas, eliminando las dependencias entre cada uno de los módulos. De esta forma se consigue razonar mejor sobre los conceptos, se elimina la dispersión del código y las implementaciones resultan más comprensibles, adaptables y reusables. Varias tecnologías con nombres diferentes se encaminan a la consecución de los mismos objetivos y así, el término POA es usado para referirse a varias tecnologías relacionadas como los métodos adaptivos, los filtros de composición, la programación orientada a sujetos o la separación multidimensional de competencias.

El principal objetivo de la POA es la separación de las funcionalidades dentro del sistema:

–          Por un lado funcionalidades comunes utilizadas a lo largo de la aplicación.

–          Por otro lado, las funcionalidades propias de cada módulo.

Cada funcionalidad común se encapsulará en una entidad.

Ventajas de la programación orientada a aspectos

La programación orientada a aspectos provee un mecanismo para separar cada uno de los módulos de nuestra aplicación y poder hacer llamadas entre ellos de una manera más limpia.

–          Evita que se duplique código, por ejemplo para hacer una auditoria cada vez que se modifique una de las propiedades de nuestras clases, habría que duplicar la llamada a nuestra clase de auditoría en cada una de ellas.

–          Mejora el testeo de nuestras aplicaciones pudiendo testear aspectos de nuestra aplicación de manera más independiente pudiendo diferenciar más rápidamente cual de los aspectos implicados en un modulo es el que falla.

–          El mantenimiento del código también se vuelve más flexible, ya que se en lugar de mostrar una ventana cada vez que salte una excepción simplemente queremos que lo indique es un fichero habría que cambiar esto en muchas partes de la aplicación.

Referencias:

http://es.wikipedia.org/wiki/Programación_Orientada_a_Aspectos

http://www.angelfire.com/ri2/aspectos/

http://victormingueza.wordpress.com/2010/06/12/introduccin-a-la-programacin-orientada-a-aspectos-aop/

http://kartones.net/blogs/coco/archive/2009/11/25/programaci-243-n-orientada-a-aspectos-aop.aspx

Cloud Computing

Cloud Computing traducido al español como “Computación en la nube”, es un paradigma que permite ofrecer servicios de computación a través de Internet.

Cloud Computing es un nuevo modelo de prestación de servicios de negocio y tecnología, que permite al usuario acceder a un catálogo de servicios estandarizados y responder a las necesidades de su negocio, de forma flexible y adaptativa, en caso de demandas no previsibles o de picos de trabajo, pagando únicamente por el consumo efectuado.

Una de las principales diferencias del Cloud Computing es que no hay necesidad de conocer la infraestructura detrás de esta, pasa a ser “una nube” donde las aplicaciones y servicios pueden fácilmente crecer (escalar), funcionar rápido y casi nunca fallan, sin conocer los detalles del funcionamiento de esta “nube”.

Ventajas y desventajas del Cloud Computing

Entre las ventajas de la Cloud Computing se pueden mencionar:

  • Acceso a la información y los servicios desde cualquier lugar.
  • Servicios gratuitos y de pago según las necesidades del usuario.
  • Empresas con facilidad de escalabilidad
  • Capacidad de procesamiento y almacenamiento sin instalar máquinas localmente.

Entre las desventajas podemos mencionar:

  • Acceso de toda la información a terceras empresas.
  • Dependencia de los servicios en línea.

Algunos ejemplos de Cloud Computing

Varias son las grandes empresas que se han dedicado a ofrecer estos servicios, promoviendo el fácil acceso a nuestra información, los bajos costos, la escalabilidad y muchas características que nos hace pensar en la comodidad que nos brindan, entre ellas podemos mencionar:

Referencias:

http://es.wikipedia.org/wiki/Computación_en_nube

http://www.maestrosdelweb.com/editorial/cloud-computing-nueva-era-de-desarrollo/

www.perucloud.com/2009/10/que-es-cloud-computing.html