Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Arquitectura de Infraestructura
Arquitectura de Infraestructura
ejerza el arte y
contribuya con sus ideas en
www.ArchitectureJournal.net
Recursos que sirven de base
Arquitectura de Infraestructura
Arquitecturas de alta
disponibilidad para
hosting masivo
Brindar informtica
integral de alta
productividad
Infraestructuras
orientadas a pruebas
Perfil del Architecture
Journal: Don Ferguson
Resolver el dilema de la
integracin
Ontologa y Taxonoma
de los Servicios en una
Arquitectura Orientada a
Servicios
Versionado en SOA
Contenidos
Prlogo
Descubra los secretos para la creacin de infraestructuras de hosting escalables, confiables, seguras y fcil de
mantener.
Explore una solucin tcnica para la creacin de un servicio HPC distribuido, orientado al servicio.
19
Los equipos de infraestructura tienen la oportunidad de aprender de los equipos de desarrollo el modo de
expresar las decisiones de arquitectura utilizando secuencias de comando de prueba.
24
Don Ferguson es Asociado Tcnico de Microsoft en Plataformas y Estrategia en la dependencia del CTO.
Actualcese sobre su carrera y sus pensamientos sobre la arquitectura.
26
Aprenda una definicin del dilema de integracin y lo que puede hacer para evitarlo en su entorno.
30
Los servicios se pueden obtener en diversas formas y tamaos. Vea un modo de utilizar una ontologa y
taxonoma comn para describirlos
Versionado en SOA
36
Recursos
Fundador
Arvindra Sehmi
Microsoft Corporation
Prlogo
Jefe Editor
Simon Guest
Microsoft Corporation
Consejo Editorial de Microsoft
Gianpaolo Carraro
John deVadoss
Neil Hutson
Eugenio Pace
Javed Sikander
Philip Teale
Jon Tobey
Editor Comercial
Lisa Slouffman
Microsoft Corporation
Diseo, Impresin y Distribucin:
CMP Technology Contract Publishing
Chris Harding, Director Gerente
Angela Duarte, Gerente de Publicacin
Lisa Broscritto, Gerente de Proyecto
Kellie Ferris, Directora Corporativa de Servicios
Creativos
Jimmy Pizzo, Director de Produccin
Estimado arquitecto:
Bienvenido al Journal 11, cuyo tema es Arquitectura de Infraestructura. Hace
algunos aos, uno de mis colegas anteriores, Pat Helland, propuso una analoga
de arquitectura llamada Metrpolis. Su planteamiento era crear un paralelo
utilizando la arquitectura de construccin y planificacin de una sociedad para
dar sentido a los desafos complejos en la arquitectura de software. Una de las
cosas que siempre recuerdo de la Metrpolis es que, como arquitectos de TI, por
lo general, dedicamos proporcionalmente demasiado tiempo a nuestras propias
construcciones. Muchos de nosotros somos culpables de obsesionarnos con la
apariencia que tendr nuestra construccin y cmo se desempaar. Sin
embargo, como resultado, a veces nos olvidamos de la visin ms global. Por
ejemplo, el modo en el que nuestra construccin se adecuar a la ciudad. Para la
arquitectura de la construccin, una construccin debe ajustarse a los planos de
la ciudad en una cantidad de reas, incluidos los planos de carreteras, utilidades,
transporte, etc. Teniendo esto en cuenta para la edicin de nuestro Journal,
quera analizar los mismos desafos del modo que se relacionan con nuestra
industria.
Para encabezar esta edicin, contamos con un grupo de autores, Shaun
Hirschman, Matthew Baldwin, Tito Leverette y Michael Jonson, quienes han
escrito un artculo sobre arquitecturas de alta disponibilidad para hosting masivo.
En este artculo, el grupo comparte aspectos fundamentales para crear una
arquitectura de hosting que sea resistente y escalable. A continuacin, tenemos
a Marc Colmes y Simon Cox con una nueva visin de HPC que llaman Informtica
de Alta Productividad. Marc y Simon han trabajado juntos sobre el anlisis de las
consideraciones integrales y de infraestructura para HPC. Sigue Mario Cardinal
con un artculo llamado Infraestructuras orientadas a pruebas. Mario es un
gran defensor del Desarrollo orientado a Pruebas (TDD, sus siglas en ingls) y en
este artculo describe en lneas generales el modo en el que el TDD puede
aplicarse al nivel de la infraestructura.
Para continuar con la serie de Perfiles del Architecture Journal, para esta
edicin tuve la exclusiva oportunidad de reunirme con Don Ferguson y
preguntarle lo que significa ser arquitecto. Para quienes no lo saban, Don sola
ser Asociado de IBM y Arquitecto Principal en el Grupo de Software de IBM,
recientemente antes de unirse a Microsoft. Despus de la entrevista con Don,
contina un artculo de Jim Kilt sobre Resolver el dilema de la integracin. Jim
comparte algunos de sus desafos de integracin adems de presentarnos un
Mapeo en el pozo de la desesperacin!
Para completar esta edicin, tenemos dos artculos grandiosos sobre el tema
de la Arquitectura Orientada a Servicios (SOA) del mundo real. Comienza Shy
Cohen con una ontologa y taxonoma de servicios que puede encontrarse en
SOA, varios de los cuales se ajustan bien dentro del espacio de la
infraestructura. El ltimo artculo de esta edicin es Versionado en SOA, de
Boris Lublinsky. Boris toma un desafo que pueden enfrentar varios arquitectos
en la actualidad y analiza mltiples enfoques para el versionado de servicios.
Bien, este es todo el contenido que hemos tratado en esta edicin. Espero
que estos artculos le ayuden a considerar no slo el tipo de construcciones que
prepara para su Metrpolis, sino tambin la infraestructura que se necesita para
ayudar a las personas a que lleguen a ella.
Hasta la prxima edicin!
Simon Guest
Arquitecturas de alta
disponibilidad para
hosting masivo
Sntesis
Escalabilidad y alta disponibilidad son propiedades esenciales
y a la vez opuestas para las infraestructuras de hosting. Ya
sea ingeniero de programas de cdigo abierto, consumidor
de soluciones comerciales o ingeniero TI de Microsoft, parece
que no existe la solucin milagrosa.
Al investigar diferentes aspectos de una infraestructura
de hosting, podemos encontrar tecnologas existentes que se
pueden agrupar para crear la solucin milagrosa. Este
proceso tambin ayudar a detectar las diferencias que
debemos reducir. La plataforma de la solucin milagrosa
debe ofrecer una infraestructura que permita una gran
cantidad de cuentas de clientes y debe ser escalable y con
alto grado de redundancia.
Este artculo se centrar en los componentes necesarios
para la construccin de un entorno exclusivo que sea
escalable, confiable, seguro y fcil de mantener y que al
mismo tiempo ofrezca alta disponibilidad (HA, sus siglas en
ingls). Los proveedores de aplicaciones solitarias, hasta
hosters compartidos de alta densidad, se beneficiaran de
esta solucin. Pero, Existe? De lo contrario, Cules son los
desafos que nos bloquean en la actualidad? y Cunto
podemos aproximarnos a esto?.
Firewall
Balanceador de la carga
Contenido
esttico
Contenido
dinmico
Compartido
60% -
Uno a uno
Escala
Brindar informtica
integral de alta
productividad
Por Marc Holmes y Simon Cox
Sntesis
En la actualidad, realizar un clculo informtico complejo
cientfico y de ingeniera significa mucho ms que
simplemente comprar una gran supercomputadora. Si bien
tradicionalmente HPC significa High Performance
Computing (Informtica de Alto Rendimiento), creemos que
la solucin integral real debera ser Informtica de Alta
Productividad. A lo que queremos referirnos con
Informtica de Alta Productividad es a toda la estructura de
manipulacin de datos e informtica y tambin a las
herramientas, tecnologas y plataformas necesarias para
coordinar, procesar y monitorear este clculo integral.
Muchos desafos estn asociados con la produccin de una
solucin general de Informtica de Alta Productividad (HPC)
para problemas de dominio cientficos y de ingeniera. En
este artculo tratamos estos desafos basados en los
requisitos tpicos de estos problemas, proponemos varias
soluciones y demostramos el modo en el que han sido
implementados para usuarios a travs de un modelo
cientfico especfico del entorno, siguiendo el proceso desde
el comienzo hasta el final. Nuestra solucin tcnica general
se podr poner en prctica para cualquier solucin que
requiera capas de interfaz y control para un servicio de HPC
orientado al servicio distribuido.
La solucin tiene en cuenta la cadena de valor total para las
soluciones de HPC y utiliza la tecnologa de Microsoft para superar
esta cadena de valor ms all de simples mejoras del rendimiento en
el hardware, software y algoritmos que, como se describe, no
siempre es una opcin posible. La clave de nuestra solucin es la
capacidad de integrarse con otros sistemas mediante estndares
abiertos.
Requisitos para soluciones de informtica de alta
productividad
En los dominios de ingeniera y ciencia, las soluciones HPC pueden
utilizarse para resolver problemas matemticos complejos en una
diversidad de reas, como clculos estadsticos para epidemiologa
gentica, clculos de dinmica de fluidos para la industria
aeroespacial y modelado del medio ambiente global. Cada vez ms, el
desafo est en integrar todos los componentes requeridos para
componer, procesar y analizar los resultados de problemas de
manipulacin de datos e informtica de gran escala.
An con diferencias tan diversas en los problemas, los requisitos
para las soluciones poseen las mismas caractersticas debido al
contexto del dominio y la complejidad del problema en cuestin.
Hardware
Algoritmos
Software
Escenario de informtica
Acceso
Usuario
Solicitud
Proceso
Anlisis
Inicio de sesin
Carga
Preproceso
Automtico
Inicializacin
Ingreso de datos
Proceso
En lnea
Aprobacin
Postproceso
Descarga
Globus
Clster de Linux
SSH
Recursos informticos
Interfaces
Foundation
Clientes
alternativos
Simulacro
Flujo de trabajo
Escenario de administracin
Desarrollar
Publicar
Actividades
Catlogo
Algoritmos
Configuracin
Administrar
Monitoreo
Autor
Usuario
avanzado
Flujos de trabajo
Administrador
Produccin
10
Cuenta
Publicacin:
Escenario de la solucin
Despus de haber detallado varios escenarios generales que pueden
Figura 5: Microsoft Cluster Compute Server Edition satisface el paso del proceso.
Escenario de informtica
Acceso
Solicitud
Proceso
Anlisis
Inicio de sesin
Carga
Preproceso
Automtico
Inicializacin
Ingreso de datos
Proceso
En lnea
Aprobacin
Postproceso
Descarga
Usuario
11
Publicar
Publicar
Publicar
12
Figura 6: Workflow Foundation puede brindar una capa de aplicacin completa que abarque la mayora de las reas en los pasos de Solicitud,
Proceso y Anlisis.
Escenario de informtica
Acceso
Solicitud
Proceso
Anlisis
Inicio de sesin
Carga
Preproceso
Automtico
Inicializacin
Ingreso de datos
Proceso
En lnea
Aprobacin
Postproceso
Descarga
Usuario
13
Arquitectura de Componentes
La arquitectura principal se parece a la conocida arquitectura de
aplicacin de n-capas y, en lneas generales, ste es de hecho el
caso. La organizacin de la funcionalidad es bastante lgica. La Figura
1 muestra los componentes necesarios para la arquitectura.
Capa de aplicacin
La capa de aplicacin est compuesta por el tiempo de ejecucin del
WF alojado como un servicio NT. Esta capa se utiliza principalmente
para comunicarse con el programador de tareas del clster, pero ofrece
una variedad de funciones:
Figura 1: Componentes
PowerShell
WPF
Formularios de
Windows
Administrador de operaciones
de Microsoft
Ejecucin
(PCT) FCW
Administracin
MO SS 2007
Formularios de Windows
Tiempo de ejecucin del flujo de trabajo
Biblioteca de actividades
PCT
(PCT)
FCW
Autora
Registro
Servicio de datos
Servidor SQL
Resultados DB
Registro DB
Almacn de
archivos
Callogo de flujos de
trabajo DB
Servicio de datos
El servicio de datos contiene bases de datos de soporte como
almacenes persistentes y seguimiento para el tiempo de ejecucin del
flujo de trabajo. En esta arquitectura, tambin es probable que exista
un almacn que contenga resultados o agregados a resultados. Es
posible que los archivos de entrada y salida de datos se traten como
archivos para mover de un modo ms fcil los clsteres hacia los nodos
de proceso respectivos. Finalmente, hay una base de datos que
contiene un catlogo de los flujos de trabajo disponibles para su
ejecucin.
(PCT)
FCW
(PCT)
FCW
Persistencia
Servicio de cmputos
Programador de tareas
C, C++, MPI
Persistencia DB
Interfaz de usuario
La experiencia de la interfaz de usuario puede dividirse en tres
partes. Cada una desempea una funcin diferente de la solucin
general:
Servicio de cmputos
El servicio de cmputos es el ms simple de la arquitectura y est
compuesto de un clster de x nodos en una configuracin determinada.
Comunicacin
La comunicacin en todo el proceso de arquitectura se gestiona
utilizando Windows Communication Foundation mediante un TCP
(conexin remota) o un canal HTTP. Esto mantiene a la arquitectura
escalable y desacoplada y ofrece beneficios para las interfaces de
usuario diferentes, segn requisitos del usuario (autora, ejecucin,
emisin de informes).
14
Seguridad
En una estructura distribuida orientada al servicio, que potencialmente
pasa por varios dominios de seguridad, es fundamental la federacin
de identidades para permitir el control de acceso a nivel del usuario y
el inicio de sesin nico para todos los aspectos de la arquitectura de
componentes. Las tecnologas que ofrecen estas capacidades son
aquellas que estn basadas en certificados, federacin de directorio
activo (junto con extensiones para integrarse con los sistemas Unix) y
Windows CardSpace de Microsoft.
Acceso
Solicitud
Proceso
Anlisis
Inicio de sesin
Carga
Preproceso
Automtico
Inicializacin
Ingreso de datos
Proceso
En lnea
Aprobacin
Postproceso
Descarga
Usuario
15
Implementacin genrica?
Escenario de Administracin
Administrar
Monitoreo
Administrador
Cuenta
16
HPC
10%
90%
Datos
40%
60%
Interfaz de usuario
(Portal de Sharepoint, Formularios de Windows)
Capa de aplicacin
(Windows Workflow Foundation)
Desarrollar
La codificacin es necesaria para los algoritmos y las actividades de
autora, por lo tanto, Visual Studio 2005 es un entorno ideal para
utilizar la estructura .NET para extender las actividades o modificar la
interfaz de usuario, as como tambin para utilizar Microsoft MPI y
pilas en C++ para la codificacin de algoritmos en paralelo.
Para el desarrollo de flujos de trabajo, Visual Studio 2005 tambin es
la opcin preferida, aunque puede no ser tan adecuado para los
usuarios avanzados como lo es para los desarrolladores, debido a la
complejidad de la interfaz. Para los usuario avanzados contamos con
otras opciones:
Publicar
Actividades
Catlogo
Algoritmos
Configuracin
Flujos de
trabajo
Produccin
Autor
Usuario
avanzado
Autor
Usuario
avanzado
Usuario
Servicio de datos
(Servidor SQL)
Servicio de cmputos
(Windows CCS)
Desarrollo del diseador. Por otro lado, debido a que las definiciones
de las reglas y el flujo de trabajo se pueden describir en XAML, se
podra construir toda una superficie de diseo nueva para
representar la construccin del flujo de trabajo. Una superficie de
diseo nueva es una gran opcin para un dominio que posee un
modo particular de diagramar procesos o en los que se requieren
otras opciones de alojamiento, por ejemplo, utilizar Windows
Presentation Foundation o las capacidades de Web de AJAX. La
seccin de recursos contiene un vnculo a una implementacin de
ASP.NET AJAX de la superficie de diseo.
17
18
Infraestructuras
orientadas a pruebas
Por Mario Cardinal
Sntesis
Las empresas de software informtico deben cumplir dos
funciones construir y ejecutar software. Cada funcin
requiere un conjunto de habilidades diferentes. La diferencia
entre construir y ejecutar casi siempre se observa con
claridad en el organigrama. En el mbito de la arquitectura,
por un lado, hay arquitectos de aplicaciones que participan
en el desarrollo de software (construir), y por el otro,
arquitectos de infraestructura que participan en la operacin
del software (ejecutar). Como arquitecto de aplicaciones,
creo que ambos equipos deben aprender las mejores
prcticas del otro. Una de las mejores prcticas que un
equipo de infraestructura debe aprender del equipo de
desarrollo de software es expresar las decisiones de
arquitectura utilizando comandos de prueba.
Decisiones de arquitectura
La disciplina de arquitectura de software est basada en la idea de
reducir la complejidad mediante abstraccin y separacin de asuntos.
El arquitecto es la persona responsable de identificar la estructura de
los componentes fundamentales que por lo general se los considera
difciles de cambiar, as como tambin de simplificar las relaciones
entre esos componentes. El arquitecto reduce la complejidad
dividiendo el espacio del problema en un conjunto de componentes e
interfaces que sern cada vez ms difciles de cambiar en la medida
que el proyecto se desarrolla.
La nica forma de simplificar el software es estructurar todas las
interacciones de los componentes principales mediante interfaces y
aceptar el hecho de que estas interfaces ahora son casi imposibles de
cambiar. Si se selecciona un componente de software, entonces se
puede hacer fcil de cambiar. Sin embargo, el desafo es que es casi
imposible hacer que todo sea fcil de cambiar sin incrementar el nivel
de complejidad, como lo expres Ralph Johnson en el artculo que
Martin Fowler escribi para IEEE Software: Hacer que algo sea fcil
de cambiar hace que el sistema global sea un poco ms complejo y
hacer que todo sea fcil de cambiar, hace que el sistema completo
sea muy complejo.
Establecer interacciones de componentes globales mediante
interfaces es hacer que las decisiones de diseo sean irreversibles.
Este conjunto de decisiones de diseo sobre la estructura fsica y
lgica de un sistema, en caso de hacerlas de un modo incorrecto,
pueden provocar que el proyecto sea cancelado. La clave del xito es
proteger el sistema contra la inestabilidad. Los buenos arquitectos
conocen el modo de identificar reas de cambio en requisitos
existentes y la forma de protegerlas contra la irreversibilidad de la
arquitectura.
19
Secuencia de prueba 1
Intento: Recuperar falla del disco duro del Servidor SQL
Pasos:
1. Reemplazar disco duro defectuoso
2. Instalar base de datos en el servidor SQL
3. Recuperar copia de seguridad del da anterior desde la cinta (crear
esquema y datos)
Criterio de xito: Puedo encontrar al menos una orden con su
campo de actualizacin configurado para el da anterior en la tabla
orden
Secuencia de prueba 2
Intento: Recuperar corrupcin de datos
Pasos:
1. En una base de datos del servidor SQL existente, recuperar la
copia de seguridad de la cinta del da anterior (sobrescribir datos)
Criterio de xito: No hay rdenes que posean su campo de
actualizacin configurado para el da de hoy y puedo encontrar al
menos una orden con su campo de actualizacin configurado para el
da anterior en la tabla orden
y
y
y
Estilo
Implementacin
perspectiva del
usuario
y
y
y
Presentacin
Administraci
n del estado
Procesamiento
Presentacin
y
y
y
Operacin y monitoreo
Administracin
Procesamiento del estado
Operacin y monitoreo
Comunicacin
y
y
y
Transportar
Cambiar
Formatear
Administracin
Procesamiento del estado
Operacin y monitoreo
Presentacin
Administracin
Procesamiento del estado
Operacin y monitoreo
20
2.
3.
function test-connection
{
$pingtest = ping $args[0] -n 1
if ($pingtest -match TTL=)
{
write-host $true
}
else
{
write-host $false
}
}
Usage:
test-connection MyServer01.domain.com
A diferencia de un documento narrativo, un conjunto de comandos de
prueba automatizados es un artefacto operativo. Siempre se mantiene
actualizado y valida continuamente el cumplimiento del objetivo del
arquitecto.
Diseo con capacidad de pruebas
La capacidad de pruebas significa contar con interfaces apropiadas y
seguras para orientar la ejecucin y verificacin de los comandos de
prueba. No se puede lograr la capacidad de prueba si se confeccionan
pruebas despus del diseo y la implementacin. Construir pruebas
durante el diseo es el nico enfoque posible para lograr la capacidad
de prueba.
Al abstraer la implementacin, si se confeccionan primero las
pruebas se reduce en gran medida el vnculo entre los componentes.
Las decisiones irreversibles de diseo ahora se pueden probar de un
modo mucho ms exhaustivo que antes, dando como resultado una
arquitectura de ms alta calidad que es tambin ms fcil de
mantener. De este modo, los beneficios mismos comienzan a producir
dividendos para el arquitecto, creando un ciclo ascendente perpetuo en
apariencia para la calidad. El hecho de confeccionar pruebas durante la
etapa de diseo brinda un doble beneficio:
1.
2.
21
22
Estructuradas
Auto-documentadas
Automticas y repetibles
Basadas en datos conocidos
Diseadas para probar acciones positivas y negativas
Ideales para probar la implementacin entre diferentes mquinas
Documentacin operativa de configuracin, implementacin y
ejecucin.
Recursos
Who needs an architect? Martin Fowler, IEEE Software Magazine,
Volume 20, Issue 5 (Septiembre 2003)
http://www.martinfowler.com/ieeeSoftware/whoNeedsArchitect.pdf
CodePlex PowerShell Scripts for Testing
http://www.codeplex.com/psexpect
Companion blog for PSExpect:
http://testfirst.spaces.live.com
Conclusin
La prueba automatizada combinada con la prueba de regresin no
slo documenta las decisiones de arquitectura en el nivel adecuado
para los implementadores sino que tambin valida continuamente el
cumplimiento del objetivo del arquitecto.
Los beneficios de confeccionar pruebas automatizadas son los
siguientes:
Sobre el autor
Mario Cardinal es consultor senior independiente especializado en
arquitectura de aplicacin empresarial. Dedica la mayor parte de su
tiempo a la construccin de aplicaciones.NET empresariales bien
diseadas con procesos giles. Cuenta con ms de quince aos de
experiencia en el diseo de sistemas de informacin a gran escala. Por
segundo ao consecutivo ha recibido de Microsoft el Premio al
Profesional ms Valioso (MVP) por sus cualidades como Arquitecto de
Software. El nombramiento de MPV se otorga a verosmiles expertos en
tecnologa quienes se encuentran entre los miembros ms destacados
de la comunidad dispuestos a compartir sus experiencias para ayudar a
otros individuos a desarrollar su potencial. Lidera el grupo de inters
sobre arquitectura en el Montreal Visual Studio User Group y en la sede
de la Asociacin Internacional de Arquitectos de Software (IASA, por
sus siglas en ingls) en Montreal. Tambin es moderador tcnico de la
seccin de Arquitectura para DevTeach Conference. Adems, es
anfitrin de un programa de debate en Internet sobre el desarrollo de
software con Microsoft .NET (Visual Studio Talk Show). Mario posee
diplomas de Licenciatura en Ingeniera Informtica y Master de
Administracin de Tecnologa otorgados por Ecole Polytechnique en
Montreal, Canad. Tambin posee los ttulos de Certified ScrumMaster
(CSM) y Microsoft Certified Solution Developer (MCSD.Net). (Puede
contactar a Mario a travs de su sitio de Web, www.mariocardinal.com)
23
24
25
Resolver el dilema de la
integracin
Por Jim Wilt
Sntesis
Paquetes basados en estructuras extensibles. Estn por
todos lados. Desde portales hasta comercio electrnico.
Desde administracin de contenido hasta mensajera. Son
eficaces? En varios casos, s, absolutamente. Pienso en
varias aplicaciones exitosas que constru sobre la base de las
estructuras que brindan estos productos. Incentivan la
productividad, aumentan la calidad, mejoran las
caractersticas y reduce en gran medida el tiempo de llegada
al mercado.
Por lo tanto, Por qu las soluciones de integracin no
experimentan las mismas mejoras? Independientemente del
modo en el que trate de formular una solucin de integracin
con una estructura o herramienta determinada, parece que
no avanza al mismo ritmo que experiment con mi solucin
de portal o aplicacin de Web. Esto es lo que defino como
Dilema de Integracin.
Reconocida y categorizada
Comprendida con las repercusiones resultantes
Tratada proactivamente
La regla del 90/10
El 90 por ciento de la actividad centrada en soluciones de integracin
es de preparacin, configuracin y optimizacin adecuada del entorno
de infraestructura y debida seguridad. Los Sistemas Operativos,
Servicios de Web, Directorios y Configuracin de las Propiedades de la
Aplicacin, as como tambin los Grupos de Aplicaciones, usuario de
procesos de host, Inicio de Sesin nico, Permisos de Directorio,
Seguridad, etc., todos desempean una funcin en la ejecucin y
contribuyen a la frustracin, generalmente asociada con la
implementacin de la integracin.
Varios desarrolladores de paquetes extensibles y aplicaciones se
protegen de tener que preocuparse sobre claves con nombre seguro,
el GAC, certificados, encriptacin, hosts en proceso vs. procesos de
host aislados y otros tantos factores en los que un desarrollador de
integracin debe adquirir mucho dominio y experiencia profesional. El
beneficio es que la experiencia de desarrollo de integracin mejorar
en gran medida el enfoque del desarrollador progresando con
soluciones de aplicacin futuras [normales]. Es decir, las habilidades
del desarrollador se afianzan al finalizar una solucin de integracin.
El 10 por ciento restante, en la regla del 90/10, queda para que el
desarrollador de la integracin resuelva el problema de integracin en
26
Sistema
distribuido B
Sistema
legado A
Sistema
legado A
Sistema
distribuido C
VAN
Formato cannico B
Formato estndar de la industria
(ANSI, XCBL, HIPAA, HL7, etc.)
A mapea hacia
el formato
intermediario B
C mapea desde
el formato
intermediario B
Formato
intermediario B
por lo general inflado,
demasiado
redundante
27
Char*
Char 1
Apellido
Char*
Nombre
John
Tory Ann
Mary A
Mary
28
Apellido
Smith
Wilson
Anderson
Anderson
El rendimiento importa
El rendimiento siempre es importante, en especial cuando se dice que
no importa.
Solucionar asuntos de rendimiento (BizTalk)
Reduzca las entradas y salidas del Buzn de Mensajes.
Disminuya la dependencia sobre la orquestacin lo que puede
causar que su solucin se ejecute de un modo mucho ms lento.
El desarrollo orientado al rendimiento implica mtricas de medicin
durante todas las etapas del desarrollo para identificar los
obstculos lo antes posible.
Utilice instrucciones de optimizacin del rendimiento del producto
se han publicado algunas instrucciones excelentes sobre BizTalk
(Ver Recursos).
Listo para usar no est optimizada para su solucin. Existen
varias posibilidades para adaptar el rendimiento, por lo tanto es
importante comprender todos los componentes de la solucin y
optimizarlos de forma adecuada para lograr una operacin ptima.
Las clases serializadas y el cdigo administrado pueden ser ms
rpidos que los mensajes y los mapas, considere su uso para
componentes fundamentales de rendimiento en la solucin.
Considere sus herramientas como un grupo de Legos
Una vez que un equipo adopta un conjunto de herramientas o
paquete para ayudar en la implementacin de sus soluciones de
integracin, un error comn es utilizar cada herramienta del conjunto
para cada solucin de integracin.
En la mayora de los casos, no es necesario utilizar todas las
herramientas. De hecho, utilizar todas las herramientas puede afectar
negativamente el rendimiento de la solucin general.
Una mejor prctica es considerar su conjunto de herramientas
como un grupo de Legos. Los Legos vienen en varios tamaos y
colores. No es necesario utilizar todos los tamaos y todos los colores
en las creaciones. A veces puede querer utilizar slo Legos blancos y
verdes, mientras que otras veces puede centrarse en el azul y el rojo.
Todo depende de resultado que se desee.
Conclusiones
Piense que sus herramientas de integracin son una Ferrari (con
cambios manuales) en su garaje. Al menos que slo pueda manejar
una con cambios automticos, esta Ferrari ser el vehculo ms lento y
frustrante que jams haya conocido. Sin embargo, una vez que logre
dominar los cambios manuales, demostrar por s mismo que
verdaderamente es un auto de carreras de alto rendimiento, calibrado
con precisin.
Las herramientas adecuadas junto con las prcticas y habilidades
correctas pueden con toda seguridad resolver el dilema de la
integracin.
Recursos
Eddie Churchill, BizTalks sexy new XSLT Mapper
http://channel9.msdn.com/Showpost.aspx?postid=126990
BizTalk guidelines
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/
bts_2004wp/html/87f447a2-09ce-4a30-9f94-584684310051.asp
Sobre el autor
Jim Kilt dedic su experiencia y capacidad a resolver problemas con el
objeto de ayudar a los clientes a disear las mejores soluciones
posibles para que tengan xito en sus necesidades relacionadas con el
diseo de sistemas, colaboracin, datos, integracin e inteligencia
comercial. Es arquitecto de soluciones con credencial MCA de Microsoft
y ha recibido varios premios de la industria, incluyendo 1993 Industry
Week Technology of the Year Award y Burroughs Achievement Award
for Excellence. Tambin es Microsoft Most Valuabe Professional Visual
Developer Solutions Architect, miembro del Microsoft MCA Board of
Directors, la Central Michigan University Collage of Science and
Technology Alumni Advisory Board y es Central Michigan University
Distinguished Alumni.
29
Ontologa y Taxonoma de
los Servicios en una
Arquitectura Orientada a
Servicios
Por Shy Cohen
Sntesis
Este artculo describe una ontologa y taxonoma para los
servicios de una Arquitectura Orientada a Servicios (SOA);
analiza la naturaleza y las interrelaciones de los diferentes
tipos de servicio, describe un diseo genrico para los
sistemas basados en SOA y proporciona orientacin sobre la
construccin y administracin de los servicios. La ontologa y
taxonoma que se describe aqu brinda un lenguaje comn
para arquitectos, ingenieros y personas responsables de la
toma de decisiones y facilita la comunicacin dentro y entre
las diferentes disciplinas y organizaciones.
Taxonoma de Servicios
Las economas orientadas a servicios prosperan mediante la
promocin de la composicin. En SOA, se pueden crear nuevas
soluciones mediante la composicin de nueva funcionalidad y lgica
de negocios de aplicacin especfica, con capacidades comerciales
existentes, recombinantes. En la actualidad, estas capacidades
comerciales se construyen en su mayora de un modo interno o se
compran para implementarlas en el sitio como una solucin
empaquetada. Sin analizamos el futuro cercano, observamos un
crecimiento constante en el modelo de Software como Servicio
(SaaS) como una opcin para brindar a las organizaciones la
posibilidad de contratar soluciones componentizadas y capacidades
comerciales, enriqueciendo de este modo el conjunto de componentes
que pueden ser incluidos en las aplicaciones compuestas de la
organizacin.
Una ontologa es un modelo de datos que representa un conjunto
de conceptos dentro de un dominio y las relaciones entre esos
conceptos. Una taxonoma es una clasificacin de las cosas as como
tambin de los principios subyacentes de esa clasificacin. Una
taxonoma jerrquica es una estructura en forma de rbol de las
clasificaciones de un grupo de objetos determinados. Este artculo
define las categoras de servicios en SOA, las relaciones entre esas
categoras y los principios que subyacen la clasificacin de diferentes
tipos de servicio dentro de distintas categoras. Adems de definir,
clasificar y proporcionar los principios de clasificacin, trata la
arquitectura de software y los aspectos relacionados con la empresa
relevantes para la construccin y administracin de aplicaciones
compuestas en SOA.
Si analizamos la composicin desde un punto de vista de
arquitectura de software, una ontologa y taxonoma comn nos
permite identificar las caractersticas comunes de los servicios que
constituyen una categora particular. Estas caractersticas afectan la
arquitectura y el diseo de soluciones basadas en SOA desde el nivel
de servicio individual hasta la aplicacin compuesta completa. La
categorizacin soporta la composicin mediante la aclaracin de roles
de los distintos componentes, ayudando de este modo a analizar las
relaciones entre los componentes. La categorizacin tambin
contribuye con la deteccin de servicios (por ejemplo, bsqueda de
30
31
Servicios de Utilidad
Los Servicios de Utilidad proporcionan servicios genricos, de
aplicacin agnstica que tratan aspectos que no estn relacionados
con la transmisin de mensajes de la aplicacin. Al igual que los
Servicios de Comunicacin, la funcionalidad que ofrecen es parte de
la infraestructura base de un SOA y no est relacionada con ningn
proceso de negocio o lgica de la aplicacin especfica. Por ejemplo,
un servicio de deteccin puede ser utilizado por componentes en una
aplicacin compuesta de estructura flexible para detectar otros
componentes de la aplicacin basados en algn criterio particular (por
ejemplo, un servicio que se implementa dentro de un entorno de
preproduccin puede buscar otro servicio que implemente una cierta
interfaz necesaria para el primer servicio y que tambin se
implementa en el entorno de preproduccin). Los ejemplos de
Servicios de Utilidad incluyen Servicios de idEntity y seguridad (por
ejemplo, un Servicio de Identidad Federada o un Servicio de
Credenciales de Seguridad), servicios de deteccin (como un servidor
UDDI) y servicios de transformacin de mensajes.
Al igual que los Servicios de Comunicacin, los Servicios de Utilidad
tambin pueden ser instruidos o configurados por una aplicacin
particular respecto del modo de realizar una operacin en su
representacin. Por ejemplo, un servicio de transformacin de
mensajes puede transformar mensajes desde un esquema de
mensajes hacia otro basndose en un mapeo de trasformacin que
proporciona la aplicacin utilizando el servicio de transformacin de
mensajes.
Si bien los Servicios de Utilidad no contienen ningn estado de la
aplicacin, el estado de un Servicio de Utilidad puede estar afectado
por los cambios de estado del sistema. Por ejemplo, un usuario nuevo
que se agrega a la aplicacin puede requerir una actualizacin de las
opciones de credencial en el Servicio de Credenciales de Seguridad. A
diferencia de los Servicios de Comunicacin, los Servicio de Aplicacin
interactan directamente con los Servicios de Utilidad que procesan
y, si es necesario, responden los mensajes que los Servicios de
Aplicacin les enviaron.
Los usuarios de Servicios de Utilidad pueden requerir la
configuracin de un permiso para utilizar el servicio, ya sea en el
mbito de la aplicacin, del usuario o de la aplicacin-usuario. Por
ejemplo, un servicio de deteccin tal vez slo trabaje con usuarios de
dominio autenticados (usuarios que poseen credenciales vlidas
emitidas por un controlador de dominio de Windows).
Al igual que los Servicios de Comunicacin, los Servicios de Utilidad
pueden brindar prestaciones en el mbito de la aplicacin para el
monitoreo, diagnstico, BAM y dems. Esto puede incluir informacin
estadstica sobre patrones de uso (cantidad de usuarios de otra
32
33
34
35
Versionado en SOA
Por Boris Lublinsky
Sntesis
La Arquitectura Orientada al Servicio (SOA) est tomando un
primer plano en la arquitectura empresarial. SOA hace
posible el desarrollo paralelo en varios equipos distintos,
cada uno con su propio programa de mantenimiento y
produccin. En este artculo analizar los enfoques para el
control de versiones de servicios que permiten desarrollar
implementaciones de servicios sin afectar a los consumidores
existentes, logrando que las implementaciones de SOA
posean una estructura ms flexible. La idea bsica del
versionado de servicios es muy simple, pero su
implementacin requiere un control estricto. Expondr
unidades de versionado: enfoques de acceso/implementacin
de versin, consideraciones sobre el ciclo de vida de la
versin del servicio, creacin de una nueva versin y
cambios en el servicio. La creacin de versiones basadas en
el mtodo que se propone aqu permite minimizar el impacto
del versionado y reduce la cantidad de cdigo implementado.
La mensajera semntica para las definiciones de interfaz del
servicio permite que la implementacin del servicio sea ms
flexible para el cambio.
Si hay algo constante en las implementaciones informticas, es el
cambio. Las condiciones comerciales cambian, por consiguiente,
requieren que las implementaciones informticas cambien. Las
nuevas tcnicas y patrones permiten una mejor implementacin de
las cualidades del servicio, como sistema de fallas y balanceo de
carga, seguridad y dems. La informtica en s misma cambia
continuamente con la presentacin de nuevos sistemas operativos,
lenguajes de programacin y servidores de aplicacin, por ejemplo,
que simplifican la creacin y mantenimiento de nuevas soluciones. De
hecho, un estmulo en la implementacin de una solucin de
informtica es la capacidad de hacer frente a estos cambios
inevitables.
En la era de aplicaciones monolticas, los cambios se trataban
sobre la base de aplicacin-por-aplicacin. La implementacin del
cambio, ya sea para un nuevo negocio o infraestructura por
ejemplo, la incorporacin de un requisito o poltica de seguridad, o
trasladar una aplicacin a una nueva plataforma de software se
realizaba para una aplicacin completa, consumiendo importantes
cantidades de tiempo y dinero hasta su finalizacin. Por otro lado,
debido a que cada aplicacin era desarrollada por un nico equipo e
independiente, este enfoque no permita los cambios. En la medida
que se presentaban nuevas versiones de una aplicacin, la versin
anterior quedaba en desuso y poda eliminarse.
Uno de los beneficios principales del estilo de arquitectura
orientada a servicios es la capacidad de tratar los cambios de un
modo eficaz. SOA est basada en la descomposicin de recursos
informticos de la empresa y la separacin de artefactos informticos
36
Versionado en SOA
Figura 1: Coexistencia de versiones servicios mltiples
Consumidor
del servicio
Consumidor
del servicio
invoca
Consumidor
del servicio
invoca
invoca
Consumidor
del servicio
invoca
Proveedor
del servicio
invoca
Consumidor
del servicio
Cambio
Proveedor
del servicio
invoca
Consumidor
del servicio
Unidades de versionado
Cambios en el servicio, creacin de una nueva versin
Consideraciones del ciclo de vida de la versin del servicio
Enfoques de acceso/implementacin de la versin
Unidades de versionado
Existen dos opciones principales para definir las unidades de
versionado, cada una con sus propias ventajas y desventajas.
Segn las prcticas actuales de Servicios de Web (la tecnologa de
implementacin de SOA ms conocida en la actualidad), varios
37
Versionado en SOA
aquellos que afectarn. Cualquier cambio en el servicio, ya sea un
cambio en la interfaz o implementacin, que pueda impactar en la
ejecucin del consumidor, debe producir la creacin de la nueva
versin del servicio (mtodo). Si bien la definicin anterior no es muy
precisa y fcil de interpretar, brinda un buen punto de inicio para la
creacin de la nueva versin.
Analizar ms en detalle los componentes principales de la
definicin del servicio (definiciones de mensaje e interfaz) y las
implementaciones para determinar las situaciones particulares que
pueden llevar a la creacin de una nueva versin.
Cambios en la interfaz del servicio
Despus de la adopcin de un modelo semntico de mensajera, las
firmas del mtodo de un servicio nunca cambian (todos los cambios
se reflejan en los cambios del modelo semntico). La interfaz del
mtodo del servicio, en el caso de la mensajera semntica, es la
siguiente:
38
Versionado en SOA
alinea este enfoque con las tcnicas de versionado del esquema de
XML (Ver la seccin Versionado en esquemas XML), y por lo tanto,
permite la representacin directa del versionado en los mensajes del
servicio. En trminos generales, los cambios en el esquema se
pueden definir en tres categoras principales:
Las Revisiones representan los cambios en el esquema del
documento. Por ejemplo, un cambio en un espacio en blanco,
formateo, documentacin no normativa, comentarios y dems. La
revisin de una versin que ya ha sido publicada no debe afectar la
funcionalidad de los consumidores ni de las implementaciones del
servicio.
Adems, el desarrollo gradual inicial de un esquema semntico,
antes de que se publique para uso productivo, tambin se puede
tratar como una revisin de la misma versin.
Los cambios secundarios representan los cambios compatibles
con versiones anteriores en el esquema del documento. Los ejemplos
de cambios secundarios en el esquema incluyen:
Implementacin
Versin 1
Consumidor
del servicio
Invocar
Servicio/
Mtodo/
Versin con
carga til
adecuada
Direccin
terminal
mtodo
servicio
...
Implementacin
Versin 2
Implementacin
Versin n
Cambios en la implementacin
Una creencia errnea comn es que, debido a que los servicios se
definen a travs de la interfaz, no de la implementacin, los cambios
en la implementacin del servicio no afectarn a los consumidores del
servicio y no requieren la creacin de versiones.
En realidad, la adherencia a la interfaz no constituye la capacidad de
cambio de las implementaciones. La capacidad de cambio no est
definida por la interfaz sola, sino ms bien por el contrato, que incluye
la interfaz, pre y post condiciones y ciertos SLAs sobre los cuales se
basa el consumidor del servicio. Por consiguiente, el versionado se
requiere cuando los cambios en la implementacin del servicio afectan
el contrato sobre el cual se basa un consumidor del servicio particular.
Debido a que los diferentes consumidores del servicio pueden basarse
en diferentes partes del contrato de servicio, cada cambio en la
implementacin del servicio debe ser validada para todos los
consumidores del servicio existente para garantizar que no se
incumplan los contratos.
39
Versionado en SOA
problema puede ser an ms complejo que el versionado de servicios.
Se puede lograr una mejora an mayor si se reemplaza con un
agente externo (mediador) el enrutador local que realiza el envo
entre la implementacin de las versiones del servicio. En este caso,
todas las versiones se pueden implementar de un modo independiente
y es responsabilidad del mediador establecer un vnculo de forma
Consumidor 1
Servicio 1
dinmica con la direccin terminal de la versin del servicio deseado y
(utiliza
Invoca
Mtodo 1
enviar todos los mensajes de acuerdo con esto. Sin embargo, a pesar
Servicio 1
Versin 1
de que los intermediarios (mediaciones) son promocionados en las
Mtodo 1
publicaciones ESB como la solucin para la mayora de los problemas
Versin 1)
de transformacin/enrutamiento que se encuentran en la Arquitectura
Orientada al Servicio, existen inconvenientes asociados con ellos.
Servicio 1
Normalmente, disminuyen el rendimiento. Tambin debe soportar el
Mtodo 1
SLA ms estricto de todos los servicios que se acceden a travs de
Versin 2
ste, que podra ser un requisito muy fuerte.
Direcciones terminales mltiples. En este caso, al igual que con
Consumidor 2
la implementacin del mediador, cada versin de una operacin
(utiliza
determinada se implementa en su propia direccin terminal. La
Invoca
Servicio 2
diferencia aqu es que cada direccin terminal se expone directamente
Servicio 1
Mtodo 2
para un consumidor del servicio (Ver Figura 3).
Mtodo 1
Versin 2)
Las direcciones terminales mltiples implican que un consumidor del
Versin n
servicio puede establecer un vnculo con una direccin terminal (por lo
general, utilizando un registro del servicio) para una versin necesaria
Consideraciones sobre el ciclo de vida de versiones del servicio basada en la informacin de la versin/mtodo/servicio. La ventaja de
Una de las consideraciones ms importantes del versionado es definir este esquema es una separacin completa de la implementacin de
versiones mltiples del mtodo. La desventaja es un paradigma de
la cantidad de tiempo que se conservar una versin del servicio
direccionamiento ms complejo que requiere soporte de registro del
(mtodo). Extender este perodo produce la necesidad de conservar
servicio para establecer un vnculo con la direccin terminal.
cantidades excesivas de versiones del servicio. Por otro lado, reducir
El enfoque de direccin terminal mltiple, habitualmente, brinda una
el perodo, limita el tiempo para que los consumidores del servicio
implementen las actualizaciones necesarias. El ciclo de vida adecuado mejor escalabilidad (un salto menos de red) y disminuye el
acoplamiento entre las versiones mltiples de la misma operacin.
para las versiones del servicio (mtodo) vara significativamente y
est definida por la capacidad de la organizacin de hacer frente a los
Versionado de la Infraestructura del servicio
cambios.
Una variante para la creacin de versiones de servicios es el versionado
de la infraestructura del servicio, que puede requerir lo siguiente:
Enfoques de acceso/implementacin de la versin
Figura 3: Implementacin de versiones utilizando direcciones
terminales expuestas directamente
...
40
Versionado en SOA
adaptador del servicios (Ver Figura 4).
En este caso, cuando el consumidor del servicio, que tiene soporte
de la infraestructura del servicio 1, invoca al proveedor del servicio,
con soporte de la infraestructura del servicio 2, la llamada pasa por el
adaptador realizando una mediacin entre las infraestructuras del
servicio. Desde el punto de vista del consumidor del servicio, el
adaptador funciona como un proveedor de servicios. El adaptador
entonces invoca al proveedor del servicio, actuando como un
consumidor del servicio.
La implementacin se puede combinar con la topologa de
implementacin de versionado de servicios (Figura 4) para brindar
soporte en el versionado tanto a los servicios as como tambin a los
consumidores del servicio entre infraestructuras diferentes.
Conclusin
Enfrentar los cambios, nunca es sencillo y, por lo general, la
complejidad aumenta con la dimensin de la implementacin.
Habitualmente, las implementaciones ms grandes tienen ms partes
movibles interdependientes, y por consiguiente, los efectos del
cambio son ms generales. Las implementaciones de SOA, en
especial las implementaciones que afectan a toda la empresa, no son
la excepcin.
Los enfoques de versionado de servicios que se describen en este
artculo, llevan a la creacin de implementaciones de SOA de
estructura mucho ms flexible. La introduccin de versiones mltiples
del servicio implementadas de forma simultnea permiten que tanto
los consumidores del servicio como los proveedores evolucionen de
modo independiente, con sus propios programas de implementacin y
desarrollo. El versionado independiente de los mtodos del servicio
minimiza el impacto de la creacin de versiones y reduce la cantidad
de cdigo implementado. Finalmente, el uso de mensajera semntica
para las definiciones de interfaz del servicio hace que las
implementaciones del servicio sean ms flexibles al cambio.
Agradecimientos
El autor agradece a Jim McKune, Dmitry Tyomkin, Kiran Achen y Luc
Clement por sus contribuciones.
Recursos
Defining SOA as an Architectural Style, Boris Lublinsky, IBM
developerWorks, Enero 2007
http://www-128.ibm.com/developerworks/architecture/library/
ar-soastyle/
Principles of Service Design: Service Patterns and Anti-Patterns,
John Evdemon, MSDN, Agosto 2005
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/
dnbda/html/SOADesign.asp
Best Practices for Web Services Versioning, Kyle Brown, Michael
Ellis, IBM developerWorks, 2004
http://www-128.ibm.com/developerworks/webservices/library/
ws-version/
A SOA Version Covenant, Rocky Lhotka
http://www.theserverside.net/articles/showarticle.tss?id=
SOAVersioningCovenant
XFire User Guide, Versioning Best Practices
http://docs.codehaus.org/display/XFIRE/Versioning
Architecting Industry Standards for Service Orientation,
Sobre el autor
Boris Lublinsky posee ms de 25 aos de experiencia en arquitectura
tcnica e ingeniera del software. Desde hace varios aos se dedica a la
Arquitectura Empresarial, SOA y Administracin de Procesos. A lo largo
de toda su carrera, el Dr. Lublinsky ha sido autor y orador tcnico
asiduo. Posee ms de 40 publicaciones tcnicas en diferentes revistas
que incluyen: Avtomatika i telemechanica, IEEE Transactions on
Automatic Control, Distributed Computing, Nuclear Instruments and
Methods, Java Developers Journal, XML Journal, Web Services Journal,
JavaPro Journal, Enterprise Architect Journal y EAI Journal.
Actualmente, el Dr. Lublinsky trabaja para una gran Compaa de
Seguros en la que sus responsabilidades incluyen el desarrollo y
mantenimiento de estructuras y estrategias de SOA. Puede contactarlo
en blublinsky@hotmail.com.
41
098-107719