martes, 26 de marzo de 2013

¿Qué es SOA?


INTRODUCCION

 La interconectividad entre las empresa Guatemaltecas cada vez se hace más necesaria. Los bancos necesitan comunicarse, intercambiar datos de clientes, datos de cuentas, publicar cambio de monedas, etc. Las Escuelas también necesitan integrarse haciendo el proceso de inscripción o tramitación de documentos más rápidos. Las Empresas gubernamentales poseen también esa necesidad de intercambiar datos, por ejemplo con la SAT (Superintendencia de Administración Tributaria), con bancos, con entidades externas, etc. No cabe duda que esa agilidad e integración será grandemente codiciada por muchas empresas Guatemaltecas y como consecuencia la adopción de SOA proliferará. Sin embargo, la adopción de SOA no es un proyecto de semanas o meses, sino de años. Involucra la creación de varios proyectos, roles y la cooperación entre IT y el área de negocio.

La adopción de SOA trae como beneficio el cambio de paradigma que las grandes industrias de tecnología de la información han adoptado por varios años: Cliente/Servidor. SOA está llamando la atención de varias empresas por la alta agilidad y la reducción de costos que provee mediante servicios fuertemente reutilizables, desacoplados y gobernados con el fin de adaptarse a los cambios exigidos por el entorno en que se encuentran y poder competir fuertemente. Sin embargo, aún en Korea y Europa grandes compañías han fracasado en la adopción trayendo consigo grandes pérdidas económicas con un retorno de inversión nulo. La adopción de SOA está empezando y cada vez más empresas están involucrándose en la adopción de SOA para poder enfrentar los cambios que el mercado exige haciendo uso de agilidad empresarial, pero muchas de estas empresas que han intentado adoptar SOA han fracasado en el intento.

SOA es un concepto relativamente nuevo por lo que cada ves más estándares, roles, herramientas y protocolos están surgiendo y a la vez modificando esta arquitectura, haciendo su adopción difícil.

¿QUE ES SOA?

Antes de nada conviene aclarar qué es realmente SOA, ya que en muchas ocasiones se confunde con una tecnología o producto software, y  nada más lejos de la realidad. Hay decenas de definiciones distintas de SOA en la Web y aunque la mayoría de ellas son acertadas, unas son más completas que otras. Hay que entender que SOA es un concepto de diseño de arquitectura que trata de alinear a las TI con el propio negocio de la organización. Y para esto, sugiere la creación de servicios y funcionalidades de negocio fácilmente reutilizables. Estos servicios deben ser flexibles, seguros y lo más importante de todo, con una arquitectura basada en estándares. SOA intenta integrar las TI con el negocio para que las soluciones que aporte sean lo más cercanas a los requisitos de negocio que se intenten cubrir, y dejen de ser soluciones departamentales que cubran o resuelvan solo parcialmente parte de las necesidades existentes sin tener una visión de la globalidad del proceso.

SOA es la evolución del modelo de programación orientado a componentes, ya que SOA agrega herramientas de computación distribuida a estas tecnologías que hemos venido utilizando por años. Podríamos decir que el cambio más grande es filosófico: en lugar de pensar en el diseño de aplicaciones individuales para resolver problemas específicos, SOA ve el software como un patrón que soporta todo el proceso del negocio. Cada elemento de un servicio es un componente que puede ser utilizado muchas veces a través de muchas funciones y procesos dentro y fuera de la empresa. Los servicios se pueden actualizar y escalar conforme sea requerido, o se pueden cambiar a una librería de terceros, sin afectar la operación del negocio.

Que SOA es una gran idea es indudable y también lo es que la expectativa que ha despertado entre las empresas, los consultores y los medios especializados es enorme, la más grande que ha habido en IT en muchos años. Es natural en cierto modo que sea así porque SOA cumple con un viejo anhelo de IT que es poder crear nuevos sistemas a partir de componentes preexistentes que se reutilizan. En cierto modo esta idea es obvia: todas las industrias hacen esto; cuando una empresa electrónica crea por ejemplo un nuevo equipo de audio, o cuando una automotriz diseña un nuevo modelo de automóvil no diseñan desde cero todos sus componentes; reutilizan muchos componentes y partes de los modelos ya existentes. Sin embargo en IT esto no se pudo lograr hasta ahora debido en gran medida a la falta de estándares universalmente aceptados. Es justamente la existencia de un cuerpo de estándares que todos los proveedores de la industria aceptan lo que permitió el desarrollo de SOA. SOA es entonces una forma de diseñar sistemas en la que las diferentes funciones se implementan en la forma de componentes débilmente acoplados denominados servicios. Los servicios se comportan como cajas negras en el sentido de que su implementación interna queda completamente oculta para quien los consume. Un servicio podría estar implementado en JEE, en .NET, en Cobol/CICS, en SQL, etc., sin que el consumidor ni siquiera se entere. La forma de utilizarlo es completamente independiente de la implementación. Esta idea de aplicaciones como servicios alineadas a los procesos del negocio no es nueva, solamente que en esfuerzos anteriores se requería mucho esfuerzo para integrar las aplicaciones heterogéneas.

SOA es un paradigma cuyo objetivo principal es aportar agilidad a la organización, de tal forma que esta pueda responder más rápidamente ante los cambios del mercado (por ejemplo, para lanzar un nuevo producto antes que los competidores).

Aunque las iniciativas SOA normalmente se abordan desde el punto de vista tecnológico, SOA no es una tecnología, sino un enfoque o manera de hacer las cosas que aporta grandes beneficios al negocio. De forma simplificada, SOA consiste en crear elementos software discretos, modulares y reutilizables llamados servicios.

Los servicios se convierten en recursos, accesibles de una forma estándar desde las aplicaciones y sistemas de la organización. De esta forma, para automatizar un proceso de negocio bastará con llamar a un conjunto de servicios en determinado orden (orquestación).


En muchas ocasiones se confunde con una tecnología o producto software, y

nada más lejos de la realidad. Hay decenas de definiciones distintas de SOA en la Web y aunque la mayoría de ellas son acertadas, unas son más completas que otras.

Hay que entender que SOA es un concepto de diseño de arquitectura que trata de alinear a las TI con el propio negocio de la organización. Y para esto, sugiere la creación de servicios y funcionalidades de negocio fácilmente reutilizables. Estos servicios deben ser flexibles, seguros y lo más importante de todo, con una arquitectura basada en estándares.


En el caso de SOA, los componentes reutilizables a crear son servicios de aplicación con significado propio, flexibles, débilmente acoplados y altamente interoperables sobre estándares tecnológicos abiertos.



En definitiva, SOA, a diferencia de otras soluciones de integración no se limita al uso de una herramienta o "plataforma de herramientas" para integrar aplicaciones, sino que sugiere una arquitectura ágil, escalable y completamente distribuida por toda la organización. En las arquitecturas SOA entre otras muchas funcionalidades,  pero no se reduce a la integración de éstas dentro de una localización concreta, sino que va mas allá, va a los procesos de las organizaciones, a la gobernabilidad, al uso de tecnología estándar, a la integración en entornos distribuidos.




BENEFICIOS SOA PARA IT

  • Mayor interoperabilidad entre las aplicaciones internas existentes, las aplicaciones externas y las futuras aplicaciones.
  • Mayor reutilización de los sistemas de información de la empresa y de sus componentes mediante su conversión a servicios.
  • Menores costos de mantenimiento al evitar que las capacidades de negocio (componentes de software) que sean duplicadas o se superpongan se consoliden en una pequeña cantidad de servicios compartidos.
  • Reutilización, el código se implementa una sola vez y puede ser invocado desde aplicaciones distintas.
  • Homologación, al reutilizar un servicio se homologan funciones que son soportadas por el mismo servicio, proporcionando ya sea una misma lógica de negocio o interfaz.
  • Administración, tener identificados los servicios ayuda a mantener un inventario de los mismos, permitiendo una identificación rápida de aquéllos que son necesarios para implementar una función o proceso de negocio específico.
  • La simplificación del desarrollo de soluciones mediante la utilización de estándares de la industria y capacidades comunes de industrialización.
  • Alinear y acercar las áreas de tecnología y negocio.
  • Reducir los costos y el tiempo de desarrollo—Los servicios SOA pueden reutilizarse fácilmente y pueden convertirse en nuevas aplicaciones compuestas
  • Reducir los costos de mantenimiento, los servicios reutilizables reducen el grado de complejidad interna de los servicios de IT
  • Aumentar la calidad de los servicios, una mayor reutilización de servicios crea servicios de mejor calidad en múltiples ciclos de prueba de diferentes consumidores de servicios
  • Reducir los costos de integración, los servicios estandarizados pueden trabajar en conjunto, permitiendo que las aplicaciones dispares se conecten con rapidez y facilidad
  • Reducir el riesgo, menos servicios reutilizables brindan mayor control sobre las políticas gubernamentales de IT y corporativas, y reducen el riesgo general relacionado con el cumplimiento.
  • menor coste total de propiedad
  • Repotenciación de los sistemas legados.
  • Conectividad, los sistemas son más fáciles de conectar entre sí.
  • Reducción de tamaño de proyectos
  • Alta escalabilidad, los servicios pueden ser clusterizados o movidos entre servidores más rápidamente.
  • Reutilización real de los programas y mejora en tiempos de respuesta al negocio o “time to market”.
  • Minimiza la dependencia técnica
  • Facilita la tercerización de proyectos, los proveedores se adaptarán más rápidamente a los proyectos de la organización.
  • Permite altos niveles de crecimiento a costos más bajos y los usuarios, realmente, pueden hacerse cargo de las definiciones de los procesos que lideran.
  • Es posible exponer cualquier fuente de datos existente como.
  • El manejo del conocimiento atomizado y la encapsulación de éste en servicios permiten una mantención y un dinamismo únicos, mejorando el time to market.
  • Es posible atomizar la lógica y exponerla para que sea utilizada por otras aplicaciones en prácticamente cualquier plataforma tecnológica o ubicación geográfica.
  • Capacidad de Descubrimiento. Los servicios pueden exponer descripciones que permiten a otras aplicaciones y servicios localizarlos y determinar de forma automática la interfaz.

BENEFICIOS SOA PARA EL NEGOCIO

  • Procesos comerciales más ágiles que permiten la implementación en menor tiempo de los cambios requeridos en los procesos de negocio de la empresa.
  • Mejor visibilidad del negocio al exponer como servicios las capacidades comerciales de la empresa para su integración y optimización en los procesos comerciales y en los portales de información que apoyan la toma de decisiones. 
  • EL TCO final de soluciones implementadas bajo esta plataforma, en el mediano y largo plazo, es drásticamente más bajo que el de una solución tradicional.
  • Documentación, el usuario de negocio documenta tanto sus procesos como sus reglas de negocio.
  • Se genera un inventario de procesos de negocio junto con las relaciones que tienen con las reglas de negocio y a los servicios de las aplicaciones que ayudan a su implementación.
  • Al contar con un inventario es posible hacer una mejor planeación arquitectónica, al poder analizar el impacto que tendrán futuras integraciones de nuevas aplicaciones o nuevos procesos de negocio.
  • Información en tiempo real, al contar con monitoreo de los KPIs se genera información bajo demanda que puede ser utilizada para la toma de decisiones relacionadas con los procesos.
  • Agilidad para habilitar rápidamente soluciones innovadoras y para adaptarse a cambios en el mercado cuando ocurran.
  • Flexibilidad para reducir los tiempos y costos de implantación, y para contar con una arquitectura ágil que permita la evolución, cambio y crecimiento del negocio.
  • Rapidez para llegar primero al mercado antes que la competencia y crecer la participación de mercado.
  • Obtener mejor visibilidad de la información a través de toda su organización.
  • Optimice sus procesos de negocios.
  • Tasas internas del retorno sobre la inversión de hasta el 100%.
  • Ahorro en TCO (Total Cost of Ownership) de los componentes de software y de las aplicaciones construidas utilizando estos componentes.
  • Capacidad de reutilizar y potenciar otras aplicaciones informáticas como ERP's, CRM's, etc.
  • 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.
  • Agilidad para habilitar rápidamente soluciones innovadoras y para adaptarse a cambios en el mercado cuando ocurran.
  • Aislar los sistemas frente a cambios generados por otras partes de la organización (protección de las inversiones realizadas).



4 comentarios:

  1. Gracias Amigos! Es un grano de arena con el cual contribuyo a la comunidad Oracle!

    ResponderEliminar
  2. Buen artículo, me encuentro en un proyecto SOA por lo que puedo mencionarte que el enfoque es correcto

    :)

    ResponderEliminar
  3. ¡Que bueno que te gustó rickymax! Gracias por leer mis articulos.

    ResponderEliminar

Oracle ACE Director Award - Deiby Gómez

Thanks #OracleACE Program for this awesome certificate recognizing the work I have done in the community for the last year. Looking forwa...