You are on page 1of 44

Aprenda a disciplina,

busque a arte e contribua THE


com idéias no:
www.ArchitectureJournal.net
Recursos nos quais você
ARCHITECTURE
pode confiar.
JOURNAL
Idéias para melhores resultados
TM

Journal 11

Arquitetura de Infra-Estrutura

Arquiteturas de Alta
Disponibilidade e
Hospedagem em Massa

Fornecimento de Sistemas
de Computação de Alta
Produtividade Ponta a Ponta

Infra-estruturas Dirigidas a
Teste

Perfil do Architecture
Journal: Don Ferguson

Resolvendo o Dilema da
Integração

Ontologia e Taxonomia de
Serviços em Arquitetura
Orientada a Serviço

Controle de Versões em SOA


THE
Sumário ARCHITECTURE
JOURNAL TM

Idéias para melhores resultados

Journal 11

Apresentação 1
por Simon Guest

Arquiteturas de Alta Disponibilidade e Hospedagem em Massa 2


por Shaun Hirschman, Mathew Baldwin, Tito Leverette e Michael Johnson
Descubra os segredos para criar infra-estruturas escaláveis, confiáveis, seguras e de fácil manutenção.

Fornecimento de Sistemas de Computação de Alta Produtividade


Ponta a Ponta 7
por Marc Holmes e Simon Cox
Explore a solução técnica para criar um serviço HPC distribuído e orientado a serviço.

Infra-estruturas Dirigidas a Teste 19


por Mario Cardinal
As equipes de infra-estrutura terão uma oportunidade de aprender com as equipes de desenvolvimento de software como
expressar decisões arquiteturais com scripts de teste.

Perfil do Architecture Journal 24


por Don Ferguson
Don Ferguson é Technical Fellow da Microsoft em plataformas e estratégia na função de CTO. Saiba tudo sobre sua carreira
e o que ele pensa da arquitetura.

Resolvendo o Dilema da Integração 26


por Jim Wilt
Conheça uma definição do dilema de integração e o que é possível fazer para evitá-lo no seu ambiente.

Ontologia e Taxonomia de Serviços em Arquitetura Orientada


a Serviço 30
por Shy Cohen
Os serviços podem chegar em várias formas e tamanhos. Veja como usar ontologia e taxonomia comuns para descrevê-los.

Controle de Versões em SOA 36


por Boris Lublinsky
A idéia do controle de versões do serviço é simples, mas a implementação exige muito cuidado e planejamento.
Conheça as várias abordagens que concretizam esse controle em sua organização.

Recursos nos quais você pode confiar. www.architecturejournal.net


Fundador
Arvindra Sehmi
Microsoft Corporation
Editor-chefe
Simon Guest
Microsoft Corporation
Apresentação
Conselho Editorial Microsoft
Gianpaolo Carraro
John deVadoss
Neil Hutson
Eugenio Pace
Javed Sikander
Philip Teale Caro Arquiteto,
Jon Tobey
Editor
Lisa Slouffman
Microsoft Corporation B em-vindo ao Journal 11, cujo tema é a arquitetura de infra-estrutura. Há alguns anos,
um de meus ex-colegas, Pat Helland, elaborou uma analogia arquitetural
denominada Metropolis. Sua concepção pretendia criar um paralelo entre o
Design, impressão e distribuição
planejamento urbano e a arquitetura civil para justificar os desafios complexos da
CMP Technology – Editora arquitetura de software. Uma das coisas que sempre me vem à mente sobre a Metropolis
Chris Harding, diretor administrativo
é que, como arquitetos de TI, quase sempre dedicamos, proporcionalmente, muito mais
Angela Duarte, gerente de publicação
Lisa Broscritto, gerente de projeto tempo aos nossos "próprios edifícios". Muitos de nós carregamos a culpa da obsessão pela
Kellie Ferris, diretor corporativo de aparência do "edifício" e pelo seu desempenho. Entretanto, em decorrência desse fato,
serviços criativos algumas vezes nos esquecemos do macrocenário. Por exemplo, como o nosso edifício
Jimmy Pizzo, diretor de produção
fará parte do conjunto urbano. Na arquitetura civil, os edifícios devem estar de acordo
Diagramação, finalização e impressão (BR) com a planificação urbana em várias disciplinas: estrutura viária, serviços públicos,
Arthéria Comunicação & Multimídia transporte, etc. Levando este pensamento adiante para esta edição do jornal, quis
www.artheria.com.br explorar os mesmos desafios na correlação com o nosso setor.

No início desta edição, temos um grupo de autores: Shaun Hirschman, Matthew Baldwin,
Tito Leverette e Michael Johnson. Eles escreveram um artigo sobre as arquiteturas de alta
disponibilidade e hospedagem em massa. Nesse texto, o grupo compartilha com os
®
leitores os principais aspectos da criação de uma arquitetura de hospedagem flexível e
escalável. Em seguida, temos Marc Holmes e Simon Cox que nos trazem uma nova visão
As informações contidas neste The Architecture Journal (“Jornal”) do HPC que eles denominam computação de alta produtividade. Marc e Simon têm
têm finalidade informativa, apenas. As matérias do Jornal não
constituem a opinião da Microsoft Corporation (“Microsoft”) nem
trabalhado juntos analisando as considerações ponta a ponta e de infra-estrutura do HPC.
da CMP Media LLC ("CMP") e, tampouco, são recomendações da Depois deste, vem o artigo de Mario Cardinal sobre as infra-estruturas dirigidas a teste.
Microsoft ou da CMP; assim sendo, você não deve confiar em Mario é um grande defensor do desenvolvimento dirigido a teste (TDD) e, neste artigo,
nenhuma das matérias deste Jornal sem solicitar o aval de um
descreve como o TDD pode ser aplicado no nível da infra-estrutura.
consultor independente. A Microsoft e a CMP não fazem
declarações nem oferecem garantias quanto à exatidão ou
adequação para determinada finalidade de qualquer matéria deste Para esta edição, dando continuidade à nossa série 'Perfil do Architecture Journal', tive a
Jornal e, em nenhuma circunstância, nem a Microsoft, nem a CMP oportunidade única de entrevistar Don Ferguson para perguntar-lhe o que significa ser
aceitará responsabilidade de qualquer tipo, inclusive arquiteto. Para aqueles que não sabem, Don era Fellow da IBM e arquiteto-chefe do
responsabilidade por negligência (salvo em caso de danos físicos
ou morte) com relação a quaisquer tipos de perdas ou danos
grupo de software da IBM antes de ingressar na Microsoft, recentemente. Depois da
(incluindo, mas não se limitando, aos casos de perda de negócios, entrevista com Don, temos um artigo de Jim Wilt sobre a resolução do dilema da
de receita, de lucros ou prejuízo imprevisto) resultantes do uso das integração. Jim compartilha conosco alguns de seus desafios de integração e inclusive nos
informações deste Jornal. O Jornal pode ter imprecisões técnicas e
apresenta ao limite do desespero no mapeamento!
erros tipográficos. O Jornal pode ser atualizado periodicamente e,
às vezes, poderá estar desatualizado. A Microsoft e a CMP não se
responsabilizam pela atualização das informações deste Jornal Para fechar esta edição, temos dois ótimos artigos sobre o verdadeiro mundo da
nem por deixar de fazê-lo. Este Jornal contém matérias arquitetura orientada a serviço (SOA). Shy Cohen nos apresenta a ontologia e a taxonomia
encaminhadas e criadas por terceiros. Até o máximo permitido de serviços que podem residir em uma SOA, muitas das quais se associam
pela lei aplicável, a Microsoft e a CMP isentam-se de todas as
responsabilidades por qualquer ilegalidade decorrente de erro,
adequadamente no espaço da infra-estrutura. No último artigo desta edição, Boris
omissão ou imprecisão deste Jornal ; além disso, a Microsoft e a Lublinsky nos fala sobre o controle de versões em SOA. Boris aborda um desafio com o
CMP não se responsabilizam pelas matérias recebidas de terceiros. qual muitos arquitetos se defrontam atualmente e analisa as várias possibilidades do
As marcas comerciais a seguir são marcas comerciais registradas controle de versões de serviço.
da Microsoft Corporation: BizTalk, Microsoft, SharePoint, SQL
Server, Visual Studio, Windows, Windows NT e Windows Server. Bem, isto é tudo o que reunimos para mais esta edição. Espero que os artigos possam
Quaisquer outras marcas comerciais são de propriedade de seus
respectivos proprietários. ajudá-lo não apenas a pensar sobre o tipo de edifício em construção para a sua
Todos os direitos autorais e outros direitos de propriedade metrópole, mas também na infra-estrutura necessária para ajudar os cidadãos a
intelectual das matérias publicadas no Jornal pertencem à chegarem lá!
Microsoft Corporation ou estão a ela licenciados. Copiar,
reproduzir, transmitir, armazenar, adaptar ou modificar o layout ou
o conteúdo deste Jornal são ações proibidas, a não ser que haja
autorização prévia, por escrito, da Microsoft Corporation e de cada
um dos seus autores.
Copyright © 2007 Microsoft Corporation. Todos os direitos
reservados.
Simon Guest

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 1


Arquiteturas de Alta
Disponibilidade e
Hospedagem em Massa
por Shaun Hirschman, Mathew Baldwin, Tito Leverette e Michael Johnson

Resumo É fácil criar um arquivo de imagem dessas caixas, assim como é rápido
implantá-las, especialmente se você estiver vendendo pacotes de baixo
Escalabilidade e alta disponibilidade são essenciais, mas custo a clientes que simplesmente desejam hospedar algumas páginas e
propriedades concorrentes em infra-estruturas de nada mais complexo.
hospedagem. Não parece haver uma solução 'genial', quer Na medida em que esse tipo de plataforma desenvolveu-se, inúmeras
você seja engenheiro que trabalha com código aberto, questões começaram a mostrar suas cabeças feias: exigências de backup
consumidor de soluções comerciais ou engenheiro de TI da e restauração, consumo de espaço caro no centro de dados, energia por
servidor, clientes de carga elevada e gerenciamento geral. Além das
Microsoft.
questões de plataforma, houve aumento na demanda por parte dos
Ao explorar os vários aspectos de uma infra-estrutura de consumidores e os avanços da nova tecnologia Web. Surgiram
hospedagem, podemos encontrar tecnologias existentes as tecnologias como PHP, Cold Fusion, ASP, JSP e ASP.NET que forneceram
plataformas mais complexas, impulsionadas pelo desejo do consumidor
quais podem ser agrupadas para criar a solução 'genial'.
de ter funcionalidades mais variadas e melhores negócios. Esse fato, por
Esse processo também ajudará a expor as lacunas que sua vez, semeou novos aplicativos que exigiam armazenamento de
necessitamos eliminar. A plataforma 'genial' precisa dados como SQL e outras tecnologias correlatas. Na medida em que
proporcionar uma infra-estrutura compatível com novos aplicativos foram criados, o potencial do negócio à volta deles
densidade em volume de contas de clientes e ser escalável, tornou-se mais evidente e sob demanda.

além de extremamente redundante. Os hosters, na tentativa de maximizar o lucro e simplificar o


gerenciamento, continuaram a operar todos os serviços necessários ao
Este artigo se concentrará nos componentes necessários suporte de seus clientes em um servidor independente. Esse fato criou
para construir o mais moderno ambiente escalável, maior carga em um único servidor, sobrecarregando-o e reduzindo o
confiável, seguro, de fácil manutenção e, ao mesmo tempo, número de sites da Web que poderia ser atendido. A demanda dos
que proporcione alta disponibilidade (HA). Provedores de consumidores cresceu mais rapidamente do que a tecnologia de
hardware poderia suportar. Agora, os hosters tinham de escalar
aplicativos isolados, até os hosters compartilhados de alta
horizontalmente, separando e isolando os serviços em vários servidores,
densidade, seriam beneficiados com uma solução assim. em lugar de escalar verticalmente com hardware mais rápido.
Mas, ela existe? Em caso negativo, quais são os desafios que
"A PRINCIPAL META DO PROJETO DE UMA
nos bloqueiam, hoje, e até onde podemos chegar para
PLATAFORMA HOSPEDADA É OTIMIZAR
alcançá-la?
ESCALABILIDADE, DISPONIBILIDADE, DENSIDADE E
Histórico do setor de hospedagem e problemas atuais
Para entender perfeitamente as complexidades de uma plataforma Web PARIDADE DE PREÇO E ADOTAR, AO MESMO
de hospedagem, precisamos, em primeiro lugar, entender qual o início TEMPO, UM NÍVEL DE SEGURANÇA TÃO GRANULAR
do mercado de hospedagem e como evoluiu até o presente estado. QUANTO POSSÍVEL, COM ISOLAMENTO DOS
Antes de a hospedagem tradicional começar a tomar forma, sites Web
CLIENTES ENTRE SI".
simples e estáticos eram populares e relativamente desconhecidos do
grande público. A infra-estrutura construída para dar suporte a esse O setor de hospedagem continuou a ficar saturado com empresas
movimento era igualmente básica e concentrada mais em conseguir o competitivas em resposta à elevada demanda por serviços baseados na
máximo possível de clientes do que fornecer serviços de alta tecnologia, Web como sites dinâmicos e carrinhos de compra do comércio
como aplicativos interativos e alta disponibilidade. eletrônico. Este mercado florescente forçou os hosters a diferenciar os
Vamos começar descrevendo a arquitetura clássica que hosters de serviços que prestavam de outros, pela criação de contratos de nível de
plataforma Microsoft empregaram no passado. Um único servidor Web serviço (SLAs). Os hosters não apenas devem prestar serviços a custos
independente, com serviços de FTP, executando IIS com conteúdo baixos, mas devem estar sempre disponíveis. Isso é substanciado pela
hospedado localmente no servidor. Cada sistema independente tem dependência crescente dos consumidores e negócios na Web e pelas
determinados custos implícitos: hardware, licenças de software, rede, suas demandas de mais interatividade e aplicativos complexos. Produzir
energia, espaço em rack e outros. Alguns hosters levaram esta situação serviços altamente disponíveis traduz-se, em geral, em mais servidores
ao extremo, hospedando todos os serviços em um único servidor para para dar suporte à redundância, assim como às novas exigências de
um número x de clientes. Por exemplo, eles têm servidores com IIS, SQL, desempenho, segurança e gerenciamento. Como os hosters podem
software servidor de email de terceiros e armazenamento local do escalar e dar suporte a esses serviços com essa arquitetura de software
conteúdo hospedado. e hardware?

2 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Arquiteturas de Alta Disponibilidade e Hospedagem em Massa

À luz dessas mudanças do setor, as empresas de tecnologia de


software, fornecendo a base para esses serviços, concluíram que os Figura 1: Modelo de distribuição de carga do aplicativo
seus atuais sistemas operacionais não eram capazes de atender às
necessidades dos hosters. Ainda era preciso ter um contato,
administrador de sistema de alto nível, para manter o ritmo das
operações o mais tranqüilo possível. Prestadores de serviços
independentes e engenheiros do setor tiveram consciência das lacunas
existentes nos serviços, relativas a software/hardware, e deram início
ao desenvolvimento de tecnologia tendo em mente os próprios
enfoques para cobrir essas falhas e delas tirar o melhor proveito.
Nesse ponto, os hosters começaram a pensar em construir plataformas
mais escaláveis, que pudessem alcançar maior densidade por caixa. E
que também fossem mais fáceis de gerenciar. Um bom primeiro passo Balanceador de carga
para construir esse tipo de arquitetura é analisar os vários serviços
para os quais o hoster precisa oferecer suporte e gerenciamento.
Considerações para o planejamento de arquiteturas de alta
disponibilidade e hospedagem em massa
Quando o hoster senta-se e começa a pensar sobre as tecnologias que
pode agrupar e como construir uma plataforma que ofereça suporte a
muitos sites e serviços da Web, vários requisitos-chave vêm à mente. Conteúdo Conteúdo
estático dinâmico
Esses requisitos vão da densidade de usuários ou aplicativos ao tipo de
recursos e serviços que devem receber suporte, o impacto destes no
sistema de base (ASP.NET, PHP, SQL e outros) e, finalmente, o custo de Modelos de distribuição de carga
cada site ou aplicativo hospedado. A principal meta do projeto de
uma plataforma hospedada é otimizar escalabilidade, disponibilidade, Como existem vários front-ends Web, o arquiteto de hospedagem
densidade e paridade de preço e adotar, ao mesmo tempo, um nível precisa considerar muitas opções para distribuição da configuração
de segurança tão granular quanto possível, com o isolamento dos através de todos os servidores Web. Essa configuração depende do
clientes entre si. tipo de modelo de distribuição de carga escolhido. Existem vários
modelos para distribuir a carga entre os vários front-ends Web.
Separamos esses serviços em segmentos amplos, sendo as principais
Discutiremos dois dos modelos mais comuns nos cenários de
peças da arquitetura: cluster(s) IIS, cluster(s) SQL, serviços de infra-
hospedagem: Distribuição de carga do aplicativo e Distribuição de
estrutura de serviços, como os serviços do Active Directory, o System
carga agregada.
Center Operations Manager, armazenamento centralizado em uma
área de armazenamento em rede (SAN) ou armazenamento conectado Distribuição de carga do aplicativo
à rede (NAS), clusters de offload SSL, FTP e outros similares.
A distribuição de carga do aplicativo descreve um modelo no qual a
A separação desses serviços em vários segmentos permite ao hoster carga é distribuída entre vários nós de front-end Web, com base na
escalar a arquitetura de vários modos. Um hoster poderia escalar de função do servidor. De modo típico, este modelo é baseado em
modos diferentes um cluster SQL e um cluster Web, e trazer à tona um requisição e aproveita as capacidades de roteamento da camada de
conjunto diferente de questões arquiteturais. aplicativo, compatível com muitos dos atuais balanceadores de carga
Esse é outro fator que relata a arquitetura como suporte de requisitos de rede. Este modelo permite aos hosters dividir o farm Web com
existentes, cujo melhor exemplo é o FrontPage Server Extensions base nas cargas do servidor. Analisando uma implementação típica
(FPSE). Essas extensões ainda são usadas por milhares de clientes e são deste modelo, veremos que os servidores separados daqueles que
necessárias, caso a plataforma de hospedagem em massa espere atraí- oferecem conteúdo dinâmico, como ASP.NET ou PHP, são designados
los. Normalmente, são usadas por pequenos prestadores de serviços, para conteúdo estático (Figura 1).
para criar sites simples. Ainda são usadas para ferramentas de
Pode-se até mesmo adicionar mais granularidade a esta configuração
desenvolvimento como Visual Studio e Visual Web Developer para as
dividindo ainda mais os servidores dinâmicos, de acordo com as
respectivas funcionalidades de carregamento HTTP, apesar de a
respectivas funções específicas. Isto significa criar sub-farms menores
Microsoft não incentivar esse procedimento. Componentes legados
como o FPSE não podem simplesmente ser removidos por para cada tipo de aplicativo. Todo o tráfego ASP.NET seria roteado
hospedeiros de grande porte, sem perdas na base de clientes. para um sub-farm ASP.NET e todo o conteúdo PHP seria roteado para
outro sub-farm. Como, normalmente, os servidores de conteúdo
Agora, vamos nos aprofundar em alguns desses clusters da dinâmico exigem mais recursos, este projeto permite ao hoster usar
arquitetura. A maior peça é o cluster Web; a segunda, o cluster SQL. É
uma classe de hardware diferente para aqueles sites do que seria
importante lembrar que um diferenciador-chave entre o que fazem os
necessário para conteúdo estático.
hosters e as outras empresas, como os departamentos de TI internos, é
que os primeiros tentarão colocar em um cluster, o maior número Muitos hosters precisam considerar custos no projeto de suas
possível de sites ou bancos de dados. Por isso, determinadas soluções plataformas; assim, o modelo de distribuição de carga do aplicativo
corporativas não funcionam para eles. Além disso, os hosters nem nem sempre pode ser viável, simplesmente porque aumenta o número
sempre controlam quais tipos de aplicativos são colocados em um de servidores envolvidos. A distribuição de carga do aplicativo
servidor e, assim, não conseguem definir capacidade da mesma forma também torna mais complexo o gerenciamento dos servidores e força
que outras empresas típicas. uma dependência maior sobre os equipamentos da rede.

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 3


Arquiteturas de Alta Disponibilidade e Hospedagem em Massa

Figura 2: Cenários de pool de aplicativos, um-para-um

100%

90%

80%

70%

60%
Compartilhado
50%
Um-para-Um
40%

30%

20%

10%

0%

Isolamento Escala

Distribuição de carga agregada Tendências: isolamento vs. escala


Para manter custos mínimos e também simplificar o gerenciamento da Define-se um cenário de isolamento um-para-um com um pool de
plataforma, os hosters devem escolher implementar um modelo de aplicativos atribuído a um único aplicativo ou, em um cenário
distribuição de carga agregada. Referimo-nos a modelo de compartilhado de hospedagem Web, para um único site Web. Isso
distribuição de carga agregada como aquele em que todos os permite aos hosters alcançar um alto nível de isolamento pois cada
servidores compartilham exatamente a mesma configuração. Cada site Web ou aplicativo é executado em um único processo e não
servidor do farm Web também é capaz de atender aos conteúdos compartilha recursos com outros do servidor. Esta é uma excelente
estático e dinâmico. Nos sistemas que executam IIS, o projeto do pool solução para hosters ou fornecedores independentes de software que
precisam assegurar aos clientes que terceiros, no mesmo servidor, não
de aplicativos é vital para maximizar a escala neste tipo de modelo.
terão acesso aos seus dados importados. Entretanto, este cenário está
Escalonamento do IIS da Microsoft para hospedagem em massa limitado às situações de hospedagem em massa. Embora ofereça um
nível desejado de isolamento e segurança, devido às exigências de
Em uma empresa de hospedagem em massa que se concentra na
memória, frustra os hosters porque não fornece a escala desejada. Na
plataforma Microsoft, existe sempre uma pressão para densidade mais
medida em que o pool de aplicativos é executado, ele consome
elevada em cada servidor do farm. Com uma arquitetura de alta
memória e, por fim, pode-se chegar a um gargalo.
disponibilidade (HA) complexa, o hoster aumenta o seu modelo de
densidade; entretanto, gargalos de desempenho ainda acontecem, A introdução do código dinâmico na plataforma acrescenta um novo
nível de complexidade. Por exemplo, aplicativos ASP.NET exigem mais
especialmente nos pools de aplicativos.
memória para o pool de aplicativos. Isto torna-se um problema para
No IIS, o projeto do pool de aplicativos é crucial para alcançar a os hosters pois limita a quantidade de sites Web dinâmicos que
densidade máxima. Não dispor de tempo suficiente para executar podem ser executados em um servidor. Eles começam a ver que
adequadamente o projeto do pool de aplicativos poderá levar a podem apenas escalar em centenas de sites, e não em milhares, que é
desempenhos imprevistos e problemas de estabilidade. Os pools de o indicador de desempenho da maioria dos aprimoramentos em
aplicativos referem-se ao próprio isolamento e há uma correlação tecnologia de hardware. Especificamente, a introdução da arquitetura
direta entre o nível de isolamento escolhido e a quantidade de de 64 bits proporcionou a muitos hosters o luxo de poder adicionar
aplicativos colocados em um servidor. Ao projetar pools de aplicativos, imensos volumes de memória aos respectivos servidores. Embora tal
é preciso ponderar entre necessidade de segurança e a estabilidade situação tenha permitido que ficassem além de gargalos em potencial,
desejada. Os hosters devem escolher entre dois cenários de pool de também revelou outras questões.
aplicativos: um-para-um ou pool de aplicativos compartilhado, um- Cenário: pool de aplicativos compartilhados
para-muitos. Observe que na Figura 2, a tendência dos cenários de O cenário de um pool de aplicativos compartilhados descreve a
pool de aplicativos um-para-um dirige-se mais ao isolamento, mas situação em que um aplicativo ou website reside no mesmo pool de
fora da escala. Por outro lado, a tendência do cenário de pool de aplicativos. Existem duas configurações diferentes para o pool de
aplicativos compartilhados, tende para níveis mais elevados da escala aplicativos compartilhados. A primeira é 1-n (um-para-muitos): o
e, ao mesmo tempo, para longe do isolamento. De modo ideal, provedor de hospedagem dedica um único pool de aplicativos a um
hosters escolheriam uma solução que lhes permitiria maximizar a número predefinido de websites. A segunda é um para todos: o
escala, sem sacrificar isolamento e segurança. hospedeiro coloca todos os websites em um único pool de aplicativos.

4 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Arquiteturas de Alta Disponibilidade e Hospedagem em Massa

O cenário de um pool de aplicativos compartilhados permite melhor em discos integrados, diretamente conectados. As seções abaixo
escala porque não sujeita o sistema às restrições de memória impostas analisam as várias arquiteturas de armazenamento mais usadas pelas
por um projeto de pool de aplicativos um-para-um. empresas que prestam serviços de hospedagem.
Existe sempre uma ponta de preocupação quanto a websites e Armazenamento conectado diretamente (DAS)
aplicativos em um pool de aplicativos compartilhados poderem ter
O DAS é um dos mais comuns e clássicos métodos de armazenamento
acesso aos dados, uns dos outros. Alguns paliativos precisam ser
adotados para garantir a segurança desses aplicativos e websites. Por usados pelas empresas de hospedagem Web. São servidores Web
exemplo, cada website precisa ter um usuário anônimo exclusivo e lista independentes e o conteúdo é armazenado no local. O principal
de controle de acesso deve ser usada para arquivos da web. Além benefício é que se um único servidor independente parar, não
disso, os aplicativos ASP.NET devem ser configurados com segurança impedirá a continuidade do funcionamento de toda a base de clientes.
de acesso a código (CAS) e ajustados para um nível médio de Uma das principais desvantagens é que os clientes ficam suscetíveis a
confiança. Providências desse tipo ajudarão a garantir que aplicativos qualquer tipo de falha de hardware e não apenas a uma falha do
e websites do servidor estejam seguros, ainda que em um pool de subsistema de disco. Adicionalmente, este tipo de configuração
aplicativos compartilhados. introduz questões como limites de densidade, problemas de migração
Como todos os aplicativos são executados no mesmo processo, os e falta de alta disponibilidade para websites e distribuição de carga.
pools de aplicativos compartilhados não oferecem o isolamento “A INTRODUÇÃO DA ARQUITETURA DE 64 BITS
exigido por muitos provedores de hospedagem. Esse fato pode ser
motivo de preocupação em cenários HA pois um aplicativo PROPORCIONOU A MUITOS HOSTERS O LUXO DE
problemático afetará todos os outros websites e aplicativos do mesmo PODER ADICIONAR IMENSOS VOLUMES DE
pool. Por exemplo, um aplicativo poderia fazer com que o pool de MEMÓRIA AOS RESPECTIVOS SERVIDORES.
aplicativos reciclasse ou pior, ficasse totalmente inativo. Além disso, é
EMBORA TAL SITUAÇÃO TENHA PERMITIDO QUE
mais difícil para os administradores de sistemas identificar um
problema quando há vários sites e aplicativos em um único pool. FICASSEM ALÉM DE GARGALOS EM POTENCIAL,
Embora existam ferramentas disponíveis que possibilitem ao TAMBÉM REVELOU OUTRAS QUESTÕES."
hospedeiro isolar problemas em um pool de aplicativos, essa tarefa é
Armazenamento conectado à rede (NAS)
realizada mais facilmente utilizando-se um pool de aplicativos um-
para-um para o modelo website. A maioria dos hospedeiros com plataformas altamente escaláveis
optaram por usar NAS como armazenamento remoto centralizado
Planejamento dos pools de aplicativos para alta disponibilidade
para todos os seus clientes. Em um ambiente Windows altamente
Os hosters têm de equilibrar-se entre obter níveis elevados de disponível, o NAS é acessado via CIFS (Common Internet File System),
isolamento e, ao mesmo tempo, maximizar a escala. Por isso, muitos usualmente por meio de uma rede dedicada de armazenamento. O
são forçados a usar uma forma híbrida dos cenários de pool de
conteúdo Web do cliente é armazenado de modo centralizado no NAS
aplicativos acima mencionados. Uma situação típica incluiria vários
e o caminho para o NAS é traduzido em um caminho lógico que usa o
pools de aplicativos, cada um deles destinados a uma finalidade
DFS (Sistema de arquivos distribuído). A combinação do NAS e do DFS
específica. Por exemplo, websites com conteúdo estático, apenas,
permite a um hoster baseado em Windows disseminar clientes por
poderiam residir em um único pool de aplicativos compartilhados. Isso
pode ser feito, pois o conteúdo estático não está associado às vários subsistemas de armazenamento NAS, limitando o impacto de
preocupações de segurança e desempenho que acompanham o uma questão global para esses clientes.
conteúdo dinâmico. Todos os outros pools de aplicativos ficariam A otimização do CIFS, TCP/IP e do NAS é fator importante na
dedicados a sites que contêm conteúdo dinâmico. Este procedimento escalabilidade do NAS com a quantidade de sites simultâneos de
permite ao hoster atribuir mais recursos a esses sites. Esta configuração clientes para os quais pode servir conteúdo. Se a otimização do NAS
ocorre com mais freqüência em ambientes de hospedagem for inadequada, os hospedeiros podem introduzir problemas com
compartilhados em que uma única plataforma deve atender aos potencial para afetar toda a base de clientes. Entretanto, os
clientes com conteúdo estático e dinâmico. hospedeiros também minimizam esse fato usando vários subsistemas
Replicação da configuração NAS para diferentes segmentos de clientes, dedicando redes e
Outro requisito fundamental para a hospedagem em massa, ambientes interfaces de armazenamento para este tipo específico de tráfego.
HA, é manter o estado e a configuração em todos os front-ends Web Muitos subsistemas NAS possuem capacidades de espelhamento e
do farm. Embora haja outras configurações que devem existir em cada snapshots. Essas tecnologias são aproveitadas pelo hoster para
front-end, a mais importante é a do servidor Web. Alguns servidores fornecer um processo sólido contra desastres e recuperação,
Web têm o apoio de um armazenamento centralizado de especialmente considerando que o sistema de armazenamento
configurações. Para aqueles que não possuem esse recurso, será poderia manter o conteúdo de dezenas de milhares de clientes.
preciso implementar uma solução de software para replicar a
configuração em todos os servidores. O único problema com um subsistema de armazenamento NAS puro é
que, como tecnologias tipo SQL não suportam armazenamento
Armazenamento de conteúdo remoto dos respectivos bancos de dados nos CIFS, isto limita o hoster
Um dos princípios centrais que os arquitetos têm de enfrentar para quanto aos tipos de serviços que pode oferecer.
obter uma plataforma para hospedagem em massa, altamente
Área de armazenamento em rede (SAN)
escalável, é determinar o local do conteúdo do cliente a ser
hospedado. Em muitos casos, trata-se de conteúdo residente em SQL Muitos sistemas de armazenamento corporativo podem operar como
ou em disco. Como a arquitetura de front-end é formada por clusters SAN e NAS; a principal diferença está no método usado para conectá-
configurados com milhares de sites, não é prático localizar o conteúdo los. Se for um SAN, os métodos são FC (canal de fibra) e iSCSI.

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 5


Arquiteturas de Alta Disponibilidade e Hospedagem em Massa

As empresas de hospedagem têm condições de construir sistemas SQL serviços que ofereçam maior valor às empresas de pequeno a médio
e de email escaláveis e altamente disponíveis, como o Exchange, portes, desenvolvedores, consumidores e projetistas. Precisam fornecer
aproveitando as capacidades de um SAN como armazenamento um serviço de categoria para manter a fidelidade do cliente e cumprir
centralizado desses tipos de clusters. Além disso, quanto mais avançado suas metas comerciais. Os prestadores de serviço procuram formas para
o SAN, mais opções terá a empresa de hospedagem para executar oferecer a plataforma Web 'genial', que ajude a reduzir o custo total de
tarefas como snapshots e administração de recuperações no SQL ou propriedade (TCO) e atenda à satisfação do cliente efetiva e
Exchange. eficientemente.
O que mais desvaloriza o mérito de um sistema de armazenamento
Sempre que nos referirmos a uma solução de plataforma Web
corporativo é o custo incorrido pelo hoster. Os hospedeiros preocupam-
compreendendo serviços web, armazenamento de dados e de banco de
se em assegurar um ROI (retorno sobre o investimento) suficientemente
dados, teremos inevitavelmente um gargalo em um desses
alto do produto a ser implantado, para compensar o custo de um SAN.
componentes. As soluções são tão fortes quanto o seu elo mais fraco.
“NA VERDADE, NÃO EXISTE UMA FORMA BOA E Basicamente, cada componente de uma solução precisa escalar para
ECONÔMICA PARA SE CONSTRUIR UMA fora e para cima, com redundância e economia.
PLATAFORMA DE CLUSTERS SQL ESCALÁVEL, Este artigo não fala sobre quais tecnologias (código aberto ou fechado)
ALTAMENTE DISPONÍVEL E DENSA. CADA podem preencher ou já preencheram a lacuna, em algumas áreas, mas
TOPOLOGIA DE CLUSTER TEM SUAS sobre os problemas arquiteturais de base, não os "primeiros", que
DESVANTAGENS, ALIADAS AO FATO DE QUE OS ocorrem durante o desenvolvimento das tecnologias. Hoje em dia, não
HOSPEDEIROS NÃO TÊM CONTROLE SOBRE O basta criar tecnologia, pelo bem da tecnologia, na tentativa de
preencher um nicho. Somente através de estratégia, planejamento e
PROJETO DO APLICATIVO DO CLIENTE".
desenvolvimento de soluções de larga escala teremos condições de dar
Cluster SQL suporte aos requisitos de larga escala. O mundo está crescendo, as
SQL é o principal serviço oferecido por muitos hospedeiros à maioria de necessidades se acumulam e, logicamente, o mesmo acontece com as
seus clientes. Entretanto, é também uma das principais áreas que muitos infra-estruturas.
hospedeiros não implementam em um cluster. Várias razões existem
para isso, sendo as principais o custo e o licenciamento. Todavia, os
hospedeiros que trabalham com um cluster SQL altamente disponível Sobre os autores
precisam projetar suas arquiteturas de modo a selecionar o tipo certo Shaun Hirschman trabalhou com espaços para hospedagem durante
da metodologia de clustering que dará suporte aos vários bancos de oito anos e está bastante familiarizado com os desafios intrínsecos,
dados. comerciais e técnicos. Antes de ingressar na Microsoft, em 2006, Shaun
Ao contrário de outras empresas em que o cluster SQL compreende um começou no setor de hospedagem, prestando atendimento técnico, até
número relativamente pequeno de bancos de dados, as empresas de alcançar a posição de administrador sênior de sistemas Windows. Possui
hospedagem implantarão centenas, se não milhares, de bancos de conhecimentos técnicos e experiência consideráveis em sistemas de
dados em um único cluster de banco de dados. Este cluster deve ser base Microsoft. Ele gosta, principalmente, de trabalhar com tecnologia
flexível tanto em desempenho quanto em atividade de processamento. de software e de hardware praticamente experimental, para tentar
Como as empresas de hospedagem não têm controle sobre a forma aplacar sua sede de conhecimento.
com que seus clientes escrevem os respectivos aplicativos, algumas
questões únicas se apresentam no projeto de um cluster para Mathew Baldwin trabalha há dez anos na área de serviços de
hospedagem em massa. Em um ambiente de hospedagem atribui-se a hospedagem. Antes disso, ocupou cargos como arquiteto, engenheiro
cada cliente bancos de dados 1 – n. Esses bancos de dados podem ser de sistemas sênior, diagnosticador de sistemas e consultor de
armazenados em um único cluster ou distribuídos através de vários plataformas de base Microsoft em várias empresas prestadoras de
clusters. O tipo mais comum que poderia ser construído por um hoster serviços de hospedagem. Ele contribuiu decisivamente para a
para hospedagem SQL em massa seria o cluster-padrão SQL introdução no mercado da primeira plataforma de hospedagem
ativo/passivo. Entretanto, na medida em que os hospedeiros passam compartilhada e agrupada (clustered), altamente disponível, do
para a hospedagem SaaS (software como serviço), os requisitos do Windows 2003, além de ter trabalhado em estreita colaboração com a
cluster SQL transformam-se de redundância de nó em redundância de Microsoft em várias iniciativas. Atualmente, ocupa a posição de
dados. Este fato introduz outros problemas já que esses mesmos arquiteto sênior da Affinity Internet.
sistemas ainda hospedarão inúmeros bancos de dados.
Tito Leverette trabalhou por mais de oito anos na área de
Na verdade, não existe uma forma boa e econômica para se construir
hospedagem. Começou sua carreira na Interland Inc., hoje Web.com.
uma plataforma de clusters SQL escalável, altamente disponível e densa.
Antes de ingressar na Microsoft, Tito era arquiteto da equipe de
Cada topologia de cluster tem suas desvantagens, aliadas ao fato de
plataformas Web do SunTrust Inc., o nono maior banco dos Estados
que os hospedeiros não têm controle sobre o projeto do aplicativo do
Unidos. Tito tem muitos anos de experiência em projeto, construção e
cliente. O cluster SQL ideal seria aquele que permitisse aos hospedeiros
fazer a distribuição de carga com o espelhamento do banco de dados, implantação de infra-estruturas Web para empresas de grande porte e
sem ter de lidar com problemas de colisões de transação e, ao mesmo para clientes de hospedagem. Formou-se no Georgia Institute of
tempo, manter um volume de bancos de dados, bastante denso, em Technology (Georgia Tech).
todo(s) o cluster(s). Michael Johnson passou mais de 7 anos trabalhando no setor de
Conclusão provedores de serviços Web, onde desenvolveu e arquitetou aplicativos
Os provedores de serviços devem sempre estar à altura de atender à e soluções altamente escaláveis com base em produtos Microsoft.
demanda crescente dos clientes que procuram novos pacotes de Atualmente, trabalha como Web architect evangelist da Microsoft.

6 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Fornecimento de Sistemas
de Computação de Alta
Produtividade Ponta a Ponta
por Marc Holmes e Simon Cox

Resumo Mesmo com tais diferenças multiformes dos problemas, as exigências das
soluções têm características similares, devido ao contexto do domínio e à
Nos dias de hoje, realizar um cálculo complexo de complexidade do problema em questão.
ciência computacional e engenharia envolve muitas Projetado para solucionar um problema específico
coisas, além da compra de um 'big' supercomputador.
Como os cálculos e o envolvimento do setor são diferentes, não há
Embora a sigla HPC queira dizer, tradicionalmente, provedores de solução específicas para um dado problema, resultando
"computação de alto desempenho", acreditamos que a em soluções altamente individualizadas que emergem de qualquer
solução efetiva, ponta a ponta, deveria tratar de determinado departamento de pesquisa ou empresa que exija tais
cálculos. Esta individualidade compõe-se do pequeno número de
"computação de alta produtividade". "Computação de equipes que atualmente buscam resolver tais problemas e, talvez, a
alta produtividade" significa toda a infra-estrutura necessidade de manter a propriedade intelectual de algoritmos ou
computacional e de manipulação de dados, assim como outros aspectos de processos específicos. A individualidade não é, em si,
um problema - pode ser uma boa coisa - mas se considerarmos que as
as ferramentas, tecnologias e plataformas necessárias
soluções técnicas são o meio para um fim, é provável que essas soluções
para coordenar, executar e monitorar tal cálculo, ponta a individuais não sejam "produtizadas" e, assim, provavelmente, haverá
ponta. dificuldade de integração ou outras formas nebulosas.

Muitos desafios estão associados ao fornecimento de Cálculos e processos de longa execução


uma solução geral de computação de alta produtividade A popularização da infra-estrutura exigida para executar cálculos de
(HPC) para problemas de engenharia e de domínio grande porte e manipular volumes massivos de dados proporcionou
oportunidades para executar cálculos que seriam impraticáveis antes do
científico. Neste artigo, discutimos esses desafios com advento da computação. O desenvolvimento de novos algoritmos e a
base nos requisitos técnicos de tais problemas, paralelização do código para execução em clusters de computação
propomos várias soluções e demonstramos como estas podem ter um efeito substancial, reduzindo o tempo de processamento
em várias ordens de magnitude. Assim, um cálculo que estaria concluído
podem ser implantadas para usuários em um protótipo
"em algum momento, logo após a morte quente do universo" poderia,
de ciência ambiental, ponta a ponta. Nossa solução talvez, estar concluído em várias semanas ou meses. Este sucesso
técnica geral poderá ser aplicada, em potencial, a permitiu aos vários setores alcançarem resultados significativos e ampliar
qualquer solução que exija camadas de controle e esta habilidade para proporcionar melhor orientação para o
desenvolvimento.
interface para um serviço HPC orientado a serviço
distribuído. Exigências das informações de procedência
Nas áreas de pesquisa, há necessidade crucial de se fazer um teste
prático de informações por vários motivos. Talvez seja simplesmente

A solução considera o fluxo completo de valores para soluções HPC e


usa a tecnologia Microsoft para aprimorar este fluxo de valor além
dos simples aprimoramentos de desempenho de hardware, software e
necessário executar novamente os algoritmos e garantir que os mesmos
conjuntos de resultados sejam produzidos 'por desencargo de
consciência' mas, provavelmente, isso será necessário como parte da
algoritmos os quais, conforme descritos, nem sempre se apresentam prova e backup científico para a publicação da pesquisa. Talvez também
como uma opção viável. O aspecto chave de nossa solução é a haja motivos estatutários de tais informações de procedência: na
capacidade de interoperação com outros sistemas por meio de padrões indústria aeroespacial, no caso da investigação de um acidente aéreo, os
abertos. engenheiros que fazem escolhas específicas de engenharia podem ser
responsáveis pela causa do acidente e ter de enfrentar processos
Exigências das soluções de computação de alta produtividade
criminais. Assim sendo, a necessidade de recriar estados específicos e
Nos domínios da engenharia e da ciência, as soluções HPC podem ser conjuntos de resultados, conforme necessário, e seguir os caminhos da
usadas para solucionar problemas matemáticos complexos em várias decisão dessas escolhas é de extrema importância. A complexidade
áreas, tais como, cálculos estatísticos para epidemiologia genética, dessas tarefas é combinada se pensarmos que o ciclo de vida do projeto
cálculos da dinâmica de fluidos para a indústria aeroespacial e de uma aeronave pode ser de 50 anos.
modelagem ambiental global. Cada vez mais, o desafio está na
integração de todos os componentes exigidos para compor, executar e Volumes e movimento de dados significativos
analisar os resultados de problemas computacionais e manipulação de O Deep Thought (Pensador Profundo) realizou uma das maiores tarefas
dados em grande escala. HPC da memória recente (ficcional). Com base em uma única pergunta

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 7


Fornecimento de Sistemas de Computação de Alta Produtividade Ponta a Ponta

("Qual é a resposta da vida, do universo e de tudo o mais?") ele forneceu continuar na tentativa de melhorar a solução devido às restrições
uma resposta simples ("42"), ainda que após vários milhões de anos de tecnológicas. Os esforços para melhorar a velocidade de computação
processamento e de uma pequena pausa constrangedora ao final do podem ser representados pelo ciclo apresentado na Figura 1.
processo.
Para melhorar a velocidade de cálculo, a equipe de desenvolvimento
poderá:
Figura 1: Os esforços para aprimorar a velocidade de computação
classificam-se em três zonas inter-relacionadas que formam "
Usar melhor ou mais unidades de hardware. Os benefícios de
um ciclo. processadores e discos mais rápidos ou de mais memória, etc.,
poderão ficar limitados pela capacidade do software ou dos
algoritmos de utilizar os itens de hardware disponíveis. Existe
Hardware também o limite dos ciclos de lançamento de hardware da próxima
geração e, provavelmente, o mais grave: o orçamentário.
"
Usar melhor ou mais unidades de software. Os algoritmos em si têm
probabilidade de se transformar em gargalo, mais do que um
software subjacente mas, periodicamente, haverá aprimoramentos
na manipulação de dados ou outras características similares para
Algoritmos Software
oferecer um aperfeiçoamento útil. Estes também poderão sofrer com
os limites de orçamento.
"
Usar algoritmos melhores. Algoritmos melhores exigem
Todavia, a realidade nos diz que cálculos significativos que exigem inventividade, às vezes simplesmente impossível e, provavelmente,
volumes significativos de processamento envolvem, provavelmente, menos previsível do que os aprimoramentos de software ou
volumes significativos de dados durante todo o ciclo de vida do cálculo. hardware, ainda que, quando estes ocorrem, podem proporcionar o
Mesmo com a simplicidade das pergunta e resposta ao estilo Deep aprimoramento mais significativo de todos.
Thought, os conjuntos de dados operacionais no âmbito do espaço do
Assim, o desafio da melhoria contínua da plataforma em nível
problema durante o cálculo podem ser significativos. Estratégias
precisam ser desenvolvidas para manipular esses dados e os respectivos fundamental é simples de se entender, mas difícil de se obter. Como
metadados. Considerando-se a necessidade das informações de resultado, as equipes que usam soluções HPC tendem a ser
procedência, essas estratégias precisam ser, ao mesmo tempo, flexíveis e pragmáticas quanto ao tempo que se leva para concluir cálculos pois
robustas e estar integradas nos processos de workflow usados para entendem estar utilizando a tecnologia disponível 'no limite' e, como
coordenar os cálculos. já mencionado, podem se dar por satisfeitos apenas pelo fato de
concluir o cálculo.
Aumentando o valor das soluções de computação de alta
produtividade Uma vez que os tempos computacionais foram reduzidos tanto quanto
possível, ampliar o valor dessas soluções é questão de considerar o
Devido à complexidade dos problemas de domínio e às exigências acima processo como um todo e as implicações de se executar os cálculos para
descritas, o resultado líquido é que as soluções são projetadas, em geral, reduzir ainda mais o tempo global para uma nova percepção científica
'para fazer o serviço'. Isto, em si, é quase como uma realização e está ou industrial. Dada a natureza de pesquisa/engenharia dos problemas,
deixando de lado o esforço intelectual envolvido no desenvolvimento todo o processo é tipicamente um workflow humano nos dois lados da
dos algoritmos computacionais e das soluções conceituais em primeiro tarefa computacional. Trata-se também do desenvolvimento de um
lugar. conjunto de soluções para fornecer interfaces e controles que
Lógico, existe uma forma simples de aumentar o valor de uma solução possibilitem uma conversão efetiva de todo o processo, permitindo aos
HPC: torná-la mais rápida. Entretanto, para problemas de complexidade pesquisadores e engenheiros executarem suas respectivas tarefas com
computacional suficiente, em determinado ponto, torna-se infrutífero mais rapidez e eficiência.

Figura 2: Cenário geral de computação

Cenário de computação

Acesso Solicitação Computação Análise

Login Carga Pré-processo Automática

Inicializar Entrada Computar Online

Usuário
Aprovar Pós-processo Download

8 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Fornecimento de Sistemas de Computação de Alta Produtividade Ponta a Ponta

Definição do problema e da solução Cenários de problemas


Ao utilizar o portfólio disponível das tecnologias da Microsoft É difícil generalizar uma solução HPC por completo devido às
podemos criar uma arquitetura mais completa para uma solução HPC necessidades específicas de cada domínio e aos processos do negócio
e, ainda, preencher as características que levam valor adicional às que emergem como parte dos desafios da engenharia que, de modo
equipes que usam a solução. Além disso, o uso de tecnologias pode típico, estão presentes. Entretanto, poderíamos considerar três
desenvolver-se de modo transparente e interoperar com as infra- cenários para a solução. Primeiro: cenário de usuário essencial,
estruturas existentes. Esta seção do artigo descreverá uma arquitetura completando um trabalho computacional. Dois outros cenários,
possível, algumas de suas características e o valor que proporcionam. administração e criação, dão suporte a esse processo.

Ciência Ambiental de Alta Produtividade Ponta a Ponta.


O projeto do modelo do sistema Grid-ENabled Integrated Earth refere-se ao desenvolvimento e uso dos modelos GENIE para
(GENIE) oferece um framework preparado para malha (grid) que entender o sistema da Terra.
facilita a integração, execução e o gerenciamento dos modelos
componentes para o estudo do sistema da Terra em escalas de Simulações do sistema da Terra exigem enormes volumes de dados
tempo milenares. As simulações baseadas no framework GENIE e de processamento. O framework GENIE foi projetado para dar
devem obedecer a procedimentos de operações complicadas por suporte à execução de tais simulações por intermédio de vários
meio de modelos diferentes e recursos computacionais dados distribuídos e recursos computacionais por um grande
heterogêneos. período. Exploramos uma gama de recursos heterogêneos,
inclusive o U.K. National Grid de recursos computacionais paralelos
O projeto GENIE desenvolveu um framework para a composição, (executando igualmente Linux e Windows Compute Cluster Server)
execução e o gerenciamento de modelos integrados do sistema da e infiltrando-se no ciclo de desktop em sites distribuídos. Nossos
Terra. Códigos componentes (oceano, atmosfera, superfície terrestre, dados de back-end usam o Oracle 10G para armazenar metadados
mar congelado, plataformas de gelo, bioquímica, etc.) de várias sobre nossas simulações e SQL Server para coordenar o controle
resoluções e complexidades podem ser acoplados, de modo flexível, persistente de nossos workflows em execução. (Vide Figura 1.)
para formar um conjunto de modelos climáticos eficientes, capazes
de simulação em escalas de tempo milenares. O projeto reúne um No evento Supercomputing 2006 em Tampa, Flórida-EUA,
grupo distribuído de cientistas ambientais cujo interesse comum mostramos como a aplicação da metodologia de workflow descrita
no artigo pode fornecer as simulações
GENIE de um ambiente para a
Figura 1: Suporte ponta a ponta para a ciência ambiental de alta produtividade: (a) composição rápida de simulações e um
Interface Web de cliente com Windows Presentation Foundation (b) Windows Workflow ambiente sólido de hospedagem para
Foundation para criar e coordenar simulações e (c) Infra-estrutura heterogênea
coordenar sua execução. Os cientistas
compreendendo Windows e Linux Compute Resources e armazenamento de dados Oracle
e SQL Server. que participam deste esforço estão
investigando como a circulação
termohalina do Atlântico -a densidade
DB DB de
NGS Runtime de WF persistência da água do mar é controlada pelas
Oracle Workflow Serviços temperatura (termo) e salinidade (halina)
10g http(s) MS
Coleção de Config.
SQL e as diferenças de densidade orientam a
Serviço Web scripts DB
Geodise experim. circulação do oceano- responde às
Recursos IE 7
Armaz.Arq Processa-
mento MS MQ Cliente mudanças nos níveis de dióxido de
Infra-estrutura heterogênia Cliente de script Navegador
científico (Matlab, carbono na atmosfera e procuram
Python, ...) Verificação
Trabalho Windows entender, especificamente, a
National Grid Service API/CMD Windows
chamadas Comunication estabilidade das principais correntes
Foundation Presentation
Web Service Pós- e eventos
CCS Microsoft Foundation
processo WS
Web service oceânicas sob diferentes cenários de
Pool Condor Globus
mudanças climáticas.
Cluster Linux SSH Clientes
Alternativos
Recursos Computacionais Interfaces Microsoft Institute of High Performance
Computing: Matthew J. Fairman, Andrew
R. Price, Gang Xue, Marc Molinari, Denis
A. Nicole, Kenji Takeda e Simon J. Cox.
Colaboradores externos: Tim Lenton
(School of Environmental Sciences,
University of East Anglia) e Robert Marsh
(National Oceanography Centre,
Simulação Workflow Interface de Web de cliente
University of Southampton)

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 9


Fornecimento de Sistemas de Computação de Alta Produtividade Ponta a Ponta

Figura 3: Cenário geral de criação Figura 4: Cenário geral administrativo

Cenário de criação Cenário Administrativo

Gerar Publicar Administrar

Atividades Catálogo Monitoração

Autor Administrador
Algoritmos Configurar Contab.

Workflows Lançar

Usuário avançado

Cenário de computação. O processo computacional está dividido em isoladas, como em trabalhos que executam várias tarefas seriais em
quatro etapas básicas para o usuário médio, o que assegurará a paralelo (parametric sweeps) ou nos cenários hipotéticos (what-if).
conclusão da tarefa: acesso, solicitação, computação e análise. (Vide Essa fase pode ocorrer, em potencial, por um tempo significativo. Em
Figura 2.) condições ideais, alguns comentários são fornecidos ao usuário final
A etapa 'acesso': durante esse período
"
Login. O usuário deve ter condições de se conectar na solução e ser "
Pós-processo. A etapa final da computação real é similar ao pré-
identificado como um usuário válido. Em seguida, poderá ter acesso processamento já que, agora, é provável que uma parte do trabalho
apenas às informações importantes para a sua função e/ou grupo. seja concluída com os dados dos resultados. Isto poderá envolver
movimentos de dados para warehouses, agregação dos dados do nó
"
Inicializar. Antes de solicitar um trabalho, talvez seja preciso separado, operações de limpeza, tarefas de visualização e assim por
configurar um painel para a execução do trabalho. Considerada a diante.
natureza de uma computação de longa execução, uma única
A etapa 'análise':
execução do processo pode ser considerada um "projeto".
A etapa 'solicitação': "
Automática. Embora os resultados de um trabalho provavelmente
precisem da intervenção de um especialista para o entendimento
"
Carga. O usuário deve ter condições de carregar ou acessar efetivo, algum tipo de análise automática pode ser possível,
conjuntos de dados para serem usados como parte do trabalho. Os especialmente no caso da análise estatística, na qual os padrões são
conjuntos de dados podem ser de grande porte, heterogêneos ou importantes e de fácil automação.
de origem externa e, assim, o workflow talvez tenha de ter uma
etapa específica para obtenção desses dados e particioná-los através "
Online. O usuário deve ter condições de executar algum tipo de
do nó do cluster, de modo a balancear a carga de trabalho esperada. análise básica, sem solicitar todo o conjunto de resultados. Isso pode
ser apresentado como ferramentas com paradigmas típicos de BI:
"
Entrada. O usuário precisará, então, ter condições de acrescentar fatiando e cortando em cubos e assim por diante.
parâmetros e metadados associados para assegurar que o trabalho
será executado com êxito. Esses parâmetros são capturados para
"
Download. Por fim, o usuário deve ter condições de recuperar
reuso e auditoria. conjuntos de resultados para manipulação offline avançada,
conforme necessário.
"
Aprovar. Depois da entrada dos parâmetros e de quaisquer outras
Cenário de criação. O cenário de criação cobre os aspectos do
informações necessárias, provavelmente será preciso uma aprovação
processo global, fornecendo as capacidades ao usuário final para
antes de o trabalho poder ser encaminhado. Nessa oportunidade,
concluir um trabalho de computação. Em termos gerais, o autor de
após o encaminhamento do trabalho do usuário, pode-se presumir um processo deve ter condições de desenvolver novas capacidades e
que haverá algum tipo de workflow típico de aprovação. processos publicando-os para consumo do usuário final. A Figura 3
A etapa 'computação': apresenta o cenário de criação para dois atores, autores e usuários
avançados. A diferença entre esses papéis está em que, provavelmente,
"
Pré-processo. Na etapa de pré-processamento de um trabalho várias o autor desenvolverá um código e o usuário avançado estará
coisas podem acontecer. Provavelmente, os conjuntos de dados de configurando o código existente. O cenário de criação pode ser
entrada passarão para os nós do cluster e poderão executar um descrito da seguinte forma:
conjunto inicial de computações, como a geração de medidas
A etapa 'criar':
analíticas para uso na computação principal. Estruturas de dados
também poderão ser inicializadas e todos os dados serão avaliados "
Atividades. O desenvolvedor talvez queira construir elementos de
quanto à validade, antes da execução. processo ou atividades diferentes que possam ser usados como
" parte de um processo de trabalho de computação global. Como
Computar. Esta fase representa a computação paralela real. Cada nó
exemplo, temos uma atividade genérica para executar o FTP dos
executará uma parte dessa fase; talvez seja preciso transferir
conjuntos de resultados.
resultados intermediários para outros nós para completar o processo
no todo (trabalhos para troca de mensagens). Alternativamente, os "
Algoritmos. O desenvolvedor pode estar criando os algoritmos reais
dados podem prestar-se à computação em porções totalmente para uso na etapa de computação do processo do usuário final.

10 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Fornecimento de Sistemas de Computação de Alta Produtividade Ponta a Ponta

"
Workflows. O desenvolvedor ou usuário avançado pode definir no início da construção de uma solução HPC, podemos agora
workflows computacionais específicos, agrupando atividades e considerar alguns cenários da solução que satisfaçam essas exigências.
algoritmos para criar uma etapa computacional global
Computação de alto desempenho com o Microsoft Cluster
compreendendo pré- e pós-processamentos, assim como a tarefa
Compute Server Edition
computacional real.
O serviço básico exigido para a solução é a capacidade real do cluster
A etapa 'publicar':
de computação de alto desempenho. O Microsoft Cluster Compute
"
Catálogo. Depois do desenvolvimento de atividades, algoritmos e Server Edition (CCS) oferece capacidades de agrupamento (clustering)
workflows, o autor desejará catalogar o desenvolvimento para ser para satisfazer a etapa de computação dos cenários de problemas.
usado por outro autor ou usuário final. (Vide Figura 5.)

"
Configurar. Talvez seja preciso configurar algumas atividades ou
O CCS oferece capacidades de agrupamento para uma versão
workflows como, por exemplo, as restrições de acesso ou outras reduzida do Windows Server 2003 que permite, por exemplo, usar
regras para controlar o uso do trabalho de desenvolvimento. computações paralelizadas, aproveitando vários processadores para
concluir cálculos especialmente complexos ou de grande volume,
"
Lançar. Finalmente, o trabalho de desenvolvimento deve ser exposto como aqueles relativos às estatísticas genéticas.
pelo autor, desde que esteja pronto para uso. Em condições ideais,
O controle de um cluster CCS é feito por um nó principal (head node)
esta etapa não exigirá esforço de administração de TI.
que se comunica com nós de cluster (cluster nodes) para emitir
Cenário administrativo. Por fim, é preciso administrar a plataforma instruções e coordenar uma série de tarefas de um trabalho específico.
HPC. Neste caso, consideramos que as tarefas principais para dar Os nós de cluster podem existir em uma rede privada; para
suporte ao usuário final envolvem monitoração e contabilidade; desempenho ideal, esta será, provavelmente, uma rede de baixa
excluímos outras tarefas administrativas básicas como a configuração latência para garantir que a latência da rede não afete os tempos de
do cluster e outras atividades gerais de infra-estrutura de TI. (Vide computação. A seção de referências, ao final deste documento,
Figura 4.) contém vínculos para artigos técnicos sobre implantação e
configuração de um CCS.
O cenário administrativo pode ser descrito da seguinte forma:
O nó principal está equipado com um “agendador de trabalhos” para
"
Monitoração. De modo geral, clusters são recursos compartilhados, permitir a inserção de um trabalho computacional em uma fila de
gerenciados por pessoal especializado. Os clusters farão a execução quando o número desejado ou exigido de processadores
monitoração das instalações quanto à funcionalidade e ao estiver disponível para concluir o trabalho. Um pequeno banco de
desempenho, por exemplo, analisando as filas de trabalhos e as
dados é fornecido para que o nó principal controle a fila atual de
tendências de consumo dos recursos.
trabalhos. O agendador de trabalhos pode ser acessado por uma
"
Conta. Recomenda-se acompanhar o uso que determinadas contas interface no nó principal, via linha de comando - a qual pode ser
fazem dos recursos. Este procedimento é útil quando os clusters são parametrizada ou executada com uma definição XML dos parâmetros
custeados e usados por vários grupos. ou via uma API (CCS API) para interação programática.
Um cluster CCS pode controlar vários tipos de trabalhos, como abaixo:
"
Faturamento. Modelos de reembolso (charge-back) podem ser
construídos para faturar o uso, de modo explícito. "
Trabalho serial. Esta é uma tarefa computacional típica para
Cenários da solução simplesmente executar um programa necessário.

Depois de descrever uma série geral de cenários que pode representar "
Fluxo da tarefa. Esta é uma série de trabalhos seriais compreendendo
as exigências de uma solução HPC e considerando os valores descritos vários programas/tarefas em potencial.

Figura 5: O Microsoft Cluster Compute Server Edition satisfaz a etapa 'computação'.

Cenário de Computação

Acesso Solicitação Computação Análise

Login Carga Pré-processo Automática

Inicializar Entrada Computar Online

Usuário
Aprovar Pós-processos Download

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 11


Fornecimento de Sistemas de Computação de Alta Produtividade Ponta a Ponta

Considerando o valor do fluxo


Em geral, os usuários de soluções computacionais de alta O diagrama da Figura 1 representa um processo de alto nível para a
produtividade são bastante qualificados, recursos altamente provisão e o uso de uma solução HPC.
valorizados para as equipes de pesquisa e desenvolvimento. Suas A compressão do fluxo de valor, no que se refere a tempo e custo,
qualificações e especialidades são necessárias para fornecer os deveria ser a primeira preocupação da provisão de uma solução.
dados para os processos, os algoritmos para os cálculos e a análise Considerando as questões descritas com aprimoramentos de
dos resultados. Entretanto, esses recursos devem ter permissão para velocidade no trabalho computacional, os aprimoramentos
trabalhar de modo tão efetivo e eficaz quanto possível. deveriam ser identificados fora desse escopo e em outras áreas do
A criação de soluções obscuras (nos dois sentidos) afetará este processo.
procedimento de várias formas possíveis: Candidatos adequados para redução de custo do processo são, em
! O usuário talvez precise ter um entendimento básico do sistema termos gerais, todos os aspectos do fluxo de valor com a provável
que vai além do quanto seria esperado, de modo geral. Por exceção da criação do algoritmo, invenção e propriedade intelectual
exemplo, preciso conhecer os princípios básicos de um controle da solução. A redução de custo acontece em duas partes: o custo
remoto para fazer funcionar meu televisor, mas não preciso para usar a solução e o custo administrativo. Aprimorar o processo
saber qual a tensão necessária que acende a tela de LCD para eu da publicação e do uso de algoritmos e fornecer suporte analítico
ver os programas. poderia reduzir o custo total do processo.

! Com base na consideração do fluxo de valor, um conjunto de


Especialistas envolvidos em uma solução individual poderão
soluções compreenderia ferramentas que forneceriam duas
pensar que é difícil escapar disso. Por exemplo, se Alice codificou
características básicas: simplificação na conclusão da tarefa e
um algoritmo para a solução, poderá descobrir que fica muito
oportunidades para interação aprimorada.
envolvida na operação diária da solução porque só conhece a
melhor forma de interagir com o sistema para usar o algoritmo. Fluxo de valor aprimorado
Ela, de fato, poderia começar a criar algoritmos ainda melhores. Fornecer uma solução baseada em HPC, usando arquitetura similar
O resultado após uma ou duas gerações de aprimoramentos é àquela descrita, pode ter vários benefícios para o fluxo de valor total
uma operação de solução de alto custo e um problema de risco, (Figura 2).
pois Alice tornou-se um componente-chave da solução.
Existem várias áreas que poderiam ser afetadas, inicialmente:
! A solução também pode representar um problema administrativo
para as principais equipes de TI. Uma solução HPC criada por
! Planejamento para um trabalho de longa execução. Reduções de
tempo e custo são possíveis pelo uso de interfaces intuitivas,
especialistas em domínio poderia facilmente se assemelhar às
validação e outras lógicas para garantir a captura correta das
"soluções de planilha vinculada" da equipe de vendas, que pode
informações. Adicionalmente, codificadores ou administradores
ser uma caixa de pesadelos para quaisquer equipes internas de
especialistas talvez não sejam mais necessários nesse ponto do
desenvolvimento e suporte.
processo.
! Publicação de um trabalho de longa
Figura 1: Fluxo de valor geral execução. Custo e tempo podem ser
reduzidos pois as informações são
capturadas pelo sistema e,
Fluxo de valor original Execução de Workflow (interativa devido às reg. do script) conseqüentemente, a publicação do
Custo
trabalho pode ser totalmente
Horas automatizada.
Criar Criar Analisar
de
trabalho atividade Workflow ! Custo da computação. Reduz-se o custo
Horas pela especialização da função - a
Publicar

Publicar

Horas monitoração pode ocorrer pela


de
espera
perspectiva do usuário final - e o custo
global de muitos trabalhos pode ser
Custo Economia líq. = área de fluxo original - área do fluxo novo reduzido por meio do reconhecimento
aprimorado de falhas ou trabalhos
errôneos que podem ser cancelados
Figura 2: Fluxo de valor aprimorado antes de concluída a execução. Este
reconhecimento aprimorado é
novamente fornecido pelo uso de
Fluxo de valor novo Simplificação por Coment. + rápidos por mecanismos de comentários e
Custo Reduzir custo por meio da meio do sistema meio de visualizadores
especialização da função consolidado monitoração apresentados para a
interface de usuário.
Publicar

Horas
Criar
de Criar Analisar !
trabalho
Algoritmo
Workflow
Execução de Análise. A análise pode ser iniciada mais
Workflow Horas rapidamente se a interface do usuário
Execução
apresentar informações durante a
Publicar

Horas Exec.
Publicar

Reduzir custo por de


meio da especia- WF
de
lização da função
Workflow execução do trabalho; algumas análises
espera
automáticas podem estar disponíveis,
Horas reduzidas por Execução de Workflow
Custo meio da automação reduzindo os custos iniciais antes que a
intervenção especialista seja necessária.

12 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Fornecimento de Sistemas de Computação de Alta Produtividade Ponta a Ponta

Figura 6: O Windows Workflow Foundation pode fornecer uma camada de aplicativo completa, cobrindo a maior parte das áreas
nas etapas solicitação, computação e análise.

Cenário da computação

Acesso Solicitação Computação Análise

Login Carga Pré-processo Automática

Inicializar Entrada Computar Online

Usuário
Aprovar Pós-processo Download

"
Parametric sweep. Este tipo de trabalho executaria várias instâncias uso no .NET 3.0. Além disso, como o WF é usado para acionar
de um único programa, mas com uma série de parâmetros produtos servidores (por exemplo, o Microsoft Office SharePoint
divergentes, produzindo vários conjuntos de resultados no mesmo Server 2007), esses produtos também têm atividades básicas para
intervalo de tempo de uma única tarefa. consumo no WF. Por fim, as atividades podem ser construídas,
conforme necessário, para criar uma biblioteca feita sob medida
"
Trabalho da interface de troca de mensagens. O trabalho mais para se adequar a um requisito específico.
sofisticado seria o uso de uma MPI (interface de troca de
mensagens) para paralelizar um algoritmo e dividir o trabalho de "
Mecanismo de regras. O WF possui um excelente mecanismo de
computação entre muitos processadores, coordenando para que regras para encadeamento progressivo (forward-chaining) que pode
aumentos de velocidade sejam fornecidos para computações longas ser usado para a tomada de decisões em um workflow mas,
e complexas. também, pode ser executado fora das instâncias de workflow. As
Alguns ou todos esses tipos de trabalhos podem ser encontrados em atividades são projetadas para trabalho com esse mecanismo de
qualquer processo de computação. O CCS deve ter condições de regras.
oferecer uma plataforma poderosa para qualquer das tarefas de pré- ou "
Designer e rehosting. O WF também tem superfície de projeto com
pós-processamento, assim como a principal tarefa computacional.
recurso completo arrastar e soltar usado dentro do Visual Studio
Lógica do aplicativo com Windows Workflow Foundation 2005, mas também pode ser re-hospedado, por exemplo, no
aplicativo Windows Forms.
Considerando que podemos tomar todo o processo computacional
como instância de um workflow de execução longa, humano e de "
Serviços de runtime. O runtime do WF pode ter serviços adicionados
máquina, poderemos também considerar o Windows Workflow antes da execução do workflow para interceptar a execução de um
Foundation (WF) como um ponto de partida adequado para a workflow e executar ações como persistência ou rastreamento. Os
construção de uma camada de aplicativo e do framework da solução serviços também podem ser construídos conforme necessário.
HPC. Na verdade, o WF tem vários componentes que podem ser
usados para fornecer uma camada de aplicativo completa para a
"
Extensible Application Markup Language (XAML). Por fim, o WF faz
solução HPC. A Figura 6 apresenta as áreas específicas (mas não todas) largo uso da XAML para descrever workflows e conjuntos de regras,
que podem ser cobertas pelo WF. ou seja, a serialização é banal e é possível gerar superfícies de
projeto e gerentes de regras feitos verdadeiramente sob medida.
O WF forma uma parte básica do framework do .NET 3.0 e fornece um
mecanismo de workflow completo, que pode ser hospedado em Consideradas essas características, podemos ver como o WF pode
grande variedade de ambientes. A seção de referências deste capacitar a arquitetura.
documento contém vários vínculos para a obtenção de mais Bibliotecas de atividades
informações sobre o Windows Workflow Foundation.
As bibliotecas de atividades são blocos de construção necessários à
Algumas das principais características básicas do WF a serem solução HPC. Aqui alguns exemplos:
consideradas são:
" "
Rede de comunicação de clusters. É possível construir uma atividade
Workflows seqüenciais e de estado. O runtime do WF pode personalizada que usa a interface de programação do aplicativo CCS
manipular workflows seqüenciais e dirigidos a estado e, assim, é
para comunicar-se com o agendador de trabalhos e criar ou cancelar
possível descrever uma enorme variedade de processos. Esses
trabalhos no cluster. Assim, esta atividade personalizada pode ser
workflows também podem ter tratamento de novas tentativas e
usada por qualquer workflow que precise se comunicar com o
exceções.
agendador de trabalhos e pode fornecer um nível mais elevado de
"
Bibliotecas de atividades. Os workflows compreendem “atividades” abstração aos "usuários avançados" que talvez precisem criar novos
como tomadas de decisão, looping e execução paralela, assim como workflows ou corrigir os existentes, sem que seja preciso conhecer
atividades de "código" arbitrárias e, várias delas, já estão prontas para programação a fundo.

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 13


Fornecimento de Sistemas de Computação de Alta Produtividade Ponta a Ponta

Arquitetura de Componentes
A arquitetura básica parece uma arquitetura de aplicativo familiar de Camada de aplicativo
n-camadas e, em linhas gerais, este é o caso, sem dúvida. A A camada de aplicativo compreende o runtime do WF hospedado
organização da funcionalidade é bastante lógica. A Figura 1 mostra como um NT. Esta camada é usada, em princípio, para fazer a
os componentes exigidos pela arquitetura. comunicação com o agendador de trabalhos do cluster, mas oferece
várias funções:
Figura 1: Componentes
"
Biblioteca de atividades e workflows para controlar o cluster e
Arquitetura de componentes (com protocolo de comunicação) executar movimentos de dados e outras etapas de pré- e pós-
Interface de usuário
processamentos.
Criação Execução Administração
Visual Studio 2005 MO SS 2007 ASP NET Power Shell
Microsoft Operations
"
Mecanismo de regras e diretivas para gerenciamento do acesso a
WF Extensions SCC API WPF Windows Forms Manager um cluster, fornecendo
prioridades e capacidades de "metaprogramação" (meta-
(PCT)
FCW

scheduling) com segurança.


Execução
Windows Forms "
Informações de rastreamento da execução do trabalho,
(PCT) FCW

Runtime de Workflow fornecendo informações de procedência, conforme necessário.


Biblioteca de Rastreamento PCT "
atividades básicas Informações sobre persistência que permitem escalar a solução e
Persistência
fornecer robustez para workflows de longa execução e, em
(PCT)

(PCT)
FCW

FCW

potencial, a habilidade de tornar a executar um workflow a partir


de um determinado ponto.
Serviços de dados Serviço de Computação
SQL Server Armaz. dados Agendador de trabalhos Serviço de dados
BD Workflow C, C++, MPI
BD resultados Catalogue O serviço de dados contém bancos de dados de apoio como
BD rastreamento BD pertsistência repositórios de rastreamento e persistência para o runtime do
workflow. Nesta arquitetura, é também provável que haja um
Interface Usuário repositório com resultados ou conglomerados de resultados.
Provavelmente, arquivos de entrada e saída serão mantidos como
A experiência da interface de usuário pode ser desdobrada em três arquivos para movimentos facilitados à volta do cluster para os
partes. Cada parte executa uma função diferente da solução global: respectivos nós de computação. Finalmente, há um banco de dados
"
A experiência de usuário principal para planejamento e execução para manter um catálogo de workflows disponíveis para execução.
de uma computação pode ser fornecida por meio de várias Serviço de computação
tecnologias como, por exemplo, Windows Forms, Windows O serviço de computação é a parte "mais simples" da arquitetura:
Presentation Foundation, ASP.NET ou Microsoft Office SharePoint compreende um cluster de x nós em uma configuração desejada.
Server. A escolha da tecnologia deve ser apropriada a uma
característica específica do ambiente (por exemplo, o uso de Comunicação
tecnologias Web, em que é preciso ter ampla disponibilidade, ou A comunicação através da arquitetura é feita usando o Windows
WPF que exige ampla interação). Communication Foundation por meio de um canal TCP (Remoting)
ou HTTP. Este procedimento mantém a arquitetura desacoplada,
"
A experiência de criar um workflow é proporcionada pelo Visual escalável e oferece vantagens para diferenciar interfaces de usuário
Studio 2005, por meio da superfície de projeto de criação do com base nas necessidades do usuário (criação, execução, emissão
Windows Workflow Foundation (WF). Usar o modelo de de relatórios).
desenvolvimento de workflows "code beside" permite o uso de
uma nova interface Source Code Control API para encaminhar
Segurança
arquivos "XAML" WF para um repositório de banco de dados Em um framework orientado a serviço distribuído que, em potencial,
central, por exemplo, para execução na interface do usuário. atravessa vários domínios de segurança, federação de identidades
para permitir SSO e controle de acesso em nível de usuário para
"
Para administradores de TI, o Microsoft Operations Manager pode todos os aspectos da arquitetura de componentes são essenciais. As
ser usado para monitorar a saúde e o status do cluster HPC, ainda tecnologias que oferecem essas capacidades incluem aquelas
que para os usuários finais de um sistema HPC, mais comentários baseadas à volta de certificados, federação de diretórios ativos (com
'amigáveis' podem ser disponibilizados por meio do Windows extensões para interoperar com sistemas Unix) e Windows
PowerShell. CardSpace da Microsoft.

"
Atividades de trabalho de cluster, fortemente tipado, de nível mais Os workflows para cenários computacionais específicos podem, então,
alto, objetivando executáveis específicos (e não arbitrários) ser montados usando uma combinação dessas atividades genéricas e
"
Atividades de movimentos de dados à volta da rede - talvez usando algumas atividades específicas para capacitar o cenário desejado.
WF para controlar o SQL Server Integration Services As atividades de workflow estão de acordo com todas as regras típicas
"
Atividades de carregamento de dados e FTP, para movimento de de herança e, portanto, vale a pena notar que em um ambiente
resultados heterogêneo com vários clusters, de vários tipos, atividades poderiam
"
Comportamento de novas tentativas caso haja alguma falha do ser escritas para uma interface geral a qual seria, depois, selecionada
processo (no momento do projeto ou runtime) para permitir a execução em um
"
Atividades de notificação para eventos durante o processo dado cluster. Exemplo útil: criar uma atividade que permita executar
"
Atividades baseadas em regras para controlar a otimização uma computação MPI em uma máquina local - talvez usando dois
automatizada do processo ou o controle dos privilégios de acesso. processadores - para fins de teste.

14 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Fornecimento de Sistemas de Computação de Alta Produtividade Ponta a Ponta

pode detectar uma exceção durante uma computação ou


Figura 7: Usando a camada de aplicativo baseada em WF, o Windows ser usado para cancelar uma computação em execução
Presentation Foundation (esquerda) e o Microsoft Office Sharepoint Server no cluster.
(direita) oferecem experiências de usuários diferentes.
Serviços adicionais podem ser construídos ao lado desses.
Um exemplo pode ser um serviço de faturamento que
monitora as durações de uso do processador e "fatura" o
usuário de forma correspondente.
Segurança e diretiva
O WF possui um excelente mecanismo de regras para
encadeamento progressivo (forward-chaining) que pode ser
usado dentro de uma instância de workflow. As regras
podem ser criadas em código ou de modo declarativo e, em
seguida, compiladas ao lado do workflow para execução.
Regras e diretiva podem ter vários usos:
Serviços
"
Identidade do usuário. O acesso aos recursos do sistema ou tipos de
O WF oferece vários serviços que podem ser usados, conforme recursos poderiam ser concedidos com base na identidade ou nos
necessário, anexando a implementação do serviço ao runtime do serviços adicionais e etapas de workflow poderiam ser adicionadas
workflow. Três dos mais úteis para HPC são: ou removidas com base na identidade.
"
Serviço de rastreamento. Usa a noção dos perfis de rastreamento e "
Otimização. Algum tipo de automatização da otimização ou do
um esquema de banco de dados padrão para ocorrências de processo do negócio poderia ser fornecido através do uso de regras
auditoria de workflow. Isto pode ser ampliado conforme necessário combinadas com BI ou outros parâmetros conhecidos novamente
ou substituído em massa, com uma implementação personalizada. O para completar ou remover as etapas do workflow, conforme
serviço já pronto é, em geral, suficiente para fornecer uma trilha de necessário.
auditoria bastante detalhada da execução do workflow.
"
Metaprogramação (meta-scheduling). No momento, o CCS não tem
"
Serviço de persistência. Usa um esquema de banco de dados padrão um metaprogramador, mas o WF poderia ser usado para designar
para desidratar e reidratar instâncias de workflow conforme exigido clusters específicos para execução baseada em parâmetros como,
pelo runtime ou especificado pelo hospedeiro. A reidratação de um por exemplo, número de processadores solicitado, status atual dos
workflow em execução acontece quando ocorre um evento nesse clusters disponíveis ou identidade de usuário.
workflow, transformando o WF no controlador ideal para workflows
Portanto, existe potência e flexibilidade consideráveis no WF. Mais
de longa execução (semanais, mensais ou longas computações). A
adiante poderemos ver também como usar as características do WF
persistência também fornece escalabilidade através de vários
para oferecer uma experiência de criação.
aplicativos de controle e permite o uso de "conjuntos de
modificações" (change sets) para reprocessar um wokflow para uma Experiência de usuário com o Microsoft Office SharePoint Server
posição persistida previamente e re-executar a partir desse ponto. Usar o WF para fornecer a lógica do aplicativo e o controle do
Esse fato tem vantagens significativas, em potencial, para
processo significa que podemos usar qualquer tecnologia para
computações complexas de vários estágios e para a re-executar
hospedar a lógica do aplicativo: de ASP.Net a Windows Forms e
computações de pesquisa científica em um determinado estado.
Windows Presentation Foundation (WPF). Os instantâneos da Figura 7
"
Serviço de monitoração de cluster. Este serviço pode registrar mostram o WPF e o Microsoft Office SharePoint Server (MOSS),
eventos e chamadas de retorno do cluster e, então, executar novas respectivamente, usando a mesma camada de aplicativo baseada em
atividades em um workflow. Pro exemplo, o serviço de monitoração WF, mas oferecendo experiências de usuários bem diferentes.

Figura 8: Cenário de computação com o Microsoft Office SharePoint Server

Cenário da computação

Acesso Solicitação Computação Análise

Login Carga Pré-processo Automática

Inicializar Entrada Computar Online

Usuário
Aprovar Pós-processo Download

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 15


Fornecimento de Sistemas de Computação de Alta Produtividade Ponta a Ponta

Figura 9: O Microsoft Operations Manager pode monitorar a


saúde do sistema do cluster CCS. Seria uma implementação genérica?
Ainda que se pretenda a reutilização dos aspectos da arquitetura
proposta, é improvável que a arquitetura seja significativamente
Cenário Administratrivo
genérica para ser reusada de cenário para cenário, simplesmente. É
Administração mais provável que a arquitetura represente uma abordagem “shell”
ou “ball-and-socket”: o desenvolvimento será exigido em cada
Monitorar cenário, mas com vários componentes e abordagens reutilizáveis. A
Figura 1 apresenta uma proporção tentativa (baseada na experiência
Administrador do desenvolvimento) para componentes genéricos a específicos.
Contab. Essas proporções poderiam ser explicadas das seguintes formas:

"
Interface de usuário 50:50. Os aspectos básicos da interface de
usuário–controles de movimento de arquivo, controles e
monitoração de execução do trabalho –provavelmente seriam
reusados de imediato e aplicáveis em muitos cenários. Seria
preciso especialização - como para qualquer IU - para qualquer
O uso do Microsoft Office SharePoint Server (MOSS) proporciona uma
processo determinado, especialmente com cenários tão diversos
solução cuja projeção cobre áreas nas etapas 'acesso', 'solicitação' e
como as computações HPC.
'análise' (Figura 8). As razões são:
"
Colaboração. Pesquisa e outros usos típicos do HPC giram à volta
"
Camada de aplicativo 80:20. A camada de aplicativo compõe-se
de vários workflows e atividades que podem ser reagrupados e
das atividades colaborativas e o MOSS é extremamente rico em
reorganizados para um processo específico. Com algum trabalho,
características quanto à possibilidade de colaboração à volta do
é provável que muitas dessas atividades e elementos lógicos
conceito de "sites".
podem ser reusados considerando-se dados novos. Exemplos
"
Acesso. Grupos de pesquisa podem estar geograficamente separados podem incluir atividades dos movimentos de arquivos, integração
e, por isso, uma interface baseada na Web ajuda a garantir que a CCS, política e metaprogramação. Além disso, várias ferramentas
plataforma esteja disponível a todos os usuários. Valor significativo de criação seriam aplicáveis para usuários avançados em qualquer
do negócio poderia ser gerado do acesso fornecido a uma cenário.
plataforma HPC para usuários remotos.
"
Extensibilidade. O MOSS pode ser estendido de várias formas, da
"
Camada HPC 10:90. Muito pouco da camada HPC pode ser
reusado pois cada algoritmo será único. Entretanto, os processos
pesquisa à catalogação de informações para a construção de partes
de monitoração e
Web a serem plugadas (plugged in) ao aplicativo principal. Esta
instalação são
extensibilidade também proporciona um forte paradigma de
reutilizáveis e Implementação padrão
usuário, plataforma de desenvolvimento e framework para toda a
solução. compatíveis com Interface Usuário
paradigmas Microsoft 50% 50%
"
Workflow. O MOSS também é acionado pelo WF e, assim, a sinergia existentes.
entre as duas tecnologias fica bastante clara. Aqui temos uma
vantagem: os conhecimentos das equipes que manipulam o "
Camada de dados 40:60. Aplicativo
workflow HPC e aqueles que lidam com outros workflows do Novamente, estruturas 80% 20%
negócio são plenamente transferíveis. de dados exclusivas serão
Para cobrir a projeção necessária, podemos aproveitar as várias necessárias para HPC
características do MOSS: qualquer computação 10% 90%
específica; entretanto,
"
Acesso e inicialização. O SSO e as capacidades de usuário do MOSS bancos de dados para
fornecerão efetivamente a funcionalidade do acesso pronto para rastreamento, Dados
uso. A inicialização pode ser extremamente fácil por meio da criação persistência e 40% 60%
de "sites" feitos sob medida, representando tipos de trabalho de faturamento, por
computação. Usuários podem gerar um site representando um exemplo, serão todos
projeto ou um trabalho e receber a configuração necessária de aplicáveis de cenário
partes Web para solicitar, executar e analisar um trabalho para cenário. Genérico: proporção específica
computacional. Além disso, as características colaborativas como
controles de presença e wiki também podem ser explorados.
"
Solicitação e execução. Formas Web específicas poderiam ser da solicitação e execução de trabalhos. O próprio WF pode ser usado
designadas para possibilitar a entrada de parâmetros e solicitações para definir os workflows de aprovação necessários e está incorporado
mas, uma solução melhor, no que se refere à capacidade e à como parte do MOSS.
flexibilidade, pode ser usar o InfoPath. O infoPath oferece
capacidades sofisticadas de formas Web e uma capacidade de
"
Análise. O MOSS também pode hospedar serviços de emissão de
criação bem desenvolvida. Como usa XML para manter a definição e relatórios e o Business Scorecard Manager (que logo mais será
os dados da forma, também está bem posicionado para aproveitar PerformancePoint) para emissão de relatórios no estilo painel.
os serviços Web para encaminhamento e o uso de workflows Adicionalmente, o Excel Services pode ser acessado via MOSS,
preparados para serviço Web para acionar a aprovação transformando-o na plataforma ideal para execução da análise inicial.

16 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Fornecimento de Sistemas de Computação de Alta Produtividade Ponta a Ponta

Monitoração com Microsoft Operations Manager e PowerShell


Figura 12: Arquitetura técnica HPC
O principal produto para monitorar a saúde do sistema é o Microsoft
Operations Manager (MOM). O MOM pode ser usado para monitorar
a saúde do cluster CCS, da mesma forma que em outros ambientes de Interface de usuário
servidor. Além disso, a simples monitoração de usuários, para usuários (Sharepoint Portal, Windows Forms)
finais, pode ser realizada com o PowerShell. (Vide Figura 9.)
Fornecimento de experiência de criação com o Visual Studio
2005 Camada de aplicativo
(Windows Workflow Foudation)
Finalmente, podemos fornecer uma experiência de criação de primeira
classe com o Visual Studio 2005, parte da qual advém de capacidade
pronta para uso e parte de extensão (Figura 10). Serviço de dados Serviço de computação
Gerar (SQL Server) (Windows CCS)

A codificação é necessária para as atividades de criação e algoritmos e,


portanto, o Visual Studio 2005 é um ambiente ideal para usar o construir uma superfície de projeto inteiramente nova para
framework .NET e ampliar as atividades ou aprimorar a interface de representar a construção do workflow. Nova superfície de projeto:
usuário, assim como usar pilhas MPI e C++ Microsoft para a esta é uma ótima opção para um domínio que tem forma específica
codificação de algoritmos paralelos. de diagramar processos ou nas situações em que outras opções de
Para desenvolver workflows, o Visual Studio 2005 é também a opção hospedagem são necessárias, por exemplo, usando o Windows
preferida, embora talvez não seja tão adequado para usuários Presentation Foundation ou as capacidades de Web do AJAX. A
avançados como para desenvolvedores, devido à complexidade da seção de referências contém um vínculo para uma implementação
interface. Para usuários avançados, tempos outras opções: ASP.NET AJAX de superfície de projeto.
Pela óptica do desenvolvimento, podemos efetivamente consolidar
"
Designer rehosting. O designer de workflow completo pode ser re- todo o desenvolvimento da plataforma em um ambiente e especializar
hospedado (rehosted) em um aplicativo do Windows Forms. Este determinados aspectos por meio do uso de XAML para definir
aplicativo poderia ter uma série de funções reduzidas, específicas,
workflows. O uso da XAML também apresenta oportunidades para
para que um usuário avançado possa construir e configurar modelos
publicação.
de workflow com facilidade. Pode também ser usado para fornecer
algum nível adicional de garantia de qualidade aos modelos de Publicar
workflow, limitando as atividades disponíveis a um usuário avançado.
No caso das atividades e algoritmos, o paradigma da publicação é
"
Desenvolvimento do designer. Alternativamente, como as definições efetivamente um lançamento de software, pois binários precisam ser
de workflow e regras podem ser descritas em XAML, seria possível distribuídos de forma correspondente, ainda que, devido à criação do
software, muito específico, um mecanismo de distribuição poderia ser
construído especificamente para recuperar as bibliotecas, conforme
Figura 10: Cenário de criação com o Visual Studio 2005
necessário.
Talvez também valha a pena estudar a tecnologia do Microsoft
Cenário de criação
ClickOnce para distribuir um aplicativo rico de criação para usuário
Gerar
avançado com a finalidade de automatizar as atualizações de
Publicar
bibliotecas.
Atividades Catálogo No caso da criação de workflows, a publicação poderia ser tão simples
quanto transmitir as definições XAML resultantes para um banco de
Autor dados central, catalogando essas definições. O workflow pode ser
Algoritmos Configurar recuperado no mesmo banco de dados por um usuário final - ou
simplesmente chamado, como resultado da seleção em uma interface
de usuário - e, depois, compilado e executado conforme necessário.
Workflows Lançar
Descrita na próxima seção, a implementação deste conceito significa
Usuário
que novos workflows poderiam, possivelmente, ser publicados muito
Avançado rapidamente pois não é preciso nenhuma liberação de código
(portanto, não há ciclo de liberação nem requisitos administrativos).
Esta capacidade poderia ser fornecida como parte de um aplicativo de
Figura 11: A sobreposição de funções reduz custos usuário avançado feito sob medida, ou como um suplemento (add-in)
do Visual Studio 2005.
Compilação do workflow
Usuário Os workflows do WF são, em geral, compilados em conjuntos de
Autor Usuário
avançado módulos e, então, executados pelo runtime do workflow ao se passar
um elemento do tipo workflow ao runtime para a criação de uma
instância. Todavia, os workflows podem ser executados a partir de um
Custo decrescente em habilidades especialistas
arquivo declarativo - arquivo XAML - se necessário, ou compilado na
hora da XAML, com as regras.

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 17


Fornecimento de Sistemas de Computação de Alta Produtividade Ponta a Ponta

Este procedimento é muito útil, porque permite a um autor de Outras referências


workflow - alguém com conhecimento de codificação de workflows - As referências abaixo mencionadas podem ser úteis para a análise das
criar um workflow não inteiramente válido - talvez faltem alguns tecnologias que compõem a solução proposta neste documento:
parâmetros - e gravá-lo em um arquivo declarativo (markup file). Esse
arquivo poderá, depois, ser completado por um usuário avançado
"
Microsoft Compute Cluster Server 2003,
http://www.microsoft.com/hpc
para adição dos parâmetros necessários (mas, talvez, não editar o
workflow real). Agora que o workflow está válido, poderá ser "
Microsoft SQL Server 2005 (incluindo SQL Server Integration
encaminhado, compilado e executado pela camada de aplicativo. Services), http://www.microsoft.com/sql
Essas etapas podem reduzir o custo de execução do processo ao "
Microsoft Windows Workflow Foundation, http://wf.netfx.com
permitir que as funções se sobreponham (Figura 11); não precisará "
Microsoft Windows Communication Foundation,
haver envolvimento de habilidades de criação dispendiosas na etapa http://wcf.netfx3.com
de execução do processo, sempre que for possível aplicar outras, mais
econômicas.
"
Microsoft Windows Presentation Foundation, http://wpf.netfx3.com/

Arquitetura técnica "


Microsoft Office SharePoint Server 2007, http://www.microsoft.com/
sharepoint/
Os cenários da solução podem ser agregados em uma arquitetura
técnica (Figura 12). Conceitualmente, o CCS deveria ser considerado "
Microsoft Operations Manager, http://www.microsoft.com/mom
um gateway de serviços, da mesma forma que o SQL Server fornece "
Microsoft Windows PowerShell,
serviços para um aplicativo - a solução não é centrada no CCS, mas http://www.microsoft.com/powershell
utiliza suas capacidades quando necessário.
De modo similar, esses serviços são, em geral, abstraídos da IU por
"
Outros recursos mencionados no documento:

meio de algum tipo de controle de aplicativo ou camada lógica do "


CCS 2003 Technical Articles (Artigos técnicos do CCS 2003),
negócio. Considerada a natureza das interações com a solução HPC - http://technet2.microsoft.com/WindowsServer/en/library/9330fdf8-
workflows humanos - o WF é uma escolha adequada para fazer o c680-425f-8583c46ee77306981033.mspx?mfr=true
controle desses serviços. "
Essential Windows Workflow Foundation,
O WF também tem outras vantagens. Foi projetado para ser http://www.awprofessional.com/bookstore/product.asp?isbn=03213
hospedado, conforme necessário, e, assim, a camada da IU poderia ser 99838&rl=1
um aplicativo Web ou Windows escrito especificamente para essa "
Implementing the WF design surface in ASP.NET (with AJAX)
tarefa. Na instância acima descrita, consideramos o Microsoft Office (Implementando a superfície de projeto do WF em ASP.NET (com
SharePoint Server uma interface adequada porque possui fortes AJAX)), http:// www.netfxlive.com/
conexões para WF e a integração com o Office (inclusive o InfoPath); "
Whitepaper on WF Performance (Artigo sobre o desempenho do
as características colaborativas do MOSS poderiam ser úteis nos WF), http://msdn2.microsoft.com/enus/library/Aa973808.aspx
domínios científicos e da engenharia. Por certo, a escolha deveria ter
Agradecimentos
como base os requisitos de um determinado domínio.
Peter Williams (Microsoft Consulting Services, Leitura)
Conclusão
Arquitetar para a computação de alta produtividade não se trata,
apenas, de garantir o "melhor" desempenho para computar resultados, Sobre os autores
o mais rápido possível – isso é mais uma expectativa do que uma Marc Holmes é um Architect Evangelist do Microsoft Technology
característica de projeto. No contexto do fluxo de valor global, a Centre em Thames Valley Park no Reino Unido, onde especializa-se em
arquitetura deve trazer valor de outras áreas, tais como fácil acesso e arquitetura, projeto e prova de trabalho conceitual com grande
variedade de clientes, parceiros e ISVs (fornecedores de software
custo decrescente em habilidades especialistas para operar o sistema.
independente). Antes da Microsoft, Marc, recentemente, liderou uma
Uma arquitetura de sucesso para soluções computacionais de alta equipe representativa de desenvolvimento como Head of Applications
produtividade envolve considerar todo o processo, em paralelo às and Web na BBC Worldwide Ltd. Marc é autor de “Expert .Net Delivery
intensas atividades computacionais e, portanto, pode usar vários with NAnt and CruiseControl. Net” (APress) e mantém um blog no
componentes integrados para executar os aspectos individuais do endereço http://www.marcmywords.org. Os contatos com ele podem
processo. É fácil incluir o Microsoft Cluster Compute Server Edition ser feitos pelo email marc.holmes@microsoft.com.
como um gateway de serviço dentro de uma estrutura geral de Simon Cox é professor de métodos computacionais no Computational
aplicativo de n-camadas; além disso, sua integração via linha de Engineering Design Research Group da School of Engineering Sciences
comando ou conexões API é bastante simples. da University of Southampton. Detentor do prêmio MVP como
Outras tecnologias disponíveis podem providenciar a base para uma Arquiteto de infra-estrutura, Sistema servidores Windows, ele dirige o
Microsoft Institute for High Performance Computing na University of
solução HPC. Particularmente, o Windows Workflow Foundation é
Southampton e já publicou mais de 100 artigos. Atualmente, chefia
bastante adequado para fornecer uma interface de aplicativo para o
uma equipe que aplica e desenvolve computações em projetos de
CCS pois as características e a extensibilidade do WF, como
engenharia e ciência computacional interdisciplinar colaborativa
persistência e rastreamento, prestam-se aos requisitos das soluções como, por exemplo, eletromagnetismo computacional, cristais
baseadas em HPC. O uso do WF também amplia as escolhas das líquidos, modelagem de sistemas da Terra, elaboração de banco de
tecnologias de experiência do usuário disponíveis para aplicação em dados biomoleculares, algoritmos computacionais aplicados e
um determinado domínio. computação orientada a serviço distribuído.

18 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Infra-estruturas
Dirigidas a Teste
por Mario Cardinal

Resumo Documentação inequívoca

O pessoal de TI precisa desempenhar duas funções: Documentar decisões de arquitetura facilita a comunicação entre os
“construir” e “executar” software. Cada função exige um participantes. São pessoas com interesse legítimo na solução. No que
se refere às especificações arquiteturais, há duas classes de
conjunto diferente de habilidades. No organograma, a
participantes com necessidades diferentes. Os tomadores de decisão,
lacuna entre "construir" e "executar" quase sempre está que precisam conhecer a arquitetura para entender as restrições e as
claramente visível. No nível arquitetural, os arquitetos de limitações da solução fazem parte da primeira classe. Exemplos desses
aplicativos envolvidos no desenvolvimento de software participantes são gerentes, clientes e usuários. Na segunda classe de
(construir) estão de um lado, e, do outro, os arquitetos participantes temos os implementadores que precisam conhecer essas
de infra-estrutura envolvidos na operação de software mesmas decisões para construir e executar a solução. Exemplos desses
(executar). Sendo um arquiteto de aplicativos, acredito participantes são os desenvolvedores, engenheiros e administradores
do sistema.
que as duas equipes deveriam aprender com base nas
respectivas melhores práticas. Uma das melhores práticas Uma especificação narrativa escrita é a documentação perfeita para os
que o pessoal de infra-estrutura deveria aprender com o participantes da primeira classe. Para eles, até mesmo uma
especificação informal publicada no formato Microsoft PowerPoint já
pessoal de desenvolvimento de software é expressar as
basta. Oferece uma visão de alto nível da arquitetura, quase sem
decisões de arquitetura por meio de scripts de teste. ambigüidades com relação às restrições e limitações da solução.
Decisões de arquitetura Todavia, uma especificação narrativa não é a documentação adequada
A disciplina arquitetura de software está centrada na idéia de reduzir a para a segunda classe de participantes, pois não oferece aos
complexidade abstraindo e separando interesses. O arquiteto é a implementadores as informações concisas sobre decisões de projeto.
pessoa responsável por identificar a estrutura dos componentes E, caso ofereça, será uma especificação formal, compacta, e esse
importantes, normalmente considerados difíceis de serem alterados, e documento não será útil para os tomadores de decisão. O pessoal da
por simplificar os relacionamentos entre esses componentes. O
primeira classe não liga para a estrutura interna dos componentes
arquiteto reduz a complexidade dividindo o espaço do problema em
significativos da arquitetura. Entretanto, esse é o domínio dos
um conjunto de componentes e interfaces que será cada vez mais
implementadores.
difícil de ser modificado, na medida em que o projeto evolui.
A única forma de simplificar o software é estruturar todas as interações Na minha experiência como arquiteto de aplicativos, descobri que a
dos componentes principais através das interfaces e aceitar o fato de forma mais fácil de transmitir a complexidade de uma decisão de
que essas interfaces são, agora, praticamente impossíveis de se projeto irreversível não é elaborar um documento narrativo mas, em
modificar. Se você pegar qualquer componente do software, poderá lugar disso, escrever um teste que explique como eu validaria uma boa
modificá-lo facilmente. Entretanto, temos este desafio: é quase implementação. Quando apenas palavras são usadas, é muito difícil
impossível fazer com tudo fique fácil de modificar sem aumentar o para o arquiteto e para os implementadores entenderem-se com
nível de complexidade, como Ralph Johnson disse em um artigo que segurança. Existe sempre um descompasso em como cada parte
Martin Fowler escreveu para o IEEE Software: "Fazer alguma coisa que compreende o significado de uma palavra específica.
se modifique facilmente faz com que todo o sistema seja um pouco
mais complexo; fazer com que tudo seja fácil de se modificar faz com Aqui um exemplo simples para demonstrar o meu ponto de vista.
que todo o sistema seja muito complexo. A complexidade dificulta a Digamos que eu escreva, em uma especificação de arquitetura, a
modificação do software". seguinte decisão de projeto:
Estabelecer todas as interações de componentes por meio de “Apenas os dados do dia anterior serão restaurados em caso de
interfaces é tornar irreversíveis as decisões de projeto. Este conjunto travamento do disco rígido ou de corrupção dos dados. Os usuários
de decisões de projeto sobre a estrutura lógica e física de um sistema, precisarão redigitar os dados perdidos do dia atual".
se feito de forma incorreta, poderá provocar o cancelamento de todo
Obviamente, os implementadores precisarão de explicações sobre
o projeto. A chave para o sucesso é proteger o sistema contra a
instabilidade. Bons arquitetos sabem como identificar as áreas de meus propósitos para implementar corretamente minha especificação.
mudança nas condições existentes e protegê-las contra a Abaixo, a mesma decisão escrita para eles:
irreversibilidade da arquitetura. “O backup do banco de dados do SQL Server será feito todas as noites.
Documentar a arquitetura é, explicitamente, transmitir, sem qualquer Em caso de recuperação, faremos a restauração do backup mais
ambigüidade, o conjunto de decisões de projeto irreversíveis. recente".

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 19


Infra-estruturas Dirigidas a Teste

É melhor do que a primeira mas, ainda assim, contém várias zonas Figura 1: Exemplo de scripts de teste para validação de decisões
nebulosas. Poderia reescrever essa descrição muitas vezes e fornecer de projeto.
mais e mais detalhes para os implementadores. Ao final, terminaria
com uma especificação formal e detalhada. Entretanto, uma Script de teste 1
documentação narrativa não fornece um consenso explícito sobre o Intenção: Recuperar dados devido ao travamento do disco rígido
que é uma implementação bem-sucedida. Em geral, e ainda que com do SQL Server
a melhor das intenções, os implementadores não compreendem bem Etapa:
as sutilezas da minha especificação formal. Por exemplo, digamos que
1. Substituir o disco rígido defeituoso
a minha solução previa fazer o backup em fita, mas esqueci de
explicitar esse fato. O que acontecerá se os implementadores fizerem 2. Instalar o banco de dados do SQL Server
o backup do banco de dados do SQL Server em discos? A não ser que 3. Restaurar o backup de ontem da fita (criar esquema e dados)
eu descubra isso durante a revisão do projeto, não saberei desse Critérios de sucesso: Encontrar no mínimo uma ordem com
detalhe até que o disco do SQL Server e o disco de backup travem no campo de atualização ajustado para ontem na tabela "ordem".
mesmo dia.
Em lugar disso, se eu tivesse escrito um script de teste, teria
Script de teste 2
estabelecido um consenso explícito sobre a conformidade. Duas são as
Intenção: Recuperação após corrupção de dados
probabilidades de um script de teste: sucesso ou falha. Os testes
permitem aos implementadores e arquitetos definir a conformidade, Etapa:
explicitamente, contra a especificação da arquitetura. Os 1. Em um banco de dados do SQL Server, restaurar da fita o
implementadores que procuram aprender sobre a arquitetura podem backup do último dia (sobregravar dados)
examinar os scripts de teste, os quais são artefatos operacionais. Têm
Critérios de sucesso: Não encontrar nenhuma ordem com campo
menor probabilidade de se desviarem da implementação e de ficarem atualização ajustado para hoje e, pelo menos, uma ordem com
desatualizados, portanto. campo de atualização ajustado para ontem na tabela "ordem".
Consenso explícito
Script de teste é a combinação de procedimento de teste com dados Proteção contra mudanças
de teste. Os scripts de teste são escritos em conjuntos de etapas a Os scripts de teste que expressam as principais decisões de arquitetura
serem executados manual ou automaticamente. Incorporam estão sempre relacionados a coisas que mudam. As principais áreas
características críticas para o sucesso da arquitetura. Essas sujeitas a mudança podem ser divididas em três categorias:
características podem indicar o uso adequado ou inadequado da
1. Execução: Nesta categoria, variações sobre as operações e a
arquitetura, assim como os comportamentos negativos que devem ser
monitoração representam a principal preocupação dos arquitetos de
capturados.
infra-estrutura. Cruzam todas as outras questões de execução como,
Como exemplo concreto, a Figura 1 ilustra dois scripts de teste por exemplo, apresentação, processamento, comunicações e
simples, que validam a seguinte decisão de projeto irreversível: gerenciamento de estado:
“Apenas os dados do dia anterior serão restaurados em caso de
travamento do disco rígido ou de corrupção dos dados. Os usuários
"
Apresentação: Participantes interagindo com o sistema. Como
precisarão redigitar os dados perdidos do dia atual". Duas são as implementamos a IU? Precisamos de muitos front ends? Os fatores
de qualidade como usabilidade, possibilidade de composição e
probabilidades de um script de teste: sucesso ou falha. Como o script
simplicidade são importantes?
valida a intenção do arquiteto, oferece um consenso explícito sobre
conformidade. "
Processamento: Instruções que modificam o estado do sistema.
Como implementamos o processamento?
Figura 2: Fontes em potencial de variações no tempo de execução Precisamos de suporte transacional? E a
Nó de tempo de execução
simultaneidade? Os fatores de qualidade como
escalabilidade, desempenho e confiabilidade são
importantes?

Apresentação Processamento
Gerenciamento "
Comunicação: Distribuição de estado entre os nós
de estado físicos do sistema. Como interagimos? Em que
• Estilo • Conduta, OO, regra, declarativa • OO, relacional, XML
• Implementação • Simultâneo/ paralelo • Local formato os dados são transmitidos? Qual é o
• Perspectiva de usuário • Transacional • Vida útil
meio de comunicação usado? Os fatores de
Nó do tempo de execução Operação e monitoração qualidade como segurança e capacidade de
gerenciamento são importantes?
Gerenciamento
Apresentação Processamento
Operação e monitoração
de estado
"
Gerenciamento de estado: Local, ciclo vital e
• Transporte
• Troca formato dos dados. Precisamos de um estado
Comunicação • Formato
Nó do tempo de execução Nó de tempo de execução transiente ou durável? Como gravamos o estado?
Operação e Os fatores de qualidade como disponibilidade,
Gerenciamento Monitoração Gerenciamento
Apresentação Processamento de estado Apresentação Processamento de estado capacidade de recuperação, integridade e
Operação e monitoração Operação e monitoração extensibilidade são importantes?

20 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Infra-estruturas Dirigidas a Teste

Os arquitetos protegem o sistema contra a instabilidade do runtime function test-connection


construindo abstrações. Os testes devem validar essas abstrações. Por {
exemplo, em condições de alta disponibilidade, para proteger contra
$pingtest = ping $args[0] -n 1
defeitos de um servidor físico, a solução comprovada é adoção de um
failover. O failover representa a capacidade de passar if ($pingtest -match ‘TTL=’)
automaticamente para um servidor de computador redundante ou em {
standby no momento de uma falha ou interrupção anormal.
write-host $true
2. Implantação: Aqui temos as questões de tempo de carga. Nesta
}
categoria, os arquitetos de infra-estrutura devem estar atentos às
variações de configuração e registro. Por exemplo, para proteger else
contra mudanças nos mecanismos de autenticação, com o Windows {
como plataforma, armazenar as credenciais do usuário no Microsoft write-host $false
Windows Active Directory é uma solução comprovada.
}
3. Implementação: As mais importantes variações de tempo de
}
projeto são referentes à instabilidade das ferramentas e organizações
(pessoas). Por exemplo, as equipes de infra-estrutura aprenderam a se Usage:
proteger contra as equipes de desenvolvimento instáveis. A
implantação de componentes ruins na produção pode ser desastrosa test-connection MyServer01.domain.com
para os contratos de nível de serviço (SLAs). Estabelecer um
mecanismo de fallback para rapidamente restaurar o sistema para um
estado previamente estável é uma solução comprovada. Devemos Ao contrário de um documento narrativo, um conjunto automático de
documentar os processos de fallback e, também, escrever os testes scripts de testes é um artefato operacional. Está sempre atualizado e
para expressar conformidade sem ambigüidade. continuamente valida a conformidade com a intenção do arquiteto.

O processo que descobre decisões de projeto irreversíveis consiste em Projeto para capacidade de teste
revisar todas as áreas passíveis de mudanças e construir os testes Capacidade de teste significa ter interfaces confiáveis e convenientes
apropriados. para acionar a execução e confirmação dos scripts de teste. Não é
possível ter capacidade de teste se os testes forem escritos após o
Artefatos operacionais
projeto e a implementação. Construir testes durante o projeto é a
Hoje, os scripts de teste podem ser manuais, automáticos ou única abordagem viável de se obter capacidade de teste.
combinados. Os testes automáticos têm uma vantagem em relação Ao abstrair a implementação, escrever os testes, em primeiro lugar,
aos manuais: são facilmente repetíveis. Portanto, são favorecidos no reduz muito o acoplamento entre componentes. As decisões de
momento dos testes de regressão. Depois de modificar o software, projeto irreversíveis podem, agora, ser testadas mais plenamente,
devido a uma alteração na funcionalidade ou para corrigir defeitos, como nunca antes, e o resultado será uma arquitetura de mais
um teste de regressão executa novamente testes anteriormente qualidade e, também, de mais fácil manutenção. Dessa forma, os
aprovados. Garante que as modificações não causaram, próprios benefícios começam a render dividendos ao arquiteto,
inadvertidamente, qualquer inobservância das decisões de projeto. criando um ciclo ascendente de qualidade, aparentemente perpétuo.
O ato de escrever testes durante a fase de projeto proporciona um
Scripts de teste automáticos são pequenos programas escritos em
benefício duplo:
linguagem de programação. Arquitetos de infra-estrutura não
precisam ser programadores para escrever um teste automático. As 1 Valida a conformidade com a intenção do arquiteto.
linguagens de script fazem esse trabalho com eficiência. Tendo o 2 Faz isso de modo explícito.
Windows como plataforma, o PowerShell, nova linguagem de script e Os testes são um processo de especificação, não apenas de validação.
shell de comando da Microsoft, é bastante adequado para essas
Projeto para automação
finalidades considerando o suporte que oferece para estruturas de
controle, tratamento de exceções e acesso às classes de sistema .NET. A experiência tem demonstrado que, durante a manutenção do
Aqui, abaixo, alguns dos cenários de testes nos quais o PowerShell software, o ressurgimento de falhas é bastante comum. Algumas
poderia ser usado: vezes, a correção de um problema será "frágil", ou seja, não respeitará
as características críticas para o sucesso da arquitetura.
"
Testes de implantação. Criar um script para confirmar se o
Assim sendo, considera-se boa prática gravar o teste e,
lançamento se portou conforme o esperado; verificar processos e
periodicamente, executá-lo novamente após modificações
serviços em execução, metadados e conteúdo de banco de dados,
versões de arquivo de aplicativo, conteúdo de arquivo de subseqüentes do programa. Embora isso possa ser feito por meio de
configuração, etc. testes manuais, quase sempre são usadas ferramentas de teste
automáticas. Essas ferramentas procuram descobrir erros de regressão.
"
Testes de infra-estrutura. Criar um script para confirmar hardware, Esses erros ocorrem sempre que a funcionalidade do software, que
sistema operacional, serviços e processos em execução, etc. anteriormente trabalhou como desejado, pára de trabalhar ou já não
Por exemplo, aqui, abaixo, uma pequena função em PowerShell para trabalha da mesma forma. Em geral, os erros de regressão ocorrem
testar a conectividade com um servidor: como uma conseqüência inadvertida de modificações do programa.

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 21


Infra-estruturas Dirigidas a Teste

Figure 3: Teste automático do PowerShell

set-psdebug -strict -trace 0

# Ensure that group “App_Setup” is defined in Windows Active Directory


function TestActiveDirectoryGroup
{
$objGroup =[ADSI]”LDAP://localhost:389/CN=App_Setup,OU=HR,dc=NA,dc=org1,dc=com”
AssertNotNull $objGroup “App_Setup group is required to install application xxx.”

RaiseAssertions
}

# run the function library that contains the PowerShell Testing Functions
# the functions are defined as global so you don’t need to use dot sourcing
if (!(Test-Path variable:_TESTLIB)) {..\src\TestLib.ps1 }

# run the function defined above that demonstrates the PowerShell Testing Functions
TestActiveDirectoryGroup

Os testes de regressão fazem parte integrante da ágil metodologia de "


Estruturado
desenvolvimento de software como, por exemplo, o eXtreme
Programming. Esta metodologia promove a automação dos testes para
"
Auto-documentado
construir produtos melhores e de modo mais rápido. Exige que um "
Automático e repetível
teste unitário automático, definindo requisitos de código-fonte, seja
escrito antes de cada aspecto do próprio código. Os testes unitários
"
Baseado em dados conhecidos
são usados para exercitar outro código-fonte chamando rotinas, "
Projetado para testar ações positivas e negativas
diretamente, transmitindo parâmetros adequados e, então, se houver
instruções Assert, testar os valores produzidos em relação aos
"
Ideal para implementação de testes em várias máquinas
esperados. Os frameworks de testes unitários como, por exemplo, o "
Documentação operacional das configuração, implementação e
xUnit, ajudam a automatizar os testes em cada etapa do ciclo de execução.
desenvolvimento.
Testes dirigidos a dados
Em 1988, o framework xUnit foi apresentado como um conceito básico
A automação de teste, especialmente nos mais altos níveis como os
da eXtreme Programming. Introduziu um mecanismo eficiente para
testes de arquitetura, pode parecer cara. O argumento econômico tem
ajudar os desenvolvedores a adicionar testes unitários automáticos,
de estar presente para dar apoio ao esforço. O modelo econômico
estruturados e eficientes, nas atividades normais de desenvolvimento.
pode ficar enfraquecido se não houver simplificação no processo de
Desde então, este framework evoluiu para, na prática, transformar-se
escrever testes.
no padrão para frameworks automáticos de testes unitários.
Testes dirigidos a dados representam uma forma de reduzir o custo
Os frameworks xUnit executam todos os scripts de teste em intervalos
dos testes automáticos. Permitem ao testador concentrar-se em
especificados e informam quaisquer regressões. As estratégias comuns
fornecer exemplos na forma de combinações entre a entrada de teste
são: executar esse sistema após cada compilação bem-sucedida
e a saída esperada. O teste é projetado criando-se uma tabela que
(integração contínua) toda noite ou uma vez por semana. Simplificam contém todos os seus dados (entradas e saídas esperadas); depois, é
o processo dos testes unitários e de regressão. preciso escrever um acessório de teste (test fixture) que converte uma
De modo geral, é possível executar os testes sem o apoio de linha da tabela em uma chamada para o sistema em teste (SUT –
frameworks xUnit escrevendo código de cliente que testa as unidades System under test).
e usa mecanismos de assertions, exceções ou de saída antecipada É possível atingir uma relação de alto desempenho se não for preciso
(early exit) para sinalizar falhas. Entretanto, os arquitetos de infra- escrever nada além de um acessório de teste. O framework fornece
estrutura não devem precisar escrever o próprio framework de testes. implicitamente o script-e o executa.
Frameworks conhecidos de testes xUnit foram desenvolvidos para uma
Na versão mais recente do “PowerShell Scripts for Testing,” este
grande variedade de linguagens, inclusive a linguagem de scripts,
framework xUnit possibilita o uso do Excel como a fonte de dados para
comumente usada por administradores de sistema.
suportar os testes dirigidos a dados. Existe uma nova função em
Na plataforma Windows, a “PowerShell Scripts for Testing", biblioteca DataLib.ps1 chamada start-test que reúne como entrada um
de funções que implementa assertions conhecidos estilo xUnit para a nome de pasta de trabalho, um nome de planilha, um nome de
nova linguagem de script e shell de comando da Microsoft, pode ser intervalo e um conjunto de nomes de campos para executar os testes
baixada gratuitamente do CodePlex, website que hospeda projetos de descritos naquele intervalo. Esse procedimento é feito chamando uma
código aberto (vide Referências). A Figura 3 mostra um exemplo de função que tem o mesmo nome do intervalo.
teste automático do Powershell. O uso de start-test está demonstrado em um exemplo de teste
Os testes automáticos procuram descobrir, o quanto antes, decisões de de desempenho no companion blog do PSExpect. A Figura 4 mostra
projeto não respeitadas, mas críticas para o sucesso da arquitetura. Os uma tabela do Excel e o script de teste fornecido para o serviço de
testes automáticos são: meteorologia da Web.

22 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Infra-estruturas Dirigidas a Teste

"
Garantir confiabilidade: Os testes realizam exatamente as mesmas
Figure 4: Excel table and test script for sample weather Web service operações, sempre que são executados sem ambigüidade. Dois
resultados podem advir: sucesso ou falha. Proporcionam um
consenso explícito sobre a conformidade e continuamente validam a
intenção do arquiteto. Eliminam o erro humano e neutralizam o
fator fadiga dos testes manuais, na medida em que se aproximam os
prazos finais.
"
Produzir confiança: A automação oferece informações concretas
sobre o sistema pois é possível testar como o software reage sob
execução repetida das mesmas operações.
"
Evitar riscos: Os testes automáticos demonstram correção do sistema
dentro de um prazo sensato. Os testes podem ser executados muitas
vezes, com sobrecarga menor.
"
Aprimorar a capacidade de manutenção: Em primeiro lugar, os testes
escritos influenciam a estrutura e criam sistemas modulares.
Reduzem de modo significativo o acoplamento entre componentes
e, assim, diminuem o risco de que uma mudança em um
componente forçará uma mudança em outro.
"
Fornecer documentação atualizada, de modo consistente: Os testes
são um artefato operacional que não podem ficar sem sincronia. Se
os testes se desviarem da realidade, será impossível executá-los com
sucesso. Sempre haverá falha se os testes estiverem desatualizados.

Referências
“Who needs an architect?” (Quem precisa de um arquiteto?) Martin
Fowler, IEEE Software Magazine, Volume 20, Edição 5 (Setembro 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

Conclusão
Sobre o autor
Os testes automáticos combinados com testes de regressão não
apenas documentam as decisões arquiteturais no nível apropriado Mario Cardinal é um consultor sênior independente, especializado em
para os implementadores, mas também valida continuamente a arquitetura de aplicativos corporativos. Ocupa a maior parte do seu
conformidade com a intenção do arquiteto. tempo com a construção de aplicativos .NET corporativos, bem
Os benefícios de se escrever testes automáticos são os seguintes: projetados, com processos ágeis. Mario tem mais de quinze anos de
experiência em projeto de sistemas de informação de grande porte.
"
Permitem liberdade para mudar: Na medida em que os sistemas
Pelo segundo ano consecutivo, recebeu da Microsoft o prêmio Most
ficam maiores, fica mais e mais difícil inserir modificações sem
Valuable Professional (MVP) como arquiteto de software. O status
quebrar nada. O risco do negócio nesta situação é que o usuário
poderá encontrar-se na situação em que os clientes pedem coisas ou MVP é concedido a especialistas em tecnologia, dignos de confiança,
o mercado muda de alguma forma que induz à mudança. Uma que se encontram entre os melhores membros da comunidade e
grande bateria de scripts de teste automáticos libera os arquitetos desejam compartilhar suas experiências ajudando outros a realizar o
para fazer ótimas coisas. Os arquitetos ficarão menos temerosos se seu potencial. Lidera o grupo de interesse em arquitetura no Montreal
tiverem de modificar decisões de projeto existentes. Com os testes Visual Studio User Group e a divisão da International Association of
automatizados agindo como uma "rede de segurança", é possível Software Architects (IASA) de Montreal. Ele também é presidente da
refatorar a arquitetura, adicionar ou modificar características, sem DevTeachConference e pretendente a uma cátedra em arquitetura.
perder o sono. Ao investir em testes automáticos, o usuário Além disso, apresenta um programa de entrevistas na Internet sobre
descobrirá que a sua organização, na verdade, estará se desenvolvimento de software com o Microsoft .NET (Visual Studio Talk
movimentando mais rápido do que antes. É possível responder
Show). Mario é bacharel em engenharia de computação e tem
rapidamente às mudanças do mercado, implementar características
também, e a organização será mais robusta. Testes automáticos mestrado em gerenciamento de tecnologia pela Escola Politécnica de
ajudam a: Montreal, Canadá. Ele detém também os títulos de Certified
ScrumMaster (CSM) e Microsoft Certified Solution Developer
"
Reduzir custos: Os testes automáticos descobrem problemas de (MCSD.Net). (Os contatos com Mario podem ser feitos pelo seu site,
modo eficiente, tão logo quanto possível, muito antes de o software no endereço www.mariocardinal.com.)
chegar ao cliente. Quanto antes os problemas forem localizados,
mais barata será a correção porque a "área de superfície" da
mudança será menor (ou seja, o número de modificações desde o
último teste será limitado).

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 23


Perfil do Architecture
Journal: Don Ferguson

Para esta edição, como parte da série Perfil do Architecture dos Web Services. Penso que ajudei a dar-lhes mais coerência,
Journal, pudemos entrevistar Don Ferguson, Technical possibilidade de composição, facilidade de entendimento, etc.

Fellow da Microsoft. Don respondeu algumas perguntas AJ: Com tais responsabilidades, o que faz para manter-se
sobre sua carreira e qual o conselho que ele daria àqueles tecnicamente atualizado?
que desejam tornar-se arquitetos ou que se interessam hoje DF: Boa pergunta! A primeira coisa é trabalhar muito, de fato. Quando
não estou com as crianças, quase sempre é comer, dormir, trabalhar,
por arquitetura.
caratê - e, algumas vezes, dormir é opcional. Definitivamente, trabalho
AJ: Quem é você e qual a sua origem? muitas horas. Depois, trabalho muito durante as viagens: nos aviões
DF: Meu nome é Don Ferguson. Antes de ingressar na Microsoft, no não há interrupções nem teleconferências. Sempre que possível, fico
início deste ano, era IBM Fellow. Existem cerca de 200.000 engenheiros longe dos emails, conscientemente. Também tento não aprender
na IBM e cerca de 50 Fellows, por isso, era uma grande honra fazer novas informações técnicas lendo artigos ou apresentações. A melhor
parte da equipe. Quando entrei na IBM Research, nunca pensei que, forma é baixar, instalar, usar e codificar.
algum dia, chegaria a ser Fellow. Pensava que talvez um dia chegasse a Com o passar dos anos, aprendi bem a sintetizar como as coisas
ser líder de projeto - e isso já seria uma grande conquista. Existem devem funcionar com poucas informações, apenas. De modo geral, as
muitas pessoas brilhantes, talentosas, e eu apenas esperava ser um pessoas são espertas. Com poucas informações, quase sempre consigo
deles. concluir o que as pessoas brilhantes deveriam ter feito. Como
AJ: Como foi, para você, tornar-se IBM Fellow? puderam projetar isto? Dessa forma, embora talvez não conheça o
DF: O dia em que me tornei Fellow, foi um dos melhores da minha tema com profundidade, quase sempre posso concluir como as coisas
vida. Para falar a verdade, de certa forma, senti-me um pouco devem funcionar e contribuir para a discussão.
estranho sobre esse reconhecimento. Achei que havia outras pessoas Na IBM, sempre havia 10 ou 12 iniciativas nas quais trabalhava ao
que o mereciam mais do que eu. Assim, logo após o anúncio, tornei- mesmo tempo. Poderia dedicar alguns meses a cada projeto,
me um defensor dessa causa - e nos anos seguintes, consegui fazer intercalando as iniciativas. Por fim, cada uma delas enfrentaria vida
com que três ou quatro dessas pessoas também fossem reconhecidas própria ou fracassaria. Você verá muito disso nos padrões dos quais
como Fellows. De certa maneira, fiquei mais feliz com a indicação participei. Fazia parte de uma lista de contribuintes de muitos dos
delas do que com a minha. Quando acontece com você, tudo fica primeiros artigos mas, com o tempo, desapareci. Muitas pessoas
confuso; mas, quando acontece com os outros, isso nos dá muita capazes começaram a produzir e fazer trabalhos intensamente
satisfação. técnicos e eu me dediquei a outros temas.
AJ: Como você descreveria um dia típico em sua vida? AJ: Que conselho daria para alguém que quisesse tornar-se hoje
DF: Eu era arquiteto-chefe do grupo de software da IBM. Lá havia um arquiteto?
centenas de produtos e projetos. Ser o arquiteto-chefe significa que DF: Penso que esta resposta se compõe de quatro partes.
não dá para projetar todos os componentes. Existem muitos e muitos Primeiramente, na IBM havia um conselho de arquitetos no grupo de
produtos para que isso seja uma meta real. Passava grande parte do software que me ajudava a formar uma rede. Demorou um pouco até
meu dia fazendo muitas revisões. Eram vários projetos ou concepções eu entender a importância de uma rede. Acho que por influência da
de produtos, com enfoque em alguns pontos de nível superior. Os minha origem, Nova Inglaterra, sou um pouco calado, com tendência
novos produtos tinham destaque especial. Em geral, estava a ficar sozinho. Mas, não se deve nunca subestimar a importância de
concentrado na integração de produtos inter-relacionados, questões uma rede social. Você não sabe o que você não sabe. A gente não
comuns, etc. Por exemplo, o produto 'portal' está com a interface sabe o que alguém pode nos dizer que acionará um botão de reset no
correta para fazer conexão com este produto 'segurança'? O produto é cérebro, mudando nosso pensamento.
compatível com os padrões corretos? Brincando, costumava referir-me Em segundo lugar, um arquiteto de software nunca pára de codificar.
a isso como "pastorear gatos". Nas apresentações, muitas vezes usei no Eu escrevo códigos. Especificamente, não são bons nem profundos,
primeiro slide o título "Pastor-chefe dos gatos". mas eu escrevo códigos. Muitos deles são educativos e relativos às
Nos primeiros dias, este trabalho não me gratificava: muito abstrato, minhas atividades das horas vagas. Por exemplo, há algum tempo,
pouco profundo, muito amplo. Mas, um dia, tive uma revelação. trabalho em um portal para interconectar a minha família, usando
Trabalhar para juntar as várias peças um pouco mais tinha um efeito TikiWiki e PHP. Instalei os produtos, mas não funcionaram, de pronto.
significativo, especialmente em se tratando de produtos. Uma Por isso, fui forçado a “desvendá-los". E foi legal. Outro exemplo é o
melhoria aqui, outra ali, em vários lugares, fazia a diferença. Outro jardim de infância da minha filha. Eles me pediram para configurar um
exemplo também válido, é o trabalho que pude realizar nos padrões website com o FrontPage, e isso foi outro aprendizado.

24 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Perfil do Architecture Journal: Don Ferguson

Em terceiro lugar, é importante ter habilidades de comunicação. É Dr. Donald Ferguson é Technical Fellow da
verdade. É realmente importante saber como escrever e apresentar Microsoft em plataformas e estratégia na
bem suas idéias. função de CTO. O seu enfoque está no papel
evolutivo e revolucionário da tecnologia da
E por último: o mais importante é saber comunicar-se com os clientes.
informação nos negócios. A Microsoft espera
Passe o máximo de tempo possível com eles. Saiba o que estão
que Don se envolva em grande variedade de
tentando fazer e veja o que funciona, ou não. Ajude-os a usar os seus
projetos futuros.
produtos. Não há substituto que se compare ao tempo que passa com
os clientes, ajudando-os a resolver os problemas. Ao fazer isso, com Antes de ingressar na Microsoft, Don era
freqüência descobrimos que os clientes usam nossos produtos de Dr. Donald Ferguson Fellow da IBM e arquiteto-chefe do grupo de
Microsoft
formas jamais sonhadas. Além disso, surgem incríveis idéias novas. software do SWG (Software Group) da IBM.
Don proporcionou liderança técnica global para os produtos
AJ: Qual foi a pessoa mais importante com quem já se WebSphere, Tivoli, DB2, Rational e Lotus. Ele também presidiu o
encontrou? O que tornou essa pessoa tão significativa para você? SWG Architecture Board (SWG AB). O SWG AB concentrava-se na
DF: Quando comecei no ambiente acadêmico e na divisão de pesquisa, integração de produtos, iniciativas de produtos inter-relacionados e
meu orientador (Yechiam Yemini) foi realmente importante. Ensinou- tecnologia emergente. Algumas das áreas de enfoque público eram
me duas coisas: os serviços Web, padrões, Web 2.0 e desenvolvimento dirigido a
negócio. Don orientou a estratégia da IBM e a arquitetura para Web
Como orientandos tendemos a subestimar a qualidade do que Services e SOA e foi co-autor de muitas das primeiras especificações
fazemos. Somos muito rígidos conosco. Achamos que nossas teses não de Web Service.
são suficientemente boas ou que a pesquisa feita não é original. Meu
orientador me ajudou nesse aspecto. aprender outra disciplina: Jiu-Jítsu. Gostaria de ensinar caratê. As
Depois, ele me ensinou que todo esse processo pode ser muito realizações pessoais vêm em primeiro lugar.
divertido: aproveite e aprecie o que está fazendo. O entusiasmo dele No que se refere à realização profissional e o que me instiga, imagino
era inocente e contagiante. um momento no futuro em que todos poderão programar. Não se
Além do meu orientador, existem muitas outras pessoas na IBM que se trata de usar Fortran e C# mas, em lugar disso, uma outra definição de
tornaram ótimos amigos e paradigmas. De todos, Tony Storey foi o "programa". Pode parecer estranho... deixe-me explicar:
mais importante. Eu observava as pessoas que respeitava e sempre Todos os egressos do ensino secundário já tiveram alguma experiência
tentava fazer uma "engenharia reversa" para descobrir como realizavam em programação – ainda que seja algo simples como um website PHP.
seus trabalhos. Conscientemente, eu tentava ser como eles. Atualmente, representam capacidades básicas - assim como eu aprendi
AJ: Na sua carreira, do que se arrepende? O que você aprendeu a fazer longas divisões manualmente (ainda que, pela minha análise, os
com isso? alunos de hoje já não sabem mais fazer essas contas). Esses
programadores casuais fariam parte da força de trabalho.
DF: Uau! Nem sei por onde começar! Mencionarei dois fatos: ganhei
do meu antigo grupo um capacete do Darth Vader por causa do meu Acho que precisamos ampliar nossa definição de "programa". Qual é a
jeito de trabalhar nos primeiros tempos. "Faça do meu jeito ou principal "ferramenta de programação" dos profissionais do negócio?
explodirei o seu planeta". A abordagem Darth Vader não funciona. Não PowerPoint. Se os profissionais do negócio podem usar o PowerPoint,
é possível fazer gente brilhante realizar o que não deseja. As pessoas imagino se poderíamos incentivá-los a usar outra ferramenta para fazer
fazem bem o que querem fazer. Isto foi para mim uma revelação. Por a modelagem do negócio. Eles já fazem a modelagem do negócio,
que eu era tão ríspido e dominador? Estava ocupado e tudo o que mas usam documentos entregues aos programadores. Os
pensava era "tenho essas 20 coisas para fazer - por que esta pessoa não programadores imaginam o significado dos documentos e coisas ruins
me deixa fazer o que eu quero?” Concluí que essa abordagem nunca acontecem quando programadores fazem suposições. Penso se
funciona, ainda que se tente muito. As pessoas merecem minha poderíamos fazer algo mais inteligente. Nas escolas de comércio,
atenção e devo a elas esse tempo. ensinam uma disciplina chamada inglês estruturado e várias técnicas
de diagramação. Essas talvez pudessem formar a base dos serviços de
Depois, muitas pessoas que trabalham com tecnologia sofrem da
programação para negócios.
"ilusão do fim de jogo”. Todos somos muito brilhantes. Visitamos
muitos clientes. Observamos o que eles estão fazendo e, então, A realização profissional, para mim, seria pensar como poderíamos
plotamos a trajetória de onde estarão em alguns anos. Entretanto, modificar a natureza fundamental da Web. Web 2.0, mesclagem de
quando fazemos isso, é muito grande a tentação de construir o que sites (mash-ups) e alimentações são interessantes, mas representam a
eles precisarão em cinco anos e não aquilo que eles precisam ou para primeira etapa de um processo de duas etapas. Hoje, a Web é um
o que estão preparados, agora. Algumas vezes, digo que não faz modelo push. As pessoas escrevem o conteúdo transferido para as
sentido construir a cidade das esmeraldas sem construir a estrada de pessoas que o lêem. Os programadores escrevem aplicativos Web e os
tijolos amarelos - e a estrada tem de ser construída antes. Muitas vezes, usuários finais "usam".
eu complicava as coisas, prevendo as necessidades futuras. Um dos As pessoas escrevem mash-ups ou scripts para acessar o conteúdo
executivos seniores costumava dizer que "visão sem execução é transferido (pushed). Atualmente, esses aplicativos são executados no
alucinação", o que é verdade. PC, mas acredito que poderiam migrar para a "nuvem" Internet. Neste
ponto, a Internet torna-se programável e pode executar meus
AJ: Como será o futuro de Don Ferguson? aplicativos. Moral da história: "A Internet é o computador". Observamos
DF: Para esta resposta, tenho outro conselho. Quando faço essa esse fato em lugares embrionários com Google, Amazon, MSN, etc.
pergunta a mim mesmo, sempre coloco em primeiro lugar a realização Todos têm, agora, serviços invocáveis (callable). Junto com uma ampla
pessoal e, depois, a profissional. Se você não estiver realizado gama de capacidades de programação para todos, vejo uma
indefinição entre os ambientes pessoal e de negócios. Isso é o que
pessoalmente, nunca conseguirá realizar-se profissionalmente. Sou
realmente me importa.
faixa preta em caratê (Kenpo) e pretendo sempre melhorar. Quero

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 25


Resolvendo o Dilema
da Integração
por Jim Wilt

Resumo Os 10% restantes da regra 90/10 ficam para que o desenvolvedor da


integração resolva o problema real da integração. Esta é a causa da
A arquitetura orientada a serviço (SOA) está conquistando grande frustração das equipes de desenvolvimento e também da
uma posição central na arquitetura corporativa. A SOA administração pois, em geral, o compromisso de 90% não se aplica, de
permite desenvolvimento paralelo por várias equipes, forma nenhuma, ao problema real da integração em questão. Fica
distintas, cada qual com cronogramas de entrega e ainda mais ampliado, como veremos nas próximas seções, pois o
manutenção próprios. Neste artigo, examinarei abordagens problema real da integração é, normalmente, mais difícil do que o
do controle de versões de serviço que permitem a evolução previsto, exigindo muito mais tempo para a sua solução do que
permitem os 10% restantes.
das implementações de serviço sem interromper
Integrar em frameworks como o Microsoft BizTalk Server é quase igual
consumidores existentes, resultando em implementações de
a ter guias na pista de boliche. As suas interfaces quase sempre
SOA de mais baixo acoplamento. A idéia básica do controle impedem a inserção de grandes danos à solução, orientando o usuário
de versões de serviço é bastante simples, mas sua pelo projeto com muitos recursos e interfaces de implementação. Em
implementação requer controle rígido; discutirei unidades contraste com os desafios de infra-estrutura e segurança, esta
de controle de versões, mudanças no serviço, que formam ferramenta ajudará, de fato, a controlar a solução. Entretanto, esta
uma nova versão; considerações sobre o ciclo de vida de experiência de integração positiva constitui apenas 10% do esforço
produzido.
uma versão de serviço e abordagens sobre
implantação/acesso a versões. O controle de versões de Resolvendo a regra 90/10
serviço baseado em método, como aqui proposto, permite As equipes de infra-estrutura e operações são suas melhores amigas:
minimizar o seu impacto e reduzir o volume de código "
Mantenha uma relação próxima de trabalho com suas equipes de
implantado. O sistema semântico de mensagens para infra-estrutura e operações desde o início do projeto pois poderão,
definições de interface de serviço deixa a implementação antecipadamente, identificar questões operacionais e de segurança
em potencial.
do serviço mais flexível à mudança.
"
Muitas das questões que pressionam um desenvolvedor de
P
ser:
or definição, a integração é, em si e por si, um problema difícil de
resolver. Examinaremos os fatores contribuintes, para que possam
integração são corriqueiras para um profissional de infra-estrutura e,
assim, essa experiência deve ser usada para apressar a identificação e
resolução do problema.
"
reconhecidos e categorizados
“EM GERAL, A TOLERÂNCIA ZERO REGE O
"
compreendidos com as suas repercussões resultantes DESENVOLVIMENTO DA INTEGRAÇÃO: REPETE-SE
"
analisados de modo proativo. ATÉ FICAR PERFEITO. NORMALMENTE,
Regra 90/10 FUNCIONALIDADE PARCIAL E FASES NÃO SÃO
Noventa por cento das atividades direcionadas às soluções de ALTERNATIVAS VIÁVEIS. PORTANTO, A
integração referem-se, na verdade, à instalação, configuração e ao INTEGRAÇÃO PASSA A SER A FONTE DE MUITOS
ajuste do ambiente de infra-estrutura e segurança. Sistemas ATRASOS DE PROJETO E ESTOUROS DE
operacionais, servidores Web, diretórios e configurações de ORÇAMENTO".
aplicativos, assim como pools de aplicativos, usuários de processos
host, SSO, permissões de diretório, segurança, etc. - todos esses Faça com que o seu ambiente de desenvolvimento imite o seu
aspectos desempenham uma parte da execução e contribuem para a ambiente de produção:
frustração freqüentemente associada à implementação da integração. "
Replique o LDAP/Active Directory e instale aplicativos, servidores e
Muitos desenvolvedores de aplicativos e pacotes extensíveis não têm pacotes usando o mesmo modelo de segurança da produção (ou o
de se preocupar com chaves de nome forte (.snk), GAC, certificados, mais próximo possível)
criptografia, hosts em processo vs processos de host isolados e com
muitos outros fatores sobre os quais o desenvolvedor de integração
"
Nunca desenvolva nem execute suas soluções como um
administrador
deve ter grande especialização e domínio. O benefício está em que a
experiência de desenvolvimento da integração ampliará em grande "
Sempre que for preciso modificar o ambiente durante o
medida a conduta do desenvolvedor na direção de futuras [normais] desenvolvimento, analise a mudança com sua equipe de infra-
soluções de aplicativos. Quer dizer, as habilidades de um estrutura/operações e registre a modificação na documentação de
desenvolvedor se fortalecem ao concluir uma solução de integração. implantação.

26 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Resolvendo o Dilema da Integração

O melhor ponto de partida para a solução de problemas de infra- Um exemplo desta situação corriqueira ocorre quando parceiros de
estrutura de integração é a segurança, na forma de permissões e negócios usam um formato comum do setor ANSI X.12 , HIPAA ou
possibilidades de acesso. XCBL para a sua comunicação, algumas vezes por meio de uma VPN.
Muitas vezes, um esquema intermediário é de 10 a 100 vezes maior
A para B vs A para C
do que o esquema interno usado pelo sistema A ou C. Esses esquemas
Em geral, as soluções de integração envolvem vários cenários de intermediários podem ser de 12 MB, resultando em questões de
sistemas. É preciso entender os dois principais tipos de problemas de desempenho e estabilidade quando introduzidos em ferramentas
integração, como são solucionados e as respectivas complexidades pacotes de framework de integração - especialmente frustrantes
relativas. quando a carga da mensagem é, em média, apenas 20K (Figura 3).
Problemas A para B: uma casa, dois sistemas Além dessas questões mais mecânicas, os dois parceiros de negócios
talvez tenham algum trabalho de adivinhação para decidir onde, no
As características do problema A para B surgem quando um sistema B
formato B intermediário, devem colocar suas respectivas informações.
deseja comunicar-se com um sistema A. Em geral, estão na mesma
Acoplado ao fato de que um formato intermediário quase sempre
infra-estrutura, mas não limitados por ela (podem alcançar redes contém redundâncias aumentadas, provocando invariavelmente mais
WAN, VAN e a Internet). confusão no posicionamento adequado das informações, essas
imprecisões podem levá-lo a pôr em dúvida o valor desta forma de
Figura 1: Problema A para B: dois sistemas, uma casa integração (por certo existe o valor, mas às vezes, pode suscitar
dúvida).
Esses fatores tendem a fazer com que os problemas A para C sejam
significativamente mais difíceis de solucionar, exigindo comunicação
Sistema muito maior entre os parceiros de negócios para resolver diferenças
distribuído B de interpretação com o formato B intermediário.
Resolvendo os problemas A para B e A para C
"
Documente claramente suas expectativas relativas ao formato B
Sistema intermediário, citando vários exemplos.
legado A
"
Reduza o tamanho do formato B intermediário, trabalhando com
seus parceiros de negócios para acertarem um subconjunto de
esquema que inclua apenas aqueles componentes utilizados por
todos os parceiros de negócios.

Por exemplo, o sistema B poderia ser um sistema distribuído


"
Duplique ou triplique as projeções de teste com o parceiro de
negócios para compensar os equívocos do formato B intermediário.
acessando informações armazenadas no sistema A, um sistema legado
(Figura 1). O mapeamento direto das informações de A para B exige O limite do desespero no mapeamento
conhecimento detalhado dos dois sistemas, A e B, mas como o
Muitas soluções de integração chegam a uma forma de deformação
conhecimento do domínio dos dois sistemas estará, em geral, de escopo, jamais planejada, mas que aumenta a frustração devido ao
disponível internamente, haverá menos suposições sobre quais estouro no gerenciamento das horas e do orçamento. Essa situação é
campos e elementos de dados de A referem-se a B. conhecida como o limite do desespero no mapeamento.
Problemas A para C: várias casas, vários sistemas Depois de resolvidas todas as questões dos ambientes operacional, de
Um problema A para C descreve cenários nos quais o parceiro segurança e infra-estrutura a ponto de os dados reais serem
comercial A deseja comunicar-se com o parceiro de negócios C, mas transferidos do ponto A para o ponto B (ou C), a interpretação de
ambos, às vezes, precisam de um formato B intermediário externo, centenas a milhares de campos de um esquema para o próximo torna-
comum ou padronizado do setor. Em geral, as casas estão em infra- se o principal ponto de enfoque. Muitas vezes, os dados exigidos em
estruturas separadas. (Vide Figura 2.) um ponto não estão prontamente disponíveis em outro ou, ainda, o
significado pretendido de um campo é usado para algo inteiramente
diferente. Em geral, os segredos mais desagradáveis vêm à tona
Figura 2: Problema A para C: dois sistemas, duas casas durante a fase de mapeamento.

Figura 3: Os cenários A para C quase sempre envolvem um


formato B intermediário aumentado

A mapeia para C mapeia para


o formato B o formato B
Sistema Sistema intermediário intermediário
legado A distribuído C

Formato B
VAN intermediário,
Formato canônico B geralmente
Formato padrão do setor aumentado,
super-redundante
(ANSI, XCBL, HIPAA, Hl7, etc.)

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 27


Resolvendo o Dilema da Integração

Os seguintes exemplos ilustram como esse processo deve ocorrer: "


Fabricar ou calcular informações que simplesmente não existem em
Uso inadequado de campos em repositórios de dados nenhum dos repositórios de dados internos
O parceiro de negócios A deve fornecer dados de identidade ao "
Interrupções de outros membros da equipe trabalhando em outras
esquema B no formato apresentado na Tabela 1. partes da solução quando um mapeamento é desdobrado
Bastante simples, mas o parceiro de negócios A usa o campo 'inicial do Os mapas do mundo real se parecem mais com a Figura 5. Inovações
meio', criativamente, para indicar 'anos de serviço' onde 0-9 representa significativas nas ferramentas dos mapas do mundo real, como o novo
o número de anos e A representa 10 ou mais anos. Quando uma inicial XSLT Mapper do BizTalk, foram demonstradas e estão disponíveis para
do meio é usada por uma identidade, o parceiro de negócios A suavizar esta tarefa entediante mas, na maioria das vezes, o desafio é
simplesmente a considera como parte do nome. maior do que qualquer ferramenta teria condições de realizar (vide
A Tabela 2 representa como os dados podem ser armazenados pelo Referências).
Iterações sem fim
Tabela 1: Formato de dados da identidade Nos desenvolvimentos de aplicativos normais, as iterações são uma
boa coisa. Freqüentemente é possível determinar quantas iterações
Nome Carac * serão possíveis ou decidir uma tolerância de forma/função aceitável
que permitirá a continuação. Em geral, aceita-se a funcionalidade
Inicial do meio Carac 1
parcial e fases podem ser utilizadas para introduzir a funcionalidade
Sobrenome Carac * faltante, em data posterior.
Todavia, para o desenvolvimento da integração geralmente não há
parceiro de negócios A. nenhuma tolerância: repete-se até ficar perfeito. Normalmente,
Já não é mais tão simples, não é? funcionalidade parcial e fases não são alternativas viáveis. Portanto, a
"
O parceiro de negócios A deve analisar o campo Nome para integração passa a ser a fonte de muitos atrasos de projeto e estouros
determinar se existe uma inicial do meio. de orçamento.
"
O algoritmo que faz a análise deve distinguir entre um nome de
Figura 4: Demo de mapeamento de software de integração
duas palavras, Tory Ann, e uma verdadeira inicial do meio, Maria A.
"
A análise incorreta poderia resultar em confusão entre Mary A.
Anderson com 2 anos de serviço e Mary Anderson com 10 ou mais
anos de serviço.
"
A má escolha do campo para indicar anos de serviço (provavelmente
feita anos antes de qualquer intenção em compartilhar estes dados)
apenas dobrou ou até triplicou o tempo de mapeamento do
esquema do parceiro de negócios A para o B.
Mapeamento no mundo real
O mapeamento, quando demonstrado por fornecedores de software
de integração, normalmente é semelhante à Figura 4.
O mapeamento do mundo real é um problema muito diferente e
envolve: Como sair do limite do desespero no mapeamento
"
Centenas ou milhares de campos "
Não faça pressuposições sobre a dificuldade de mapeamento;
sempre pesquise as fontes detalhadamente para identificar quais são
"
Diferenças de hierarquia nos formatos de dados que podem exigir aqueles desagradáveis segredinhos.
algoritmos de looping complicados para posicionar os dados de
forma adequada. "
Estabeleça um contrato de teste/depuração com os parceiros de
negócios especificando a freqüência dos testes e emita um método
"
Grandes fluxos de dados que exigem loops complicados para de medição de desvio com vias apropriadas para escalar o problema.
decompor as mensagens Especialmente ao trabalhar com parceiros de negócios externos, é
"
Ferramentas de integração exageradas, que algumas vezes levam os imperativo definir e estabelecer contratos de testes com vias de
desenvolvedores a procurar uma solução gráfica para um problema escalação adequadas para que, se for preciso interromper os
muito complicado para essa ferramenta. procedimentos de testes (quase certo), todos os envolvidos sejam
informados, o quanto antes, para que possam comunicar de modo
"
Extração de dados de várias fontes internas (às vezes, de modo adequado os possíveis atrasos de entrega da solução.
assíncrono)
"
Utilize as melhores práticas de Desenvolvimento dirigido a teste para
estar em condições de executar testes detalhados e defender o seu
Tabela 2: Tabela de dados armazenada pelo parceiro de
lado da integração, reduzindo/evitando o tempo de inatividade dos
negócios A
outros membros da equipe
Nome Inicial do meio Sobrenome "
Para mapas complicados, pense em usar scripts e código em
John 5 Smith paradigmas de IU sofisticados (mais fáceis de ler e depurar)

Tory Ann 8 Wilson "


Decomponha as mensagens antes do mapeamento
Mary A 2 Anderson "
Use código gerenciado no lugar de mapas, quando necessário (por
exemplo, para melhor desempenho e hierarquias complicadas). Isso
Mary A Anderson é feito por meio de classes serializadas.

28 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Resolvendo o Dilema da Integração

Trate suas ferramentas de integração da mesma forma. Nem todas as


Figura 5: Mapeamento de dados do mundo real
soluções precisam de uma orquestração. O uso de uma orquestração
implica pagar o preço do desempenho. Mapas podem ser utilizados
nas portas assim como nas orquestrações. Algumas vezes, é bom
experimentar implementando vários protótipos de soluções, usando
várias combinações das ferramentas do conjunto, para entender as
diferenças do desempenho, da manutenção e da implantação.
Conheça suas ferramentas e use apenas as necessárias (BizTalk)
"
Faça melhor uso da porta com base no modelo
publicação/assinatura; como não há orquestração, este modelo é
muitas vezes desconsiderado.
"
As orquestrações são mais eficientes para workflow; embora tragam
em si alguma sobrecarga, as orquestrações têm uma grande
finalidade e são muito efetivas quando usadas para workflow.
"
Mapear nas portas e não apenas nas orquestrações: esta é outra
capacidade muito negligenciada.
"
Os pipelines podem ser rápidos e eficazes; pense em um
componente de pipeline personalizado em uma orquestração:
"
Entender e respeitar ramificações de desempenho relativas ao minimiza as idas e vindas na caixa de mensagens e elimina a
mapeamento (por exemplo, como os mapas são scripts XSLT, nunca sobrecarga da orquestração.
chame código gerenciado a partir de um mapa)
Desempenho é importante
"
Às vezes, classes serializadas e código gerenciado podem ser
alternativas eficazes para mensagens e mapas.
O desempenho sempre é importante, especialmente quando dizem Resultado?
que não faz diferença.
Considere as ferramentas de integração como uma Ferrari (com
Solucionar o problema de desempenho é importante (BizTalk)
transmissão manual) em sua garagem. Se só souber dirigir carros
"
Minimize as idas e vindas da caixa de mensagens hidramáticos, essa Ferrari será o veículo mais lento e mais frustrante
que você já conheceu. Todavia, se aprender a dirigir com transmissão
"
Minimize a dependência das orquestrações (que podem fazer com manual, a Ferrari demonstrará ser um carro de corrida de alto
que a sua solução fique uma ordem de grandeza mais lenta) desempenho, primorosamente ajustada, como ela de fato é.
"
Desenvolvimento dirigido a desempenho significa acompanhar as Sem dúvida, as ferramentas certas, atreladas às habilidades e práticas
medições durante todas as fases de desenvolvimento para identificar corretas, poderão resolver o dilema da integração.
gargalos, assim que possível.
"
Utilize diretrizes para ajuste de desempenho - algumas excelentes
Referências
diretrizes do BizTalk já foram publicadas (vide Referências)
Eddie Churchill, “BizTalk's sexy new XSLT Mapper”
"
Processos prontos não são adequados para a sua solução. Existem
http://channel9.msdn.com/Showpost.aspx?postid=126990
muitos lugares onde otimizar o desempenho e, assim, é importante
conhecer todos os componentes da solução, ajustando-os BizTalk guidelines
adequadamente para obter uma operação ideal http://msdn.microsoft.com/library/default.asp?url=/library/en-us/
bts_2004wp/html/87f447a2-09ce-4a30-9f94-584684310051.asp
"
Classes serializadas e código gerenciado podem ser mais rápidos do
que mensagens e mapas; assim, pense em usá-los para componentes
de desempenho crítico na solução Sobre o autor
Pense nas ferramentas como um monte de legos A experiência e as habilidades de Jim Wilt na resolução de problemas
Depois que uma equipe adota um conjunto de ferramentas ou pacote são aplicadas para ajudar os clientes a arquitetar as melhores soluções
para ajudar na implementação de suas soluções de integração, um possíveis para terem êxito em suas necessidades relativas a projeto,
erro comum é utilizar todas as ferramentas do conjunto em todas as colaboração, integração de dados de sistemas e BI. Ele é Microsoft
soluções de integração. Certified Architect – Solutions e recebeu vários prêmios do setor,
inclusive o 1993 Industry Week Technology of the Year Award e o
Em muitos casos, nem todas as ferramentas precisam ser usadas. Na
Burroughs Achievement Award for Excellence. Além disso, também foi
verdade, usar todas as ferramentas pode afetar negativamente o
reconhecido como Microsoft Most Valuable Professional - Visual
desempenho da solução no seu todo.
Developer - Solutions Architect, membro do Microsoft MCA Board of
A melhor coisa é pensar no conjunto de ferramentas como um monte Directors, do Central Michigan University College of Science and
de legos. Os legos têm muitos tamanhos e cores, mas não é preciso Technology Alumni Advisory Board e é um Central Michigan University
usar todos os tamanhos e cores em todas as suas criações. Algumas Distinguished Alumni.
vezes, talvez você só queira usar os legos verdes e brancos e em,
outras, apenas os azuis e vermelhos. Tudo depende do resultado
desejado.

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 29


Ontologia e Taxonomia de
Serviços em Arquitetura
Orientada a Serviço
por Shy Cohen

Resumo Analisando a composição pela perspectiva do negócio, ontologia e


taxonomia adequadas podem ajudar a tomar decisões relativas ao
Este artigo descreve a ontologia e a taxonomia de negócio, por exemplo, como obter uma capacidade (construir x
serviços em arquitetura orientada a serviço (SOA); discute comprar x "alugar"), como gerenciar serviços (gerenciamento central x
por aplicativo), etc.
a natureza e as inter-relações dos vários tipos de serviços,
um blueprint genérico para sistemas baseados em SOA e Categorias e tipos de serviços
oferece orientações sobre os serviços de construção e Na medida em que examinamos os tipos de serviços, notamos que há
gerenciamento. A ontologia e a taxonomia aqui descritas dois principais: os infra-estruturais por natureza, que fornecem
proporcionam uma linguagem comum para arquitetos, recursos comuns os quais não seriam considerados parte do aplicativo
e aqueles que fazem e fornecem blocos de construção do aplicativo.
engenheiros e tomadores de decisões corporativas,
Os aplicativos utilizam vários recursos comuns, desde os serviços de
facilitando uma comunicação superior dentro e através
baixo nível oferecidos pelo sistema operacional, como gerenciamento
das várias disciplinas e organizações. de memória e tratamento de E/S, até os recursos específicos do
Taxonomia de serviços ambiente de runtime de alto nível como, por exemplo, C Runtime
Library (RTL), Java Platform ou o .NET Framework. As soluções
As economias orientadas a serviço prosperam promovendo a construídas utilizando uma SOA também usam recursos comuns,
composição. Nas SOAs, novas soluções podem ser criadas reunindo-se como um framework de criação de serviços (por exemplo, o Windows
lógica e funcionalidade novas do negócio, específicas do aplicativo, Communication Foundation) e um conjunto de serviços, parte da
com capacidades recombinantes do negócio, existentes. Atualmente, infra-estrutura computacional distribuída de suporte. Chamaremos
essas capacidades do negócio são, em grande parte, construídas este conjunto de serviços de barramento (algumas vezes também
internamente ou compradas para implantação in loco, como uma
chamado de serviços de infra-estrutura).
solução em pacote. Se analisarmos o futuro próximo, veremos o
crescimento continuado do modelo Software como Serviço (SaaS) Os serviços de barramento dividem-se, ainda, em serviços de
como uma opção para fornecer às organizações condições de "alugar" comunicação, que oferecem recursos de transferência de mensagens
soluções componentizadas e capacidades de negócio enriquecendo, como, por exemplo, mensagem/roteamento e publicar/assinar e
assim, o conjunto de componentes a ser incluído nos aplicativos serviços utilitários, que oferecem capacidades não relativas à
compostos da organização. transferência de mensagens como, por exemplo, descobrir serviços e
federação de identidades.
Ontologia é um modelo de dados que representa um conjunto de
conceitos em um domínio e as relações entre esses conceitos. A A eficiência do desenvolvimento de aplicativos fica ainda melhor pelo
taxonomia é uma classificação de coisas, assim como os princípios reuso de blocos de construção de alto nível e granularidade grossa. Os
básicos dessa classificação. A taxonomia hierárquica é uma estrutura ambientes de programação RAD, que surgiram na era orientada a
em árvore das classificações de um determinado conjunto de objetos. componente (como o Delphi da Borland ou o Visual Basic da
Este artigo define as categorias de serviços em uma SOA, as relações Microsoft), forneceram a capacidade de, rápida e facilmente, compor a
entre essas categorias e os princípios básicos da classificação dos funcionalidade e as capacidades fornecidas pelos blocos de
vários tipos de serviços, nas várias categorias. Além de definir, construção existentes com código específico de aplicativo, para criar
classificar e fornecer os princípios da classificação, toca na arquitetura
novos aplicativos. Exemplos de tais componentes abrangem de
de software e nos aspectos relativos ao negócio, relevantes à
modelos GUI mais genéricos e abstrações de acesso a banco de dados,
construção e ao gerenciamento dos aplicativos compostos nas SOAs.
a recursos mais específicos como elaboração de gráficos ou log de
Analisando a composição pela perspectiva da arquitetura de software, eventos. Aplicativos compostos em uma SOA também usam blocos de
a ontologia e a taxonomia comuns nos permitem identificar as construção dessa natureza nos respectivos modelos de composição.
características comuns dos serviços que se classificam em uma Denominaremos estes blocos de construção como serviços do
categoria específica. Essas características afetam a arquitetura e o
aplicativo.
projeto das soluções baseadas em SOA desde o nível de serviço
individual até todo o aplicativo composto. A categorização suporta a Os serviços dos aplicativos dividem-se ainda em serviços de entidade,
possibilidade de composição pelo esclarecimento das funções dos que expõem e permitem a manipulação de entidades do negócio;
vários componentes ajudando, assim, na compreensão das várias inter- serviços de capacidade e serviços de atividade, que implementam os
relações dos componentes. A categorização também ajuda a blocos de construção funcionais do aplicativo (algumas vezes também
capacidade de descobrir serviços (por exemplo, pesquisar serviços chamados de componentes ou módulos); e serviços de processo, que
existentes usando um repositório de serviços) que podem, ainda mais, compõem e orquestram entidade, capacidade e serviços de atividade
promover a reutilização. para implementar os processos do negócio.

30 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Ontologia e Taxonomia de Serviços em Arquitetura Orientada a Serviço

A Figura 1 apresenta um exemplo de composição de serviços nas Exemplos de serviços de comunicação incluem retransmissões/
categorias de serviços para implementar um processo do negócio. pontes/roteadores/gateways, sistemas publicar-assinar e filas.
Neste exemplo de cenário, um serviço de processo é apresentado Os serviços de comunicação não atualizam qualquer estado de
orquestrando três serviços de atividade e dois de capacidade. De modo aplicativo mas, em muitos casos, estão configurados para trabalhar de
bastante típico, os serviços de processo unem vários outros serviços acordo com os aplicativos que os utilizam. Um aplicativo específico
para implementar um processo complexo do negócio. No diagrama, pode precisar instruir ou configurar um serviço de comunicação sobre
um dos serviços de atividade (atividade 2) usa um serviço de como transferir as mensagens que fluem pelo aplicativo de modo que a
capacidade (capacidade 3) como indicado na linha que os une. Uma comunicação entre os componentes seja possível em uma arquitetura
razão plausível para tanto é que a atividade 2 pode estar de baixo acoplamento. Por exemplo, um roteador baseado em
implementando uma atividade em várias etapas nesse serviço de conteúdo pode exigir que o aplicativo forneça instruções de
capacidade ou expondo uma interface de serviço diferente daquela que roteamento para que o roteador saiba para onde encaminhar as
serve de base para os serviços de capacidade. Os serviços de mensagens. Outro exemplo pode ser um serviço publicar/assinar que
capacidade 2 e 3 são implementados nas entidades de serviço 2 e 3 entregará mensagens a assinantes registrados com base em um filtro,
(respectivamente). É interessante notar que os serviços de entidade 2 e que pode ser aplicado ao conteúdo da mensagem. Esse filtro será
3 estão acessando o mesmo armazenamento de dados subjacente. Isso ajustado pelo aplicativo. Nos dois casos, o serviço de comunicação não
pode acontecer para expor várias entidades a partir do armazenamento processa o conteúdo da mensagem mas, em lugar disso, usa
subjacente ou para expor a mesma entidade de várias formas, para (opcionalmente) parte dele, conforme instruído anteriormente pelo
adotar vários requisitos que os serviços de capacidade 2 e 3 têm em aplicativo para definir qual o caminho.
relação do modelo de dados. Neste exemplo de cenário, também
Além dos requisitos específicos do aplicativo, restrições impostas pela
podemos ver que a capacidade 1 reside fora dos limites organizacionais
segurança, pelas questões normativas ou por outras fontes limitantes
(como indicado pela nuvem da Internet) e age como um recurso
podem prescrever que, para usar os recursos oferecidos por um
externo, entrelaçado ao processo do negócio implementado pelo
determinado serviço de comunicação, os usuários precisarão possuir
serviço de processo.
certas permissões. Essas permissões podem ser definidas no escopo do
Serviços de barramento aplicativo (permitindo que um aplicativo use o serviço,
Os serviços de barramento são recursos comuns que não acrescentam independentemente de qual usuário estiver usando o aplicativo), no
nenhum valor explícito ao negócio mas, sim, fazem parte da infra- escopo do usuário (permitindo que um usuário específico use o serviço
estrutura necessária para a implementação de qualquer processo de independentemente de qual aplicativo o usuário estiver executando) ou
negócio em uma SOA. Os serviços de barramento são, em geral, nos dois escopos (permitindo que o usuário específico acesse o serviço
componentes comprados ou construídos de modo centralizado para durante a execução de um aplicativo específico). Por exemplo, um
servir vários aplicativos e, conseqüentemente, são assim gerenciados. serviço publicar/assinar pode ser configurado para restringir o acesso a
Serviços de comunicação tópicos específicos, permitindo que apenas determinados usuários
estejam inscritos
Os serviços de comunicação transportam mensagens internas, recebidas
e enviadas ao sistema, sem qualquer preocupação de conteúdo. Por Outros recursos no nível do aplicativo que podem ser oferecidos pelos
exemplo, uma ponte pode transferir mensagens de entrada e saída serviços de comunicação pertencem à monitoração, aos diagnósticos e
através da barreira de uma rede (ou seja, unindo duas redes as quais, de ao BAM (monitoramento das atividades operacionais). Os serviços de
outra forma, estariam desconectadas) ou de um protocolo (como, por comunicação podem fornecer informações estatísticas sobre o
exemplo, transferindo mensagens em fila entre os sistemas de aplicativo como, por exemplo, uma análise dos padrões de tráfego de
enfileiramento WebSphere MQ da IBM e o MSMQ da Microsoft). mensagens (quantas mensagens passam por uma ponte, por minuto),
relatórios de taxa de erros (quantas falhas
do SOAP são enviadas através de um
Figura 1: Exemplo de composição de serviços nas categorias de serviços roteador, por dia) ou indicadores de
desempenho no nível do negócio (quantos
pedidos entram pelo gateway do parceiro).
Serviços Embora possam ser específicos de um
Processo Utilitários
Nuvem da Atividade 1 aplicativo determinado, essas capacidades
internet
Capacidade não são diferentes das definições de
Descobrir
configuração usadas para controlar o fluxo
Atividade 2 de mensagens. Essas informações são, em
ID
geral, fornecidas por um recurso genérico
Atividade 3 Capacidade 2 Capacidade 3 do serviço de comunicação, o qual, quase
...
sempre, precisa ser configurado pelo
Entidade 1 Entidade 2 Entidade 3 aplicativo. De modo típico, as informações
estatísticas fornecidas precisam ser
consumidas por uma parte específica do
aplicativo que sabe o que fazer com esses
dados (acionar um alerta de segurança no
centro de dados ou atualizar um gráfico
Serviços de relativo ao BAM na tela do computador do
barramento Publicar/ ... CFO, por exemplo). A Tabela 1 resume as
Roteamento Enfileiramento
assinar
características dos serviços de
comunicação.

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 31


Ontologia e Taxonomia de Serviços em Arquitetura Orientada a Serviço

entrada formatadas erroneamente) e assim por diante. Como acontece


Tabela 1: Resumo da categoria serviços de comunicação
com os serviços de comunicação, estes são tipicamente recursos
Serviços de comunicação genéricos do serviço utilitário e precisam ser configurados e
Objetivo principal Transporte de mensagens consumidos pela solução específica na qual são utilizados. A Tabela 2
Não processa as mensagens do aplicativo. Pode ter resume as características dos serviços utilitários.
Interface
interfaces de gerenciamento e monitoração
Gerenciamento de estado Nenhum gerenciamento do estado do aplicativo Serviços do aplicativo
Transações Não se aplica (pois nenhuma mensagem do aplicativo
está em processamento) Os serviços do aplicativo são os que fazem parte da implementação de
Tratamento de erros Nenhum tratamento de erros relativo ao aplicativo
um processo do negócio. Oferecem um valor explícito do negócio e
Segurança Usuários/Aplicativos/Ambos
Gerenciamento/Governança Centralizado
existem em um espectro que se inícia com serviços genéricos usados
Tipo da construção Construido de modo centralizado ou comprado em qualquer aplicativo composto da organização de um lado, termina
com serviços especializados que fazem parte de um único aplicativo
composto do outro, e têm serviços que podem ser usados por dois ou
Serviços utilitários
mais aplicativos entre as extremidades.
Os serviços utilitários fornecem serviços genéricos, sem conhecimento
Serviços de entidade
do aplicativo, que lidam com outros aspectos além do transporte das
mensagens do aplicativo. Similar aos serviços de comunicação, a Os serviços de entidade desbloqueiam e ficam na superfície das
funcionalidade que oferecem faz parte da infra-estrutura básica de entidades do negócio no sistema. Podem ser considerados os
uma SOA e não se refere a qualquer lógica ou processo do negócio componentes de dados centralizados ("nomes") do processo do
específico do aplicativo. Por exemplo, um serviço de descoberta pode negócio: funcionário, cliente, pedido, etc. Exemplos de serviços de
ser usado pelos componentes em um aplicativo composto de baixo entidade podem ser: serviço de atendimento aos clientes que gerencia
acoplamento para descobrir outros componentes do aplicativo as informações dos clientes ou um serviço que gerencia os pedidos
baseados em alguns critérios específicos (por exemplo, um serviço colocados pelos clientes.
implantado em um ambiente de pré-produção pode procurar outro
Os serviços de entidade abstraem os armazenamentos de dados (por
serviço que implemente uma determinada interface, necessária ao
exemplo, SQL Server ou Aclive Directory) e expõem as informações
primeiro serviço, também implantada no ambiente de pré-produção).
armazenadas em um ou mais armazenamentos de dados do sistema
Exemplos de serviços utilitários incluem os serviços de segurança e
por meio de uma interface de serviço. Portanto, é possível afirmar que
identidade (por exemplo, um serviço de federação de identidades ou
os serviços de entidade gerenciam o estado persistente do sistema. Em
um serviço de token de segurança), serviços de descoberta (como um
alguns casos, as informações que gerenciam transcendem um sistema
servidor UDDI) e serviços de transformação de mensagens.
específico e são usadas em vários ou, até, em todos os sistemas da
Como no caso dos serviços de comunicação, os serviços utilitários organização.
também podem ser instruídos ou configurados por um determinado
É bastante comum para os serviços de entidade ter compatibilidade
aplicativo sobre como executar uma operação em seu nome. Por
com interface CRUD (criar, ler, atualizar e excluir) no nível da entidade
exemplo, um serviço de transformação de mensagem pode
e acrescentar outras operações específicas para tratar do domínio do
transformar mensagens de um esquema de mensagens para outro,
problema e dar suporte aos recursos e casos de uso do aplicativo.
com base em um mapeamento da transformação, fornecido pelo
Exemplo de operação específica de domínio seria um serviço de
aplicativo, usando o serviço de transformação de mensagem.
clientes que expõe um método denominado
Embora os serviços utilitários não contenham nenhum estado do FindCustomerByLocation, que pode localizar um ID de cliente
aplicativo, o estado de um serviço utilitário pode ser afetado por com base no seu endereço.
mudanças de estado do sistema. Por exemplo, um usuário novo
Em geral, as informações que os serviços de entidade gerenciam
adicionado ao aplicativo pode exigir uma atualização nas
existem por prazo superior àquele de qualquer processo do negócio.
configurações de credenciais no serviço de token de segurança. Ao
As informações expostas pelos serviços de entidade são, de modo
contrário do caso dos serviços de comunicação, os serviços do
geral, estruturadas, ao contrário dos armazenamentos de dados
aplicativo interagem diretamente com os serviços utilitários que
relacionais ou hierárquicos apresentados pelo serviço. Por exemplo,
processam e, se necessário, respondem às mensagens recebidas dos
um serviço pode reunir as informações armazenadas em várias tabelas
serviços do aplicativo.
de banco de dados ou até mesmo em vários bancos de dados,
Os usuários dos serviços utilitários podem exigir a configuração de separados, e projetar essas informações como uma única entidade.
uma permissão para que possam usar o serviço, seja no escopo de
aplicativo, usuário ou de usuário do aplicativo. Por exemplo, um Tabela 2: Resumo da categoria serviços utilitários
serviço de descoberta pode apenas servir os usuários autenticados do
Serviços utilitários
domínio (usuários com credenciais válidas emitidas por um
Funcionalidade da infra-estrutura genérica (não
controlador de domínio Windows). Objetivo principal
específica do aplicativo)
Interface de serviço para exposição da funcionalidade do serviço.
Como os serviços de comunicação, os serviços utilitários podem Interface
Pode também ter interfaces de gerenciamento e monitoração.
fornecer recursos no nível do aplicativo para monitorar, diagnosticar, Nenhum gerenciamento do estado do aplicativo.
Gerenciamento de estado
estabelecer o BAM, etc. Esses serviços podem incluir informações Poder ter seu próprio estado
estatísticas sobre o uso de padrões (como muitos usuários de outra Transações Tipicamente não compatível
Tratamento de erros Nenhum ou tratamento de erros limitado, relativo ao aplicativo
organização foram autenticados usando uma identidade federada), Segurança Usuários/Aplicativo/Ambos
taxas de erro que influenciam o negócio (quantas transformações de Gerenciamento/Governança Centralizado
formato de mensagem de pedidos falharam devido às mensagens de Tipo da construção Em geral, comprado

32 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Ontologia e Taxonomia de Serviços em Arquitetura Orientada a Serviço

Em alguns casos e, geralmente, por conveniência, os


Tabela 3: Resumo da categoria serviços de entidade
implementadores do serviço de entidade escolhem expor os
dados básicos como conjuntos de dados em lugar de dados XML Serviços de Entidade Serviços utilitários
fortemente esquematizados. Ainda que conjuntos de dados não Objetivo principal Expor e gerenciar entidades do negócio
Interface CRUD em nível de entidade e operações específicas de domínio
sejam entidades no verdadeiro sentido da palavra, esses ainda são
Gerenciamento de estado O gerenciamento do estado do aplicativo é o principal objetivo do serviço
considerados serviços de entidade para fins de classificação. Transações Padrão atômico e/ou de reserva
Os usuários dos serviços de entidade talvez exijam a configuração Tratamento de erros Compensação de erro limitada (afeta SLE e SLA)
Segurança Usuários/Aplicativo/Ambos
de uma permissão para utilização dos serviços, seja no escopo de
Gerenciamento/Governança Centralizado
aplicativo, de usuário ou de usuário do aplicativo. Essas permissões Tipo da construção Interno/Comprado/Alugado
podem aplicar restrições de acesso aos dados e/ou mudanças no
nível de "linha" (entidade) ou "coluna" (elemento da entidade). Um
pode processar e calcular classificações de usuários para tudo o que
exemplo de restrição em nível de "coluna" seria um aplicativo de RH
puder ser classificado (utilidade de uma página de ajuda, livro,
ter acesso aos elementos seguro social e endereço residencial da
fornecedor, etc.) em qualquer aplicativo que utilize classificações. Os
entidade funcionário, enquanto o serviço de impressão de cheques
serviços de capacidade podem ser ainda divididos pelo tipo de serviço
teria acesso apenas ao elemento endereço residencial. Um exemplo de
que fornecem (por exemplo, interface de terceiros ou bloco de
restrição em nível de "linha" seria um aplicativo que emite relatórios de
construção de valor adicionado), mas esta característica adicional não
despesa permitir aos gerentes visualizar e aprovar relatórios de
faz parte do escopo desta discussão.
despesa dos seus subordinados, mas não de outros funcionários.
Os serviços de capacidade expõem uma interface de serviço específica
A compensação de erro nos serviços de entidade fica principalmente
à capacidade que representam. Em alguns casos, uma capacidade do
limitada à procura de fontes de dados alternativas, se muito. Por
negócio recém-adquirida ou existente (legada) pode não estar de
exemplo, se um serviço de entidade não consegue ter acesso a um
acordo com a forma de a organização expor as capacidades como
banco de dados local, poderá tentar alcançar uma cópia remota desse
serviços ou, até mesmo, não expor uma interface de serviço,
banco para obter as informações necessárias. Para dar suporte à
simplesmente. Nesses casos, a capacidade fica tipicamente envolta em
consistência do estado do sistema, o serviço de entidade suporta
uma camada fina de serviços que expõe a API da capacidade usando
transações atômicas distribuídas, fortemente acopladas. Os serviços
uma interface de serviço que adota a forma com que a organização
que suportam transações atômicas distribuídas participam das
expõe as capacidades. Por exemplo, algumas empresas que prestam
transações cujo fluxo recebem dos chamadores e submetem quaisquer
serviços de processamento de cartão de crédito apresentam uma API
mudanças de estado no armazenamento de dados subjacente ao
baseada em HTML que exige do usuário o preenchimento de um
resultado dessas transações atômicas distribuídas. Para possibilitar um
formulário baseado na Web. Uma capacidade como essa estaria
grau mais baixo de acoplamento na mudança de estado, os serviços
envolvida em um serviço de fachada, criado e gerenciado
de entidade podem oferecer suporte ao padrão de reserva
internamente, que fornecerá fácil acesso programático à capacidade.
(Reservation Pattern) de mais baixo acoplamento, seja
O serviço de fachada é opaco e mascara a real natureza da capacidade
complementando ou substituindo transações atômicas distribuídas.
que há por trás dele até o ponto em que a capacidade subjacente
Em muitos casos, os serviços de entidade são construídos possa ser substituída sem modificar a interface de serviço usada para
internamente, como um invólucro sobre um banco de dados existente. acessá-lo. Portanto, o serviço de fachada é considerado como o
Esses serviços são geralmente implementados escrevendo-se um serviço de capacidade e a capacidade subjacente torna-se
código para mapear os registros do banco de dados em entidades, simplesmente um detalhe da implementação do serviço de fachada.
expondo-os em uma interface de serviço ou usando uma fábrica de
Em geral, os serviços de capacidade não gerenciam diretamente o
software para gerar o código de mapeamento e a interface de serviço.
estado do aplicativo; para nele inserir modificações de estado, utilizam
O Web Services Software Factory do grupo Patterns & Practices da
os serviços de entidade. Se um serviço de capacidade gerencia estado,
Microsoft é um exemplo dessa fábrica de software. Em alguns casos, o
esse estado é tipicamente transiente e tem duração inferior ao tempo
banco de dados (SQL Server 2005 da Microsoft, por exemplo) ou o
necessário para concluir o processo do negócio do qual faz parte. Por
aplicativo centralizador de dados (SAP, por exemplo) originalmente
exemplo, um serviço de capacidade que oferece cotações de preço
fornece recursos que permitem acesso aos dados através de uma
para o transporte de encomendas talvez registre que solicitações de
interface de serviços, eliminando a necessidade de gerar e manter um
cotação foram enviadas aos transportadores, até a chegada das
serviço de entidade separado.
respostas; depois, apaga o registro. Além disso, o serviço de
Os serviços de entidade são, quase sempre, usados em mais de um capacidade implementado como um workflow gerenciará o estado de
aplicativo composto e, assim, geralmente são gerenciados de modo execução transiente e durável, para todas as instâncias ora executadas
centralizado. A Tabela 3 resume as características dos serviços de nesse workflow. Ainda que não haja 'monitoração de estado' para
entidade. grande parte das capacidades, por certo existem outras, como o
Serviços de capacidade registro de eventos, que naturalmente gerenciam e encapsulam
Estes serviços implementam capacidades no nível do negócio da estado.
organização e representam os blocos de construção de ação central Os usuários dos serviços de capacidade talvez exijam a configuração
(ou "verbos atômicos") que compõem os processos do negócio da de uma permissão para utilização dos serviços, seja no escopo de
organização. Alguns exemplos dos serviços de capacidade incluem os aplicativo, de usuário ou de usuário do aplicativo. Em geral, o acesso a
serviços de interface de terceiros, como serviço de processamento de um serviço de capacidade é concedido no nível do aplicativo.
cartão de crédito, que pode ser usado para comunicação com Permissões meticulosas são, em geral, gerenciadas pelos serviços de
gateways de pagamento externo em qualquer aplicativo composto, no processo que usam os serviços de capacidade para simplificar o
qual os pagamentos são feitos por cartão de crédito ou um bloco de gerenciamento de acesso e evitar falhas de acesso no meio do
construção de valor adicionado como um serviço de classificação que processo.

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 33


Ontologia e Taxonomia de Serviços em Arquitetura Orientada a Serviço

A compensação de erro nos serviços de capacidade fica limitada


Tabela 4: Resumo da categoria serviços de capacidade
ao escopo que reúne o SLE (Service Level Expectation) e o SLA
(Service Level Agreement) da capacidade. Por exemplo, um Serviços de capacidade
serviço de expedição que usualmente compara os preços e os Objetivo principal Implementar uma capacidade genérica do negócio de valor adicionado
Interface Interface de serviço para exposição da funcionalidade principal
prazos de quatro fornecedores (FedEx, UPS, DHL e um serviço
Gerenciamento de estado Em geral não mantém nenhum estado específico do aplicativo
local de entregas especiais, por exemplo) pode compensar a Transações Nenhum estado significa que as transações não são necessárias. Podem
indisponibilidade de um fornecedor ignorando a falha e implementar padrão atômico e/ou de reserva em um serviço de entidade
continuando com a comparação dos preços que pôde garantir Tratamento de erros Compensação de erro limitada (afeta SLE e SLA)
desde que tenha recebido pelo menos duas cotações. Este Segurança Nível do aplicativo
Gerenciamento/Governança Centralizado
exemplo ilustra que a compensação pode resultar em menor
Tipo da construção Interno/Comprado/Alugado
desempenho. Tal degradação pode ser expressa em termos de
latência, qualidade do serviço e muitos outros aspectos e,
portanto, precisa ser descrita nos SLE e SLA do serviço. atividade usado para compartilhar funcionalidade seria um serviço de
Os serviços de capacidade podem suportar transações atômicas lista negra que fornece informações sobre o status de um cliente nessa
distribuídas e/ou o padrão de reserva (Reservation Pattern). Muitos lista, para que esses dados possam ser usados por vários serviços de
serviços de capacidade não gerenciam recursos cujos estados precisam processo em uma solução.
ser gerenciados com transações atômicas, mas um serviço de De modo similar aos serviços de capacidade, os serviços de atividade
capacidade pode direcionar uma transação atômica na qual está expõem uma interface de serviço específica à capacidade que
incluso para os serviços de entidade que usa. Os serviços de capacidade implementam. Serviços de atividade podem envolver uma unidade de
também são usados para implementar um padrão de reserva em funcionalidade existente, especialmente nos casos de transição em que
serviços de entidade que não suportam esse padrão e, em grau muito um sistema existente, com uma funcionalidade existente implementada,
menor, em serviços de capacidade que também não suportam esse esteja sendo atualizado ou incluído em uma solução baseada em SOA.
padrão. Como os serviços de capacidades, os de atividade, em geral, não
Os serviços de capacidade podem ser desenvolvidos e gerenciados gerenciam diretamente o estado do aplicativo; se assim fizerem, o
internamente, comprados de terceiros e gerenciados internamente ou estado é transiente com duração inferior à vida do processo do
"alugados" de um fornecedor externo e consumidos como SaaS, negócio do qual faz parte. Entretanto, devido à sua granularidade
externamente desenvolvido, mantido e gerenciado. pouco maior e porque em alguns casos os serviços de atividade são
Quando desenvolvidos internamente, os serviços de capacidade podem usados para envolver um sistema existente, é mais provável que o
ser implementados com código imperativo ou workflow declarativo. Se serviço de atividade faça o gerenciamento e o encapsulamento do
implementado como workflow, um serviço de capacidade pode ser estado do aplicativo.
modelado como uma atividade do negócio de curta execução Os usuários dos serviços de atividade talvez exijam a configuração de
(atômica, não episódica). Atividades do negócio de longa execução, nas uma permissão para utilização dos serviços, seja no escopo de
quais pode haver falhas ou que exigem compensação, quase sempre aplicativo, de usuário ou de usuário do aplicativo. Como acontece com
são classificadas na categoria serviço de processo. os serviços de capacidade, o acesso a um serviço de atividade é
Um serviço de capacidade é quase sempre usado por vários aplicativos concedido, geralmente, no nível do aplicativo e gerenciado, por
compostos e, assim, geralmente são gerenciados de modo centralizado. usuário, pelos serviços de processo que estiverem usando o serviço de
A Tabela 4 resume as características dos serviços de capacidade. atividade.
Serviços de atividade Os serviços de atividade têm as mesmas características de
compensação de erro e suporte de transação dos serviços de
Os serviços de atividade implementam as capacidades no nível do
capacidade. Os serviços de atividade são geralmente desenvolvidos e
negócio ou alguns outros elementos da lógica do negócio de ação
gerenciados internamente; podem ser implementados com código
central. A principal diferença entre os serviços de atividade e os de
imperativo ou workflow declarativo. Como no caso de serviços de
capacidade está no escopo no qual são usados. Enquanto os serviços
capacidade, se implementados como workflow, os serviços de atividade
de capacidade são um recurso organizacional, os serviços de atividade
podem ser modelados como uma atividade do negócio de curta
são usados no âmbito de um escopo muito menor como, por exemplo,
execução.
em aplicativo composto único ou solução única (composta de vários
aplicativos). No decorrer do tempo e com reuso suficiente em toda a Os serviços de atividade são geralmente usados por aplicativo ou
organização, é possível que um serviço de atividade evolua em um solução únicos e, portanto, são gerenciados individualmente (por
serviço de capacidade. exemplo, em nível de departamento). Se em um serviço de capacidade
surgir um serviço de atividade, o gerenciamento do serviço, de modo
De modo típico, os serviços de atividade são criados para facilitar a
típico, faz a transição para um recurso de gerenciamento central. A
decomposição de um processo complicado ou para permitir o reuso de
Tabela 5 resume as características dos serviços de atividade.
uma determinada unidade de funcionalidade em vários locais, em um
serviço de processo específico ou até mesmo através dos vários serviços Serviços de processo
de processo do aplicativo. As forças que movimentam a criação de Os serviços de processo unem blocos de construção de dados e ações
serviços de atividade podem originar-se de várias fontes como, por centrais para implementar os processos do negócio da organização.
exemplo, forças organizacionais, exigências de segurança, requisitos Compõem a funcionalidade oferecida pelos serviços de atividade,
regulamentares, etc. Como exemplo de serviço de atividade, criado em capacidade e entidade, agrupando-os à lógica do negócio que reside
cenário de decomposição, temos um serviço de confirmação de no serviço de processo para criar um blueprint que define a operação
qualificação para férias o qual, devido às exigências de segurança, do negócio. Exemplo de um serviço de processo: serviço de
separa uma parte específica do comportamento do aplicativo que processamento de pedidos que recebe, confirma, verifica com o serviço
autoriza férias para que essa parte seja executada atrás do firewall do de lista negra se o cliente está 'limpo' e se é possível trabalhar com ele,
departamento de RH e acesse os bancos de dados protegidos do RH verifica o limite de crédito do cliente com o serviço de confirmação de
para validar a qualificação para férias. Um exemplo de serviço de crédito, inclui o pedido na lista de pedidos gerenciada

34 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Ontologia e Taxonomia de Serviços em Arquitetura Orientada a Serviço

ao processo (ou seja, para que seja facilmente atualizável) e, em


Tabela 5: Resumo da categoria serviços de atividade
geral, os processos que implementam são de natureza episódica (a
Serviços de atividade
Objetivo principal Implementar uma capacidade específica do negócio no nível do aplicativo execução compreende pequenos picos de atividade, intercalados
Interface Interface de serviço para exposição da funcionalidade principal por longos períodos de espera, até a conclusão das atividades
Gerenciamento de estado Em geral, não mantém nenhum estado específico do aplicativo externas). Assim, a implementação dos serviços de processo será
(exceto se envolver e expor um sistema existente)
melhor se houver workflows declarativos que usem um servidor de
Transações Pode suportar transações atômicas e/ou implementar o padrão de
reserva em um sistema existente workflows (por exemplo, o BizTalk Server da Microsoft) ou um
Tratamento de erros Compensação de erro limitada (afeta SLE e SLA) framework de workflow (como o Windows Workflow Foundation
Segurança Nível do aplicativo da Microsoft).
Gerenciamento/Governança Por aplicativo
Tipo da construção Interno Os serviços de processo são geralmente usados por um único
aplicativo e, portanto, são gerenciados individualmente (por
pelo serviço (entidade) de pedidos, reserva as mercadorias com o serviço
exemplo, em nível de departamento). Em alguns casos, um processo
(entidade) de estoque, fecha o pagamento por meio do serviço de
reutilizável do negócio pode tornar-se um bem precioso, que pode ser
processamento de pagamentos, confirma a reserva feita com o serviço
oferecido ou consumido como SaaS. A Tabela 6 resume as características
(entidade) de estoque, programa a entrega com o serviço de expedição,
dos serviços de processo.
notifica o cliente sobre a conclusão bem-sucedida do pedido e informa a
data prevista de entrega (ETA) das mercadorias pelo serviço de
gateway de email e, finalmente, identifica o pedido como Tabela 6: Resumo da categoria serviços de processo
encerrado na lista de pedidos. Serviços de atividade
Objetivo principal Implementar um processo do negócio, orquestrando outros serviços
Os serviços de processo podem ser compostos nos workflows de
Interface Interface de serviço destinada a aplicativos direcionados ao usuário
outros serviços de processo nas não serão recategorizados como Gerencia o estado do processo
Gerenciamento de estado
serviços de capacidade/atividade devido aos respectivos escopo e Transações Não é compatível com transações atômicas. Pode usar transações atômicas
natureza de longa execução. com os serviços que utiliza. Pode implementar um padrão de reserva
Tratamento de erros O tratamento de erros é implementado como parte da lógica do negócio
Como os serviços de processo implementam os processos do Segurança Usuário
negócio da organização, quase sempre estão diante de uma Gerenciamento/Governança Por aplicativo
Tipo da construção Interno
interface de usuário que inicia, controla e monitora o processo. A
interface de serviço que esses serviços expõem é, em geral,
destinada ao consumo de um aplicativo de usuário final e fornece o nível Conclusão
de granularidade certo, exigido para satisfazer os casos de uso Para o arquiteto, ter um bom conhecimento das várias categorias
implementados pelo usuário de front-end. A monitoração do processo ajuda a classificar serviços novos ou existentes, assim como ajuda a
do negócio exigirá, algumas vezes, uma interface de monitoração definir a funcionalidade apropriada para inclusão em um determinado
separada, que exponha informações de BAM. Por exemplo, o serviço de serviço, para estimular a composição e o reuso. O blueprint
processamento de pedidos pode informar o número de pedidos em arquitetural aqui definido pode ser usado para projetar um novo
aberto, em processo e encerrados, além de algumas informações sistema e, também, refatorar sistemas existentes.
estatísticas sobre eles (tempo médio de processamento/pedido, tamanho
médio, etc.) Para o tomador de decisões, entender o valor para o negócio de um
componente e qual a possibilidade de transformá-lo em um bem
Os serviços de processo, em geral, gerenciam o estado do aplicativo
facilita tomar decisões entre construir, comprar, alugar, e poderá expor
relativo a um processo específico, pela duração desse processo. Por
oportunidades de negócio ao disponibilizar serviços a terceiros.
exemplo, o serviço de processamento de pedidos gerenciará o estado do
pedido até o seu encerramento. Além disso, um serviço de processo fará
a atualização e o acompanhamento da etapa atual no processo do Sobre o autor
negócio. Por exemplo, um serviço de processo implementado como um
Shy Cohen é gerente de programas do Distributed Systems Group da
workflow reterá o estado de execução de todas as instâncias de workflow
Microsoft. Shy ingressou na Microsoft em 1996 e trabalhou com várias
em execução num determinado momento.
tecnologias em vários grupos da empresa, permanecendo sempre fiel
Os usuários dos serviços de processo talvez exijam a configuração de à sua paixão de mais de uma década: a computação distribuída.
uma permissão para utilização do serviço. Em geral, o acesso a um
Nos últimos cinco anos, Shy dedicou-se ao projeto de vários dos
serviço de processo é concedido no nível do usuário.
aspectos técnicos e arquiteturais do Windows Communication
Os serviços de processo raramente suportam participar de uma transação Foundation (WCF). Atualmente, sua atenção dirige-se a várias questões
atômica distribuída pois fornecem suporte para atividades do negócio de relativas à criação de sistemas distribuídos, fornecendo orientações
longa execução (transações de longa execução) nas quais a compensação
sobre sistemas distribuídos, SOA, Web Services e WCF, além das
de erro ocorre no nível da lógica do negócio e essa compensação pode
tecnologias de workflow.
envolver workflows humanos. Os serviços de processo podem usar
transações atômicas distribuídas nas chamadas dos serviços que usam.
Também podem implementar o padrão de reserva (Reservation Pattern).
Os serviços de processo são, de modo típico, desenvolvidos e
gerenciados internamente pois capturam a essência do valor adicionado
da organização, o "molho secreto" que define a forma pela qual ela faz
seus negócios. Os serviços de processo são projetados para dar agilidade

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 35


Controle de Versões
em SOA
por Boris Lublinsky

Resumo Uma das principais vantagens de um estilo arquitetural orientado a


serviço é a capacidade de lidar com as mudanças, de modo eficaz. A
A arquitetura orientada a serviço (SOA) está SOA baseia-se na decomposição dos ativos de TI da empresa e na
conquistando uma posição central na arquitetura separação entre artefatos (serviços) de TI "estáveis" e artefatos
corporativa. A SOA permite desenvolvimento paralelo (processos do negócio) "mutáveis", orquestrando serviços em soluções
(processos) de TI. Como resultado, as mudanças nos requisitos do
por várias equipes, distintas, cada qual com cronogramas
negócio quase sempre podem ser satisfeitas pelas mudanças nos
de entrega e manutenção próprios. Neste artigo, processos existentes ou pela criação de novos processos corporativos
examinarei abordagens do controle de versões de serviço do negócio, com base nos serviços existentes. Esta abordagem permite
que permitem a evolução das implementações de um suporte muito melhor (mais rápido e barato) para as mudanças
serviço sem interromper consumidores existentes, necessárias por meio da (re)montagem de uma solução com base nos
serviços reutilizáveis da empresa. Os serviços do negócio
resultando em implementações de SOA de mais baixo
transformam-se em recursos, que podem ser compartilhados por
acoplamento. A idéia básica do controle de versões de várias soluções do negócio, permitindo desenvolvimento em massa de
serviço é bastante simples, mas sua implementação serviços autônomos e paralelos por várias equipes, distintas, cada qual
requer controle rígido; discutirei unidades de controle de com cronogramas de entrega e manutenção próprios.
versões, mudanças no serviço, que formam uma nova Como, neste caso, cada serviço é usado simultaneamente em várias
versão; considerações sobre o ciclo de vida de uma soluções corporativas, qualquer mudança em um serviço do negócio
versão de serviço e abordagens sobre pode causar impacto significativo em muitas implementações
existentes e, conseqüentemente, pode exigir mudanças em cada uma
implantação/acesso a versões. O controle de versões de
delas. Isso não apenas é extremamente caro (exigindo grande volume
serviço baseado em método, como aqui proposto, de coordenação entre as equipes de desenvolvimento e testes, para
permite minimizar o seu impacto e reduzir o volume de garantir que nenhum dos vários consumidores de serviço sejam
código implantado. O sistema semântico de mensagens afetados), mas também contraria um dos princípios fundamentais da
para definições de interface de serviço deixa a SOA: serviços são autônomos. A autonomia é o conceito fundamental
que apóia a orientação a serviço. Os serviços deveriam ser
implementação do serviço mais flexível à mudança.
implantados e modificados/atualizados de modo independente em

S
e há uma constante em implementação de TI, esta é a mudança. relação aos outros serviços e aos sistemas que os utilizam.
As condições do negócio mudam exigindo, conseqüentemente,
mudança nas implementações de TI. Novas técnicas e padrões “AUTONOMIA É O CONCEITO FUNDAMENTAL QUE
possibilitam a melhor implementação das qualidades de serviço como, APÓIA A ORIENTAÇÃO A SERVIÇO. OS SERVIÇOS
por exemplo, balanceamento de carga e failover, segurança, etc.
DEVERIAM SER IMPLANTADOS E
Continuamente são introduzidas mudanças na própria tecnologia da
informação pela introdução de novos sistemas operacionais, MODIFICADOS/ATUALIZADOS DE MODO
linguagens de programação e servidores de aplicativos, por exemplo, INDEPENDENTE EM RELAÇÃO AOS OUTROS
que simplificam a criação e a manutenção de novas soluções. Na SERVIÇOS E AOS SISTEMAS QUE OS UTILIZAM”
verdade, a força motriz que implementa uma solução de TI é a
habilidade de fazer frente a essas mudanças inevitáveis. O problema de lidar com componentes compartilhados, que podem
mudar, não é novo. Por exemplo, o sistema operacional Windows e os
Na era dos aplicativos monolíticos, as mudanças são tratadas caso a
aplicativos baseados nesse sistema dependem dos componentes
caso, conforme o aplicativo. A implementação da mudança, para um
COM/ActiveX compartilháveis. No caso do COM, os componentes são
novo negócio ou infra-estrutura (por exemplo, introduzir política ou
considerados imutáveis e quaisquer mudanças funcionais exigem a
requisito de segurança ou transferir o aplicativo para uma nova
introdução de novo componente com identificador exclusivo em nível
plataforma de software) era feita para todo o aplicativo, consumindo
global (GUID) novo. Essa abordagem permite a coexistência
volumes significativos de horas e dinheiro para a sua conclusão. Por
simultânea de vários componentes/versões.
outro lado, como cada aplicativo era desenvolvido por uma única
equipe, independente, esta abordagem possibilitava restringir as Neste artigo, discutirei abordagens do controle de versões de serviço
mudanças. Assim que uma nova versão do aplicativo era introduzida, a que permitem a evolução das implementações de serviço sem
anterior entrava em desuso e poderia ser descartada. interromper os consumidores existentes.

36 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Controle de Versões em SOA

implementação SOA mais adotada), muitos profissionais propõem


Figura 1: Coexistência de várias versões de serviço
controle de versões de serviço (inclusive todas as operações) como um
todo. Embora esta abordagem esteja bem alinhada com as práticas
Consumidor Consumidor
do serviço do serviço atuais de desenvolvimento orientado a objeto (OO) e baseado em
chama chama componente (CBD), ela nem sempre parece ser adequada no caso de
serviços de pouca granularidade. (Para outras comparações da SOA e
OO, vide em Referências o item “Defining SOA as an Architectural
chama
Style” [Definindo a SOA como um estilo arquitetural].
Consumidor chama Provedor Consumidor
do serviço do serviço do serviço Quando as pessoas discutem o controle de versões nas conversas do
dia-a-dia, em geral falam sobre mudanças e controle de versões dos
métodos, não como um serviço em si. Por exemplo, analise um serviço
chama Modificado
de conta que implemente três operações: saque, depósito e
chama
transferência. De modo típico, a conversa gira à volta das mudanças
Consumidor Provedor Consumidor
do serviço do serviço do serviço
nas operações individuais (por exemplo, saque), não no próprio serviço
de conta.
Assim, a outra opção é definir operações de serviço individuais
(métodos) como uma unidade do controle de versões. Operar o serviço
Introdução ao controle de versões de serviço de controle de versões de modo independente traz as seguintes
O controle de versões é uma das abordagens mais adotadas para lidar vantagens:
com mudanças. O controle de versões presume a existência "
Possibilita a existência de serviços imutáveis. O serviço pode fornecer
simultânea das várias (diferentes) implementações da mesma coisa, outros métodos (versões de métodos), alguns dos quais, com o
sendo cada uma delas distinguível e endereçável individualmente. No tempo, podem ficar obsoletos, mas o serviço em si, seu nome e
caso da SOA, o controle de versões de serviço equaliza a coexistência classificação nunca mudam. Este esquema é semelhante às
das várias versões do mesmo serviço e isso permite a cada consumidor abordagens de controle de versões nas linguagens de programação
usar a versão a ele designada e testada (vide Figura 1). Neste caso, mais usadas como, por exemplo, Java ou C#, nas quais os métodos
nova versão de um serviço é criada com base nos requisitos de um ou para classes são acrescidos e, depois, com grande freqüência, ficam
mais consumidores, que poderão usar essa nova versão, obsoletos enquanto as classes existentes, extremamente usadas,
imediatamente. Os outros consumidores deste serviço não precisam raramente mudam.

“O CONTROLE DE VERSÕES DE SERVIÇO BASEADO "


Minimiza o impacto das mudanças de serviço para os consumidores.
EM MÉTODO OFERECE FLEXIBILIDADE Apenas os consumidores que usam um método específico são
afetados por uma mudança e não todos os consumidores do serviço.
APRIMORADA E MELHOR ALINHAMENTO DO
CONTROLE DE VERSÕES DE SERVIÇO COM AS "
Minimiza o volume geral de código implantado. Apenas os métodos
com uma nova versão serão reimplantados no processo de
PRÁTICAS PREVALENTES DESSE CONTROLE PARA
introdução de uma nova versão. Os métodos de implementação de
LINGUAGENS DE PROGRAMAÇÃO.” código que não foram modificados permanecem inalterados.
comutar para usar a última versão, imediatamente: podem continuar Também tem as seguintes responsabilidades:
usando as versões do serviço que lhes foram atribuídas e testadas. Eles
poderão comutar para a última versão do serviço de acordo com o
"
Chama para implantação cada método, independentemente, com os
desenvolvimento e a programação de testes próprios. Várias versões próprios endereços finais. (Embora essa abordagem de implantação
coexistentes do mesmo serviço no sistema permitem ciclos de vida não seja, hoje, a mais adotada, tem algumas vantagens como o
fornecimento de vários contratos de nível de serviço (SLA) ou
independentes dos serviços e respectivos consumidores, minimizando
diferentes métodos no mesmo serviço.)
o impacto global decorrente da introdução de mudanças. Embora a
necessidade desse mecanismo de controle de versões possa parecer "
Exige um esquema de endereçamento de chamada de serviço um
óbvia a qualquer pessoa que nunca tenha lidado com serviços, este pouco mais complexo. Em lugar de especificar um serviço que
tópico ainda não faz parte da tendência predominante nas precisa chamar, o consumidor do serviço, neste caso, precisa
publicações e implementações da SOA. A idéia básica do controle de especificar explicitamente o serviço, a operação e a versão da
versões de serviço é bastante simples e direta, mas sua implementação operação necessária.
exige definir os seguintes itens: Apesar da necessidade de chamar/encaminhar um serviço fora do
"
Unidades do controle de versões
padrão, o controle de versões de serviço baseado em método oferece
flexibilidade aprimorada e melhor alinhamento do controle de versões
"
Mudanças de serviço que constituem uma nova versão de serviço com as práticas prevalentes desse controle para linguagens
"
Considerações sobre o ciclo de vida da versão do serviço
de programação. Além disso, minimiza o volume de código a ser
reimplantado para suportar uma nova versão. Essas características
"
Abordagens de implantação/acesso a versões. fazem do controle de versões baseado em método uma abordagem
Unidades do controle de versões eficiente do controle de versões de serviço.
Existem duas opções principais para definir as unidades do controle de Definições de versão
versões, cada qual com vantagens e responsabilidades próprias. Definir o que constitui uma nova versão do serviço (método) exige
Com base nas práticas atuais de Web Services (hoje, a tecnologia de análise das mudanças possíveis, do provável impacto sobre a execução

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 37


Controle de Versões em SOA

do consumidor e a identificação das mudanças que poderão "quebrá- existentes. Por fim, como todas as mudanças da interface estão
la". Qualquer mudança no serviço, na interface ou na implementação, contidas no modelo de mensagens, a remoção de métodos
com condições de impactar a execução do consumidor, deve levar à (obsoletos), neste caso, equivale à eliminação de algumas das
criação de uma nova versão do serviço (método). Ainda que a definição funcionalidades corporativas e isso deve acontecer muito raramente.
acima não seja muito exata e dê margem a outras interpretações, Pela perspectiva do consumidor, esta situação exige modificações
oferece um bom ponto de partida para a tomada de decisão sobre a (possivelmente significativas), que implicam implementação interna da
criação da nova versão. funcionalidade necessária ou uso de um serviço completamente
Examinarei mais detalhadamente os componentes principais da diferente. Neste caso, o método de serviço é definido como obsoleto
definição de serviço (definições de interface e mensagem) e de e continua ali, embora cada um de seus consumidores poderá
implementações para determinar situações determinadas que podem interromper o seu uso (vide considerações sobre o ciclo de vida das
versões de serviço, mais adiante neste artigo).
levar à criação de nova versão.
Mudanças na interface de serviço Mudanças nas mensagens
Após a adoção do modelo semântico de mensagens, as assinaturas do Como acima definido, no caso de mensagens semânticas, as mudanças
na interface de serviço ficam contidas nas mudanças inseridas nas
método de serviço nunca mudam (todas as diferenças se refletem nas
mensagens semânticas. Essas mensagens são definidas utilizando
mudanças introduzidas no modelo semântico). A interface do método
esquemas que descrevem os respectivos conteúdos. O uso de
de serviço, no caso das mensagens semânticas, é a seguinte:
esquemas de mensagens para definir prováveis mudanças na interface
servicemethod (XML in, XML out) coloca esta abordagem em linha com as técnicas de controle de
Conseqüentemente, a interface do método de serviço nunca muda e versões do esquema XML (vide a barra lateral "XML Schema
não deverá ser considerada na definição de controle de versões. Como Versioning" [Controle de versões do esquema XML]) e, assim, permite a
cada método é implantado individualmente e endereçado em um representação direta do controle de versões no serviço de mensagens.
esquema de controle de versões baseado em método, outros métodos As mudanças nos esquemas podem ser definidas, em linhas gerais, em
podem ser introduzidos para o serviço sem impactar os consumidores três categorias principais:

Suporte para controle de versões em esquemas XML

Usar um atributo (opcional) na versão do elemento xs:schema é a para todas as liberações maiores da versão. Esta abordagem está de
forma mais simples de marcar versões em esquema XML. O modelo acordo com a geração do código empacotar/desempacotar,
de conteúdo permite a notação Dewey para números da versão permitindo a geração de código em vários pacotes (namespaces) e,
maior/menor. assim, possibilitando que um único consumidor de serviço trabalhe,
Como não é preciso ter analisadores de XML para validar instâncias simultaneamente, com várias liberações maiores de esquema.
se a versão estiver sendo usada, é possível implementar uma Manter valores constantes de namespace de XML, adicionando um
representação personalizada da versão, permitindo ao analisador elemento especial para agrupar extensões personalizadas também é
incluí-lo no processo de validação. O uso dessa técnica, em geral, outra opção válida. Esta abordagem envolve extensões para o
exige a introdução de um atributo de controle de versões como um vocabulário de base em um elemento de extensão especial. Esta
valor exigido, fixo, para identificar uma versão específica do técnica tem o apoio de vários esquemas padrão do setor. Por
esquema. Entretanto, esta abordagem de controle de versões de exemplo, o Business Object Documents do Open Application Group
esquema não é muito prática. Traz várias desvantagens: (OAG BODs) inclui um elemento <userarea> para definir
"
Instâncias de XML não terão condições de usar várias versões de
informações personalizadas que talvez não façam parte do
uma representação de esquema porque o controle de versões vocabulário de base. Esta abordagem maximiza a extensibilidade dos
ocorre na raiz do esquema. modelos do esquema (os esquemas podem ser compatíveis com
versões anteriores e posteriores) sem a introdução de novos
"
Ferramentas de validação do esquema XML não são necessárias namespaces. Esta abordagem apresenta duas desvantagens:
para validar instâncias que usam o atributo da versão; este é
fornecido meramente para fins de documentação e não é
"
Introduz níveis de complexidade no esquema, significativamente
executável por analisadores de XML. mais elevados.
"
Como não é preciso ter analisadores de XML para validar instâncias
"
Não permite a implementação de várias extensões através de
se o atributo da versão estiver sendo usado, será preciso diferentes partes da instância de XML já que todas as extensões
processamento adicional personalizado (além de análise e devem ser agrupadas na extensão “invólucro”.
validação) para garantir que a(s) versão(ões) do esquema esperado A seguir, a abordagem mais escalável para o controle de versões do
seja consultada pela instância. esquema:
"
Raramente ocorre empacotar/desempacotar documentos XML "
Componentização de todo o esquema em partições lógicas
usando a manipulação direta da árvore DOM. A abordagem mais utilizando vários namespaces restringindo, assim, as mudanças.
utilizada para empacotar é a geração de classes, com suporte
"automático" de empacotamento, usando ferramentas tipo
"
Definição de um novo namespace (refletindo as informações da
WSDL2Java, Castor, EMF, SDO, XSD, XSDObjectGenerator, etc. versão maior) para as versões maiores de cada esquema.
Neste caso, as classes são geradas nos pacotes em Java ou "
Denotar cada versão menor como uma versão do esquema, em
namespaces em C#, com base nos namespaces do esquema e não um namespace da versão maior. Como as versões menores são
na sua versão. compatíveis com versões anteriores, o código gerado para
Usar namespaces de XML é outra opção para marcar a versão do empacotar/desempacotar também será compatível com versões
esquema. Nesta abordagem, um novo namespace de XML é usado anteriores.

38 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Controle de Versões em SOA

Revisões representam mudanças no esquema do documento, sem mudanças na implementação de serviço não terão impacto sobre os
nenhum significado semântico. Por exemplo, uma mudança nos consumidores do serviço e, assim, não exigem controle de versões.
espaços em branco, formatação, documentação não normativa,
Na verdade, adotar a interface não quer dizer possibilidade de
comentários, etc. A revisão de uma versão já publicada não deve
substituição das implementações. A possibilidade de substituição não
impactar nem a funcionalidade das implementações do serviço, nem
é definida apenas pela interface mas, sim, pelo contrato que inclui
dos consumidores.
interface, pré- e pós- condições e determinados SLAs que servem de
Adicionalmente, o desenvolvimento incremental inicial de um base para o consumidor do serviço. Conseqüentemente, o controle de
esquema semântico, antes de ser publicado para uso na produção, versões é exigido quando mudanças na implementação do serviço
também pode ser tratado como revisões da mesma versão. afetam o contrato que rege o consumidor de serviço em questão.
Mudanças menores representam mudanças no esquema do Como vários consumidores de serviço podem depender de várias
documento compatíveis com versões anteriores. Exemplos de partes do contrato de serviço, cada mudança na implementação de
mudanças menores do esquema incluem: serviço deve ser validada em relação a todos os consumidores de
serviço existentes para assegurar a inexistência de "quebra" de
"
Mudar a opcionalidade de um elemento local ou referência ao
contrato.
elemento, de exigido para opcional
“UMA CONSIDERAÇÃO IMPORTANTE PARA O
"
Adicionar um elemento ou tipo global
CONTROLE DE VERSÕES ESTÁ NA DEFINIÇÃO DO
"
Adicionar elementos opcionais ao tipo existente PRAZO DURANTE O QUAL PRESERVA-SE UMA
"
Mudar o tipo de um elemento global ou local para o tipo novo, VERSÃO DE SERVIÇO (MÉTODO). O CICLO DE VIDA
derivado do original, pela adição/restrição de elementos opcionais. APROPRIADO PARA AS VERSÕES DE SERVIÇO
Mudanças maiores representam mudanças no esquema do (MÉTODO) VARIA MUITO E DEFINE-SE PELA
documento incompatíveis com versões anteriores. CAPACIDADE DA ORGANIZAÇÃO DE LIDAR COM AS
Exemplos de mudanças maiores no esquema incluem: MUDANÇAS".

" A seguir, alguns exemplos de como mudanças na implementação do


Mudar o tipo de um elemento global ou local para o tipo novo,
serviço (método) podem levar a mudanças no contrato:
derivado do original, pela adição/restrição de elementos opcionais.

"
Mudar a opcionalidade de um elemento local ou referência ao
"
A implementação de novo serviço suporta exatamente a mesma
interface (funcionalidade), mas muda a dinâmica de execução (SLA).
elemento, de opcional para exigido
Se um consumidor do serviço estiver chamando esse serviço
"
Adicionar ou remover um valor de enumeração (método) de modo síncrono, essa mudança poderá causar impacto
significativo na execução do consumidor do serviço. Como
"
Remover ou renomear um tipo ou elemento global.
resultado, talvez o controle de versões do serviço seja necessário.
Com base nas definições acima, as duas revisões e as mudanças (Curiosamente, mesmo a reimplantação do serviço existente, com
menores no esquema de mensagens proporcionam compatibilidade mudanças na sua implementação, pode levar aos mesmos
com versões anteriores e não "quebrarão" o contrato de serviço. Em resultados.)
decorrência desse fato, elas não provocarão impacto na
implementação do serviço ou do consumidor e não exigem controle "
A implementação do novo serviço suporta a mesma interface, mas
de versões de serviço. Por outro lado, as mudanças maiores exigem muda as validações dos parâmetros de entrada (pré-condições).
controle de versões do esquema de mensagens e, conseqüentemente, Neste caso, algumas solicitações processadas com êxito agora serão
dos serviços. rejeitadas, exigindo a introdução de um novo serviço.
Mudanças de implementação "
A implementação do novo serviço introduz uma nova
Um conceito errado, muito comum, é que como os serviços são implementação de segurança (pré-condição), a qual muitas vezes
definidos por meio da interface (e não da implementação), as não está refletida na interface de serviço mas, sim, por meio das
definições de configuração. (Vide em Referências, Web Services
Figura 2: Implementação do controle de versões por meio de Handbook for WebSphere Application Server Version 6.1 por Wahli et
contrato al. e Web Service Security por Hogg et al.) Neste caso, os
consumidores existentes do serviço exigirão envio das credenciais de
Versão 1
implementação
segurança - será preciso mudar a implementação e criar nova versão.
Todos esses cenários exigem análise dos consumidores existentes do
Service serviço e testes, potencialmente, abrangentes. Assim, um modo mais
Consumidor method Vesão 2
do serviço endpoint implementação simples de decidir se uma nova versão do serviço (método) precisa ser
Chamar o
serviço/ address criada, em caso de mudanças na implementação do serviço, é manter
método/versão uma definição do contrato de serviço (método) e criar uma nova
com carga
apropriada versão se houver mudança no contrato, independentemente de quais
Versão n
implementação
consumidores dependem de quais partes do contrato. Na dúvida, em
geral é mais simples criar uma nova versão.

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 39


Controle de Versões em SOA

podem ser implantadas de modo independente, ficando para o


Figura 3: Implementação de versões usando endereços finais
diretamente expostos mediador a responsabilidade de resolver, dinamicamente, o endereço
final da versão de serviço desejada e de despachar todas as
mensagens pelo mesmo critério. Entretanto, embora intermediárias
Consumidor 1 (mediações) sejam quase sempre consideradas pelas publicações ESB
(uso
Serviço 1 chama
como solução para a maior parte dos problemas de
Método 1 Serviço 1 roteamento/transformação encontrados na arquitetura orientada a
Versão 1) Método 1
Versão 1
serviço, há custos correlatos. De modo geral, reduz o desempenho.
Além disso, deve suportar o mais rigoroso SLA de todos os serviços
acessados através dele, e isso pode ser uma exigência problemática.
Serviço 1
Método 1 Vários endereços finais. Neste caso, de modo similar à implementação
Versão 2 mediadora, cada versão de uma determinada operação é implantada
no próprio endereço final. A única diferença é que cada endereço final
Consumidor 2
(uso chama está diretamente exposto a um consumidor do serviço (vide Figura 3).
Serviço 1 Serviço 1
Método 1
Vários endereços finais presumem que um consumidor de serviço
Método 1
Versão 2) Versão n resolva o endereço final (em geral, usando o registro de serviço) para
uma versão exigida baseada nas informações de
serviço/método/versão. Este esquema tem uma vantagem: separação
Considerações sobre o ciclo de vida da versão de serviço
completa das várias implantações das versões do método. A
Definir o prazo durante o qual uma versão do serviço (método) será desvantagem é um paradigma de endereçamento mais complexo,
preservada é uma das importantes considerações do controle de exigindo compatibilidade com registro de serviço para resolver o
versões. Estender esse período leva à necessidade de manter grande endereço final.
volume de versões de serviço. Por outro lado, reduzi-lo, restringe o
Em geral, a abordagem 'vários endereços finais' proporciona melhor
prazo dos consumidores do serviço para implementar as atualizações
escalabilidade (um saldo de rede a menos) e diminui o acoplamento
necessárias. O ciclo de vida apropriado para as versões de serviço
entre as várias versões da mesma operação.
(método) varia muito e é definido pela capacidade da organização de
lidar com as mudanças. Controle de versões da infra-estrutura de serviço
Abordagens de implantação/acesso a versões Uma variante do controle de versões de serviço é o controle de
versões da infra-estrutura de serviço, que pode incluir os seguintes
Existem duas abordagens comuns para a implantação de versões de
itens:
serviço:
Contrato ou Parâmetro de versão. Pelo contrato, estabelecem-se
"
Mudanças no transporte, por exemplo, comutando de HTTP para
cláusulas do tipo "if-then-else" ("se você fizer isso, então, farei aquilo"). Java Message Service (JMS)
Neste caso, haverá um único endereço final para todas as versões do "
Mudanças na codificação de mensagens, por exemplo, atualização
serviço (método), conforme mostra a Figura 2. do pacote proprietário com o Simple Object Access Protocol (SOAP)
O contrato implementa de modo efetivo o roteamento baseado em
contexto, recebendo uma mensagem de entrada e encaminhando-a
"
Mudanças no esquema de endereçamento, por exemplo, introdução
do Web Services Addressing para especificação do endereço de
(com base em um parâmetro de versão, incorporado na mensagem de
resposta
chamada) à versão de serviço adequada. Esta
abordagem tem a vantagem de simplificar o
endereçamento do serviço a partir do ponto de vista Figura 4: Interoperabilidade entre infra-estruturas de serviço
do consumidor. Neste caso, o consumidor usa um
único endereço final para acessar todas as versões
de um determinado serviço (método), codificando o Fachada de Fachada de
Consumidor provedor consumidor Provedor
método exigido na mensagem de chamada. Um do serviço Infra-estrutura do serviço do serviço Infra-estrutura do serviço
endereço final implementa um suporte de do serviço 1 do serviço 2
roteamento, chamando a versão exigida. Adaptador
Ainda que a abordagem de contrato minimize o
impacto da introdução de novas versões para os
consumidores do serviço, introduz a complexidade de empacotar Neste caso, é sempre desejável implementar "compatibilidade com
várias versões de um determinado método de serviço. Esse fato pode versões anteriores" para assegurar que a nova infra-estrutura "entenda"
provocar colisões de nomes de classe, de banco de dados, etc. Além e suporte mensagens produzidas pela infra-estrutura anterior e gerar
disso, esta abordagem exige, de fato, uma estratégia de controle de mensagens aceitas pela mesma. Na verdade, pode ser muito caro ou,
versões não apenas para os próprios serviços, mas também para os até mesmo, impossível tecnicamente.
componentes usados nas implementações de serviço. Se Transferir todas as implementações de serviço e os consumidores
considerarmos o acoplamento forte existente entre os componentes, existentes para a nova infra-estrutura é, em geral, bem caro e
este problema pode ficar ainda mais complexo do que o controle de demorado, exigindo suporte para controle de versões que forneça
versões de serviço. interoperabilidade entre duas infra-estruturas de serviço distintas. A
Substituir o roteador local que despacha entre a implementação das solução mais usada para esse problema é um adaptador de serviço
versões de serviço por um broker externo (mediador) poderá (vide Figura 4).
aprimorar ainda mais esse processo. Nesse caso, todas as versões

40 THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net


Controle de Versões em SOA

Neste caso, quando o consumidor do serviço suportado pela infra- http://msdn.microsoft.com/architecture/thinkahead/default.aspx?pull=


estrutura de serviço 1 chama o provedor de serviço suportado pela /library/en-us/dnbda/html/aisforsoa.asp
infra-estrutura de serviço 2, a chamada passa pelo adaptador de
intermediação entre as infra-estruturas de serviço em questão. Do “Principles of Service Design: Service Versioning,” John Evdemon,
ponto de vista do consumidor do serviço, o adaptador age como um Microsoft 2005
provedor de serviço. A seguir, o adaptador chama o provedor de http://msdn.microsoft.com/library/default.asp?url=/library/en-
serviço, agindo como um consumidor do serviço. us/dnbda/html/SOADesignVer.asp

Esta implementação pode ser combinada com a topologia de Web Services Handbook for WebSphere Application Server Version 6.1
implantação de controle de versões de serviço (Figura 4), fornecendo
compatibilidade com controle de versões para serviços e (Draft IBM Redbook), Ueli Wahli, Owen Burroughs, Owen Cline, Alec
consumidores de serviços entre infra-estruturas distintas. Go, Larry Tung
http://www.redbooks.ibm.com/redpieces/abstracts/sg247257.html?Op
Conclusão en
Administrar mudanças nunca é simples e, em geral, a complexidade
Web Service Security. Scenarios, Patterns, and Implementation Guidance
cresce proporcionalmente ao porte da implementação.
for Web Services Enhancements (WSE) 3.0, Jason Hogg, Don Smith,
Implementações maiores têm, tipicamente, mais interdependência na
Fred Chong, Dwayne Taylor, LonnieWall, and Paul Slater
movimentação das partes e, assim, os efeitos das mudanças são mais
(Microsoft Press, 2005)
generalizados. As implementações de SOA, especialmente as que
http://msdn.microsoft.com/library/default.asp?url=/library/en-
abrangem toda a empresa, não são exceção.
us/dnpag2/html/wssp.asp
As abordagens do controle de versões de serviço descritas neste artigo
levam à criação de implementações de SOA de acoplamento muito “Patterns: Implementing an SOA using an Enterprise Service Bus in
mais baixo. A introdução de várias versões de serviço implantadas de WebSphere Application Server V6,” Martin Keen, Oscar Adinolfi, Sarah
modo simultâneo permitem a evolução independente dos Hemmings, Andrew Humphreys, Kanthi Hanumanth, Alasdair
consumidores/provedores de serviço, de acordo com Nottingham, IBM Redbooks, 2005
desenvolvimentos e programações de implantação próprios. Métodos http://www.redbooks.ibm.com/abstracts/sg246494.html?Open
independentes para o controle de versões de serviço minimizam o
“Supporting Policies in Service-Oriented Architecture,” Boris Lublinsky,
impacto do controle de versões e reduzem o volume da implantação
IBM developerWorks, 2004
de código. Por fim, o uso do sistema semântico de mensagens para
http://www-128.ibm.com/developerworks/webservices/library/ws-
definições de interface de serviço deixa a implementação do serviço
support-soa/
mais flexível à mudança.
Agradecimentos “Toward a Pattern Language for Service-Oriented Architecture and
Integration, Part 1: Build a service eco-system,” Ali Arsanjani, IBM
O autor agradece a Jim McKune, Dmitry Tyomkin, Kiran Achen e Luc
developerWorks, Julho de 2005
Clement por suas contribuições.
http://www-128.ibm.com/developerworks/webservices/library/wssoa-
soi/
Referências

“Defining SOA as an Architectural Style,” Boris Lublinsky, IBM Sobre o autor


developerWorks, Janeiro de 2007
Boris Lublinsky tem mais de 25 anos de experiência em engenharia de
http://www-128.ibm.com/developerworks/architecture/library/ar-
software e arquitetura técnica. Nos últimos anos, dedicou-se à
soastyle/
arquitetura corporativa, SOA e gerenciamento de processos. No
“Principles of Service Design: Service Patterns and Anti-Patterns,” John decorrer da sua carreira, o Dr. Lublinsky tem sido palestrante e autor
Evdemon, MSDN, August 2005 freqüente de textos técnicos. Já produziu mais de 40 publicações
http://msdn.microsoft.com/library/default.asp?url=/library/en- técnicas em várias revistas, inclusive Avtomatika i telemechanica, IEEE
us/dnbda/html/SOADesign.asp Transactions on Automatic Control, Distributed Computing, Nuclear
Instruments and Methods, Java Developer's Journal, XML Journal, Web
“Best Practices for Web Services Versioning,” Kyle Brown, Michael Ellis, Services Journal, JavaPro Journal, Enterprise Architect Journal e o EAI
IBM developerWorks, 2004 Journal. Atualmente, o Dr. Lublinsky trabalha na Insurance Company,
http://www-128.ibm.com/developerworks/webservices/library/ws- empresa de grande porte, e lá suas responsabilidades incluem o
version/ desenvolvimento e a manutenção de estratégia e frameworks de SOA.
O seu endereço para contato é blublinsky@hotmail.com.
“A SOA Version Covenant,” Rocky Lhotka
http://www.theserverside.net/articles/showarticle.tss?id=SOAVersionin
gCovenant

XFire User Guide, Versioning Best Practices


http://docs.codehaus.org/display/XFIRE/Versioning “Architecting
Industry Standards for Service Orientation,”

Josh Lee, Microsoft 2005

THE ARCHITECTURE JOURNAL • Journal 11 • www.architecturejournal.net 41


ARC THE
ARCHITECTURE
JOURNAL
Inscreva-se no endereço: www.architecturejournal.net

You might also like