conceptos introductorios al diseño de servicios soa

30
Abimael Desales López 04/2013

Upload: abmel-lopessier

Post on 05-Jul-2015

413 views

Category:

Technology


0 download

DESCRIPTION

Conceptos extraídos del libro SOA: Principios del diseño de servicios

TRANSCRIPT

Page 1: Conceptos introductorios al diseño de Servicios SOA

Abimael Desales López

04/2013

Page 2: Conceptos introductorios al diseño de Servicios SOA

Uno de los aspectos mas retadores de escribir o discutirsobre tecnología es usar terminología de la industria.Algunos términos de TI sufren de ambigüedad, lo cual aveces hace que aún la más simple conversación se tornedifícil. Toma a los profesionales de TI de diferentesorganizaciones , ponlos en la misma habitación yescucharás preguntas como “¿qué entendemosexactamente por componente?” “¿cuál es tu definición deservicio?” o mi favorita “¿A qué clase de SOA te estásrefiriendo?”Para asegurarnos que las descripciones de los tópicosasociados son fácilmente comprendidos, necesitaestablecerse un framework de comunicaciones, compuestode una colección de términos con definiciones muyexplícitas.

Page 3: Conceptos introductorios al diseño de Servicios SOA

Antes que podamos comenzar a explorar los detalles de lacomputación orientada a servicios, primero necesitamosestablecer algunas terminologías básicas de diseño. Elvocabulario estará compuesto de los siguientes términosrelacionados al diseño:

Característica de Diseño

Principio de Diseño

Paradigma de Diseño

Patrón de Diseño

Lenguaje de Patrón de Diseño

Estándar de Diseño

Mejor Práctica

Page 4: Conceptos introductorios al diseño de Servicios SOA

Una característica de algo es simplemente un atributo ocualidad. Una solución de negocio automatizada tendrámuchas características únicas que fueron establecidasdurante su diseño inicial (Figura 3.1). De ahí que el tipo decaracterística de diseño en la que estamos interesados es unatributo específico o cualidad de un cuerpo de solucioneslógicas que documentamos en una especificación de diseñoy planeamos realizar en el desarrollo.

Page 5: Conceptos introductorios al diseño de Servicios SOA

Por componentes

Altamente acoplada

Base de datos compartida

Moderadamente stateful

Por componentes

Altamente acoplada

Base de datos dedicada

Altamente stateful

Por componentes ydistribuida

débilmente acoplada

Reutilización destinada

Base de datos dedicada

Mínimamente stateful

F

i

g

u

r

a

3

.

1

Page 6: Conceptos introductorios al diseño de Servicios SOA

La orientación a servicio enfatiza la creación de características dediseño específicas, mientras también desenfatiza otras. Esimportante notar que a casi todas las características de diseñoque exploramos les atañe una cierta “medida”. Esto significa quegeneralmente no es sobre si la solución lógica tiene una ciertacaracterística; es casi siempre sobre la extensión a la cual puedeo debe una característica realizarse.Aunque cada sistema puede tener sus propias característicasúnicas, estamos primeramente interesados en establecercaracterísticas de diseño comunes. La concordancia incrementadaasegura un grado de consistencia incrementado, haciendo a lasdiferentes clases de lógica de solución más parecidas. Cuandolas cosas son más semejantes llegan a ser más predecibles. En elmundo de la lógica compartida, distribuida, la predictibilidad esuna cosa apreciada. Las características del diseño predeciblellevan a un comportamiento predecible. Esto, en turno, lleva auna confiabilidad incrementada la oportunidad para entregarlógicas de solución en diferentes formas.

Page 7: Conceptos introductorios al diseño de Servicios SOA

Un principio es una práctica generalizada, aceptadapor la industria. En otras palabras, es algo que otrosestán haciendo en asociación con un objetivo común.Puedes comparar un principio con una mejor prácticaen el sentido que ambos proponen un significado dellevar a cabo algo, basado en experiencias pasadas oaceptación amplia de la industria.Cuando se viene a construir soluciones, un ‘principio dediseño’ representa un lineamiento altamenterecomendado para formar la lógica de solución en unacierta forma y con ciertos objetivos en mente (Figura3.2). Estos objetivos usualmente están asociados con elestablecimiento de una o más características de diseñoespecíficas (como resultado de la aplicación delprincipio)

Page 8: Conceptos introductorios al diseño de Servicios SOA

“Promueve un débil acoplamiento”

Figura 3.2La aplicación repetida de principios de diseño incrementa la cantidad decaracterísticas de diseño comunes. En este caso, el acoplamiento entre las unidadeslógicas de solución A y B ha sido aflojados (como se indica por una reducción depuntos de conexión).

Page 9: Conceptos introductorios al diseño de Servicios SOA

Por ejemplo, podemos tener un principio tan fundamentalcomo aquel que declara que la lógica de solución debe serdistribuible. Aplicando este principio resulta en la lógica desolución que está siendo particionada en unidadesdistribuibles individualmente. Esto luego establece que lasdistintas características de diseño de la lógica de soluciónestán llegando a ser fragmentadas por componentes. Estono es sólo un ejemplo de principio de diseño muy abierto,sino que también es el punto de partida de la orientación aservicios.

Page 10: Conceptos introductorios al diseño de Servicios SOA

Hay muchos significados asociados con el término“paradigma”. Puede ser un enfoque a algo, una escuela depensamiento con respecto a algo, o un conjunto de reglascombinadas que son aplicadas en una zona limitadapredefinida.

Un paradigma de diseño en el contexto de automatización denegocio es generalmente considerado un enfoque degobierno para diseñar lógica de solución. Normalmenteconsiste de un conjunto de reglas complementarias oprincipios que definen colectivamente el enfoqueprimordial representado por el paradigma (Figura 3.3).

Page 11: Conceptos introductorios al diseño de Servicios SOA

“Aplicar el balance correcto de acoplamiento débil y reutilización y…”

Figura 3.3Debido a que un paradigma de diseño representa una colección de principiosde diseño, además incrementa el grado de elementos comunes a través dediferentes cuerpos de lógica de solución. En el ejemplo, la cantidad dereutilización de y B ha incrementado.

Page 12: Conceptos introductorios al diseño de Servicios SOA

La orientación a objetos (o diseño orientado a objetos) es un ejemplo clásico de un paradigma de diseño aceptado. Proporciona un conjunto de principios que forman una lógica de solución formada por componentes en ciertas formas, de manera que cumplan con un conjunto de objetivos.

Junto a estas mismas líneas, la orientación a servicios representa su propio paradigma de diseño distintivo. Al igual que la orientación a objetos, es un paradigma que aplica a la lógica de solución distribuida. Sin embargo, debido a que algunos de sus principios difieren de aquellos asociados con la orientación a objetos, puede dar como resultado la creación de diferentes tipos de características de diseño.

Page 13: Conceptos introductorios al diseño de Servicios SOA

Hemos establecido que la orientación a servicios es unparadigma de diseño compuesto de un conjunto deprincipios de diseño, cada uno de los cuales proporcionauna regla generalizada o lineamiento para realizar ciertascaracterísticas de diseño. El mismo paradigma suena muycompleto, y realmente lo es. Sin embargo, para aplicarexitosamente en el mundo real, requiere más que sólo unacomprensión teórica de sus principios.

Page 14: Conceptos introductorios al diseño de Servicios SOA

Los diseñadores de servicio estarán enfrentándoseregularmente con obstáculos y retos cuando intentenaplicar un paradigma de diseño, debido a que larealización de las características de diseño deseadasfrecuentemente se complica por varios factores,incluyendo:

Restricciones impuestas por la tecnología que está siendo usada para construir y/o hostear las unidades de lógica de solución.

Restricciones impuestas por la tecnología o sistemas que residen junto a las unidades deployadas de lógica de solución.

Restricciones impuestas por los requerimientos y prioridades del proyecto que está entregando las unidades de lógica de solución.

Page 15: Conceptos introductorios al diseño de Servicios SOA

Un patrón de diseño describe un problema común yproporciona una solución correspondiente (Figura 3.4).Esencialmente documenta la solución en un formato deplantilla genérica de forma que pueda ser aplicadarepetidamente. El conocimiento de los patrones de diseñono sólo te arma con una comprensión de los problemas dediseño potenciales a los que se puede estar sujeto,proporciona respuestas sobre cómo y con qué son mejortratados.

Page 16: Conceptos introductorios al diseño de Servicios SOA

“Problema: Lógica de solución reutilizable que depende de una base de datos compartida que se ejecute con tiempos de respuesta inconsistentes”

“Solución: Si la lógica de solución está siendo reutilizada, debe tener una base de datos dedicada para maximizar la autonomía.”

Figura 3.4Los patrones proporcionan soluciones recomendadas para problemas de diseño comunes. En esteejemplo simplificado, un patrón sugiere que reduzcamos el acceso externo a una base de datos paraincrementar la autonomía de la aplicación

Page 17: Conceptos introductorios al diseño de Servicios SOA

Los patrones de diseño son nacidos de la experiencia. Lospioneros en cualquier campo han tenido que someterse aciclos de prueba y error, y aprendiendo de lo que notrabajaba, fueron desarrollados enfoques que finalmentellevaron a cabo sus objetivos. Cuando un problema y sucorrespondiente solución fueron identificados comosuficientemente comunes, las bases de un patrón de diseñofueron formadas. Además, los patrones de diseño puedenser combinados en patrones compuestos que resuelvenproblemas más grandes, y una serie de patrones puedeformar las bases de un lenguaje de patrón.

Page 18: Conceptos introductorios al diseño de Servicios SOA

La aplicación de un patrón de diseño puede generar nuevosissues o problemas por los cuales otro patrón puede serrequerido. Una colección de patrones relacionados puedeestablecer una expresión formalizada de un proceso dediseño por lo cual cada una dirige un punto de decisiónprimaria. Combinando patrones en esta manera forma lasbases de un lenguaje de patrón.

Un lenguaje de patrón está compuesto esencialmente de unacadena de patrones de diseño relacionados que establecenuna secuencia configurable en la cual los patrones puedenser aplicados (Figura 3-5). Tal lenguaje proporciona unsignificado altamente efectivo de comunicación de aspectosfundamentales de un enfoque de diseño dado debido a queproporciona documentación detallada de cada paso mayoren un proceso de diseño que forma las características dediseño de la lógica de solución.

Page 19: Conceptos introductorios al diseño de Servicios SOA

“Problema:

La lógica de negocio es combinada con lógica de no negocio haciéndolo difícil de cambiar.”

“Solución:

La lógica de negocio es abstraída en su propio conjunto de unidades.”

“Problema:

La lógica de negocio abstraída está compuesta de lógica agnóstica y no agnóstica.”

“Solución:

La lógica de negocio agnóstica es abstraída en su propio conjunto de unidades.”

Figura 3.5Una secuencia de patrones de diseño relacionados formaliza los puntos de decisión primaria de un paradigma de diseño.En este ejemplo, la lógica en el diseño de la aplicación B es descompuesta como resultado de un patrón, luego ademáscompuesto como un resultado de otro. Los patrones fundamentales siguientes continúan para formar la lógica.

Page 20: Conceptos introductorios al diseño de Servicios SOA

Para que una organización aplique exitosamente un paradigmade diseño, requerirá más que una adherencia a los principios dediseño asociados y un conocimiento de los patrones de diseño deapoyo. Cada organización tendrá objetivos estratégicos únicosentornos empresariales únicos. Estos forman un conjuntodistinto de requerimientos y restricciones que necesitan seracomodadas en diseños de soluciones.

Los estándares de diseño son convenciones de diseño(generalmente obligatorias) personalizadas para predeterminarde forma consistente características de diseño de soluciones ensoporte de los objetivos organizacionales y optimizados paraentornos empresariales específicos. Es a través del uso deestándares de diseño internos que las organizaciones puedenentregar soluciones de forma consistente adaptados a susentornos, recursos, objetivos, prioridades (Figura 3.6).Pagina 66 del libro

Page 21: Conceptos introductorios al diseño de Servicios SOA

“Aunado a los requerimientos de privacidad y seguridad específica, los datos de estados no pueden ser compartidos en una base de datos separada.”

Figura 3.6

En este caso un estándar de diseño requiere que el diseño original de C sea alterado para remover el acceso a una base de datos de estados, externa, compartida.

Page 22: Conceptos introductorios al diseño de Servicios SOA

Como con los principios de diseño, la aplicación de estándaresde diseño resulta en la creación de características de diseñoespecíficas. Como con los patrones de diseño, los estándares dediseño fomentan y refinan estas características para evitarproblemas potenciales y para fortalecer el diseño de solucióngeneral. De hecho, se recomienda diseñar estándares que sebasen contra, o estén derivados de patrones y principios dediseño de la industria.¿Puedes tener estándares de diseño sin principios de diseño? Sí,es realmente común tener muchos estándares de diseño. Sóloalgunos necesitan estar relacionados a los principios con el fin dever a través de la aplicación del paradigma de diseño general.También pueden crearse diferentes estándares de diseño parasimplificar el soporte de otros objetivos o compensar lasrestricciones impuestas por el entorno específico, cultural, ofactores relacionados con la tecnología. Aunque algunosestándares pueden no tener asociación directa con los principiosde diseño aceptados, debería haber siempre un esfuerzo paramantener en alineación relativa a todos los estándares.

Page 23: Conceptos introductorios al diseño de Servicios SOA

¿Puedes tener principios de diseño sin estándares?Generalmente depende del grado de compromiso delparadigma de diseño que le rige a una organización. Sive un potencial en usar sólo un subconjunto de losparadigmas de diseño, entonces algunos principiospueden no ser soportados por los estándares de diseñocorrespondientes. Sin embargo, este enfoque no escomún.Esencialmente, al igual que con los principios dediseño, a través de la estandarización queremosconstruir consistencia en las características de diseñoespecíficas – consistencia en la calidad de lascaracterísticas y en la forma en que frecuentementeson implementadas.

Page 24: Conceptos introductorios al diseño de Servicios SOA

Una mejor práctica generalmente es considerada una técnica o enfoque para resolver o prevenir ciertos problemas (Figura 3.7). Generalmente es una práctica que tiene reconocimiento de la industria y ha emergido de experiencias pasadas de la industria.

Page 25: Conceptos introductorios al diseño de Servicios SOA

“La lógica de solución reutilizable debe

ser apropiada y mantenida por un

custodio separado para asegurar su

apropiado involucramiento para

acomodar los requerimientos de largo

plazo de la empresa.”

Figura 3.7Las mejores prácticas proveen una guía en la forma general de “lecciones aprendidas“. En el ejemplo, sugiere que el mantenimiento en curso de unidades lógicas de solución reutilizable de todas las aplicaciones incluyan un solo custodio

Page 26: Conceptos introductorios al diseño de Servicios SOA

Entonces ¿cómo se diferencía una mejor práctica de unprincipio de diseño? Aquí hacemos una clara distinción enque un principio de diseño está limitado a sólo diseño. Unamejor práctica puede estar relacionada a cualquier cosa,desde la entrega de un proyecto hasta issuesorganizacionales, gobierno o proceso. Un principio dediseño podría ser considerado como una mejor prácticaasociada sólo con el diseño de la solución.

Page 27: Conceptos introductorios al diseño de Servicios SOA

Cada una de las secciones anteriores describieron una pieza deinteligencia que puede actuar como input en un proceso dediseño general. Cuando se diseñan soluciones orientadas aservicios es prácticamente inevitable que algunas o todas estaspiezas sean usadas al mismo tiempo. Por lo tanto es importantecomprender como están relacionadas con cada una de forma quepodamos obtener un conocimiento previo de cómo y dónde sonmejor utilizadas.La figura 3.8 muestra como están interrelacionadas algunas delas partes más comunes de un framework de diseño y enfatizacuan central puede ser el uso de principios de diseño. La figura3.9 expande en esta perspectiva ilustrando como el uso depatrones puede además soportar y extender un framework dediseño básico. Finalmente, la figura 3.10 muestra como las partesde un framework de diseño puede al final ayudar a realizar laaplicación del paradigma de diseño primordial.

Page 28: Conceptos introductorios al diseño de Servicios SOA

Figura 3.8

Los términos de diseñofundamentales establecenuna taxonomía básicautilizada en el resto deldocumento. Este diagramasugiere en cómo algunaspartes de un framework dediseño básico puederelacionarse a cada una delas otras.

Page 29: Conceptos introductorios al diseño de Servicios SOA

Figura 3.9

Los patrones de diseño proporcionan inteligencia adicional que pueden enriquecer unframework de diseño con una colección de soluciones probadas a problemas comunes

Page 30: Conceptos introductorios al diseño de Servicios SOA

Figura 3.10

El propósito de laaplicación de unparadigma de diseño es elde llevar a cabo ciertasmetas. Es importanteenfatizar como losestándares de diseño,patrones de diseño ymejores prácticas puedentodas soportar la aplicaciónexitosa de un patrón dediseño, y, como resultado,la consecución de susmetas.