Professional Documents
Culture Documents
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
Journal 11
Apresentação 1
por Simon Guest
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
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.
100%
90%
80%
70%
60%
Compartilhado
50%
Um-para-Um
40%
30%
20%
10%
0%
Isolamento Escala
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.
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.
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.
("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.
Cenário de computação
Usuário
Aprovar Pós-processo Download
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.
"
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.
Cenário de Computação
Usuário
Aprovar Pós-processos Download
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
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
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.
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
(PCT)
FCW
FCW
"
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.
Cenário da computação
Usuário
Aprovar Pós-processo Download
"
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.
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".
É 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?
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.
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
"
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).
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.
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
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.
Formato B
VAN intermediário,
Formato canônico B geralmente
Formato padrão do setor aumentado,
super-redundante
(ANSI, XCBL, HIPAA, Hl7, etc.)
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.
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.
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:
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.
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".
"
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.
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