Aprenda a disciplina,
busque a arte e contribua
com idéias no:
www.ArchitectureJournal.net
Recursos nos quais você
pode confiar.
THE
ARCHITECTURE
JOURNAL
Idéias para melhores resultados
Journal 13
Software + Serviços
O Barramento de Serviços
para a Internet
Perfil do Architecture Journal:
Ray Ozzie
Projeto Astoria
Implicações do Consumo
de Software + Serviços do
TI Corporativo
Mashups Corporativos
Microsoft Office como
Plataforma de
Software + Serviços
Um Planeta Regido por
Arquiteturas de Software
TM
Sumário
THE
ARCHITECTURE
JOURNAL
Idéias para melhores resultados
Journal 13
Apresentação
1
por Simon Guest
O barramento de serviços para a Internet
2
por Donald F. Ferguson, Dennis Pilarinos, John Shewchuk
Conheça os aspectos arquiteturais da transmissão de mensagens pela Internet utilizando um barramento de serviços para
Internet.
Perfil do Architecture Journal: Ray Ozzie
9
Ray Ozzie é arquiteto-chefe de software da Microsoft. Nesta edição, Ray nos apresenta a sua visão para um mundo feito de
software + serviços e algumas de suas idéias ao tornar-se um arquiteto de software.
Projeto Astoria
12
por Pablo Castro
Astoria é uma nova tecnologia para a criação de serviços que expõem dados na web. Conheça os detalhes dessa nova
tecnologia que se desdobra em software e serviço.
Implicações do consumo de software + serviços do TI corporativo
18
por Kevin Sangwell
Saiba quais são os pensamentos e as recomendações para o consumo de serviços dos departamentos de TI corporativos.
Mashups corporativos
24
por Larry Clarkin e Josh Holmes
Os mashups não são apenas para usuários e consumidores finais. Veja como criar mashups quando a empresa possui várias
fontes de dados.
Microsoft Office como plataforma de software + serviços
29
por Chip Wilson e Alan Josephson
Como plataforma cliente, o Microsoft Office pode trabalhar bem com a visão software + serviços. Investigue como isso tem
sido feito por meio de um conjunto de exemplos do mundo real.
Um planeta regido por arquiteturas de software
34
por Gianpaolo Carraro
Junte-se a nós para um tour por Architectopia, mundo no qual diferentes paradigmas de computação definem
as civilizações.
Recursos nos quais você pode confiar.
www.architecturejournal.net
TM
Fundador
Arvindra Sehmi
Microsoft Corporation
Editor-chefe
Simon Guest
Microsoft Corporation
Apresentação
Conselho Editorial Microsoft
Gianpaolo Carraro
John deVadoss
Neil Hutson
Eugenio Pace
Javed Sikander
Philip Teale
Tim O'Brien
Caro Arquiteto,
Editor
Lisa Slouffman
Microsoft Corporation
C
omo arquitetos de software, muitas vezes nos defrontamos com decisões
tecnológicas bem no início do processo de desenvolvimento. Cliente gordo ou
magro? Computador portátil ou de mesa? Instalação local ou aplicativo web? Em lugar de
escolher uma opção "ou" outra, como seria se pudéssemos escolher algo usando "e"? Por
que nossas escolhas têm de ser forçadas a usar uma determinada tecnologia quando a
melhor solução é, quase sempre, um mix de duas? Este é o conceito que serve de base ao
tema desta edição do The Architecture Journal: software + serviços.
Design, impressão e distribuição
CMP Technology – Editora
Chris Harding, diretor administrativo
Angela Duarte, gerente de publicação
Lisa Broscritto, gerente de projeto
Kellie Ferris, diretor corporativo de
serviços criativos
Jimmy Pizzo, diretor de produção
A organização dos artigos desta edição explora uma nova visão de software + serviços,
conforme exposto por Ray Ozzie, arquiteto-chefe da Microsoft, em seu discurso na MIX
07 deste ano.
Iniciamos esta edição com Don Ferguson, cujo perfil foi o destaque do Jornal 11, lembrase? Don compartilha suas idéias sobre os aspectos arquiteturais de como transmitir
mensagens pela Internet por meio de um barramento de serviços para a Internet ou ISB
(Internet Service Bus).
Diagramação, finalização e impressão (BR)
Arthéria Comunicação & Multimídia
www.artheria.com.br
Depois do artigo do Don, e como parte de nossa série Perfil do Architecture Journal, é
com grande entusiasmo que compartilhamos uma entrevista com o próprio Ray Ozzie.
Nesta entrevista, Ray nos revela alguns dos detalhes da visão software + serviços e o que
representa ser arquiteto-chefe de software da Microsoft.
®
As informações contidas neste The Architecture Journal (“Jornal”)
têm finalidade informativa, apenas. As matérias do Jornal não
constituem a opinião da Microsoft Corporation (“Microsoft”) nem
da CMP Media LLC ("CMP") e, tampouco, são recomendações da
Microsoft ou da CMP; assim sendo, você não deve confiar em
nenhuma das matérias deste Jornal sem solicitar o aval de um
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
Jornal e, em nenhuma circunstância, nem a Microsoft, nem a CMP
aceitará responsabilidade de qualquer tipo, inclusive
responsabilidade por negligência (salvo em caso de danos físicos
ou morte) com relação a quaisquer tipos de perdas ou danos
(incluindo, mas não se limitando, aos casos de perda de negócios,
de receita, de lucros ou prejuízo imprevisto) resultantes do uso das
informações deste Jornal. O Jornal pode ter imprecisões técnicas e
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
nem por deixar de fazê-lo. Este Jornal contém matérias
encaminhadas e criadas por terceiros. Até o máximo permitido
pela lei aplicável, a Microsoft e a CMP isentam-se de todas as
responsabilidades por qualquer ilegalidade decorrente de erro,
omissão ou imprecisão deste Jornal ; além disso, a Microsoft e a
CMP não se responsabilizam pelas matérias recebidas de terceiros.
As marcas comerciais a seguir são marcas comerciais registradas
da Microsoft Corporation: BizTalk, Microsoft, SharePoint, SQL
Server, Visual Studio, Windows, Windows NT e Windows Server.
Quaisquer outras marcas comerciais são de propriedade de seus
respectivos proprietários.
Todos os direitos autorais e outros direitos de propriedade
intelectual das matérias publicadas no Jornal pertencem à
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.
Depois da entrevista com Ray, Pablo Castro nos oferece uma síntese técnica do Projeto
Astoria. Astoria é um novo serviço que expõe dados para clientes da web no âmbito de
uma rede corporativa e pela Internet. Kevin Sangwell vem a seguir, com suas idéias sobre
as implicações do consumo de serviços pelo
TI corporativo e, este texto nos leva
diretamente a um artigo sobre mashups na
empresa, escrito por Larry Clarkin e Josh
Holmes.
Para fechar esta edição, Chip Wilson e Alan
Josephson investigam o uso do Microsoft
Office como plataforma para software +
serviços. Finalmente, temos a divertida
analogia escrita por Gianpaolo Carraro que
nos faz esta pergunta: E se a arquitetura
fosse um planeta? Nesse texto, Gianpaolo analisa uma perspectiva interna para revelar
mais sobre os benefícios de se utilizar o software + serviços.
Aqui no The Architecture Journal, gostamos de "praticar o que pregamos”. Para tanto,
temos prazer em anunciar uma nova experiência offline do Jornal, denominada "Journal
Reader" (Leitor do jornal).
Demonstrando muitos dos princípios destacados nesta edição, este novo leitor é um
aplicativo instalado localmente que possibilita transformar cada edição do Jornal em uma
experiência fácil de ler, imersiva, com pesquisa integrada. O aplicativo faz a sincronização
com nossos serviços de gerenciamento de conteúdo e, assim, será possível ter acesso
automático às mais recentes edições do Jornal, sem necessidade de fazer o download de
arquivos PDF ou ler online.
Recebemos grande volume de feedback dos leitores sobre como o jornal é lido e
esperamos que este novo serviço ofereça uma forma de leitura exclusiva e útil. Já no
início de novembro, você poderá fazer o download do leitor e obter mais detalhes em
nosso website: http://www.architecturejournal.net.
Copyright © 2007 Microsoft Corporation. Todos os direitos
reservados.
THE ARCHITECTURE JOURNAL
• Journal 13 •
Simon Guest
www.architecturejournal.net
1
O Barramento de Serviços
para a Internet
por Donald F. Ferguson, Dennis Pilarinos, John Shewchuk
Resumo
Os aplicativos web têm como base um modelo
extremamente comum e eles se tornarão cada vez mais
dominantes. Praticamente todos os aplicativos para empresas
de médio a grande portes oferecem uma IU de web. Neste
artigo, empregaremos o termo empresa para englobar
negócios de médio a grande portes, o fornecedor de
software e as empresas integradoras. Aplicativos para
desktop e cliente/servidor cada vez mais usam o navegador
para o mecanismo da IU e fazem chamadas para obter
dados e serviços pelos protocolos web.
Software, modelos de aplicativos e a própria web estão
passando por uma transformação revolucionária. O efeito
dessa transformação será tão grande para a computação
como foi o modelo cliente/servidor ou o surgimento inicial
da web. A web evoluirá da função de conectar usuários aos
aplicativos fornecidos por sites para um modelo em que:
"
o aplicativo é executado "na web";
"
os usuários finais desenvolvem os próprios aplicativos para acessar a
web, transformando-a em um espaço de trabalho desenvolvido pelo
usuário final para acesso aos Web Services.
Este artigo tem como enfoque um pequeno número de
elementos dessa transformação. Outros artigos ampliarão a
visão.
V
árias tecnologias e tendências oferecem a força propulsora para a
transformação revolucionária descrita acima. Alguns exemplos são:
processadores de vários núcleos; virtualização; cenários de aplicativos
que fazem a federação de muitos dispositivos como celulares e mesas
digitalizadoras; arquitetura orientada a serviço (SOA) e Web Services;
Web 2.0; e software como serviço (SaaS).
e construíram websites. As responsabilidades básicas do cargo dos
profissionais talvez nem inclua programação, mas em muitos casos eles
criarão programações simples se isso aumentar a sua produtividade.
Também podem desenvolver aplicativos simples só por que é legal.
Para este conceito, utilizaremos a expressão programação feita pelo
usuário final.
A programação feita pelo usuário final é um caso extremo de
desenvolvimento oportunista, que ocorre em departamentos e linhas de
negócio (LOBs) nas empresas. As LOBs e as equipes quase sempre
desenvolvem aplicativos SharePoint ou PHP simples, de modo "rápido e
sujo", que resolvem um problema imediato do negócio, ampliando os
aplicativos comerciais ou aqueles de base usados por toda a empresa.
O desenvolvimento oportunista é o oposto do desenvolvimento
sistemático. O desenvolvimento sistemático é dirigido a modelo, cheio
de exigências de coleta, casos de uso e entrevistas com as partes
interessadas, um ciclo de vida do desenvolvimento do aplicativo que
inclui qualidade, garantia, etc. O desenvolvimento sistemático é o
modelo predominante da equipe de desenvolvimento corporativo
("equipe CIO"). Muitos programadores de aplicativos comerciais (ISVs ou
fornecedores de software independentes) e integradores de sistemas
(SIs) também produzem soluções sistemáticas.
Existe uma tensão nas empresas entre os desenvolvimentos oportunista
e sistemático. Essa tensão aumentará se a programação feita pelo
usuário final vier a ser comum. Os usuários finais não se contentarão
em esperar pelas equipes de desenvolvimento sistemático para
desenvolver ou modificar soluções. A arquitetura de referência que
descrevemos oferece uma abordagem para reconciliar os extremos dos
desenvolvimentos oportunista e sistemático.
Usamos um cenário para ilustrar a arquitetura de referência. Um
elemento básico que surge e serve de base para a arquitetura é um
barramento de serviços para a Internet ou ISB. A arquitetura de
referência abrange muitos elementos; contudo, este artigo detalha
apenas o ISB. Outros artigos descreverão outros elementos.
O cenário e os desenvolvimentos oportunista e sistemático
Discutiremos o efeito de algumas dessas tendências, mas nossos
principais enfoques são SOA, Web 2.0 e SaaS. Esses conceitos e as
respectivas relações ainda não estão bem compreendidos. As
tecnologias freqüentemente parecem ser antagônicas. O artigo
descreve os elementos de uma arquitetura de referência de alto nível
que reúne os conceitos em um todo consistente.
Dave viaja muito a negócio e utiliza os serviços de hotéis e empresas
aéreas preferenciais. Aluga carros nas locadoras das cidades que visita e
faz reservas em restaurantes. A colaboração com amigos, família e
colegas também é importante. Dave utiliza vários websites de agências
de viagem para elaborar e modificar planos de viagens.
Muitas das tendências tecnológicas precedentes são completamente
conhecidas e aceitas. Este artigo discute uma terceira tendência, mais
controversa: a capacidade de programação universal. Grande parte de
graduados do nível médio e das universidades possuem qualificações
de programação básica quando passam a integrar a força de trabalho;
muitos alunos já desenvolveram aplicativos PHP ou Visual Basic simples
Administrar as viagens do Dave envolve muitas tarefas manuais para
interagir com as agências de viagens por meio dos respectivos websites.
Ele precisa coordenar tarefas manualmente em vários sites e
copiar/colar dados entre campos. Existe também alguma lógica
seqüencial, por exemplo, fazer reserva em um restaurante e alugar um
carro para chegar até o restaurante. As atitudes de Dave são
2
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
O Barramento de Serviços para a Internet
similares a um aplicativo composto ou solução de integração de
aplicativo corporativo (EAI - Enterprise Application Integration). O
trabalho manual é entediante e passível de erros. Dave conhece
programação básica e decide escrever um pequeno mashup. O mashup
usa os websites das agências de viagens por meio de um script de
página web do lado do cliente ou clipping de HTML simples (Figura
1(a)). O mashup facilita a vida do Dave, acrescentando produtividade ao
seu trabalho, pois o tempo que economizará na administração de suas
viagens poderá usar no seu trabalho. O mashup também é legal e isso
impressiona seus amigos.
Mary e Ludwig gostam do aplicativo e Dave lhes oferece o código.
Desejam uma IU diferente, mas compartilham o código. Assim sendo,
aprimoram o aplicativo separando a IU do acesso ao website,
scripting, fazendo o cache pela implementação de uma versão simples
de modelo-visão-controlador (Figura 1(b)). Este aprimoramento
também permite a reutilização do código para acesso por meio de
outros dispositivos como PDAs ou celulares (Figura 1(c)). Por fim,
decidem deslocar a camada do modelo para um servidor web de
departamento e implementam um aplicativo web simples. Esse
procedimento permitirá que várias pessoas tenham acesso às
informações, por exemplo, os assistentes.
Os amigos construíram nessa oportunidade um aplicativo composto:
uma simples solução pseudo-EAI. Na medida em que programadores
qualificados são admitidos para integrar a força de trabalho, esses
aplicativos específicos e ocasionais serão cada vez mais comuns. Existe
o aspecto "legal" que dá destaque aos criadores e os aplicativos
simplificarão as tarefas entediantes. Os profissionais também podem
construir aplicativos ocasionais para problemas de curta duração do
negócio como uma convenção. Os aplicativos desempenham funções
análogas às das planilhas, quando o usuário executa uma tarefa do
negócio e acessa bancos de dados e aplicativos de base existentes.
Aplicativos de situação oportunista terão efeito profundo sobre a
distribuição sistemática dos aplicativos corporativos. Um efeito
acontecerá sobre o desenvolvimento do aplicativo corporativo. Os
aplicativos de situação podem "forçar" os aplicativos corporativos
básicos ou utilizá-los de modos inesperados. Isso fará com que a
organização de TI transfira algumas das "camadas de modelo" para os
servidores corporativos, para aprimorar o desempenho e a
integridade. Resumindo: os aplicativos de situação têm casos de uso
definidos que podem conduzir a transformação sistemática do
aplicativo corporativo. Os aplicativos de situação podem substituir
modelos simples para documentar casos de uso e orientar a
modelagem formal.
Muitas pressões tratarão de transferir os aplicativos de situação, tanto
quanto possível, para os servidores corporativos. Poderá haver
Figura 1: Evolução do mashup
A
C
D
B
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
parceiros que precisam usar o aplicativo e isso exige a segurança da
empresa. Alguns aplicativos podem fazer parte de importantes
decisões do negócio, como a aprovação de empréstimos. Governança
e conformidade exigirão acesso e entrada de dados de registro, assim
como gravar as versões do código desses aplicativos. Transferir os
aplicativos de situação para a central de dados traz implicações
profundas. As centrais de dados precisarão dar suporte a centenas ou
milhares de aplicativos que mudam constantemente, além das
soluções básicas do negócio. A central de dados precisa administrar
dezenas de servidores de aplicativos básicos supercarregados,
acessados por milhares de usuários e milhares de servidores virtuais
raramente acessados por equipes pequenas que usam aplicativos
específicos.
Existem muitos cenários em que as soluções sistemáticas consomem
aplicativos oportunistas. O Dave achará bem legal se o departamento
de TI utilizar um de seus aplicativos.
Em resumo, os aplicativos oportunistas incentivam as soluções
sistemáticas e estas solidificam os aplicativos oportunistas (como o
Representational State Transfer (REST) -> Web Services). Essas
dinâmicas também movimentam o software como serviço ou mais
precisamente, software + serviços. O conceito de software + serviços
oferece uma plataforma que une os desenvolvimentos de aplicativos
sistemático e oportunista com a distribuição.
Software + serviços, e um barramento de serviços para a
Internet
Barramento de serviço corporativo
Imagine o que acontece se a empresa aérea cancela o vôo de conexão
do Dave, no trecho Dallas-São Francisco, enquanto ele faz o trecho
Nova York-Dallas. Dave não conseguirá chegar em São Francisco e
precisará passar a noite na cidade do aeroporto de conexão. Será
preciso alterar todas as reservas: hotel, aluguel de carro e restaurante.
Dave poderia usar o seu mashup para simplificar essas mudanças
quando desembarcar. Seria ainda melhor ("mais legal") se fosse
possível refazer a reserva automaticamente, durante o vôo. As
empresas aéreas e os sites que monitoram vôos emitem “feeds” com
atualizações dos horários de vôo. De modo ideal, o aplicativo do Dave
estaria sempre sendo executado em algum lugar "da nuvem". O
aplicativo faria a monitoração dos “feeds” e usaria lógica simples para
reagir a eventos e modificar o itinerários e os planos.
Não é provável que um simples aplicativo de usuário final pudesse
sempre ajustar o itinerário, mas a maioria dos ajustes é, muitas vezes,
bastante simples. Dave só teria de interferir manualmente nos casos
complexos e poderia, também, aprovar as alterações feitas
automaticamente pelo seu aplicativo durante o vôo.
O cenário geral do aplicativo para ajustar o
itinerário é um tipo de problema comum nas
empresas. Problemas similares podem acontecer
com ordens de compra e aprovação de contas de
despesas, por exemplo. O cenário é um exemplo
de aplicativo composto que implementa um
padrão de processamento direto (STP - StraightThrough-Processing) (vide Referências). As
empresas implementam uma abordagem
sistemática para resolver esses problemas. A
Figura 2 oferece uma visão geral de como seria o
aplicativo composto se a empresa aérea, o hotel,
restaurante, a locadora e outros sistemas
3
O Barramento de Serviços para a Internet
Figura 2: Um processo corporativo do negócio
Feed
Recebe
Mensagem C
sobre MQ
Converte
Serv
Inf
Autos
Converte
Cancela
Filtra
Sucesso
Nova
reserva
hotel
Sucesso
RPC
COBOL
SQL
Vôos
Nova
reserva
hotel
Itinerário
Hotéis
RFC SAP
Locadora
estivessem no âmbito do firewall corporativo. Um processo de
orquestração de execução relativamente longa inscreve-se em eventos
que o sistema de gerenciamento de vôo emite. O processo envia
mensagens de/para e chama os aplicativos existentes para cancelar
reservas, consultar disponibilidades e fazer novas reservas. As empresas
são heterogêneas e os aplicativos existentes possuem diversos
formatos de mensagens (C, COBOL etc.) e de protocolos de
comunicação (WebSphere MQ, SAP RFC, por exemplo).
O projeto do processo de ajuste apresentado na figura 2 é frágil. O
processo do negócio deve modificar se, por exemplo, outro aplicativo
de empresa aérea tiver sido adicionado. O processo do negócio
também pode ser acoplado a formatos e linguagens de mensagem
específicos dos aplicativos existentes. Seria difícil adicionar um
mecanismo geral para o registro de mensagens que correspondesse a
determinadas condições, por exemplo, registro de todas as mensagens
se o viajante for um executivo. Essa fragilidade levou as arquiteturas de
aplicativos corporativos a evoluírem para um barramento de serviço
corporativo (ESB - Enterprise Service Bus).
A Figura 3 oferece uma visão geral de um barramento de serviço
corporativo. Os adaptadores de aplicativos convertem formatos e
protocolos existentes em Web Services padrão. Isso transforma o
problema do mapeamento de protocolo/formato N N para conectar
uma coisa à outra em um problema de mapeamento N 1, ou seja,
tudo dentro de um padrão. O ESB oferece funções adicionais que
processam o fluxo de mensagens entre serviços. Exemplos incluem
conversão, registro e roteamento das mensagens.
3. Os aplicativos das empresas aéreas e dos hotéis são externos à
empresa. As empresas são bastante ponderadas e cautelosas
quanto a estabelecer conexões B2B. Ainda que o parceiro de
negócios implemente Web Services, a empresa precisará definir
regras de autorização e auditoria para interações de Web Services
com os parceiros. A empresa precisará ter suporte para
gerenciamento, federação e provisionamento de identidades de
usuário pois os funcionários terão uma identidade na empresa e
outras nas empresas aéreas e hotéis.
4. A personalização da solução para aceitar preferências dos
funcionários é complexa. Ao funcionário falta habilidade para fazer
a personalização "faço eu mesmo". O aplicativo reside em
servidores corporativos centralizados. Os profissionais de TI
definem e modificam o processo do negócio, não o Dave.
Seria de fato muito legal se o Dave pudesse criar uma versão simples e
pessoal da solução sistemática. Se generalizarmos o ESB e o
considerarmos um tipo de barramento de serviço otimizado para o
desenvolvimento empresarial sistemático, poderíamos também
imaginar um tipo de barramento de serviço otimizado para
desenvolvimento oportunista. Este é o barramento de serviços para a
Internet (ISB). O ISB parece mais com um tecido universal. O ISB faz a
ligação dos dispositivos entre si, dispositivos e servidores locais, entre
websites e ESBs e é, em si, um ESB. O ISB é uma plataforma para
aplicativos compostos e processos do negócio do tipo "faça você
mesmo". O ISB é também um exemplo de software como serviço
(Saas).
Barramento de serviço de Internet
A Figura 4 oferece uma visão geral do conceito de barramento de
serviços para a Internet. (O BizTalkServices é um dos primeiros
exemplos de ISB; vide Referências.) Um provedor ISB é análogo a uma
empresa que hospeda websites PHP. Ambos fornecem uma plataforma
de aplicativos na "nuvem". Um site que hospeda web PHP fornece
basicamente uma plataforma para o desenvolvimento de websites
dinâmicos e Web Services que interagem com um banco de dados.
Por outro lado, o ISB fornece uma plataforma para criação e
implantação de aplicativos compostos que integram serviços
Figura3: Um barramento de serviço corporativo
Feed
Converte
Cancela
Mapeia
1. Não há garantia de que a empresa resolveria investir no
aplicativo composto. Pode haver outros problemas mais
prioritários para o negócio.
4
Serv
Inf
Autos
Filtra
Recebe
Se a área de desenvolvimento corporativo e as unidades de negócio
da empresa do Dave tivessem decidido que a implementação do
aplicativo de viagem construído por ele era bastante importante para
ser capitalizado, a equipe corporativa poderia implementar um
aplicativo similar àquele da Figura 3. O desenvolvimento dessa solução
sistemática apresenta vários problemas:
2. O desenvolvimento sistemático envolve casos de uso, algum
tipo de modelagem de processo e entrevistar os participantes.
Tudo isso leva tempo.
Converte
Itinerário
THE ARCHITECTURE JOURNAL
Sucesso
Nova
reserva
hotel
Sucesso
Routeia
SQL
Vôos
Nova
reserva
hotel
SNA
PL/1
Hotéis
• Journal 13 •
RFC SAP
Locadora
Locadora
www.architecturejournal.net
O Barramento de Serviços para a Internet
"
seu site PHP pessoal dirigido a banco de dados;
"
portal de colaboração familiar por meio do http://www.twiki.org/;
"
presença em espaços como no Windows Live Spaces (http://home.
Figura 4: Um barramento de serviços para a internet
services.spaces.live.com/).
Serviços de
Identidade
Conectividade
Don, amigo do Dave, pode inscrever-se com o componente de
identidade do ISB e criar uma ID de usuário [email protected]. Dave pode
usar a IU web do componente da identidade para especificar quais
URIs ISB podem ser acessadas pelo Don. Dave também pode definir
grupos e conceder acesso aos grupos. Don pode ter acesso aos URIs
depois de estar conectado no ISB. O ISB simplifica o gerenciamento de
segurança do Dave porque ele pode manter um banco de dados
centralizado e, depois, autorizar o "ISB" a acessar sua página wiki e
outros recursos. O ISB protege os recursos atuais por meio do controle
de acesso dos URIs ISB que os antecedem. O ISB tem como benefício
um único espaço para que Dave defina e atualize identidades, grupos,
recursos e diretivas de acesso para todos os seus "serviços" na web.
Workflow
fornecidos por outros sites. ISBs, empresas que hospedam web PHP e
armazenamento como serviço, tipo S3 da Amazon, são exemplos de
infra-estrutura de implementação de aplicativo de SaaS. Isso contrasta
com Salesforce.com o qual, de início, era aplicativo SaaS comercial.
O conceito básico do ISB está construído ao redor do espaço URI
(Uniform Resource Identifier). A equipe de Dave que trabalha no
aplicativo registra e é "proprietária" do site URI
O ISB oferece uma função de identidade e acesso para controlar quais
http://ISB.net/DaveAndTeam. URIs abaixo dessa raiz representam
pontos de integração do aplicativo e são similares a destinos nas filas
do Java Messaging Service em middleware orientado a mensagem ou
tópicos em sistemas com o padrão publicação/assinatura. A equipe
desenvolve um aplicativo ISB pela associação de diretiva e função com
URIs. O aplicativo composto é um conjunto de URIs, diretivas e
funções.
O ISB oferece uma função de identidade e acesso para controlar quais
mensagens podem ser enviadas a um URI e por quem. A função de
identidade e acesso é um exemplo de associação de diretiva com um
URI.
Como exemplo, Dave poderia escolher manter uma página wiki em
um website público que mostrasse suas reservas de viagens. Ele
desejará controlar o acesso à página wiki. Configurar e atualizar
bancos de dados de autenticações e autorizações em seu website
pessoal pode ser entediante. O problema ficará mais complexo se
Dave tiver páginas e dados em vários websites, por exemplo:
Figura 5: Processamento de mensagem ISB
XML HTML
E-mail
"LE-"
XML
"OL"
Cancela
HTTP POST
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
Acabamos de descrever ações explícitas de usuário por meio de
páginas da web. Outra abordagem bastante comum será a de ter
aplicativos nas extremidades que participem das APIs de Web Services
que utilizam o aplicativo composto para ter acesso ao ISB.
O componente da identidade também dará suporte às funções do STS
(Security Token Service) do WS-Security, e fará a federação com outros
STSs. Isso permite ao Dave gerenciar o acesso a identidades não
registradas no ISB. Se foo.bar fosse uma empresa em que Dave confia
e se esta implementar um STS, Dave poderá definir diretivas de acesso
para identidades autenticadas em foo.bar.
Com o tempo, os ISBs oferecerão outras diretivas e implementações
que podem ser aplicadas aos URIs. Os exemplos podem incluir WSReliableMessaging (troca confiável de mensagens em Web Services) ou
registro implícito de mensagens. O conceito é similar à associação de
diretivas de qualidade de serviço com conexões em middleware
orientado a mensagem.
O ISB aproveita as capacidades de identidade e acesso para fornecer
"conectividade universal segura" aos aplicativos – mesmo para aqueles
protegidos por firewalls. Isso inclui suporte para ampla gama de
padrões e protocolos de conectividade. Entre os exemplos incluem-se
HTTP orientado a REST, WS-* e padrões dirigidos a evento
encontrados em muitos aplicativos corporativos. Especificamente, o
componente de conectividade do ISB oferece três funções básicas:
1. Transmissão: possibilita a comunicação entre o ISB e os
aplicativos protegidos por firewalls. Existem muitas técnicas para
realizar esta capacidade (BizTalk Labs, vide Referências). A função
de transmissão elimina a necessidade de configurar conexões
sistemáticas em toda a empresa para cenários simples.
2. Protocolo: oferece um conjunto de protocolos comuns para a
troca de mensagens, como WS-* ou REST. O ISB também fornece
mapeamento de protocolo para conexão automática de
extremidades utilizando protocolos diferentes. Por exemplo, é
possível conectar um “feed” RSS a uma conexão de mensagens
WS-*, sem necessidade de modificar nenhum dos aplicativos.
3. Funções: oferecem suporte para associar funções simples tipo
ESB ao URL. Entre os exemplos seria possível incluir distribuição
múltipla (multicast), WS-Eventing (eventos de Web Services), troca
de mensagens persistentes, etc.
5
O Barramento de Serviços para a Internet
A camada de conectividade opera no nível da infra-estrutura de
tecnologia. Simplifica o desenvolvimento da solução removendo a
complexidade graças a vários "encanamentos", por exemplo, REST vs
WS-*. Os projetos que devem implementar a integração da infraestrutura neste nível incorrem em custo e risco significativos. O ISB
elimina esses problemas.
A camada de conectividade desconhece os elementos no nível do
aplicativo e os formatos das mensagens. A construção de um
aplicativo composto exige adaptação entre formatos diferentes de
mensagens implementados pelos serviços conectados. Um exemplo
das funções do ISB poderia ser a conversão de parâmetros de um
comando HTTP GET em elementos de uma mensagem XML. O ISB
oferece um workflow simples (coreografia do serviço) que fornece
suporte para mapeamento no nível do aplicativo (Figura 5).
O ISB oferece um conjunto de "atividades-modelo" para funções
simples. Um workflow é um gráfico composto de modelos de atividade
de instanciação. Suponha que a empresa aérea emita status de vôos por
meio de um feed RSS e parte do aplicativo do Dave espera receber
notificações das atualizações pelo WS-Eventing. A camada de
conectividade é compatível com a integração de RSS e WS-*. Ainda é
necessário converter a carga da mensagem do formato RSS para o
formato de evento XML esperado pelo aplicativo do Dave. Em geral, o
ISB oferecerá um modelo de atividade configurável e reutilizável para o
mapeamento RSS para XML.
Outro modelo de atividade comum será o roteamento baseado em
seleção. O aplicativo do Dave pode emitir uma mensagem de
cancelamento: cancel car reservation ID=1234. Se os códigos de reserva
de uma locadora de autos começam com "LE-" e os de outra com "OL",
o aplicativo do Dave pode enviar eventos de cancelamento para um
único URI ISB. A seguir, o seletor processa a mensagem roteando-a para
a extremidade correta.
Combinar atividades de processamentos de mensagens mais
complexos pode ser útil e será uma função comum dos ISBs. Como
exemplo, a Figura 6 apresenta as atividades do URL que Dave define
para recebimento da mensagem de cancelamento da reserva do carro:
3. Converte a mensagem para o formato esperado pela locadora,
ou seja:
a) e-mail em HTML para um provedor
b) HTTP POST para o segundo provedor
Construir funções para processamento de mensagens pode ser
bastante simples. Muitos dos cenários de aplicativos comuns são
instanciações simples de padrões e modelos. Um provedor de ISB
oferecerá uma simples ferramenta de desenvolvimento de aplicativo
baseada em web que permite aos programadores selecionar modelos
de atividade e definir parâmetros de configuração por meio de um
formulário web. No caso do roteamento, o formulário web permitiria
ao programador especificar o campo da mensagem para roteamento e
os valores da respectiva tabela. Com o tempo, os ISBs oferecerão
ferramentas mais poderosas, como as ferramentas de processamento
de mensagens do BizTalk. O processamento de mensagens
(roteamento, conversão, etc.) é suficientemente robusto para muitos
cenários de aplicativos. Contudo, para outros cenários, é preciso ter
seqüenciamento simples e fluxo de controle. Imagine a tarefa de fazer
uma reserva de hotel em Dallas quando Dave estiver atrasado. Uma
descrição simples do processo poderia ser:
“SOFTWARE COMO SERVIÇO" TOTAL É UM MITO.
TODAS AS SOLUÇÕES SAAS REPRESENTATIVAS
INCLUIRÃO, EM ALGUM MOMENTO, UM ITEM DE
SOFTWARE INSTALADO NO LOCAL: UM HÍBRIDO.
QUASE TODOS OS CENÁRIOS QUE UTILIZAM ISB
E SAAS SÃO, NA VERDADE, HÍBRIDOS DE
SOFTWARE INSTALADOS NO LOCAL E
EXTERNAMENTE. SOFTWARE + SERVIÇOS É O
TERMO PARA O MODELO HÍBRIDO".
1. Enviar um pedido de reserva para a cadeia de hotel AAA
2. Receber uma resposta.
1. Recebe a mensagem de cancelamento em XML utilizando WS-*.
3. Se bem-sucedido, sair
2. Possui uma atividade que extrai o elemento de ID da reserva e
consulta o prefixo em uma tabela.
4. Enviar um pedido de reserva para a cadeia de hotel BBB
5. Se bem-sucedido … …
As atividades de workflow ampliam o processamento de
mensagens com modelos de atividades de fluxo de controle
como while, if ... then …, etc. Os ISBs acrescentarão suporte,
por incrementos, para workflow simples para ampliar o
processamento básico de mensagens.
Figura 6: Processamento de mensagem ISB
Feed
Recebe
6
Converte
Serv
Inf.
Autos
Converte
Cancela
Filtra
Nova
reserva
hotel
Sucesso
Nova
reserva
hotel
Sucesso
O workflow pode parecer um conceito complexo e as
soluções corporativas de workflow sistemático são robustas
e complexas. Por outro lado, os workflows para aplicativos
específicos e oportunistas, em sua maioria, são
extremamente simples. A estrutura não é significativamente
mais complexa do que diagramas simples do PowerPoint.
Existe uma pequena coleção de figuras para conexões e
formatos para que o programador defina propriedades aos
formatos, expressando o comportamento da atividade
Muitos dos processos de workflow tendem a ter a estrutura
de uma lista aninhada. Isso permite que ferramentas
simples possam construir os XSD simples pode fornecer a
estrutura para documentos XML que definem um workflow
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
O Barramento de Serviços para a Internet
Se a empresa reutilizar o aplicativo específico para várias
conferências, uma solução sistemática poderá emergir da
solução oportunista. A solução oportunista proporciona um
conjunto concreto de casos de uso para a solução sistemática.
Também pode fornecer métricas para determinar quais
aspectos do aplicativo são utilizados com mais freqüência.
Figura 7: Um ecossistema e modelo do negócio
Modelos
Instanciar
Fornecedores de
software
Integradores
Comunidades
Feed
Transform
Feed
Receive
Inform
Car
Service
Filter
Transform
Feed
Receive
Receive
Transform
Inform
Car
Service
Transform
Cancel
Transform
Cancel
Filter
Feed
Transform
Filter
Receive
New
Hotel
Reservation
New
Hotel
Reservation
Inform
Car
Service
New
Hotel
Reservation
New
Transfor
m
Cancel
Hotel
Reservation
Filter
Success
Transform
Success
Inform
New
Car
Hotel
Succes
Servic
e s
Reservation
New
Hotel
Reservation
Cancel
Success
Success
New
Hotel
Reservation
New
Hotel
Reservation
Success
Success
Success
Barramento de serviços para Internet
...
S1
S2
S3
S3
de lista aninhada. Uma ferramenta visual permite ao programador
especificar as atividades e seus implementos ou conexões com serviços
externos. Muitos programadores conhecem esse modelo pois os
frameworks de IU da web quase sempre fornecem um conceito similar
para fluxos e transições de páginas (Struts, por exemplo).
Quase sempre, as soluções sistemáticas de workflow são complexas
porque são de missão crítica e dão suporte a aplicativos utilizados por
milhares de pessoas. A modelagem e o mecanismo do processo devem
ter condições de expressar todas as funções do processo e administrar
condições de erro mais complexas, aprovações, etc. Em contraposição,
para soluções mais oportunistas e específicas, um pequeno grupo de
pessoas usa o workflow e a equipe está constantemente estudando suas
possibilidades para aprimorá-las.
Objetivos de nível de serviço
Empresas que implantam aplicativos no ISB desejarão definir contratos
de nível de serviço (SLAs) especificando tempo de resposta, taxa de
transferência, disponibilidade, etc. O SLA determinará o custo cobrado
pelo provedor de ISB. O problema geral de se executar SLAs para
aplicativos arbitrários é enorme. Contudo a tarefa do ISB é mais
simples, pois não implanta código de usuário arbitrário. Instanciar e
configurar modelos pré-construídos para atividades de diretiva,
publicação/assinatura e workflow, por exemplo, restringem os
aplicativos. Isso simplifica executar SLAs, custo previsível e integridade.
Uma arquitetura de referência de software + serviços para
aplicativos oportunistas litantes.
A Figura 7 apresenta uma visão geral de extremo alto nível sobre
como se juntam as peças deste artigo. Primeiramente, o barramento
de serviços para a Internet é universal e faz a conexão de todos os
sistemas e servidores. Haverá muitos aplicativos compostos nos quais
alguns elementos estão no "ESB" e outros, no ISB. Aplicativos
compostos multiorganizacionais são um exemplo óbvio que
implantaria elementos em um ISB na "nuvem". Outra possibilidade são
os aplicativos compostos uniorganizacionais, de curta duração. Por
exemplo, um aplicativo composto que a empresa utiliza para
administrar uma conferência interna. Reutilizar uma plataforma de
software pré-configurada e instalada na "nuvem" pode ser mais
eficiente do que adquirir, instalar, configurar e dar suporte a itens de
hardware e software para executar o aplicativo internamente.
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
...
Terceiros farão a conexão de serviços de valor agregado ao
ISB. O primeiro tipo serão os serviços de infra-estrutura como
um mecanismo de workflow mais robusto ou um banco de
dados em XML com consulta integrada. Os programadores
podem incluir esses serviços em suas soluções conectando-os
aos URIs dos seus aplicativos. Esses serviços de infra-estrutura
são um exemplo de como terceiros podem fazer parte do
ecossistema fornecendo infra-estrutura avançada como
serviço.
O segundo tipo serão os serviços reutilizáveis do negócio, por
exemplo, um serviço pré-construído para atualização das
informações e catálogos de produto. Outro exemplo poderia
ser a programação da sala de conferências para convenções. Como,
por exemplo, um terceiro que passa a fazer parte do ecossistema pela
adição de um serviço de "bloco de construção" de aplicativo. O
aplicativo composto do ISB pode usar o bloco de construção
conectando um URI do aplicativo composto ao bloco de construção.
Por fim, os integradores do sistema e os fornecedores de soluções
oferecerão produtos configuráveis e extensíveis como modelos. Um
terceiro pode oferecer uma solução configurável que dá suporte a
muitas funções de gerenciamento de conferências/convenções. Um
fornecedor de aplicativo comercial pode oferecer a vantagem do "teste
e compre". Em lugar de entregar um CD que exige instalação do
aplicativo e pré-requisitos, o provável cliente pode simplesmente
instanciar uma versão na "nuvem".
A comunidade é um importante aspecto da Web 2.0. Pode ser, na
verdade, o aspecto mais importante. Os serviços de infra-estrutura,
blocos básicos de construção de aplicativos e modelos de solução
também surgirão em meio a uma comunidade associada com ISBs,
que oferece e compartilha código. A comunidade também
proporciona um fórum de suporte de auto-atendimento e estabelece
o renome de provedores de "software como serviço".
Software + serviços
"Software como serviço" total é um mito. Todas as soluções SaaS
representativas incluirão, em algum momento, um item de software
instalado no local: um híbrido. Alguns elementos de uma solução
instanciada residirão no barramento (workflows, por exemplo); outros,
em serviços conectados ao barramento (como um sistema de
gerenciamento de conteúdo XML) e alguns serão "instalados" no local.
Quase todos os cenários que utilizam ISB e SAAS são, na verdade,
híbridos de software instalados no local e externamente.
Em outro exemplo, imagine um provedor de armazenamento de
dados usado por Dave para armazenar os itinerários do seu aplicativo.
Ler/atualizar o itinerário sempre por acesso remoto fragiliza o
processo. Provavelmente, o fornecedor de armazenamento fornecerá
um pacote de software instalado no local e no PC para otimizar o
acesso aos dados por meio de cache, replicação, controle de versões,
etc. Software + serviços é o termo para o modelo híbrido.
7
O Barramento de Serviços para a Internet
Conclusão
Várias tendências se agrupam para transformar de modo radical o
modelo de aplicativo web. Atualmente, a web primária possibilita a
conexão de pessoas a documentos e aplicativos. A transformação
fundamental trata de imaginar a Internet e a web como uma
plataforma na qual os aplicativos podem ser executados. Os
profissionais com habilidades básicas de programação escrevem
aplicativos pessoais que aumentam a eficiência do uso que fazem da
web. Eles compartilharão esses aplicativos com amigos e colegas que
entendem um pouco menos de computadores. Comunidades surgirão
e proporcionarão outra abordagem da disseminação de uma solução
pessoal que se multiplica na comunidade.
Inevitavelmente, os elementos dos aplicativos pessoais se "transferirão
para a nuvem”. A principal fonte será o uso amplo de PCs "virtuais" que
se instalam com base nos dispositivos próximos e do usuário. Em lugar
de usar um notebook em um quarto de hotel, o PC se instalará a partir
do celular do viajante que usará o teclado, a conexão da TV e da
Internet no quarto. É possível instalar uma máquina virtual (VM Virtual Machine) que tenha apenas o software necessário para
implementar um cenário específico. A VM ainda oferece:
"
isolamento do aplicativo;
"
administração do usuário final da implementação de um modelo
conceitual similar ao modo como o usuário gerencia Pcs;
"
exploração natural de processadores escalados com base em
processadores de vários núcleos.
As vantagens para a empresa da convergência dessas tendências
inclui:
"
aprimoramento significativo na produtividade e no moral do
funcionário. O trabalho fica menos entediante, mais concentrado nas
tarefas importantes do negócio e, provavelmente, mais divertido.
Maior agilidade e capacidade de ação pois o desenvolvimento e a
modificação do aplicativo podem acontecer em horas, não em meses.
Uma tecnologia-chave que possibilitará essas transformações será um
barramento de serviços para a Internet. A SOA, os Web Services e
mashups permitem o rápido desenvolvimento de aplicativos
compostos que integram, personalizam e ampliam os blocos de
construção dos aplicativos básicos. Possibilitar que esses compostos
cheguem à web é o próximo maior salto e um aspecto primordial da
Web 2.0. O elemento crítico para cumprimento da promessa é um
barramento de serviços para a Internet. Além disso, para permitir o
desenvolvimento de um aplicativo flexível, o ISB permite a existência
de um ecossistema de provedores de software. As capacidades do ISB
oferecem suporte à emergente população de profissionais com
conhecimentos de programação admitidos na força de trabalho,
especialmente o desenvolvimento crescente pela comunidade de
aplicativos tipo cauda longa (long tail)
(http://www.microsoft.com/brasil/msdn/Tecnologias/arquitetura/Long
Tail.mspx). A teoria unificadora do universo computacional é a de
software + serviços e o ISB é a pedra fundamental desse novo modelo
de aplicativo.
Biztalk Labs
http://labs.biztalk.net
Enterprise Application Integration (EAI)
http://en.wikipedia.org/wiki/Enterprise_application_integration
Barramento de serviço corporativo
http://en.wikipedia.org/wiki/Enterprise_application_integration
Mashup
http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)
Modelo-Visão-Controlador
http://en.wikipedia.org/wiki/Enterprise_application_integration
OASIS Web Services Reliable Messaging (WSRM) TC
www.oasis-open.org/committees/wsrm/
SAP RFC
http://en.wikipedia.org/wiki/ABAP
Processamento direto (STP - Straight-Through-Processing)
http://en.wikipedia.org/wiki/Enterprise_application_integration
Struts
http://struts.apache.org/
Casos de uso
http://en.wikipedia.org/wiki/ABAP
WS-Eventing
http://www.w3.org/Submission/WS-Eventing/
WS-Security Security Token Service
http://sts.labs.live.com/
Zorro's ISB Blog
http://zorroisb.spaces.live.com
Sobre os autores
Dr. Donald Ferguson é Technical Fellow da Microsoft em plataformas
e estratégia na função de CTO. O seu enfoque está no papel evolutivo
e revolucionário da tecnologia da informação nos negócios. Antes de
ingressar na Microsoft, Don era Fellow da IBM e arquiteto-chefe do
grupo de software do SWG (Software Group) da IBM e presidiu o SWG
Architecture Board (SWG AB) que se concentrava na integração de
produtos, iniciativas de produtos inter-relacionados e tecnologia
emergente incluindo Web Services, padrões, Web 2.0 e
desenvolvimento dirigido a negócio. O principal hobby de Don é
caratê (Kenpo). Em dezembro de 2005 ele tornou-se faixa preta.
Dennis Pilarinos é diretor técnico sênior de Connected Systems, uma
divisão da Microsoft. Para conhecer outros detalhes do trabalho que
ele realiza, visite o seu blog em www.dennispi.com.
BizTalk Adapter
http://msdn2.microsoft.com/EN-US/library/aa744368.aspx
John Shewchuk dirige a equipe de estratégia de tecnologia de
Connected Systems (CSD), uma divisão da Microsoft. Na CSD, John
trabalhou no desenvolvimento da plataforma de aplicativos da
Microsoft inclusive nas tecnologias de troca de mensagens como o
produto Windows Communication Foundation, especificações para a
interoperabilidade de Web Services como o WS-Security e em
tecnologias de identidade e acesso como o InfoCard. John foi cofundador da equipe Indigo e foi um condutor-chave da
interoperabilidade entre setores. Com outros componentes da equipe
Indigo, John liderou o desenvolvimento da arquitetura e das
especificações dos Web Services e gerenciou as negociações técnicas
com ampla gama de parceiros do setor.
8
THE ARCHITECTURE JOURNAL
Referências
• Journal 13 •
www.architecturejournal.net
Perfil do The Architecture
Journal: Ray Ozzie
Ray Ozzie é arquiteto-chefe de software da Microsoft, e
assumiu a função de Bill Gates em junho de 2006.
Coincidindo com o tema desta edição do The
Architecture Journal, nós nos encontramos com Ray para
saber qual é a sua visão do tema software + serviços e
conhecer algumas de suas idéias sobre o que é tornar-se
um arquiteto de software
AJ: Muitos leitores talvez tenham ouvido o seu discurso na MIX
deste ano sobre software + serviços. Poderia dissertar um pouco
sobre a sua visão?
RO: Existem mudanças fundamentais que continuamente acontecem
em nosso setor, com relação ao preço dos diferentes tipos de
componentes e o custo da comunicação. Há cerca de cinco anos, mais
ou menos, descobrimos a necessidade de reavaliar as arquiteturas
corretas para sistemas baseados nas mudanças que ora ocorrem. Hoje,
a confluência do processamento barato, com o armazenamento
barato e as comunicações baratas está nos forçando a reavaliar a
posição em que colocamos a computação para produzirmos soluções
e resolvermos problemas.
Inicialmente, a web foi construída para um mundo de largura de
banda de baixa velocidade, utilizando cliente magro ou terminal
smart, e assumiu largura de banda bastante lenta sendo a maior parte
do poder de computação aplicado ao nível de serviço. Na era clienteservidor, tivemos uma rede de largura de banda de alta velocidade no
âmbito corporativo que equilibrou o processamento no cliente e no
servidor. Em vista das mudanças em computação, armazenamento e
comunicações, como setor e empresa, estamos refletindo sobre o valor
que entregamos aos nossos clientes e analisando qual a melhor forma
de equilibrar o que acontece no cliente, no servidor corporativo e nos
serviços para atender aos vários cenários.
Estamos passando por uma mudança bastante radical no modo de
produzirmos soluções. Acredito, verdadeiramente, que a resposta
nunca está nos extremos, a não ser que realmente haja forte restrição,
como um canal de comunicação magro. Existem algumas soluções
que serão entregues como serviços puros. Basta ir a um navegador:
você realiza a transação, obtém as informações desejadas e faz o que
precisa ser feito. Existem outras situações nas quais, estando em
trânsito, a conectividade com a Internet é menos confiável
dependendo do local. Nesses ambientes, o extremo oposto é
verdadeiro: você deseja transportar o maior volume de dados possível
no seu enorme disco rígido e ter pronto acesso a ele.
Por exemplo, no começo o PC armazenava principalmente
documentos. Agora, lógico, tudo tem a ver com a mídia. As pessoas
tiram fotos digitais, carregam enormes bibliotecas nos discos rígidos,
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
armazenam suas músicas, etc. Até as câmaras de vídeo digitais estão
aumentando. Isso quer dizer que todos os seus filmes pessoais estarão
nos PCs? Ou replicados entre os seus PCs? Acredito que esta é uma
enorme oportunidade para o nosso setor de estudar, solução por
solução, e perguntar qual a melhor forma de equilibrar o uso de
código de cliente e serviço.
AJ: Parece que muitas dessas soluções se ajustariam a um
espectro de clientes baseados em navegador e interação rica. No
âmbito desse espectro você vislumbra o surgimento de tipos de
padrões arquiteturais diferentes?
RO: Vários padrões estão surgindo, embora não saibamos, ainda, o
que serão exatamente. Os padrões para escala horizontal são os mais
desafiadores e interessantes neste momento, acredito. O que está
muito claro é que, para qualquer serviço de alta escala, é preciso ter
em mente a imagem de uma máquina virtual que você escala de
acordo com as suas necessidades. Neste momento, refatorar o seu
aplicativo para uma expansão horizontal e não vertical, fazendo-o
também extensível em termos de escopo muito largo ou estreito é,
provavelmente, o mais interessante.
Determinados padrões de projeto, como MapReduce, são, claramente,
padrões de projeto escaláveis horizontalmente, mas estes resolvem um
conjunto relativamente pequeno de problemas se comparado ao
grande número de aplicativos corporativos que temos hoje em dia.
Com o tempo, finalmente, descobriremos um meio termo e
acabaremos com frameworks que pensam sobre seu aplicativo em
camadas. Essas camadas, desde que ajustadas ao padrão, devem ser
escaláveis horizontalmente.
9
Perfil do The Architecture Journal: Ray Ozzie
AJ: Na medida em que esses padrões surgem ou os frameworks
são disponibilizados, na sua opinião, qual a diferença da visão
software + serviços dos consumidores em relação à visão das
corporações?
RO: Essa é uma boa pergunta. Não tenho certeza de que os padrões
sejam todos assim tão diferentes, exceto a única coisa na empresa que
não existe no espaço do consumidor: o servidor corporativo. Se você
estiver na empresa e construir sistemas para seus clientes, será igual a
construir sistemas para consumidores. Se estiver construindo para
funcionários, haverá mais problemas de integração de sistemas.
Provavelmente você desejará construir soluções com algum tipo de
afinidade com outro servidor local, na mesma geografia, e localizar
esses servidores com base em padrões de acesso a dados pode ser
bastante significativo. Mas, com o tempo, cada vez mais vejo empresas
adotarem a prestação de serviços; inicialmente para infra-estrutura
como serviços de e-mail e outros de nível básico, antes de passar para
os aplicativos corporativos.
AJ: Na medida em que os leitores pensam mais sobre adotar o
modelo software + serviços, onde devem começar hoje? E como
saberão que serão bem-sucedidos?
RO: Vou começar pela última. Se estiverem tentando alcançar metas e
objetivos, serão bem-sucedidos. Agora, quanto a onde começar, no
meu ponto de vista, recomendaria tornar-se extremamente fluente em
tecnologias, tanto da perspectiva de desenvolvedor como de designer.
Para a plataforma Microsoft, isso significa entender de Expression
Studio e Visual Studio. Depois, continue, explore e faça protótipos de
coisas em WPF (Windows Presentation Foundation) no Vista: é uma
ferramenta surpreendentemente robusta. Como você sabe, comecei a
programar na década de 1960 e, nesse tempo, havia um modelo de
programa na cabeça da gente. Começava com o comando main e a
partir daí você escrevia. Em dado momento, o comando passou a ser
WinMain e transformou-se mais em um modelo baseado em evento.
O novo modelo de programação começa quando você pensa em um
modelo declarativo, iniciando com XAML e uma tela para construir o
seu aplicativo nessa base.
"NESTE MOMENTO, REFATORAR O SEU
APLICATIVO PARA UMA EXPANSÃO HORIZONTAL
E NÃO VERTICAL, FAZENDO-O TAMBÉM
EXTENSÍVEL EM TERMOS DE ESCOPO MUITO
LARGO OU ESTREITO É, PROVAVELMENTE, O
MAIS INTERESSANTE".
Este novo modelo é diferente: a gente começa fazendo o protótipo
com ele, sem imaginar o poder e o nível de produtividade que se
adquire assim que adotar esta nova forma de pensar. A prototipagem
o leva para uma nova perspectiva em que se começa a pensar...
"Nossa"! Agora entendo como pude construir algo em Silverlight e
implantá-lo rapidamente em todos os sistemas com um navegador".
Seguir essa abordagem será muito mais fácil do que descobrir como
escrever em JavaScript para os vários tipos de navegadores.
AJ: Você mencionou uma relação entre designers e
desenvolvedores. Historicamente, eu diria que esses profissionais
não se comunicaram tão bem quanto deveriam. Você vê
mudanças nesse comportamento com essa nova onda
tecnológica?
Ray Ozzie
Arquiteto-chefe de estratégia (CSA), Microsoft Corporation
Ray Ozzie, visionário do setor e
pioneiro no trabalho cooperativo
apoiado por computador, é
arquiteto-chefe de software da
Microsoft. Ray assumiu o cargo de
arquiteto-chefe de software em
junho de 2006, quando o
Ray Ozzie
presidente Bill Gates anunciou seu
desejo de abdicar de suas
responsabilidades diárias na Microsoft até julho de 2008. No seu
cargo de CSA, Ray é responsável pela supervisão da estratégia
técnica e a arquitetura de produtos da empresa. Ray também
supervisiona o desenvolvimento da próxima geração de plataformas
de serviços de software da empresa.
Anteriormente, de abril de 2005 a junho de 2006, Ray era executivo
de infra-estrutura da área de tecnologia (CTO – Chief Technology
Officer). Assumiu o seu cargo em abril de 2005, depois que a
Microsoft adquiriu a Groove Networks, uma empresa de software
colaborativo de próxima geração fundada por ele em 1997.
Antes da Groove, Ray fundou e era presidente da Iris Associates,
empresa na qual criou e liderou o desenvolvimento do Lotus Notes.
Antes disso, contribuiu para o desenvolvimento do Lotus Symphony
e dos produtos TK!Solver e VisiCalc da Software Arts; além disso,
10
esteve envolvido com o desenvolvimento dos primeiros sistemas
operacionais distribuídos da Data General Corp.
Ray formou-se em ciência da computação pela University of Illinois,
Urbana-Champaign, e lá conheceu a natureza e o significado dos
sistemas colaborativos e o trabalho em equipe apoiado por
computador durante o trabalho desenvolvido no projeto
embrionário da universidade denominado PLATO. Esse trabalho teve
grande influência na sua visão dos sistemas colaborativos e nos
projetos que assumiu em toda a sua carreira. Ao final do curso, teve
a honra de ser reconhecido como um dos melhores alunos da
escola.
Reconhecido também como um dos sete "Pioneiros do Windows",
Ray foi nomeado "Pessoa do ano" em 1995 pela PC Magazine, e foi
conduzido ao Hall da Fama do Computer Museum Industry e ao
Hall da Fama do InfoWorld. Em novembro de 2000 ele recebeu o
prêmio W. Wallace McDowell do Institute for Electrical and
Electronics Engineers (IEEE) Computer Society e, em 2001, foi
considerado um pioneiro em tecnologia do World Economic Forum.
Atuou como membro do Computer Science and
Telecommunications Board do Nacional Research Council e fez parte
do comitê do NRC, que produziu o memorável relatório CRISIS
sobre o impacto social da criptografia.
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
Perfil do The Architecture Journal: Ray Ozzie
RO: Em qualquer solução efetiva que tenha um elemento de projeto,
ambos precisarão encontrar uma forma de entender-se. Não há nada
que a Microsoft possa fazer para mudar o DNA, ou seja, o tipo de
pessoa que é um designer ou um desenvolvedor.
EQUILÍBRIO CERTO DO ENFOQUE SOBRE
TENDÊNCIAS INTERNAS E EXTERNAS QUE LHE
DARÃO A PERSPECTIVA QUE PRECISA".
O que eu tenho observado é que desenvolvedores e designers se
esforçam de formas diferentes. Alguns designers podem se aprofundar
no entendimento dos desafios enfrentados pelos desenvolvedores. E
alguns desenvolvedores podem entender mais efetivamente os
desafios enfrentados pelos designers. Ter ferramentas onde há
sobreposição, onde não existe uma fronteira absoluta entre uma
ferramenta de programação e outra, de desenvolvimento, é
extremamente importante e útil. O núcleo do Microsoft Expression
está realmente orientado para o designer. O trabalho realizado pelos
programadores traduz-se em XAML, o qual pode ser importado e
usado no Visual Studio por um desenvolvedor. Estou entusiasmado e
otimista sobre como ferramentas como essa unirão desenvolvedores e
designers resultando em benefício para o usuário.
AJ: Você está no setor de software há mais de 25 anos e,
nitidamente, é uma apaixonado por software e tecnologia. O que
mantém a constante motivação? O que o motiva a se levantar
pela manhã?
AJ: Atualmente, temos vários leitores do The Architecture Journal
ocupando cargos de desenvolvedores que aspiram tornar-se
arquitetos de software. Tendo em conta as suas
responsabilidades, como é o dia na vida de um arquiteto-chefe
de software da Microsoft?
AJ: Imagino que para fazer isso você deve ter um grande cabedal
em várias tecnologias. Posto isso, e considerando as equipes de
produto com as quais interage diariamente, como você se
mantém atualizado?
RO: No meu ponto de vista, a profissão de arquiteto trata de
compatibilizar padrões. Refere-se a estar exposto a ferramentas e
técnicas do ramo suficientes para que, com o tempo, você comece a
desenvolver um conjunto de padrões diferentes que trabalham em
diferentes situações. Isso é válido para a arquitetura de software e,
provavelmente, também para outros tipos de arquitetura. Quer você
construa pontes ou projete edifícios, está tentando aplicar padrões a
uma determinada situação.
O meu cargo na Microsoft é interessante porque existem arquitetos de
peso nos diferentes grupos de produtos, nas várias divisões da
empresa e eles estão realizando um ótimo trabalho com os seus
produtos. O meu papel é essencialmente relacional. Quero dizer, devo
entender como os clientes estão utilizando os vários produtos juntos
e, depois, me pergunto quais os padrões que vejo. Qual é a menor
coisa possível que eu poderia sugerir para uma equipe de produto,
para que pudesse refazer a arquitetura do produto para minimizar os
pontos de contato com outros produtos? Ou, por uma perspectiva do
negócio, qual a menor coisa possível que seria possível passar para
esses produtos para agregar valor para os nossos clientes e criar uma
vantagem competitiva para as nossas soluções no mercado. No nível
mais alto, meu conselho aos arquitetos aspirantes é o seguinte: pense
duas vezes. É preciso passar um tempo como programador para
entender os vários padrões existentes e reconhecer os atributos de
sistemas bem arquitetados para, então, passar para o próximo nível de
abstração das soluções que você estiver construindo.
AJ: Parece, então, que a habilidade de compatibilizar padrões
deve realmente passar pela experiência?
RO: Totalmente. Trata-se especialmente das coisas que ninguém gosta
de pensar no nível arquitetural. Por exemplo, características de
desempenho, E/S, confiabilidade... Você pode ter tido experiência com
um sistema que trabalha bem, frente a determinado nível de
complexidade, mas se utilizado em um ambiente mais dinâmico
poderia apresentar-se muito frágil. Isso só se aprende com a
experiência.
"NO NÍVEL MAIS ALTO, MEU CONSELHO AO
ARQUITETO ASPIRANTE É DESCOBRIR O
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
RO: Gosto de resolver problemas. Gosto do que é complexo e de
tecnologia. Tenho tido sorte porque logo no início da minha carreira
tive a oportunidade de trabalhar em sistemas implantados em larga
escala. Assim, de certa forma, sou um escravo do pensamento de
causar um grande impacto nas coisas que fazemos. Cada indivíduo
acorda pela manhã com diferentes motivações. Para mim, trata-se de
ser um construtor. Gosto de resolver problemas que possam
influenciar positivamente as vidas das pessoas.
RO: É realmente uma combinação interessante. A coisa mais fácil e
natural é simplesmente falar com as pessoas na sua área de influência
e entrar em contato com várias tecnologias, como parte do seu
trabalho. Mas, para ter sucesso a longo prazo, é preciso estar em
contato com as tendências e com o que está acontecendo
externamente, especialmente saber o que os clientes ou cada um dos
usuários está dizendo e fazendo.
Dedico boa parte do meu tempo à leitura de blogs, acompanhando
influenciadores específicos cujas opiniões são muito interessantes,
tanto as relacionadas aos nossos produtos como aquelas totalmente
dissociadas.
Compareço a uma combinação de conferências que denomino
"cabeça" e "cauda". Durante o ano, participo de algumas em que se
reúnem os influenciadores conhecidos do setor. Essas me permitem
rastrear as principais questões da concorrência ou, no mínimo,
conhecer as apresentações do que os concorrentes estão falando e
fazendo. Mas, eu também aprecio as conferências de cauda, onde é
possível ter uma noção mais próxima do que realmente está
acontecendo. Gosto de encontrar pessoas recém-formadas, que têm
idéias e entendem os tipos de escolhas tecnológicas que fazem e por
quê. No nível mais alto, meu conselho ao arquiteto aspirante é
descobrir o equilíbrio certo do enfoque sobre tendências internas e
externas que lhe darão a perspectiva que precisa.
AJ: Esse é, sem dúvida, um ótimo conselho. Em relação a isso, na
sua opinião, quais são as características que definem um
arquiteto de software eficiente?
RO: Os arquitetos mais eficientes com os quais já trabalhei são aqueles
que cumpriram suas obrigações. São aqueles que passaram muito
tempo nas "trincheiras" construindo e depurando sistemas bastante
complexos. Aprende-se muitas coisas consertando os defeitos das
outras pessoas. Quando alguma coisa falha e o responsável já saiu da
empresa, é possível aprender muito fazendo engenharia reversa ou
estudando a documentação. Quanto mais sistemas você puder
conhecer pelo lado de dentro, mais será possível desenvolver e
entender o que são boas e más práticas em padrões de programação.
Como disse antes, é essa biblioteca de padrões da sua mente que o
definirá como um arquiteto.
11
Projeto Astoria
por Pablo Castro
Resumo
O projeto Astoria produz um conjunto de padrões e
também uma infra-estrutura concreta para a criação e o
consumo de serviços de dados utilizando tecnologias da
web. Este artigo explora a mudança dos modernos
aplicativos e serviços web centralizados e o papel que o
Astoria pode desempenhar nessas novas arquiteturas.
O
s dados tornam-se cada vez mais disponíveis, como um
elemento de primeira classe na web. A proliferação de novos
tipos de aplicativos dirigidos a dados, como os mashups, indica
claramente que a ampla disponibilidade de dados auto-suficientes,
independentes de qualquer IU, está mudando a forma com que os
sistemas são construídos e, também, o aproveitamento dos dados.
Mais ainda, tecnologias como a do Asynchronous JavaScript and XML
(AJAX) e do Microsoft Silverlight estão introduzindo a necessidade de
mecanismos para a troca de dados independentemente da
apresentação de informações para dar suporte a experiências de
usuário altamente interativas.
O projeto Astoria oferece a arquitetos e desenvolvedores um conjunto
de padrões para a interação com serviços de dados sobre HTTP
utilizando formatos simples como POX (Plain Old XML) e JavaScript
Object Notation (JSON). O cumprimento à risca do protocolo HTTP
resulta em excelente integração com a infra-estrutura existente de
web, da autenticação a proxies e cache. Além dos padrões e formatos,
fornecemos uma implementação concreta que pode fazer surgir
automaticamente um esquema de modelo de dados de entidades
(EMD - Entity Data Model) ou outras fontes de dados por meio da
interface HTTP.
Ainda que a infra-estrutura de software oferecida pelo Astoria possa
ser uma peça útil do quebra-cabeça para a construção de novos
aplicativos e serviços web, é apenas uma peça. Outros elementos
desses aplicativos precisam ser organizados para permitir a interação
com dados pela web.
Neste artigo, tratarei dos aspectos arquiteturais que sofrem o impacto
das abordagens modernas do desenvolvimento de aplicativos
preparados para web, com enfoque em como os serviços de dados se
integram no quadro.
Separando os dados da apresentação
A nova geração de aplicativos web utiliza tecnologias como AJAX,
Microsoft Silverlight ou outras infra-estruturas de apresentação rica.
Uma característica comum de todas essas tecnologias é que elas
impõem uma mudança com respeito à forma com que os aplicativos
web são construídos.
A Figura 1 compara o fluxo de conteúdo nos tipos tradicional e
moderno de aplicativos web. Aplicativos web tradicionais dirigidos a
dados compreendem, tipicamente, um conjunto de páginas ou scripts
do lado do servidor, executado quando chega uma solicitação;
durante o processo, as páginas ou scripts executam algumas consultas
ao banco de dados e, então, processam o HTML que contém
informações de apresentação e dados nele incorporados.
Um aplicativo baseado em AJAX ou Silverlight não segue esse modelo
de interação. As informações de apresentação são despachadas para o
navegador web com o código para acionar a IU, mas sem os dados
verdadeiros. Essas informações de apresentação são, em geral, uma
combinação de aplicativos HTML, Cascading Style Sheets (CSS),
JavaScript for AJAX e Extensible Application Markup Language
(XAML)/ DLLs para Silverlight. Depois que o código está ativo e em
execução no cliente, a IU inicial é apresentada e os dados são
recuperados na medida em que o usuário interage com a interface.
Figura 1: Fluxo de conteúdo tradicional (à esquerda) e como o fluxo se modifica nos aplicativos web modernos (á direita)
Dados
010
1
010 01
1
101 00
101
0
1
Servidor Web
011
0
Servidor Web
10
Cliente
Cliente
Apresentação +
dados (por
exemplo, HTML
com dados
incorporados)
Apresentação
(por exemplo, HTML)
Servidor de
banco de dados
12
Servidor de
banco de dados
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
Projeto Astoria
Curiosamente, este novo ciclo de tecnologias está agindo como uma
função de força para transferir a organização do aplicativo na direção
de uma meta comum em muitas arquiteturas de aplicativos: separação
rígida entre dados e apresentação.
Pela perspectiva do servidor, apresentar os elementos da IU é
relativamente fácil. Na maioria das vezes, são simples recursos de
arquivo no servidor, como arquivos HTML ou CSS e arquivos de mídia.
Apresentar os dados é outra história. Até agora, a interação com
dados era algo que acontecia entre o servidor web e o servidor do
banco de dados; não havia necessidade de expor pontos de entrada
acessíveis do código, executado em toda a web, em um navegador
web ou algum outro agente de software. É neste ponto que entra o
projeto Astoria.
Interfaces de dados flexíveis
Há várias formas de expor dados aos clientes que os consumirão pela
web. Uma abordagem, possibilitada pelas tecnologias existentes, é
usar uma conduta similar à chamada de procedimento remoto (RPC Remote Procedure Call): as funções são expostas por meio da interface
como os Web Services (por exemplo, interface baseada no protocolo
SOAP ou uma convenção simples baseada em UTI para chamar
métodos e parâmetros de transferência). O Microsoft Visual Studio
oferece um conjunto de ferramentas comprovado, que facilita criar e
consumir interfaces construídas dessa forma. O conjunto de
ferramentas do ASP.NET AJAX leva isso para o próximo nível,
permitindo que Web Services criados com o Visual Studio trabalhem
com clientes AJAX.
O principal problema desta abordagem é a flexibilidade. Se a interação
com dados acontece apenas por meio de pontos de entrada fixos e
predefinidos, qualquer cenário novo ou variação dos existentes, com
dados pouco diferentes, exigirá, tipicamente, a criação de novos
pontos de entrada. Ainda que este nível de controle seja conveniente
em determinadas ocasiões, na maioria dos casos, maior flexibilidade
aumentará a produtividade do desenvolvimento e contribuirá para um
aplicativo mais dinâmico.
O projeto Astoria apresenta uma alternativa à abordagem RPC,
baseada na semântica simples do HTTP. O Astoria adota uma definição
de esquema que descreve cada uma das entidades com as quais o seu
aplicativo lida, mais as associações entre entidades expondo-as sobre
uma interface HTTP. Cada entidade pode ser endereçável com um
identificador de recurso uniforme (URI - Uniform Resource Identifier) e
a convenção do URI permite aos aplicativos atravessar as associações
entre entidades, pesquisar entidades e executar outras operações
normalmente exigidas com dados.
A definição do esquema utilizado pelo Astoria é o esquema de
modelo de dados de entidades (EMD - Entity Data Model),
diretamente compatível com o ADO.NET Entity Framework. O Entity
Framework também inclui um robusto mecanismo de mapeamento
que permite aos desenvolvedores mapear o esquema EDM em um
banco de dados relacional para o armazenamento efetivo.
Para demonstrar a interação com os serviços do Astoria, utilizarei um
exemplo com base no conhecido banco de dados Northwind. É
possível configurar um serviço de dados sobre o Northwind criando
um aplicativo ASP.NET, importando o esquema Northwind do banco
de dados em um esquema EDM, por meio do assistente ADM e,
depois, criar um serviço de dados Astoria voltado para aquele
esquema EDM.
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
As etapas detalhadas para a criação de serviços de dados Astoria,
assim como farta documentação sobre o URI Astoria e os formatos de
carga podem ser encontrados no documento “Using Microsoft
Codename Astoria”, disponível no website Astoria no endereço
http://astoria.mslivelabs.com.
Depois que o serviço estiver ativo e operacional, os URIs poderão ser
utilizados para examinar os recursos expostos pela interface de dados.
Os exemplos a seguir utilizam o serviço experimental do Astoria online que hospeda alguns serviços de dados read-only. Por exemplo:
http://astoria.sandbox.live.com/northwind/northwind.rs
e/Customers
retornaria todos os recursos do container recurso de clientes. No
formato XML-padrão, teria esta aparência:
<DataService xml:base=”http://astoria.sandbox.live.
com/northwind/northwind.rse”>
<Customers>
<Customer uri=”Customers[ALFKI]”>
<CustomerID>ALFKI</CustomerID>
<CompanyName>Alfreds Futterkiste</CompanyName>
<ContactName>Maria Anders</ContactName>
<ContactTitle>Sales Representative</ContactTitle>
<Address>Obere Str. 57</Address>
<City>Berlin</City>
<Region />
<PostalCode>12209</PostalCode>
<Country>Germany</Country>
<Phone>030-0074321</Phone>
<Fax>030-0076545</Fax>
<Orders href=”Customers[ALFKI]/Orders” />
</Customer>
<Customer uri=”Customers[ANATR]”>
...properties
</Customer>
...more customer entries
</Customers>
</DataService>
Pode-se também apontar para uma entidade específica utilizando
estas chaves:
http://astoria.sandbox.live.com/northwind/northwind.rs
e/Customers[ALFKI]
retornaria um recurso de cliente específico; novamente, utilizando o
formato XML no exemplo:
<DataService xml:base=”http://astoria.sandbox.live.
com/northwind/northwind.rse”>
<Customers>
<Customer uri=”Customers[ALFKI]”>
<CustomerID>ALFKI</CustomerID>
<CompanyName>Alfreds Futterkiste</CompanyName>
<ContactName>Maria Anders</ContactName>
<ContactTitle>Sales Representative</ContactTitle>
<Address>Obere Str. 57</Address>
<City>Berlin</City>
<Region />
<PostalCode>12209</PostalCode>
<Country>Germany</Country>
<Phone>030-0074321</Phone>
<Fax>030-0076545</Fax>
<Orders href=”Customers[ALFKI]/Orders” />
</Customer>
</Customers>
</DataService>
13
Projeto Astoria
Se o URI apontar para um recurso específico, como o que acabamos
de discutir, é possível não apenas recuperar o recurso utilizando um
comando HTTP GET, mas também atualizá-lo, utilizando HTTP PUT, ou
excluí-lo utilizando HTTP DELETE.
Como a descrição do esquema fornecido ao Astoria inclui associações
entre as entidades, estas podem também ser aproveitadas na interface
HTTP. Continuando com o exemplo, se cada recurso de cliente estiver
associado a um conjunto de recursos de pedidos, o seguinte URI
representará o conjunto de pedidos relacionado a um determinado
cliente:
http://astoria.sandbox.live.com/northwind/northwind.rs
e/Customers[ALFKI]/Orders
Além de ser capaz de apontar para recursos específicos e listar os
recursos de um container, também é possível filtrar, ordenar e paginar
os dados para facilitar a criação de IUs sobre o serviço de dados. Por
exemplo, para listar todos os recursos de clientes da cidade de
Londres, ordenados pelo nome do contato, o aplicativo pode usar este
URI:
http://astoria.sandbox.live.com/northwind/northwind.rs
e/Customers[City eq 'London']?$orderby=ContactName
O formato real do URI do Astoria ainda pode estar sujeito a mudanças,
mas a semântica e as capacidades devem permanecer relativamente
estáveis.
Em qualquer dos casos, os dados são trocados em formatos simples
como XML ou JSON. O formato real pode ser controlado pelo clienteagente utilizando negociação do tipo de conteúdo HTTP normal. Os
dados são codificados como recursos que simplesmente mapeiam
propriedades de entidades EDM em elementos XML ou propriedades
JSON, as quais estão vinculadas por hyperlinks a outros recursos com
os quais estão associadas. Por exemplo, o URI do exemplo anterior:
http://astoria.sandbox.live.com/northwind/northwind.rs
e/Customers[ALFKI]
resultaria na seguinte resposta (em XML):
<DataService xml:base=”http://astoria.sandbox.live.
com/northwind/northwind.rse”>
<Customers>
<Customer uri=”Customers[ALFKI]”>
<CustomerID>ALFKI</CustomerID>
<CompanyName>Alfreds Futterkiste</CompanyName>
<ContactName>Maria Anders</ContactName>
<ContactTitle>Sales Representative</ContactTitle>
<Address>Obere Str. 57</Address>
<City>Berlin</City>
<Region />
<PostalCode>12209</PostalCode>
<Country>Germany</Country>
<Phone>030-0074321</Phone>
<Fax>030-0076545</Fax>
<Orders href=”Customers[ALFKI]/Orders” />
</Customer>
</Customers>
</DataService>
inclui um URI que representa o seu local canônico (no atributo do URI
do elemento "Customer" acima).
Interação com dados da camada de apresentação
Existem várias opções para interação com fontes de dados da camada
de apresentação. O primeiro aspecto que definirá o escopo das
opções disponíveis para um determinado cenário é a natureza do
cliente (por exemplo, navegador vs cliente rico).
Como a interface do Astoria é apenas HTTP puro, quase todos os
ambientes com biblioteca de cliente em HTTP podem ser utilizados
para consumir serviços de dados. A interface foi especificamente
projetada para ser fácil de usar no nível HTTP; os padrões de URI são
simples e legíveis por humanos e os formatos de carga usam JSON ou
um subconjunto de XML que o mantém direto e simples.
Para aplicativos .NET, o conjunto de ferramentas Astoria inclui uma
biblioteca de cliente executável no ambiente do .NET Framework e
apresenta resultados provenientes dos serviços Astoria como objetos
.NET; não apenas é o mais fácil para os desenvolvedores, para uso no
âmbito da base de códigos do aplicativo cliente, mas também se
integra bem com componentes que já operam sobre objetos .NET
normais. A biblioteca oferece serviços ricos como gerenciamento de
gráfico, rastreamento de modificações e tratamento de atualizações.
(Vide Exemplo 1.)
A biblioteca de cliente do Astoria é executável tanto no .NET
Framework como no Microsoft Silverlight. Isso permite a criação de
aplicativos de desktop e baseados no Silverlight utilizando a mesma
API, por simples referência ao respectivo conjunto Astoria no
ambiente de destino.
Exemplo 1: Acessar um serviço Astoria do código .NET utilizando a
biblioteca de cliente do Astoria
WebDataContext ctx = new WebDataContext(
“http://astoria.sandbox.live.com/
Northwind/Northwind.rse”);
WebDataQuery<Customer> customers = ctx.
CreateQuery<Customer>(“/Customers?$orderby=CompanyNa
me”);
foreach(Customer c in customers) {
Console.WriteLine(c.CompanyName);
}
Você pode ver que a resposta inclui propriedades simples e hyperlinks
com outros recursos (“Orders” no exemplo). Cada recurso também
14
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
Projeto Astoria
Exemplo 2: Acessar um serviço Astoria de um aplicativo AJAX (o
exemplo usa a biblioteca ASP.NET AJAX)
function ListCustomers() {
var req = new Sys.Net.WebRequest();
req.set_url(“Northwind.svc/Customers?$orderby=Co
mpanyName”);
req.get_headers()[“Accept”] = “application/json”;
req.add_completed(onCustomersCompleted);
req.invoke();
Exemplo 3: Utilizar a API assíncrona no cliente Astoria para .NET
WebDataContext ctx = new WebDataContext(
“http://astoria.sandbox.
live.com/Northwind/Northwind.rse”);
WebDataQuery<Customer> q = ctx.
CreateQuery<Customer>(“/Customers[City eq 'London']”);
q.BeginExecute(
delegate(IAsyncResult ar)
{
}
function onCustomersCompleted(response)
{
if(response.get_statusCode() != 200)
alert(“Error retrieving customers: “ +
response.get_responseData());
else {
var res = response.get_object();
var html = “<ul>”;
for(var i = 0; i < res.length; i++) {
html += “<li>” +
res[i].CompanyName + “</
li>”;
}
html += “</ul>”;
// “Customers” is a DIV element defined in
the HTML document
$get(“Customers”).innerHTML = html;
}
}
No caso dos aplicativos web estilo AJAX, a maioria dos frameworks
AJAX inclui invólucros fácil de usar para acesso de HTTP para recursos
externos. Esses invólucros são até compatíveis com a materialização da
resposta em objetos JavaScript se você indicar que a resposta será
dada no formato JSON. (Vide Exemplo 2.)
Independentemente do tipo, os aplicativos serão executados em
ambientes com latência relativamente alta entre o cliente e o serviço
de dados, portanto o uso de técnicas típicas de execução assíncrona
deverá ser a norma. A API cliente tem suporte incorporado para
execução de requisição assíncrona. Para o caso de aplicativos AJAX, a
interface XMLHTTP, com a maioria dos invólucros, oferece suporte
para requisições de envio de modo assíncrono. (Vide Exemplo 3.)
Introdução à lógica do negócio
Com o Astoria, basta que o desenvolvedor aponte para um banco de
dados ou esquema EDM pré-construído para que uma visão HTTP seja
automaticamente gerada. Embora isso seja ótimo para as iterações
iniciais de um aplicativo, essa interface totalmente aberta quase nunca
será adequada à produção de aplicativos.
Em muitos bancos de dados, existe uma divisão relativamente clara
entre os dois tipos de dados (quase sempre, dois tipos de tabelas): há
uma parte dos dados com suficiente semântica implícita em si (isto é
válido para conceitos mais simples como a "categoria de produto").
Nesses casos, a lógica do negócio (em geral magra ou inexistente) e a
interface direta para os dados é o quanto basta. A outra parte dos
dados só faz sentido com alguma lógica do negócio à volta dela; por
exemplo, os dados apresentados precisam ficar restritos com base no
contexto, ou as modificações precisam transferir validações externas
ou, ainda, quando um determinado valor é alterado, outro efeito
colateral precisa acontecer, e assim por diante.
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
foreach (Customer c in q.EndExecute(ar)){
// process each customer
}
},
null);
Para tratar do requisito que permite a introdução da lógica do
negócio, rigidamente vinculada a determinadas peças de dados, o
Astoria é compatível com dois mecanismos de personalização:
operações e interceptores de serviço.
O serviço padrão do Astoria consiste inteiramente em containers de
recursos localizados nos pontos de entrada do gráfico de recursos
como, por exemplo, /Customers (clientes) ou / Products (produtos).
Além desses, os desenvolvedores podem definir as operações de
serviço que encapsulam a lógica do negócio e as consultas. Por
exemplo, em um determinado aplicativo, talvez não se queira listar
todos os clientes; em lugar disso, o aplicativo poderia oferecer um
ponto de entrada para listar os "meus clientes" e, ainda assim, poderia
haver um requisito em que os usuários pudessem recuperar, de cada
vez, os clientes de uma determinada cidade. O desenvolvedor pode
definir uma operação de serviço "MyCustomersByCity" (meus clientes
por cidade), que obtém a identidade dos usuários do contexto (da
propriedade ASP.NET's HttpContext.User, por exemplo), e depois
formular uma consulta que fatore a identidade do usuário e o nome
da cidade, transferida como um argumento. Por exemplo:
[WebGet]
public static IQueryable<Customer> CustomersByCity(No
rthwindEntities db, string city)
{
if (city == null || city.Length < 3) throw new
Exception(“bad city”);
var q = db.Customers.Where(“it.City = @city”,
new
ObjectParameter(“city”, city));
// add user-based filter condition to q
return q;
}
seria então invocável (callable) com um URI seguindo este padrão:
/MyCustomersByCity?city=Seattle
Um recurso interessante do Astoria é que as operações de serviço
podem optar por retornar uma consulta em lugar dos resultados reais,
como apresentado no exemplo anterior. Quando o objeto da consulta
retorna, o restante do padrão URI ainda pode ser usado; assim, por
exemplo, o cliente ainda poderia acrescentar uma opção "orderby"
(pedido por) ao URI.
/MyCustomersByCity?city=Seattle&$orderby=CompanyName
15
Projeto Astoria
A operação de serviço também pode conter código para realizar
validações, atividade de registro ou qualquer outra necessidade. Tal
condição oferece um bom meio termo entre o RPC rígido, que
dificulta a construção de IUs flexíveis e as interfaces de dados
totalmente abertas, que não permitem controlar os dados que fluem
pelo sistema.
Nos cenários para os quais se deseja preservar a interface centrada em
recursos, os interceptores podem ser usados. Um interceptor é um
método invocado sempre que uma determinada ação acontece em
um recurso no âmbito de um dado container de recursos. Por
exemplo, um desenvolvedor poderia registrar um interceptor para ser
invocado sempre que houver mudança (POST/PUT/DELETE) no
container de recursos dos produtos ("Products"). O interceptor pode
desempenhar validações, modificar valores e até escolher abortar a
requisição.
Extensibilidade e fontes de dados alternativas
Até o momento, falei do Astoria no contexto do EDM e do ADO.NET
Entity Framework. Utilizar o Astoria para revelar dados em um banco
de dados é, sem dúvida, a melhor opção; entretanto, nem todos os
dados estão em um banco de dados.
Na primeira CTP (Community Technology Preview) pública do Astoria,
tínhamos nos voltado apenas para o Entity Framework. Na medida em
que fazemos iterações do design do produto, estamos mudando isso
para oferecer mais opções. Especificamente, para criar cenários onde
se deseja expor fontes de dados, não bancos de dados, o suporte será
dado utilizando qualquer fonte de dados preparados para LINQ, a
serem expostos por meio da interface HTTP.
LINQ define uma interface geral denominada IQueryable: permite aos
consumidores compor consultas de modo dinâmico sem precisar
saber quaisquer detalhes sobre a natureza do alvo da consulta. É
responsabilidade da implementação atual da IQueriable de cada fonte
interpretar ou converter as consultas de modo apropriado. Isso
permite ao runtime do Astoria ter uma "consulta base" para compor
com operações como ordenação e paginação. (Vide Figura 2.)
Com a adoção desse ponto de extensibilidade, os desenvolvedores
poderão contar com um amplo conjunto de fontes de dados no
cenário, expondo-as por meio da interface HTTP. Isso vai do acesso a
Figura 2: Diagrama da arquitetura do Astoria ilustrando a
estrutura em camadas baseada em IQueryable
Canal de comunicação
(ex: HTTP por meio de WCF)
Adaptador de host
Runtime Astoria (tradução,
formato, diretivas URL...)
Interface de host
Astoria
repositórios de dados especializados ao uso de bibliotecas de acesso
baseadas em LINQ para serviços online (por exemplo, existem
implementações informais do LINQ para a Amazon e LINQ para o
Flickr que fornecem capacidades limitadas de consulta àqueles sites
da Internet).
Cenários de implantação: aplicações e serviços
Hoje, um aplicativo web típico, dirigido a dados, terá o seu próprio
banco de dados além de um ou mais servidores web. Para aplicativos
corporativos, esses servidores fazem parte da infra-estrutura de TI e
para aplicativos hospedados em ISPs, a maioria destes oferece serviços
de banco de dados.
Seguindo o mesmo pensamento, espera-se que muitos aplicativos
que usem o Astoria como o seu serviço de dados, construídos com
base no AJAX ou Silverlight, ainda assim tenham banco de dados
próprio. Nesses cenários, o serviço de dados do Astoria pode fazer
parte do próprio aplicativo web e, assim, serão implantados com os
demais componentes do aplicativo. Este é um dos cenários que temos
com alvo para o Astoria, mas não é o único que pretendemos.
O Astoria como tecnologia para construir serviços de dados para o
consumo de outros sistemas é outra forma de considerá-lo. Os
provedores de dados podem configurar servidores Astoria com os
quais outros aplicativos podem interagir, consumindo e atualizando
dados, conforme necessário e permitido pelas diretivas de segurança.
O provedor de dados pode ser o mesmo proprietário do aplicativo
que consome os dados ou pode ser um serviço consumível por
terceiros.
Ainda mais uma forma de considerar o Astoria é como um serviço de
uso geral para armazenamento de dados. Para explorar essa idéia,
configuramos um serviço online experimental que hospeda vários
conjuntos de dados de exemplo, inclusive os bancos de dados
Northwind e AdventureWorks, um subconjunto de artigos do
Microsoft Encarta e um snapshot de dados compatíveis com o site
social de marcadores Microsoft TagSpace. Transformar isso em um
serviço para o mundo real exige tecnologia muito além da interface e
dos padrões HTTP, e esse é um espaço fora do escopo do projeto
Astoria; todavia, ainda consideramos que o serviço experimental tem
valor como ferramenta de aprendizado, só para ver o que os
desenvolvedores de aplicativos poderiam construir tendo-o como
base.
Segurança
Expor uma interface de dados webfacing exige elaboração cuidadosa
com relação ao acesso seguro, para confirmar que apenas os dados
que devem ficar disponíveis estejam efetivamente acessíveis pela
interface HTTP. Isso envolve uma infra-estrutura de autenticação e
diretivas de autorização adequadas.
Embora muitos pontos de design do Astoria apliquem-se igualmente
ao Astoria como componente de aplicativo e como serviço, a
autenticação é uma das áreas à qual essa afirmação não se aplica.
Iqueryable
(+ outras interfaces)
REST e Astoria
Entity
Framework
Outras fontes
de dados...
Armazenamento
de dados
16
O acrônimo REST significa Representational State Transfer
(Transferência de estado representacional) e foi criado por Roy
Fielding. Refere-se, de forma livre, a um estilo arquitetural em que
os sistemas apresentam uma abstração bastante simples,
orientada a recurso para o estado do aplicativo e uma interface
uniforme para agir sobre esses recursos. Existem também aspectos
como estrutura em camadas e armazenamento em cache que se
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
Projeto Astoria
ajustam muito naturalmente no modelo e permitem a criação de
sistemas de grande porte, altamente escaláveis. A World Wide Web
é quase sempre citada como exemplo de aplicação do protocolo
REST e o nível de escalabilidade que proporciona.
Acredito que o Astoria pode ser considerado um bom cidadão
REST, pois transforma entidades e registros em recursos e estes
recursos são endereçáveis por meio do espaço URI apresentado
pelo servidor. Todos os recursos podem ser obtidos e manipulados
por meio da interface uniforme HTTP, e o sistema permite
estabelecimento simples de camadas e cache por meio de métodos
tradicionais usados pela WWW. Como qualquer outra peça de
infra-estrutura de sistemas, alguns pragmatismos precisam ser
considerados: quando necessário, o Astoria permite aos
desenvolvedores deixar o universo de interação usando recursos e
possibilitar a introdução de alguns RPCs os quais, algumas vezes,
são necessários para a construção de aplicativos do mundo real.
Se o Astoria for utilizado como serviço de dados fazendo parte de um
aplicativo web personalizado, a autenticação, em geral, se aplica a
todos os recursos presentes em determinada área, inclusive o acesso
aos dados. Os usuários fariam a autenticação quando estivessem no
website e o sistema precisa ter condições de aplicar as credenciais ao
serviço de dados, assim como ao restante do aplicativo. O Astoria
consulta a API do ASP.NET para saber se o usuário foi autenticado e
para descobrir outros detalhes e, assim, aplicativo que use qualquer
esquema de autenticação, adequadamente integrado ao ASP.NET,
automaticamente trabalhará com o Astoria.
A integração com a autenticação ASP.NET significa que em casos
típicos, mecanismos comuns de autenticação sobre HTTP funcionarão.
Incluem-se aí "autenticação de formulários", autenticação integrada
(útil no âmbito das redes corporativas) e esquemas de autenticação
personalizados; é ainda mais fácil estabelecer uma implementação
personalizada de autenticação "básica" de HTTP, que pode ser muito
boa se usada sobre conexões SSL, dependendo da natureza do
aplicativo.
Para serviços online isso se torna um desafio muito maior. Além da real
problemática tecnológica de como acontece a autenticação, existem
diferenças de nível mais alto que precisam ser cuidadas em primeiro
lugar: se o aplicativo e o serviço de dados provêm de fontes diferentes,
os dados do serviço de dados são de propriedade do usuário do
aplicativo? Em caso afirmativo, o aplicativo não deveria ter acesso às
credenciais do usuário para o serviço de dados? O que é preciso, nesse
cenário, é ter um esquema pelo qual o usuário faz a sua autenticação
no serviço de dados, independentemente do aplicativo (o qual
também precisará ser autenticado). Estamos explorando este espaço
como parte do esforço de projeto do Astoria e, embora tenhamos um
conhecimento razoável dos cenários, ainda não projetamos uma
tecnologia concreta para o seu suporte.
Depois de implantado o esquema de autenticação, é preciso ter um
modelo de autorização adequado. A versão atual do Astoria (lançada
na CTP de maio, 2007) tem uma implementação super simples: as
diretivas de autenticação podem ser configuradas no nível do
container de recursos ( /Customers, por exemplo); em cada uma delas,
a configuração pode indicar se é preciso autenticação para ler os
recursos do container e para escrever neles. Este procedimento não é
suficientemente flexível para a maior parte dos aplicativos; assim sendo,
fica claro que é preciso providenciar um esquema mais sofisticado.
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
Notas de encerramento: escopo e planos do projeto Astoria
A maneira pela qual os aplicativos são escritos está mudando. Uma das
principais características desses aplicativos web emergentes são as
novas formas pelas quais interagem com seus dados. Aqui, existe uma
clara oportunidade de introduzir tecnologia básica para ajudar a
comunidade de desenvolvimento a assumir este novo espaço.
Com o projeto Astoria, pretendemos dar condições para o uso de
dados como um modelo de primeira classe na web e em toda a pilha
de aplicativos. Queremos fornecer a infra-estrutura para a criação de
serviços de dados na web e também contribuir para a criação de um
ecossistema no qual os provedores e consumidores de serviços usem
uma interface uniforme para os dados. Gostaríamos de ver
fornecedores de controles de IU, escritores de bibliotecas de cliente e
outros participantes aproveitarem o poder de reutilização das
interfaces de dados para construir ferramentas melhores para a criação
de aplicativos web.
Estamos iniciando esta visão em casa. Na Microsoft, estamos em
estreita colaboração com muitos grupos para explorar os vários
aspectos em que o Astoria pode participar.
No lado dos serviços, estamos trabalhando com a organização do
Windows Live, colegas da Web3S especificamente (eles são
responsáveis pelas interfaces de dados das propriedades do Live), para
explorar um mundo em que cada interface de dados seja uma
interface Web3S/Astoria e possa ser consumida pelas várias
ferramentas e controles que eles utilizam.
No lado das ferramentas, as equipes do ASP.NET, WCF e Astoria, assim
como os vários colegas envolvidos com o Silverlight, estão trabalhando
juntos para fornecer uma história sólida, ponta a ponta, para o
desenvolvimento de aplicativos web incluindo ferramentas e
bibliotecas de primeira classe para interação com dados dos aplicativos
e serviços web.
O projeto Astoria anda rápido e se concentra em resolver desafios do
mundo real que existem na web e com os dados. Planejamos
completar o processo de projeto de forma transparente para que todos
possam ver o que pretendemos. Têm sido muito bons os momentos de
trabalho neste espaço; eu incentivaria qualquer um que tenha interesse
no tema, a visitar o blog da equipe do Astoria, acompanhar as
discussões de projeto e participar, sempre que tiver algo a dizer.
Referências
Blog da equipe Astoria:
http://blogs.msdn.com/astoriateam
Blog do Pablo:
http://blogs.msdn.com/pablo
Projeto Astoria
http://astoria.mslivelabs.com
Sobre o autor
Pablo Castro é líder técnico da equipe do SQL Server. Contribuiu muito
em várias áreas do SQL Server e do .NET Framework inclusive na
integração SQL-CLR, extensibilidade (type system), no protocolo
cliente-servidor do TDS e na API do ADO.NET. Atualmente, Pablo está
envolvido com o desenvolvimento do ADO.NET Entity Framework e
também lidera o projeto Astoria, estudando como juntar dados e
tecnologias web. Antes de ingressar na Microsoft, Pablo trabalhou em
várias empresas, lidando com amplo conjuntos de temas, dos sistemas
de inferência distribuídos, para análise de pontuação/risco de crédito,
aos aplicativos colaborativos (groupware).
17
Implicações do Consumo
de Software + Serviços
do TI Corporativo
por Kevin Sangwell
Resumo
Muitos artigos desta edição usam a expressão Software +
Serviços (S+S) para referir-se ao cliente (desktop,
navegador e dispositivo) e aos aplicativos baseados em
servidor que consomem um ou mais serviços da Internet
(nuvem). Embora este modelo compartilhe algumas
características com o software como serviço (SaaS), as
diferenças são significativas para o TI corporativo.
Este artigo compara os desafios de se adotar o S+S em
relação ao SaaS; ficará claro que o consumo de um serviço
externo bem definido é menos desafiador para as
empresas do que o consumo de um serviço acabado.
H
oje, a maioria dos aplicativos distribuídos como serviço pela
Internet (ou seja, SaaS) destina-se aos mercados consumidor e
das empresas de pequeno porte. O modelo usado de monetização do
negócio, quer seja custeado por assinaturas ou publicidade é, em
grande parte, aquele do tipo long tail: vender um pouco de alguma
coisa a inúmeros clientes por meio de um canal de distribuição
escalável, conforme descrito por Chris Anderson (vide Referências).
Entretanto, as demandas corporativas são significativamente diferentes
das demandas desses segmentos (consumidor e pequena empresa) e,
por isso, determinadas premissas que dão apoio à economia e à
distribuição (e ao consumo) de serviço simplesmente não se aplicam ao
contexto corporativo. Por exemplo, os consumidores não precisam se
preocupar com conformidade e integração de aplicativo corporativo
(EAI - Enterprise Application Integration) e tudo o que isso implica é, na
maioria dos casos, irrelevante para as pequenas empresas.
Assim sendo, os serviços de software analisados pela perspectiva
corporativa levanta várias perguntas. A quem pertencem os dados?
O que é o contrato de nível de serviço (SLA)? As identidades internas
podem ser levadas para além do firewall para ter acesso aos serviços
da nuvem? Existem implicações normativas?
negócio sentem-se frustrados em relação aos projetos de TI por
levarem meses e investimento significativo, para oferecer vantagens
que aparecem na Internet, prontas para serem utilizadas. Os usuários
encontram na Internet capacidades de pesquisa, colaboração e
publicação muito superiores às capacidades internas de muitas
empresas. Um número cada vez maior de aplicativos tem sido
colocado à disposição na Internet como serviços, oferecendo ao
negócio um modelo alternativo de suprimento de TI.
Neste artigo, colocarei em discussão as implicações do consumo de
serviços de software externo com base na infra-estrutura e operações
corporativas existentes, comparando os desafios do modelo SaaS com
aqueles do modelo S+S no que se refere ao consumo de todos os
aplicativos de linha de negócio amplamente adotados em toda a
empresa. Utilizo a expressão "serviços de software" para fazer referência
aos serviços dos dois modelos, Saas e S+S, pois podemos considerar a
distribuição de software como um continuum com software
convencional hospedado in-house, construído ou comprado, de um
lado, e serviços acabados distribuídos pela Internet (ou seja, Saas), do
outro. A configuração híbrida, software in-house mais serviços na
nuvem, cobre a parte intermediária do continuum (ou seja, S+S). A
Figura 1 ilustra o continuum da distribuição de software. Neste artigo,
"
Software convencional refere-se aos aplicativos instalados na infraestrutura e acessados exclusivamente pelos usuários internos.
"
Serviços de bloco de construção oferecem capacidades de nível baixo,
consumidos pelos desenvolvedores na construção de um aplicativo
composto. Esses serviços existem na nuvem.
"
Serviços vinculados fornecem um nível mais alto de funcionalidade
se comparados aos serviços de bloco de construção. Os aplicativos
aproveitam os serviços vinculados para adicionar funcionalidade.
Figura 1: Continuum da distribuição de sotfware e taxonomia
dos serviços de software
Aproximadamente 70% dos orçamentos de TI são gastos na
manutenção dos sistemas existentes, e apenas 30% são aplicados em
soluções novas. Por outro lado, o custo de hardware e software
diminui e o custo do gerenciamento e suporte cresce. As empresas
esperam do setor de TI mais do que nunca, em parte devido à
confiança recuperada ocorrida após a queda das empresas pontocom,
assim como à crescente demanda das capacidades estilo Web 2.0
dentro do firewall.
Ao mesmo tempo, o TI corporativo passa por uma crise de percepção,
conforme evidenciado pelo feedback do ensaio de Nicholas Carr de
2003 "IT Doesn't Matter" (vide Referências). Muitas vezes os líderes do
18
SaaS
Instalado no local
Histórico
Software
convencional
Serviços de bloco
de construção
Serviços
vinculados
Serviços
acabados
Instalado e
operado
no local
Serviços a partir dos
quais aplicativos
podem ser
construídos
Serviços que
fornecem
funcionalidade autocontida
Aplicativos entregues
via SaaS
Interessante
para usuários
finais
Interessante para
programadores
Interessante para
programadores e
pessoal de infraestrutura
Interessante para
usuários finais
P. ex.,
Serviços Amazon S3
ou Windows Liveapis
P. ex.,
Exchange Hosted
Services ou
Windows Update
P. ex.,
Safesforce.com ou
Microsoft Dynamics
CRM Live
Por exemplo,
Microsoft
Exchange
Software + Serviços
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
Implicações do Consumo de Software + Serviços do TI Corporativo
"
Serviços acabados são análogos aos aplicativos totalmente
desenvolvidos, distribuídos pela Internet, utilizando o modelo SaaS.
"
S+S refere-se ao uso de aplicativos que consomem serviços
vinculados ou àquele construído com os serviços de bloco de
construção.
Ao analisar uma infra-estrutura de TI ou modelo de suprimento de
aplicativo, é importante conhecer os objetivos do negócio. Por
exemplo, a terceirização é motivada pela necessidade de obter uma
relação positiva entre custo e eficiência, transferindo o custo e o risco
de entregar um aplicativo existente, maduro, a um terceiro, em troca
de pagamentos contratados. Por outro lado, a adoção de um serviço
de software satisfaz a necessidade do negócio, como gerenciamento
de cliente mais eficiente (no caso de CRM). Pela perspectiva do
gerente do negócio, SaaS parece ser o melhor dos dois mundos: o
beneficio para o negócio é concretizado a um custo proporcional ao
uso (ou até de graça), sem investimento prévio de capital, ou adicional,
em recursos de TI. Ainda que o negócio esteja melhor posicionado
para determinar a qualidade com que o serviço resolve o seu
problema, a não ser que a área de TI faça parte da discussão, muitas
das implicações mais abrangentes para a área de TI da empresa (custos
não visíveis da adoção dos serviços de software) passarão
despercebidas.
Serviços de software: novos desafios de integração
Em contraposição com SaaS, os aplicativos S+S podem ter um serviço
back-end rodando no firewall e, nesse caso, uma única empresa ou
identidade proxy poderia ser transferida ao serviço na nuvem. A
integração de identidades é uma capacidade comum de muitos
aplicativos corporativos e, assim, o serviço back-end pode integrar-se
com o Active Directory ou diretórios LDAP (Lightweight Directory
Access Protocol) prontos para usar.
Controle de acesso
O gerenciamento de autorização e acesso é outro aspecto que deve
ser considerado. Muitos aplicativos oferecem capacidades diferentes,
de acordo com o usuário. Por exemplo, um aplicativo que gerencia
despesas pode permitir ao gerente autorizar reembolsos de até
$4.000; valores superiores precisam da aprovação da diretoria.
Atualmente, muitos aplicativos instalados atrás do firewall corporativo
definem permissões de acordo com cada usuário; na verdade, o
aplicativo contém um mapeamento entre o usuário e a respectiva
autorização. Contudo, inúmeras organizações começam a se afastar
das autorizações baseadas em usuário para a autorização baseada em
função. As vantagens são evidentes: custos de administração menores,
autorização consistente de acordo com a função e conformidade
transparente
Ao adotar serviços de software, um conjunto de desafios fica sob a
responsabilidade do provedor: distribuição e suporte para os serviços.
Entretanto, ao adotar um novo modelo, a área de TI enfrenta um
conjunto adicional de desafios e, portanto, novo (Figura 2).
Ignorar esses novos desafios não é uma opção. Como veremos, pode
haver custos diretos e indiretos, implicações de recursos e questões de
conformidade. Em outras palavras, a adoção de um serviço de
software representa um projeto híbrido de aquisição/integração para a
área de TI interna. A integração precisa ser analisada no âmbito de três
áreas amplas:
"
gerenciamento de identidades e acesso
"
dados
"
operações
Nem os produtos Active Directory (AD) ou os metadiretórios como o
Microsoft Identity Lifecycle Manager resolvem esse problema
específico. O AD é proprietário e o seu modelo de confiança não é
suficientemente granular e os metadiretórios não são extensamente
implantados e não operam em tempo real. Algo baseado em padrões,
como federação, oferece um conjunto de capacidades que a
qualificam como uma boa escolha especificamente para a integração
com um aplicativo ou serviço externo. Apesar do baixo acoplamento,
opera em tempo real e não por meio de programação, simplificando o
provisionamento e o (des)provisionamento. As relações de confiança
da federação possuem alto nível de granularidade, permitindo à
organização do consumidor expor apenas um subconjunto do dos
respectivos diretórios (baseado em regras); e um mapeamento de
atributos em tempo real para "declarações", reduzindo a necessidade
de mudanças internas de diretório. (vide a Figura 3; para conhecer
mais sobre federação e ADFS “Active Directory Federation Services”,
vide Referências.)
Figura 2: O consumo de serviços de software acrescenta novos desafios
Regulamentos e obrigações legais também devem ser analisados.
Gerenciamento de identidades e acesso
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
• Distribuição de serviço
• Gerência de nível de serviço
• Gerência de capacidade
• Gerência de disponibilidade
• Gerência de continuidade de TI
• Suporte do serviço
• Suporte técnico
• Treinamento
Service Provider
Serviços de Software
Software Convencional
(responsabilidades existentes)
A adição de um serviço acabado, com o seu correspondente
diretório externo, exige extensões do processo de provisionamento e
(des)provisionamento, ainda que este seja um processo humano. Por
exemplo, quando um funcionário sai da empresa, muitas
organizações lutam para concretizar o (des)provisionamento ou
desativação de contas internas em tempo hábil; o risco de exposição
no caso de um aplicativo ou serviço externo é significativo porque
não há firewall corporativo que impeça o usuário de ter acesso ao
aplicativo e aos seus dados.
Novos desafios na adoção
dos serviços de software
TI Corporativo
O gerenciamento de identidades e acesso é um problema perene
que afeta muitos aspectos da TI: dos custos de suporte técnico,
produtividade do usuário à segurança dos dados. Também é uma
área para a qual a TI corporativa deveria fornecer uma experiência
de usuário melhor, se comparada à da Internet (e, ainda assim,
muitas empresas têm dezenas de diretórios de usuários). Análises
feitas por organizações especializadas atestam, com freqüência, que
as redefinições de senha são responsáveis por 30%, em média, das
chamadas de suporte técnico.
• Distribuição de serviço
• Gerência de nível de serviço
• Gerência de capacidade
• Gerência de disponibilidade
• Gerência de continuidade de TI
• Suporte do serviço
• Suporte técnico
• Treinamento
• Integração
• Gerência de identidades
• Dados
• Operações
• Segurança
• Gerência de contratos
• SLAs
• Conformidade
19
Implicações do Consumo de Software + Serviços do TI Corporativo
Figura 3: Integração de identidades oferecidas por federação:
Rede Corporativa
Serviços
de
diretório
Servidor de
federação
Servidor de
autenticação
Provedor do Serviço
Servidor de
federação
Usuário final
Servidores de
aplicativo
precisa de dados não processados: nome do funcionário, valor do
pagamento, etc. para o processamento mensal da folha. Neste
exemplo, os dados poderiam ser fornecidos por meio de um simples
extrato das informações relevantes do sistema interno de RH.
Obviamente, enviar por e-mail um arquivo XLS ou CSV para o
provedor da folha de pagamento não oferecerá os níveis de segurança
e confidencialidade exigidos; assim, é preciso ter outra forma para a
troca de dados e espera-se que o setor de TI ofereça essa alternativa.
Em outras palavras, a área de TI se defronta com o projeto de
integração de aplicativo corporativo (EAI).
Pela perspectiva de EAI, o bloco de construção e os serviços vinculados
devem ser de fácil integração; afinal, são projetados para o consumo
de desenvolvedores como extensões de um aplicativo local. O
Exchange Hosted Services for Filtering é um exemplo de serviço
vinculado (para mais informações sobre o Exchange Hosted Services,
vide Referências). A integração nessa situação possui duas partes:
1. DNS: Registro MX modificado para apontar para o provedor de
serviços (Microsoft neste caso)
Quando um serviço acabado possui vários níveis de autorização,
existem duas opções: atribuir a alguém da empresa a tarefa de mapear
manualmente os usuários e respectivos níveis de autorização, ou
ampliar o modelo interno baseado em funções para o aplicativo
externo. O primeiro quase sempre acaba no suporte técnico: um custo
oculto da adoção de serviços acabados. O último, mapear uma função
externa para um aplicativo externo, poderia ser feito por meio da
federação; por exemplo, a associação de um grupo do Active Directory
poderia ser mapeada para um par nome-valor em um cookie, utilizado
pelo aplicativo externo.
A autorização no bloco de construção ou nos serviços vinculados (o
híbrido Software + Serviços) poderia seguir o modelo federação e, na
verdade, as seguintes vantagens poderiam ser obtidas: gerenciamento
estrito da integridade no provedor do serviço e isso poderia ajudar na
conformidade. Quanto mais flexível o modelo do S+S, maior a
possibilidade de a autorização ser executada por um servidor local,
antes de qualquer solicitação do serviço externo. Ter controle local da
diretiva e de sua aplicação significa que a empresa tem condições de
reagir às mudanças do negócio mais rapidamente. Além disso,
simplifica a integração: a empresa pode modificar a configuração da
parte local do aplicativo do fornecedor para adaptá-lo ao seu
ambiente.
Resumo das implicações do gerenciamento de identidades e
acesso
"
Se o serviço externo depende da identidade do usuário (muito
provável para SaaS, possível para S+S), o provisionamento e o
(des)provisionamento precisa ser ampliado. A integração poderia
ser feita por um processo tecnológico ou manual e ambos
possuem implicações de custo.
"
As diretivas para conta de usuário do provedor de serviços
precisam ser avaliadas comparando-as com as diretivas internas
(por exemplo, complexidade da senha, bloqueios, etc.).
2. Regras de firewall alteradas para só permitir a entrada de SMTP
do provedor de serviço (aumentando a segurança).
Como o foco deste artigo é a infra-estrutura, não me aprofundarei em
mais detalhes sobre a EAI. Contudo, analisaremos as implicações da
infra-estrutura para dados de algumas outras perspectivas:
"
regras e filtros de firewall
"
criptografia e assinatura
"
visão do usuário
Firewall
Para entender as implicações de firewall no consumo de serviços
acabados, precisamos investigar quais aplicativos internos serão
integrados ao serviço de software e qual a forma de integração.
Quantos aplicativos internos devem ser integrados: um ou vários?
Quais regras de firewall precisam ser criadas para permitir a publicação
e o fluxo de tráfego? Se os aplicativos estão trocando XML, esse
procedimento precisa ser validado no firewall e o firewall pode
fornecer essa capacidade? Os dados precisam se integrar com alguma
forma de workflow e, se assim for, como esse workflow abrange a
infra-estrutura interna/externa? Se a integração acontecer sobre HTTP
(SOAP, por exemplo), pode haver algumas implicações no firewall além
da criação de regras.
Com bloco de construção e serviços vinculados, provavelmente haverá
alguma infra-estrutura de back-end que, naturalmente, passa a ser o
principal enfoque para a integração e segurança dos dados. Na
verdade, alguns fornecedores de SaaS estão percebendo que as
empresas estarão mais abertas à assinatura quando seus dados estão
armazenados no firewall corporativo (assim, estão desenvolvendo seus
serviços acabados para o modelo S+S, instalando um aparelho dentro
das centrais de dados do cliente).
Criptografia e assinatura
É pouco provável que haja um aplicativo de linha de negócio isolado
como uma ilha, ainda que seja de origem externa. Um bom exemplo é
a folha de pagamento. O provedor de serviço de folha de pagamento
A forma mais efetiva de trocar dados criptografados pela Internet é a
de adotar certificados de uma autoridade pública de certificação. Se os
certificados forem instalados em clientes, será preciso ter uma infraestrutura de chave pública (PKI - Public Key Infrastructure), com todas
as suas implicações, como gerenciamento do ciclo de vida do
certificado e publicação da lista de revogação do certificado. Não se
20
THE ARCHITECTURE JOURNAL
Dados
• Journal 13 •
www.architecturejournal.net
Implicações do Consumo de Software + Serviços do TI Corporativo
trata de um empreendimento trivial, mas uma vez concluído, permitirá
à infra-estrutura realizar outras capacidades como e-mail assinado e
autenticação via Smart Card.
Obviamente, com uma infra-estrutura de back-end local em
implementações S+S, provavelmente a criptografia e a assinatura
ficarão muito mais simples (menor número de extremidades).
Visão do usuário
Outra perspectiva sobre os dados é a visão do usuário. Certo ou
errado, muitas pessoas querem continuar a trabalhar com as
ferramentas com as quais estão familiarizados: aplicativos do Microsoft
Office. Analise o número de vezes que um novo aplicativo não alcança
todo o seu potencial porque os usuários do negócio insistem em
extrair os dados e usar o Excel para a administração diária. Raramente
esses dados voltam para o aplicativo. Vários fornecedores
independentes de software iniciaram a construção de seus clientes de
aplicativo como OBAs (Office Business Applications) utilizando
essencialmente o Office como plataforma de aplicativos. Em geral, isso
resulta na adoção mais rápida e em menor sobrecarga de
treinamento, mas representa problemas de implantação e manutenção
para a área de TI. Pontos a serem considerados: O serviço de software
oferece todas as capacidades que o negócio exige ou os usuários
precisarão extrair os dados para serem manipulados/analisados em
ferramenta ou sistema local? A adoção do serviço de software resultará
na construção de mais aplicativos departamentais em Access e Excel?
Operações
O problema da integração operacional na obtenção externa de
aplicativos ou serviços é incongruente, de certa forma: afinal, o
principal benefício de ser um consumidor é que as operações ficam
sob a responsabilidade do provedor e, no entanto, as operações e os
processos internos serão impactados pelo aplicativo ou serviço
externo, em várias áreas, sendo as mais significativas o suporte técnico
e o treinamento do usuário.
Resumo das implicações de dados
"
Análises serão necessárias para determinar as necessidades de
integração de dados e ETL.
"
Regras de firewall talvez sejam necessárias para permitir a
integração.
"
O firewall talvez precise ser atualizado para possibilitar a filtragem
dos dados do aplicativo (por exemplo, validação de esquema
XML).
"
Talvez seja preciso comprar certificados ou implementar PKI para
dar suporte às exigências de autenticação, criptografia e
assinatura.
Suporte técnico
Muitos consumidores se sentem frustrados pela ineficiência e
confusão existentes nas centrais de chamadas. Para evitar problemas
similares, as equipes internas do suporte técnico devem ser
informadas sobre os novos aplicativos e serviços a serem integrados às
operações de TI. Os usuários corporativos dependem de inúmeros
sistemas internos de TI para acessar um aplicativo externo: rede, DNS,
servidores proxy. O suporte técnico corporativo é responsável pelo
atendimento desses itens e não o provedor de serviços. Muitas
organizações percebem, agora, a importância de simplificar o
processo de suporte do negócio e fornecer, por exemplo, um único
número de telefone e um site intranet para fazer a comunicação com
a equipe adequada, de primeira linha.
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
Treinamento
O treinamento do usuário é um aspecto importante na introdução de
qualquer aplicativo novo, independentemente do local em que está
hospedado. Os serviços acabados têm uma vantagem: em geral, o
provedor oferece treinamento quando necessário. Contudo, a
empresa tem pouco controle sobre a qualidade desse treinamento e,
treinamento sofrível aumenta o custo do suporte e reduz a
produtividade do negócio. A introdução de atualizações como parte
do serviço, um dos benefícios de ser assinante de serviços acabados, é
outro problema em potencial: se a empresa não tem a capacidade de
adiar a implementação da atualização até que todo o pessoal tenha
sido treinado, o suporte técnico interno talvez tenha de lidar com
picos de chamadas de suporte. Uma questão correlata é se os recursos
individuais do serviço acabado podem ser desativados de modo
seletivo: Se a capacidade já estiver disponível internamente, o TI
precisa certificar-se de que todos os usuários estejam utilizando essa
capacidade interna.
“QUANTO MAIOR A IMPORTÂNCIA DO
APLICATIVO PARA O NEGÓCIO, MAIS
IMPLICAÇÕES PRECISARÃO SER
CONSIDERADAS. UM APLICATIVO DE LINHA DE
NEGÓCIO DISTRIBUÍDO COMO SERVIÇO
ACABADO REPRESENTA TAREFA DE
INTEGRAÇÃO SIGNIFICATIVA".
Implantação
Se o serviço acabado utilizar o navegador como seu cliente, aplicamse os cuidados normais de compatibilidade: versão do navegador e
configurações de segurança, mais os plug-ins instalados e respectivas
versões. Com um aplicativo convencional, a empresa pode determinar
quando passar para a nova versão, o que é de importância crítica, caso
a nova versão exija o navegador mais recente. Quando o aplicativo é
externo, esta opção talvez não esteja disponível.
Se o cliente do serviço não tem o navegador como base, a área de TI
interna será responsável pela implantação e por suas implicações
(testes de compatibilidade, planejamento de implantação, distribuição,
etc.).
Se for um serviço de bloco de construção ou vinculado, será preciso
implantar infra-estrutura de back-end na central de dados da empresa
ou do cliente ou em ambos. Para a implantação de back-end, existem
desafios comuns não funcionais: Qual servidor, rede e capacidade de
armazenamento são adequados para a carga? Podem ser utilizados
serviços compartilhados como o servidor SQL existente ou os web
farms do servidor? De que forma são fornecidas flexibilidade e
capacidade de recuperação de desastres? Podem ser
executadas em várias centrais de dados? As respostas dependerão
mais dos componentes do local do aplicativo do que do serviço
vinculado na nuvem: ou seja, podem ser abordadas, em grande parte,
como uma implantação de back-end normal.
Operações do provedor/continuidade do negócio
É tentador concentrar-se simplesmente no conteúdo do SLA quandose
trata de selecionar, monitorar e avaliar um provedor de serviço. É
importante considerar como o SLA será formalizado: um SLA que
estabeleça que o serviço será restaurado em 24 horas após o desastre
parece bom em princípio; entretanto, a definição de desastre e a
forma de restauração têm importância crítica. Para o consumidor do
serviço, desastre pode ser a exclusão acidental de registros do
21
Implicações do Consumo de Software + Serviços do TI Corporativo
aplicativo, mas provavelmente o provedor do serviço terá uma visão
diferente. Analisando melhor este exemplo, a restauração de dados do
aplicativo é um processo complicado para muitos aplicativos
corporativos. Por exemplo, restaurar uma única caixa de correio ou
mensagem do Exchange ou um simples site ou documento do
Sharepoint era um desafio significativo, até o amadurecimento destes
aplicativos. Agora, aplicar esse desafio a um aplicativo SaaS com vários
locatários, ainda que restauração granular seja possível, fará com que
o provedor fique relutante, devido aos custos operacionais.
Outra preocupação que ouvi de vários arquitetos trata do risco de o
provedor do serviço falir ou reter dados para evitar a migração para
um concorrente. Colocar o código do aplicativo em garantia é uma
etapa na direção correta mas, na verdade, não é suficiente.
Resumo das implicações de operações
"Os procedimentos de suporte técnico precisam ser atualizados
para a execução de diagnóstico de primeira linha para aplicativos
novos e os processos de escalação precisam ser definidos com o
provedor do serviço.
"Revisar os SLAs do suporte técnico interno para confirmar se ainda
podem ser atendidos quando dependentes do provedor de
serviço para suporte escalado.
Pressupondo que um consumidor corporativo pudesse obter esses
dados, reconstruir o aplicativo na central de dados sem instalar
instruções ou dar acesso aos desenvolvedores talvez não seja viável.
Ainda não há uma solução para isso: é uma questão de ter confiança
no provedor, que este fará a coisa certa caso aconteça o pior, e de que
o provedor tenha boas qualidades de administrativas e comerciais.
Emissão de relatórios
Como com qualquer SLA, os grupos comerciais e de TI devem analisar
os relatórios de desempenho e investigar quais os pontos não
atendidos pelos SLAs.
Regulamentos e obrigações legais
Proporcionar conformidade com regulamentos e obrigações legais
terá um impacto na infra-estrutura e garantir a conformidade de um
processo do negócio, que abrange sistemas internos e serviços
externos, pode ser especialmente desafiador. Além disso, apresenta
uma solução em potencial com referência à conformidade: se o
aplicativo ou o serviço estiver alinhado com o setor, existe uma boa
possibilidade de estar de acordo com os regulamentos relevantes dos
principais mercados; este talvez não seja o caso de serviços genéricos.
Mesmo em situações nas quais a conformidade é um ponto de venda
do serviço, as diretivas de segurança interna da empresa ou as leis
específicas da região, como as de proteção de dados do parlamento
europeu (European Parliament Data Protection Laws), podem ser
incompatíveis com as políticas do provedor de serviço.
Propriedade de dados
Obviamente, as empresas desejam manter a propriedade dos dados
do negócio, sempre; o contrato deve definir isso, explicitamente. Além
do mais, seria prudente confirmar que os dados podem ser extraídos
quando solicitado.
Privacidade
As empresas devem avaliar cuidadosamente as diretivas de privacidade
e as condições de uso do provedor para confirmar se seus dados são
mantidos em confidencialidade e não são utilizados para marketing
nem vendidos para terceiros, especialmente importante nos casos em
que os serviços acabados têm o suporte de anúncios publicitários.
Tabela 1: Resumo das recomendações
Gerenciamento
de identidade
e acesso
"Considerar se é válido adotar o suporte de federação nos critérios de seleção de provedor.
"Analisar se a administração baseada em funções é uma forma de reduzir complexidade e custo.
"O caso de negócio para integração deveria ser construído sobre segurança aprimorada para obter conformidade além da
redução de custo.
"Iniciar um período de amadurecimento nas tecnologias de identidade, como federação e CardSpace.
"Produzir uma arquitetura para simplificar a integração de identidades dos serviços de software futuros.
Operações
de dados
"Incluir exigências para padrões abertos (por exemplo, WS-*) nos critérios de seleção de provedor.
"Induzir o monitoramento leve do serviço para dar suporte à medição do SLA.
"Se os dados ficarem residentes no provedor, determinar se restaurações físicas são necessárias/possíveis.
"Avaliar o uso de frameworks operacionais formais (por exemplo, MOF/ITIL) nos critérios de seleção de provedor.
"Confirmar se não há dúvidas sobre a estrutura de custos relativa às operações (por exemplo, existem custos adicionais para
restaurações, relatórios, etc.).
"Avaliar se o provedor oferece treinamento. É de boa qualidade e disponível em todos os idiomas necessários? Quanto demora
para receber material atualizado quando um novo recurso é lançado?
"Se for preciso implementação no cliente, decompor a programação de lançamentos do provedor (patches e versões novas) nos
processos e planos de engenharia dos desktops existentes.
"Avaliar as necessidades da implantação e suas dependências (por exemplo, testes de compatibilidade do aplicativo de desktop,
espaço na central de dados, compra de produtos de integração).
"Peça aos seus desenvolvedores para avaliar a documentação entregue pelo provedor. É de boa qualidade e disponível em todos
os idiomas necessários?
Regulamentos/
legal
"Analisar a flexibilidade, as políticas e os procedimentos de recuperação de desastre do provedor.
"Determinar se a conformidade se aplica ao provedor e, em caso afirmativo, decidir quais relatórios/diretivas/credenciais são
necessários para comprovar a conformidade.
"Considerar a automatização da criação de relatórios de conformidade híbridos: interno e do provedor. Isso pode significar que
o provedor de serviço tenha de expor APIs de relatório e não apenas fornecer um relatório estático.
"Se os dados ficarem residentes no provedor, analisar o contrato para confirmar que você detém a propriedade dos dados.
"Estender os seus dados de arquitetura de integração para dar suporte à integração do serviço externo. Adicionar credenciais de
segurança para os critérios de seleção de provedor.
Geral
22
"Criar uma arquitetura de integração de infra-estrutura para oferecer um framework para a integração do serviço de software.
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
Implicações do Consumo de Software + Serviços do TI Corporativo
Figura 4: Mapa de calor (heatmap) das considerações
Propriedade
de dados
SLAs
contratuais
Conformidade
Credenciam. de API's de Web
Services
Segurança
Integração de
Operações
Integração de
Identidades
RBAC
Aplicativos de linhas de negócios
Aplicativo tático
Considerar obrigatoriamente
Deveria considerar
Hoje, os departamentos de TI da empresa têm mais experiência e
Resumo das implicações legais
"A conformidade pode se estender ao provedor de serviço; como é
possível provar a conformidade ainda assim?
confiança no consumo de bloco de construção ou serviços vinculados
"Os relatórios de conformidade podem representar um custo.
aplicativo rico, como o Reuters 3000, ou um serviço de infra-estrutura,
do que em aplicativos completos. Seja um "feed" de dados para um
como o que oferece filtragem de spams, este modelo é bem
Programas-selo de privacidade podem ser úteis para definir a
credibilidade de um provedor; os provedores licenciados da TRUSTe,
por exemplo, terão uma diretiva publicada e foram auditados por
firma independente, para garantir a conformidade com um conjunto
de princípios de privacidade.
Conclusão
Na medida em que o modelo de distribuição SaaS amadurece e ganha
maior notoriedade, torna-se natural um aumento das necessidades
corporativas tais como a integração a ser atendida e, assim, crescerá a
faixa de capacidades para as quais as empresas estão preparadas para
buscar como serviços. O resultado será software mais aplicativos de
Atualmente, o mercado de SaaS está repleto de ofertas destinadas aos
consumidores e às empresas de pequeno porte, pois este segmento de
mercado se beneficia do modelo de distribuição, sem a necessidade
de integração. Consumir um aplicativo de linha de negócio desses
provedores é arriscado para qualquer empresa, pois muitos dos pontos
de integração discutidos neste artigo não serão abordados.
Quanto maior for a importância do aplicativo para o negócio, mais
implicações deverão ser consideradas. Um aplicativo de linha de
negócio distribuído como um serviço acabado representa tarefa de
integração significativa se comparada ao pouco esforço associado à
aplicação tática em que a principal preocupação refere-se a questões
contratuais como a propriedade dos dados. O mapa de calor da
relação está representado na Figura 4.
Referências
European Parliament Data Protection Laws
http://ec.europa.eu/justice_home/fsj/privacy/index_en.htm
Exchange Hosted Services
http://www.microsoft.com/exchange/services/default.mspx
“IT Doesn't Matter,” Nicholas G. Carr, Harvard Business Review,
Maio, 2003
http://harvardbusinessonline.hbsp.harvard.edu/b01/en/common/item_
detail.jhtml?id=R0305B
The Long Tail: Why the Future of Business Is Selling Less of More,
Chris Anderson (Hyperion, 2006
Microsoft Privacy Guidelines for Developing Software Products
and Services
http://www.microsoft.com/downloads/details.aspx?FamilyID=c48cf80f6e87-48f5-83ec-a18d1ad2fc1f&displaylang=en
Microsoft Regulatory Compliance Planning Guide (embora este guia
tenha como enfoque a área de TI interna, pode também ser útil para
avaliação de um provedor externo)
http://www.microsoft.com/technet/security/guidance/
complianceandpolicies/compliance/rcguide/default.mspx?mfr=true
WS-Federation é uma versão do padrão OASIS, adotada por vários
fornecedores incluindo Microsoft, IBM, RSA, BEA e VeriSign. O suporte
THE ARCHITECTURE JOURNAL
compreendido.
• Journal 13 •
www.architecturejournal.net
serviços: um equilíbrio natural do software instalado no local e serviços
na nuvem.
Como Gianpaolo Carraro e Fred Chong declaram em seu artigo “SaaS:
An Enterprise Perspective”, SaaS e S+S são ferramentas adicionais que
CIOs experientes podem utilizar para oferecer mais valor ao negócio.
Em lugar de sentirem-se ameaçados, os gerentes de IT deveriam
considerar SaaS e S+S pelo que são: modelos de suprimento
alternativo para o benefício do negócio e uma abordagem arquitetural
diferente para as soluções de construção.
Manipulados corretamente, os serviços de software ajudarão a
modificar a percepção que o negócio tem da área de TI.
para o WS-Federation da Microsoft transforma-se em Active Directory
Federation Services (ADFS), um componente do Windows Server 2003 R2
"OASIS
http://www.oasis-open.org/committees/documents.php?wg_
abbrev=wsfed
"Active Directory Federation Services (ADFS)
http://www.microsoft.com/WindowsServer2003/R2/Identity_
Management/ADFSwhitepaper.mspx
Sobre o autor
Kevin Sangwell é arquiteto de infra-estrutura do Developer and
Platform Group da Microsoft. Esteve à frente de vários cargos técnicos
e de liderança no setor de TI por mais de 16 anos, incluindo cinco anos
como consultor principal do setor de Consulting Services da Microsoft.
Kevin foi líder de arquitetura e projeto de infra-estruturas corporativas
e de eCommerce nos setores públicos e privados do Reino Unido,
incluindo a infra-estrutura distribuída da Microsoft para uma
organização com 120.000 usuários e uma plataforma de aplicativos
extranet com 1,2 milhão de usuários educacionais. Como arquiteto de
infra-estrutura, ele presta serviços de aconselhamento e consultoria
para clientes corporativos e se apresenta em eventos internacionais.
23
Mashups Corporativos
por Larry Clarkin e Josh Holmes
Resumo
Mashup é uma técnica para a construção de aplicativos
que combina dados de várias fontes para criar uma
experiência integrada. Atualmente, há muitos mashups
hospedados em sites da Internet que oferecem
representações visuais de dados abertos ao público. Este
artigo descreve o histórico e a arquitetura dos mashups e
explora como é possível criar mashups para uso na
empresa. Além disso, compartilhamos algum
conhecimento obtido de projetos com clientes e
integradores de sistemas que implementaram mashups
corporativos.
Histórico dos mashups
Os mashups ganharam aceitação nos últimos anos, impulsionados pela
Web 2.0. Inicialmente, os mashups adotaram dados de fontes como
Craigslist (http://www.craigslist.org), combinando-os com serviços de
mapeamento ou fotografia, para criar visualizações dos dados (por
exemplo, http://housingmaps.com). Muitos desses primeiros mashups
tinham o consumidor como objetivo mas, em anos recentes, a
empresa também começou a se interessar e aceitar os mashups
corporativos. As organizações começam a perceber que podem
colocar seus serviços bem definidos para produzir bits distintos de
lógica do negócio com outros serviços existentes, internos ou externos
à organização, para fornecer visões novas e interessantes dos dados.
Figura 1: Arquitetura de um aplicativo mashup típico
Web Services
Dados
“Feeds” RSS
Aplicativo
mashup
Serviços de
Plataforma
Na medida em que as técnicas para a criação de mashups
amadureceram, começamos a ver nas empresas a construção de
modelos do negócio baseados em mashups. No mercado imobiliário
norte-americano, Redfin (http://www.redfin. com) e Zillow
(http://www.zillow.com) utilizam grandes volumes de dados
imobiliários, públicos e privados, (de fontes como autarquias de
registro municipais e Multiple Listing Service) combinados com
serviços internos de "valor agregado", cujo resultado é apresentado ao
usuário em um mapa (utilizando o Virtual Earth da Microsoft e o
Google Maps, respectivamente). Há muitos outros tipos de infomações
que podem ser acrescentadas a um site do setor imobiliário: outras
listagens similares, informações sobre escolas e hospitais locais, índices
recentes de criminalidade, classificados para colocações de trabalho e
muito mais.
Arquitetura de um mashup prototípico
Embora haja grande variação na IU e nas fontes de dados de muitos
mashups, ainda assim podemos derivar padrões arquiteturais comuns,
compartilhados por todos. Por exemplo, todos os mashups são de
natureza RESTful (obedecem aos princípios do protocolo de
transferência de estado representacional). A Figura 1 ilustra um
processamento arquitetural de um mashup típico.
Dados
Dados agregados e apresentados ao usuário são o principal elemento
de qualquer mashup. Embora o diagrama acima descreva a fonte de
dados como um banco de dados, o conceito de mashup não exige
esse recurso no local, nem para o software mashup nem para o cliente.
Os dados podem vir estritamente dos Web Services em que são
serializados para XML ou JSON (este é o padrão mais comum em
mashups baseados em Internet). Existem compensações arquiteturais a
serem feitas, do armazenamento de dados primários no local ao
acesso aos dados feito a cada solicitação. Na medida em que os
mashups deixam de ser aplicativos baseados em Internet para serem
internos à empresa, tendem a depender menos dos locais externos de
armazenamento de dados.
"Feeds" RSS
O uso de "feeds" RSS (Really Simple Syndication) é uma fonte comum
de dados primários ou suplementares para mashups. Os "feeds" RSS
são fáceis de serem consumidos pois são documentos XML e muitas
bibliotecas existem para manipular esses "feeds". O formato e a
especificação de RSS está bem documentada e entendida com apenas
poucas variações de uma versão para outra. A extensibilidade do RSS
também é bastante conhecida, como demonstra a quantidade de
extensões em uso atualmente, como a adição de vínculos aos "feeds",
informações de localização e licenciamento da Creative Commons.
Web Services
Aplicativo cliente
24
É também comum incluir chamadas para Web Services dentro dos
mashups. É fácil ver Web Services baseados em WSDL e outros,
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
Mashups Corporativos
Figura 2: Uso do BizTalk Services como um serviço de plataforma
para a transmissão de informações
Aplicativo cliente
O mashup é distribuído e apresentado ao usuário como aplicativo
cliente. Para mashups públicos de Internet, o aplicativo cliente mais
comum é um navegador web que recebe HTML e JavaScript
distribuídos de um servidor web sobre HTTP. Contudo, começamos a
ver mashups sendo distribuídos também com plataformas RIA. Neste
modelo, o cliente pode fornecer mais riqueza visual e até algum
processamento do mashup no lado do cliente.
“BizTalk Services”
Serviço de
Identidade
Confiança
Autenticar
Serviço de
conectividade
3
Abrir
Conectar
4
2
1 Autenticar
Conexão
Confiável
Serviço
Cliente
baseados em REST, com alguns serviços expondo os dois estilos. Os
Web Services podem ser usados para oferecer dados adicionais ou
transformar os dados submetidos ao mashup. Para um mashup
baseado em mapa, os dados só podem conter endereços de ruas e
uma chamada para Web Service baseado em WSDL ou REST pode ser
feita para converter o endereço de rua em uma coordenada
longitudinal/latitudinal para o mapa.
Serviços da plataforma
A Figura 2 representa uma classe especial de serviços, usadas para
criar mashups. Estamos chamando estes serviços de plataforma
porque fornecem funcionalidade além do modelo típico
solicitação/resposta dos Web Services tradicionais. Um exemplo típico
disso é o mapeamento de serviços fornecido pelo Virtual Earth. Inclui
uma lista completa de capacidades de processamento dos dois lados,
cliente e servidor, assim como "serviços na nuvem". Estamos
presenciando o surgimento de serviços de bloco de construção
baseados na nuvem que começam a criar valor. Por exemplo, o serviço
Amazon S3 oferece armazenamento "na nuvem": facilita a exposição
de todos os dados estáticos por meio de upload para provedor de
armazenamento hospedado. O BizTalk Services da Microsoft é uma
plataforma de serviços que oferece uma capacidade diferente:
transmite comunicações da Internet por meio de um firewall
corporativo e, assim, expõe serviços internos para o consumo de
parceiros de negócio ou terceiros que constroem os próprios mashups
corporativos. Comunicações transmitidas como fornecidas pelo BizTalk
Services é também um serviço útil mesmo dentro de uma única
empresa, com muitas unidades de negócio ou com inúmeros
segmentos de rede. Uma transmissão de comunicações baseada em
Internet pode eliminar a topologia de rede física como um obstáculo
às comunicações.
Aplicativos mashup
Até este pondo, identificamos muitos tipos de serviços que podem ser
utilizados na criação de mashups, mas não abordamos a importância
do software que cria e distribui a experiência de mashup. Pense no
aplicativo mashup como uma combinação de serviços de camada
intermediária e de lógica leve do negócio. Para mashups baseados na
Internet, o software é usualmente escrito utilizando tecnologias web
(como PHP ou ASP. NET), mas estamos começando a ver a demarcação
entre o processamento do servidor e a indefinição do aplicativo
THE ARCHITECTURE JOURNAL
• Journal 13 •
cliente, com o surgimento das Rich Internet Applications (RIAs). As
RIAs são aplicativos executados no navegador com funcionalidade
rica, similar àquela de muitos aplicativos de desktop. Tipicamente, não
exigem uma instalação do lado do cliente, além de um plugin
genérico, como o Adobe Flash ou Microsoft Silverlight.
www.architecturejournal.net
Direção futura dos mashups
Nas primeiras versões dos mashups, grande parte da implementação
era muito entediante e demorada. Muitos deles usavam o
processamento do lado do servidor (quase sempre com PHP ou PERL)
e o cansativo scripting do lado do cliente, na forma de JavaScript, para
criar a experiência de mashup. Era comum para a pessoa que criava os
mashups criar código personalizado para analisar os conjuntos de
retorno XML que recebiam das respectivas fontes de dados.
Na medida em que o tempo passou e o processo de desenvolvimento
amadureceu, uma boa parte do trabalho entediante de codificação foi
substituída por frameworks e melhores padrões de codificação. Os
scripts personalizados no lado do servidor começam a serem
substituídos por bibliotecas padronizadas que automaticamente
gerarão o necessário script do lado do cliente. Presenciamos também
a padronização dos formatos de mensagens. Um exemplo disso é a
extensão GeoRSS, para o padrão RSS, que permite especificar a
longitude e a latitude correlatas dos itens do "feed". Os três principais
provedores de serviço de mapeamento (Google, Microsoft e Yahoo)
são compatíveis com GeoRSS e isso significa que os mashups com essa
extensão RSS praticamente não exigem codificação.
A criação de mashups foi domínio exclusivo do desenvolvedor, mas
existe um movimento para colocar a habilidade de criar mashups
diretamente nas mãos do cliente final. Como os frameworks para criar
mashups tornam-se cada vez mais simples de usar e os formatos de
mensagens tornam-se mais padronizados, o próximo passo lógico será
o de construir ferramentas que possam criar mashups. Algumas dessas
ferramentas serão destinadas ao consumidor final dos mashups. Pipes
da Yahoo e Popfly da Microsoft são exemplos de frameworks e
ferramentas que permitem aos usuários criar os próprios mashups.
Observamos um crescimento na importância do esquema comum e
dos metadados no desenvolvimento de mashups. Na seção anterior,
descrevemos como o esquema comum dos "feeds" RSS facilitam a sua
incorporação nos mashups. Os mesmos princípios também precisarão
ser aplicados a outros tipos de dados (robusto como é o RSS, não é
possível modelar todos os dados nesse formato). Atualmente, já
observamos o surgimento de outros esquemas-padrão, como a
linguagem de marcação de keyhole (KML - Keyhole Markup
Language) para descrever dados geoespaciais. Ainda mais interessante
será o Microformats, framework de grante potencial, destinado à
distribuição de significado semântico, que pode ser facilmente lido
por software do tipo mashup.
Mashups na empresa
Uma ótima forma de explorar mashups na empresa é com um
exemplo. Imagine-se arquiteto de aplicativos de um sistema de call
center que recebe chamadas sobre assistência técnica de garantia e
peças sobressalentes. Utilizando o número de telefone do chamador,
25
Mashups Corporativos
poderíamos exibir os registros desse usuário, incluindo um histórico
de compras. Esse interessante aplicativo já está implementado em
muitas centrais de chamadas, atualmente. Mas e se, além de pesquisar
as informações do cliente, pudéssemos plotar o número do telefone
em um mapa, utilizando um serviço disponível ao público e também
exibir uma lista de centros de assistência técnica do local ou
fornecedores de peças dos produtos incluídos no mapa? Com esses
dados em mãos, poderíamos responder as perguntas dos clientes em
segundos. E se também pesquisássemos as condições atuais do tempo
nessa área ou as equipes de esportes do local e os resultados dos seus
jogos recentes como início de conversação ou passatempo em
chamadas de longa duração?
Utilizando este exemplo, a Figura 3 apresenta um mashup simulado
de atendimento ao cliente que poderia ser usado por um atendente
no momento do recebimento de uma chamada. Combinando dados
de serviços públicos (como a previsão do tempo e o noticiário) com
fontes de dados internas (um blog de alertas do atendimento ao
cliente e um banco de dados de locais de assistência técnica), este
aplicativo combina os elementos de mashup com a acessibilidade de
um portal.
Como mostra a Figura 3, o mashup incorporado coloca um volume
extraordinário de informações nas mãos do agente do serviço de
chamadas: dos principais itens de serviço, para que as perguntas
possam ser rapidamente respondidas, até pesquisas reversas de
chamadas passadas para ter assunto para iniciar uma conversação. Este
tipo de mashup é estritamente interno mas proporciona valor
significativo na primeira chamada, com qualquer cliente.
Existem vários elementos-chave para o êxito deste mashup. Acima de
tudo, deve ser contextual à tarefa em questão. Em segundo lugar,
deve dar prioridade às informações na ordem em que,
provavelmente, serão mais úteis. É preciso saber com quem estamos
lidando, quais produtos estão registrados, quais os principais itens do
serviço que se destinam a esses produtos e, então, começar tentando
responder as perguntas do usuário como, por exemplo, qual o
Figura 3: Exemplo de mashup para a nossa central de chamadas
endereço dos centros de assistência técnica do local do cliente. Em
terceiro lugar, após sabermos as informações e a localidade do cliente,
cada um dos
painéis de conteúdo são independentes e não exigem interação com
as outras partes. Esse procedimento permite reunir e agregar os dados
de cada uma das partes a serem executadas, de modo assíncrono.
Concretizar o retorno sobre o investimento (ROI) é uma preocupação
comum das implantações da arquitetura orientada a serviço (SOA).
Muitas organizações consideram difícil justificar o investimento inicial
da criação de serviços para diferentes funcionalidades, quando seria
mais fácil criar um aplicativo simples. Os mashups corporativos são um
grande exemplo de como um investimento em SOA pode
proporcionar grande valor. (Vide na barra lateral "Mashups deliver ROI
for IDV Solutions".)
Aproveitar os serviços já construídos por você
O retorno imediato de uma SOA pode ser concretizado quando as
organizações começam a mesclar e fazer a correspondência desses
serviços entre objetivos novos e existentes. Pode ser instigante iniciar
o aproveitamento dos serviços ou aplicativos nos modos jamais
imaginados no momento em que foram escritos. (Vide na barra lateral,
“Quicken Loans leverages mashups for fast results” - Quicken Loans
aproveita mashups para resultados mais rápidos)
Aproveitar os serviços construídos por terceiros
É importante compreender que não se pode ter todas as informações
do mundo e que há um retorno sobre o investimento bastante alto
quando você simplesmente aproveita o trabalho árduo de outra
pessoa, em lugar de reinventar a roda.
Construir serviços que terceiros possam aproveitar
Outra oportunidade para as empresas, na medida em que os mashups
tornam-se cada vez mais populares, é a de construir serviços que
possam ser facilmente consumidos por aplicativos mashups. Voltando
ao exemplo que citamos, o atendente do serviço de chamadas pode
deixar o cliente feliz informando o endereço da loja
mais próxima. Mas, imagine se as próprias lojas
expusessem seus inventários e disponibilidade de
produtos para o mashup. Agora, o atendente do
serviço de chamadas pode fornecer informações
ainda mais detalhadas e valiosas ao cliente. Esse tipo
de serviço seria importante para o cliente, para a
central de chamadas e para a própria loja.
Plataforma ágil
Como discutido anteriormente, muitos mashups
foram criados para distribuição na plataforma web
baseada em padrões (HTML e Java Script). Isto não é
uma limitação dos próprios mashups, mas apenas a
forma padrão de distribuir aplicativos na Internet. À
medida que vemos os mashups entrarem na empresa,
observamos também um número crescente de
mashups construídos em plataformas RIA (como o
Flash da Adobe e o Silverlight da Microsoft) e até
mesmo o surgimento de mashups para desktop ricos,
completos, construídos em Windows Presentation
Foundation. O processamento em 3-D completo, em
plataforma de cliente rica, pode aumentar o apelo
visual do mashup. Os mashups corporativos podem
aproveitar totalmente essas plataformas mais ricas
pois muitas terão maior controle dos desktops.
26
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
Mashups Corporativos
A Quicken Loans aproveita os mashups para resultados
rápidos
Durante a confecção deste artigo, falamos com Keith Elder da
Quicken Loans. Keith é arquiteto de um aplicativo interno que
utiliza mashups e serviços existentes para oferecer qualidade rápida
aos seus clientes. Esses serviços foram construídos nos últimos anos
como parte da iniciativa SOA da empresa.
Levamos informações e combinamos nossas telas com base em
todos os tipos de serviços. Nossos usuários finais não têm idéia de
que estamos aproveitando os serviços de toda a empresa para
extrair dados, verificar a validação de endereço, visualizar a
atividade de chamadas, enviar faxes e muito mais. Para os membros
de nossa equipe, o aplicativo é apenas um produto apropriado que
lhes fornece a funcionalidade que precisam, na hora em que
precisam.
Keith acrescenta que na Quicken Loans falou-se muito, no início,
sobre a granularidade dos serviços ali construídos. Existem
compensações a serem feitas entre os serviços de uso específico e
aqueles de multiuso. Eles escolheram os serviços de uso específico,
que ofereceram funcionalidade bastante específica. Houve uma
compensação: talvez tenham de chamar vários serviços como parte
de um único mashup.
Tempo de resposta rápido
Se você estiver aproveitando Web Services existentes e serviços de
plataforma robustos, o tempo de desenvolvimento dos mashups pode
ser medido em horas ou dias, em lugar de semanas ou meses . O
tempo de resposta rápido dos mashups pode mudar a forma de
interação dos departamentos de TI com os usuários em suas organizações. O desenvolvimento conjunto e as várias iterações dos aplicativos
entregues a curto prazo podem tornar-se metas mais realistas.
Visualização rica dos dados de seus usuários
O maior benefício obtido pelos mashups é, talvez, a visualização que
criam para os usuários. Os dados de natureza visual são muito mais
fáceis de entender e podem criar maior significado para o cliente. Isto
não se limita aos exemplos de mapeamento que discutimos até agora.
Outras técnicas, como os mapas de calor e os mapas em árvore,
também podem ser criadas como visualizações de dados em mashups.
Principais fatores de sucesso
Procure serviços utilitários de consumo (simples e não complexos).
Quanto mais coisas um determinado serviço faz, mais difícil será o
amálgama com outros serviços. Os serviços certos fazem uma coisa e
fazem isso muito bem. Por exemplo, um serviço cujo resultado inclui
dados de pessoal com seus endereços, empréstimos, automóveis, trens,
aviões e automóveis pode estar oferecendo um volume de dados
muito grande. Talvez você queira criar um subconjunto do serviço cujo
resultado traga apenas nomes e endereços para o mashup, pois é uma
perda de largura de banda e de processamento extrair dados que não
serão utilizados.
Manter os mashups no modo somente leitura
Os mashups são visões ágeis dos dados que apresentam. Não são uma
superfície de edição toda-poderosa, capaz de editar todas as informações recebidas. Se alguém quiser editar esses dados, deverá voltar para
o aplicativo que criou os dados para tal. O mecanismo para a edição
deve ser óbvio também. Este procedimento reduzirá drasticamente a
complexidade (e aprimorará a agilidade dos aplicativos mashup.
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
A atualização dos dados é importante
As decisões do negócio serão tomadas com base nos mashups
corporativos. Extrair dados de várias fontes pode ser perigoso, pois os
dados podem estar ultrapassados. Como com qualquer relatório que
sirva de base para decisões, é importante ter carimbo de data/hora
para identificação da última atualização. Esta característica aprimorará
muito a clareza e a utilidade dos dados do mashup e a confiança com
que as decisões podem ser tomadas.
Não tente resolver os problemas dos dados corporativos
À medida que os mashups entram na empresa, é inevitável incorrer
em fragmentação de dados e questões de normalização, em
decorrência de anos de desenvolvimento de aplicativo legado. Por
exemplo, fazer um mashup de vendas por área geográfica poderia ser
como criar um mashup lógico para o seu gerente geral de vendas.
Mas, e se os dados estiverem armazenados em três sistemas diferentes,
por linha de produto, tendo, cada sistema, diferentes regras de
controle das estruturas de dados e do negócio? Recomendamos
descobrir um candidato melhor para tecnologias de mashup e deixar
que um projeto mais tradicional (como um esforço de consolidação de
sistemas) resolva os problemas mais complexos.
Compreender as questões de autenticação e autorização
Autenticação e autorização podem ser impedimentos imensos para
fazer um mashup de vários serviços, caso todos exijam autenticação de
acordo com esquemas diferentes. Por exemplo, poderá haver
problemas se você tiver um serviço que exija nome de usuário e senha
e, outro, que exija um certificado X509. Essa situação não é
insuperável, mas pode ser uma grande barreira que deve ser
ultrapassada. Existem várias estratégias de ataque a esse problema.
Você pode evitar serviços que exijam autenticação ou autenticação
por métodos incompatíveis com o sistema. Ainda que você possa
iniciar o processo dessa forma, a realidade é que há serviços que você
precisa aproveitar mas que não consegue, sem autenticação. Você
poderia tentar forçar terceiros, ou pagá-los, para oferecer o tipo de
autenticação que lhe seja conveniente. A realidade, entretanto, é que
o seu aplicativo provavelmente terá de ser compatível com a
autenticação do serviço utilizando muitos mecanismos diferentes, e
todos devem ser considerados.
Riscos
Ao implementar mashups, quatro áreas de risco devem ser
consideradas:
Dependências dos serviços
Um dos principais riscos da criação de mashups corporativos ocorre
quando se cria uma dependência dos serviços externa à sua empresa
(como "serviços na nuvem”). Os termos dos acordos de serviço
deveriam ser analisados antes de se criar uma dependência. Por
exemplo, alguns serviços exigem que o software que usa o serviço seja
um site da Internet de acesso público; isto pode ocorrer quando o
serviço tem um modelo de receita baseada em publicidade. Os termos
do serviço também podem estar sujeitos às mudanças, em alguns
casos, de formas que poderiam impedi-lo de usar esse serviço. Para
minimizar essa preocupação, procure provedores de serviço cujo
modelo que se adapte ao seu uso.
Perda de fidelidade dos dados
A perda de fidelidade dos dados exibidos é outro risco-chave. Na
medida em que os dados são visualizados, existe uma tendência de
adaptar os dados aos limites da superfície de apresentação. Haverá
uma tendência natural de não visualizar pequenos volumes de dados
ou de agrupar dados em coleções maiores para economizar espaço na
superfície de apresentação. Isso pode "distorcer" a visão que o usuário
final tem dos dados.
27
Mashups Corporativos
Mashups geram ROI para a IDV Solutions
Recentemente, falamos com Ian Clemens da IDV Solutions
(integrador de sistemas que desenvolve aplicativos mashups para
clientes corporativos) sobre a velocidade com que os mashups são
desenvolvidos. "Nossos clientes têm experimentado ROI
significativos decorrentes de mashups, não só devido a custos
menores de implementação (se comparados ao desenvolvimento
de software personalizado convencional) mas, também, devido a
aplicativos mais ricos e amigáveis, que simplificam muito os
workflows do negócio", disse Ian.
Política
A política também pode ser um obstáculo à criação de mashups. Se o
serviço foi criado por terceiros, talvez faça (ou não) exatamente o que
você desejou e, para fazer com que o originador do serviço
modifique-o de acordo com suas necessidades, demora muito. Essa
mentalidade não-foi-inventado-aqui é fatal para os mashups. Isso
também se manifesta em confiança. Se não confia no provedor do
serviço, você também não confiará nesse serviço para o seu aplicativo
de missão crítica.
"Consumerização" não controlada
De acordo com um recente relatório do Gartner, Inc. as tecnologias de
consumo estão cada vez mais sendo utilizadas pelas empresas sem
consciência, governança ou TI corporativo. Ferramentas voltadas ao
consumidor têm enfoque rígido na criação e visualização de um
mashup, assim, pode ser muito fácil criar o mashup inicial, mas a
manutenção de mais longo prazo não é considerada. Veja, também,
como seria perigoso ter um usuário final carregando dados
corporativos em uma ferramenta pública de mashup como Pipes ou
Popfly.
Existem muitas formas de minimizar esses riscos. Primeiramente, para
serviços internos ou externos, implemente um contrato de nível de
serviço (SLA) que descreva claramente as responsabilidades das duas
partes, tempos de resposta para requisições de mudança, exigências
de tempo de processamento, restrições de largura de banda e todos
os outros detalhes relevantes. Depois, esquematize as possíveis
exigências de emergência do seu aplicativo, caso haja falha na
chamada de determinado serviço. Para alguns serviços, pode ser
aceitável simplesmente não apresentar esses dados; com outros
serviços, você pode deixar os dados em cache aos quais poderá
recorrer sempre que houver uma falha. Talvez seja preciso ter um
serviço secundário alinhado como backup, a ser chamado caso
alguma coisa horrível aconteça.
Por fim, será preciso abordar as questões e a política de
consumerização. Ao contrário da crescente confiabilidade e
redundância dos serviços, isto exige um processo de governança. Se a
sua organização tiver um processo amadurecido para governar o uso
dos serviços, esse processo também deverá ser aproveitado para a
criação e o consumo de mashups.
Conclusão
Em pesquisa de janeiro de 2007 feita pela McKinsey perguntou-se a
clientes corporativos qual o nível de adoção das tecnologias de Web
2.0. Como seria de se esperar, muitos deles investiram ou estavam
planejando investir em uma ou mais tecnologias de Web 2.0. Para nós,
a parte surpreendente da pesquisa foi que os mashups estavam em
uso ou sendo considerados para uso por 21% dos entrevistados e a
maioria deles, 54%, sequer pensavam em adotá-los.
28
Acreditamos que a baixa aceitação dos mashups na empresa deve-se à
relativa inovação da tecnologia comparada a outras incluídas na
pesquisa (como Web services, podcasts e "feeds" RSS). O fato de que
as ferramentas para a construção de mashups estão apenas
começando a surgir também faz a diferença (no momento em que
escrevemos este artigo, muitas das mencionadas neste artigo estão
nos estágios beta e alfa). Estamos certos de que as técnicas serão mais
comuns e as ferramentas amadurecerão. Conceitos como o do
barramento de serviços para a Internet (página 2) devem facilitar a
construção desses mashups corporativos, tornando-os mais úteis.
Acreditamos que os mashups têm um lugar na empresa e nós o
incentivamos a considerar a sua adoção.
Referências
“Consumerization Gains Momentum: The IT Civil War,” Gartner
Special Report, 2007 (resumo)
http://www.gartner.com/it/products/research/consumerization_it/
consumerization.jsp
“How Businesses are Using Web 2.0: A McKinsey Global Survey,” The
McKinsey Quarterly, Agosto, 2007
http://www.mckinseyquarterly.com/article_abstract_visitor.
aspx?ar=1913
Mashup (Web application hybrid), Wikipedia
http://en.wikipedia.org/wiki/Mashup_%28web_application_hybrid%29
Redfin - http://redfin.com
“Web 2.0 na empresa”, Michael Platt, The Architecture Journal,
Jornal 12
Zillow - http://zillow.com
Sobre os autores
Larry Clarkin é architect evangelist da Microsoft. A experiência de
Larry em projeto e construção de aplicativos em várias tecnologias e
setores é superior a 15 anos. Ele se especializou na integração de
tecnologias web com sistemas legados e ERP, tarefa que vem
realizando há mais de 10 anos. Quando não está trabalhando com
seus clientes, Larry poderá ser encontrado realizando palestras sobre
tecnologia para grupos locais de usuários. Para falar com Larry, visite o
seu blog no endereço http://larryclarkin.com.
Josh Holmes é architect evangelist da Microsoft. Antes de ingressar na
Microsoft, em outubro de 2006, Josh era consultor e trabalhava com
vários tipos de clientes, desde as grandes empresas mencionadas na
Fortune 500 às empresas de pequeno porte. Josh é palestrante
freqüente e líder de equipe em conferências nacionais e internacionais
sobre desenvolvimento de software com enfoque nas tecnologias
emergentes, projeto e desenvolvimento de software com ênfase em
mobilidade e RIA (Rich Internet Applications). Preocupado com a
comunidade, Josh fundou e/ou administra muitas organizações
tecnológicas do Great Lakes Area .NET Users Group à Ann Arbor
Computer Society; também fez parte do comitê que instituiu o
CodeMash. Para falar com Josh, visite o seu blog no endereço
http://www.joshholmes.com.
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
Microsoft Office
como Plataforma de
Software + Serviços
por Chip Wilson e Alan Josephson
Resumo
Software + serviços (S+S) é uma visão para criar
arquiteturas de aplicativo que aproveitam ao máximo
recursos de ponta - os recursos dos dispositivos do
cliente - para fornecer aos usuários finais experiências
ricas e intuitivas. Esta visão representa uma etapa
incremental na direção do processamento universal, em
que a tecnologia não mais interferirá nos processos de
raciocínio das pessoas, permitindo a humanos entender
melhor como máquinas funcionam e, a partir disto,
poderem realizar as suas tarefas. O Microsoft Office com
sua interface bastante conhecida, rico conjunto de
serviços e base estabelecida de usuários corporativos é
uma fundação natural para a criação de aplicativos
corporativos S+S.
E
mbora os recursos do dispositivo de processamento do cliente
possam ser aproveitados para oferecer uma interface de usuário
rica, não são adequados à execução da lógica e dos processos do
negócio, críticos para a empresa. Os recursos do sistema, idealmente
adequados para processos e armazenamento de dados do negócio
cuja hospedagem é de missão crítica estão, em geral, centralizados em
ambientes administrados, seguros, sob os olhos atentos da equipe de
operações das áreas de TI. As interfaces de serviço são
importantíssimas no aproveitamento dessas capacidades fundamentais
do negócio a partir dos inúmeros dispositivos do cliente que oferecem
ricas interfaces de usuários.
Muitas tecnologias e plataformas de cliente constroem o universo da
computação de ponta, desde simples interfaces de navegador Web 1.0
aos aplicativos .NET totalmente desenvolvidos, executados em
desktops ou laptops. Muito já se fez a partir dos últimos anúncios da
Microsoft sobre o Silverlight e os anunciados mecanismos do Google:
novos lançamentos no espaço de processamento do cliente. Embora
acrescentem capacidades novas e instigantes a muitas plataformas,
existem outras tecnologias comprovadas que a base de usuários
existente conhece melhor. Um caso irrefutável pode ser criado para
permitir que as plataformas de cliente existentes sejam o "Software" no
padrão arquitetural software + serviços.
Praticamente todos os knowledge workers de todas as empresas
conhecem o mesmo conjunto de aplicativos de produtividade:
Microsoft Office. O simples fato de que tantas pessoas tenham
aprendido como utilizá-lo, transforma-o em uma base natural para a
criação de aplicativos corporativos.
Lançamentos recentes incorporaram funcionalidades ao Office
transformando-o em algo muito maior do que um conjunto
independente de aplicativos de produtividade. Agora, o Office é uma
plataforma de desenvolvimento de aplicativos madura que oferece um
rico conjunto de serviços sobre a qual constroem-se aplicativos
corporativos. Considerando que tantos knowledge workers já utilizam
esses aplicativos para implementar processos corporativos de missão
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
crítica, existe um formidável impulso por trás de uma classe de soluções
emergente conhecida como Office Business Applications (OBA).
Desde o Microsoft Office 2003, é possível construir-se aplicativos
maduros sobre os aplicativos cliente do Office. Esta capacidade vai bem
além do que era possível com o Visual Basic for Applications (VBA).
Embora mecanismos para integração de conjuntos de módulos
(assemblies) .NET em aplicativos Office estejam bem documentados, os
padrões de projeto específicos necessários para o aproveitamento pleno
e aprimorado da IU ainda não são bem compreendidos pelo setor.
No momento em que as técnicas para casar a IU do Office com os
conjuntos de módulos do .NET estiverem dominadas (permitindo ao
código transferir informações de/para os documentos gerenciados
pelo Office), conectar esses documentos a sistemas de back-end via
serviços não será apenas lógico mas também relativamente simples,
presumindo-se que o trabalho de expor a lógica do negócio como um
serviço já tenha sido realizada. Isso supera uma das maiores
desvantagens de se implementar lógica do negócio significativa no
Office: o efeito colateral de se criarem ilhas de dados ou os chamados
"Excel Hell". Depois que os documentos estiverem conectados e
atuando sobre dados ao vivo nos sistemas de registro, eles se
transformarão em ferramentas em tempo real para automação dos
processos do negócio.
Conectar esses documentos diretamente a sistemas corporativos traz a
vantagem adicional de permitir o acesso às informações-fonte via
serviços, liberando o usuário final da tarefa entediante de fazer a
entrada manual dos dados dos sistemas e relatórios da empresa nos
documentos do Office. Depois que as etapas do processo
automatizadas pelo Office estiverem concluídas, as informações
resultantes poderão ser novamente armazenadas nos sistemas
corporativos, mais uma vez via serviços, eliminando as tarefas
adicionais de entrada de dados e garantindo a exatidão e a
temporalidade dos dados.
Um problema comum do negócio
Para que os negócios possam se desenvolver e manter vantagem
sobre a concorrência, é preciso elaborar a modelagem e as análises
financeiras com informações em tempo real, sem exigir que os
usuários acessem vários locais de armazenamento de dados. Os OBAs
agilizam o acesso às informações em tempo real, eliminando
processos manuais para a aquisição de dados e a obtenção de
definições de cálculo. Essas soluções permitem aos usuários do
Microsoft Excel executar análises complexas com dados extraídos
diretamente de data warehouses centrais, aplicativos ERP (Enterprise
Resource Planning) ou de sistemas externos, via web.
Algumas limitações do modelo Office desconectado surgem das ilhas
de dados armazenados em discos rígidos individuais e
compartilhamentos de redes. Em primeiro lugar porque, de modo
típico, não há trilha de auditoria dos dados. Esse fato pode ser
especialmente verdadeiro quando os documentos são enviados por email e alterações são introduzidas por várias pessoas, criando versões
paralelas do documento. Depois, como os dados não são agregados,
fica difícil ou até impossível executar qualquer tipo de análise de
tendência. Por último, pesquisar muitos documentos para obter
informações específicas pode ser extremamente difícil e demorado.
29
Microsoft Office como Plataforma de Software + Serviços
Figura 1: Como o Excel atua na versão Software + Serviços
UI (Excel)
Painéis de
gerenciamento
A "Empresa C" é representada por um banco comercial, com uma
abrangente iniciativa de gerenciamento de capacidade. A iniciativa tem
por objetivo reunir a gerência de produto e vendas com as operações
bancárias e de TI e, como uma equipe transfuncional e unificada,
identificar novas oportunidades de receita incremental para o banco
que aproveitem a capacidade não utilizada, medida e disponível.
Web
Service
Ferramenta de cálculo
Serviços essenciais
Definição
de cálculo
(excel)
Segurança
Auditoria
Validação
Agendamento
Notificação
Emissão de
relatórios
corporativos de registro, levando-as para um aplicativo familiar,
baseado em Excel. Os dados em tempo real permitem a melhor
tomada de decisão ao oferecer um acesso mais preciso e imediato às
informações.
Relatórios
Exemplos do mundo real
Para compreender melhor as características do problema do negócio,
examinar alguns exemplos do mundo real pode ser útil. Apresentamos
três cenários em que padrões arquiteturais foram utilizados para
resolver problemas similares do negócio em contextos e setores bem
diferentes.
A “Empresa A” oferece planos de benefícios a funcionários de bancos
norte-americanos de pequeno porte e cooperativas de crédito que
desejam atrair e reter os melhores talentos executivos possíveis. Para se
destacar da concorrência, a Empresa A oferece planos muito
personalizados, que exigem intenso processo administrativo para
garantir o nível mais alto de serviço ao cliente.
Contudo, oferecer esse nível de serviço personalizado cria desafios.
Benefícios como planos de seguro de vida são, em geral, registrados
como ativos dos bancos que os compram para seus funcionários.
Assim, os planos precisam ser tratados como outros ativos financeiros
importantes que refletem a completa saúde financeira da instituição, a
qual pode ser afetada por variáveis externas como as taxas de juros
mutáveis. A Empresa A deve monitorar os planos e as ferramentas de
financiamento continuamente e oferecer atualizações periódicas a seus
clientes. Para tanto, emprega administradores treinados para
acompanharem de perto os detalhes da política e do plano de
benefícios como, por exemplo, as mudanças de beneficiários,
flutuações da taxa de juros, cálculos de aposentadorias e outros fatores.
Historicamente, esses administradores de planos trabalharam com
vários sistemas e software, inclusive os bancos de dados Microsoft
Access e SQL Server, programas do Microsoft Office como o Excel e
inúmeros outros processos documentais, incluindo formulários em
papel. (Vide Figura 1.)
A "Empresa B" é representada por uma empresa de serviços de suporte
e administradora de investimentos imobiliários que presta serviços
completos, gerenciando investimentos em total superior a $20 bilhões
na América do Norte, Ásia e Europa. A equipe de gerenciamento de
risco tem por enfoque maximizar o potencial do portfólio global da
empresa pela monitoração contínua dos instrumentos de
financiamento e das propriedades que possui. O grupo mantém um
banco de dados abrangente para o gerenciamento dos ativos e
depende muito do Microsoft Excel para elaborar análises de suas
inúmeras e variadas propriedades.
A equipe queria ter condições de executar análises complexas de
gerenciamento de risco com dados obtidos diretamente dos sistemas
corporativos. A solução OBA permite aos usuários do gerenciamento
As equipes transfuncionais, organizadas de acordo com uma estrutura
corporativa de gerenciamento de linha opera em um ciclo contínuo de
gerência de desempenho do negócio na qual as projeções agrupadas e
as metas de desempenho são definidas e confirmadas a cada trimestre
e, posteriormente, revisadas com o comitê diretivo do gerenciamento
de capacidade de acordo com novas projeções para o trimestre ou
ciclo subseqüente.
Para cada produto, a equipe de gerenciamento de capacidade
construiu modelos em Microsoft Excel para os cálculos mensais e
geração dos resultados para painéis ou scorecards das informações de
gerenciamento. A conexão desses modelos diretamente aos sistemas
corporativos que contêm os dados de custo e produção necessários
para realizar os cálculos de capacidade não apenas eliminou a entrada
manual dos dados nas planilhas, como permitiu aos analistas executar
as análises de capacidade em tempo real, oferecendo feedback via
painel, continuamente, e não apenas mensal ou trimestralmente.
Solução
Generalizando, essas três soluções recaem no padrão arquitetural
software + serviços, uma solução OBA utilizando o Excel como um
cliente conectado a sistemas corporativos distribuídos via Web Services.
Os Web Services recuperam informações atuais imediata e diretamente
na planilha do usuário. Os usuários autorizados podem fazer e aplicar
mudanças nos sistemas corporativos, assegurando que informações
precisas estejam imediatamente disponíveis em toda a empresa.
Todos os diagramas, gráficos, tabelas e outras ferramentas para
emissão de relatórios que usam os dados modificados são
automaticamente atualizados de modo a refletir as informações atuais,
corretas. Esta solução permite aos usuários recuperar informações dos
sistemas corporativos de forma transparente levando-as para um
aplicativo familiar, baseado em Excel. As informações em tempo real
permitem a melhor tomada de decisão ao oferecer um acesso mais
preciso e imediato às informações. A administração e a manutenção do
aplicativo OBA são simplificadas pela implantação das alterações de
uma biblioteca central de documentos.
Benefícios no mundo real
Vamos ver como essa solução geral forneceu valor concreto ao
negócio nos três cenários mencionados acima.
A Empresa A simplificou os principais processos do negócio
organizando melhor e centralizando seus documentos. As tecnologias
de Web Services criaram flexibilidade nos sistemas de TI da empresa,
ajudando os gerentes a incluir e modificar características do plano para
administradores, sem prejudicar os recursos internos. E o que é mais
importante, a empresa continua em seu curso anual de crescimento,
firme, com acréscimos mínimos de pessoal.
Para cada produto, a equipe de gerenciamento de capacidade de risco
recuperar informações de forma transparente dos sistemas
O tempo economizado pela solução aparece igualmente em outros
processos do negócio, inclusive naqueles que afetam diretamente as
comunicações regulares da Empresa A com bancos. Se um banco
chama a Empresa A e deseja experimentar um cenário "what-if" de
determinada política - digamos que o banco deseja analisar os custos
30
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
Microsoft Office como Plataforma de Software + Serviços
Figura 2: Componentes do framework da lógica do negócio
IU do
processador de
cálculo
Módulo do processador de
cálculo
• Intérprete de metadados
• Gerente de conectividade
• Mecanismo de execução
• Local (modelo de objeto Excel)
• Excel Services
• Gerente de persistência
Serviço do
processador do
trabalho de
cálculo
Pasta de trabalho do
Excel, Office Open XML
Metadados
de cálculo
Armazenamento de dados
do trabalho de
cálculo
IU do agendador de
trabalhos de cálculo
associados à antecipação da data de aposentadoria de determinado
executivo - agora leva dois minutos, ou menos, porque todos os dados
estão agregados e facilmente acessíveis. No passado, esse processo
poderia ter levado até três dias pois o administrador teria de pesquisar
as planilhas relevantes para extrair os dados adequados.
Os analistas da Empresa B continuam a usar a interface familiar do
Microsoft Excel para modelar o seu portfólio imobiliário. Utilizando o
Excel como cliente em um OBA proporcionou-lhes um ambiente rico e
robusto para interação com os sistemas corporativos. Aprimorou e
simplificou os processos de análise dos usuários, oferecendo-lhes os
dados que precisam, na forma em que já estão acostumados a
trabalhar.
O framework de segurança faz uso do recurso segurança de acesso a
código do .NET. O uso desse recurso reduz a probabilidade de que o
aplicativo possa ser utilizado inadequadamente por código malicioso
ou mal programado. Outra vantagem é a sua capacidade de permitir
aos administradores do sistema especificar os recursos que podem ser
utilizados por um aplicativo e restringir o acesso do usuário a pastas de
trabalho ou servidores específicos, de acordo com a sua função.
Para abordar o problema de manter simultaneamente várias versões da
pasta de trabalho do Excel em toda a empresa, criou-se um framework
para controle de versões de uso geral que permite aos desenvolvedores
atualizar os conjuntos de módulos associados aos documentos e aos
dados ali contidos. Antes de os resultados poderem ser submetidos aos
sistemas corporativos, o componente cliente do OBA determina se
existe uma versão mais nova do documento por meio de consulta via
Web Service. Se este for o caso, os conjuntos de módulos do .NET são
descarregados para atualização dos dados, da lógica do negócio e IU
da pasta de trabalho. Se os dados da pasta de trabalho satisfizerem sua
lógica de validação atualizada, o carregamento continua com os dados
colocados na versão correta.
Para executar as regras do negócio e os mapeamentos de dados
especificados no framework da lógica do negócio, um framework de
execução lê na pasta de trabalho a lógica do negócio, armazenada
como metadado. A seguir, o framework interpreta e executa as
instruções com base em um simples conjunto de instrução extensível.
Esta abordagem interpretada permite aos desenvolvedores adicionar
facilmente novos tipos de instrução, conforme necessário, entregandoos a designers de pasta de trabalho, não desenvolvedores, por meio de
assistentes amigáveis.
Os Web Services oferecem uma forma transparente para a troca de
grandes volumes de informações pela rede, simplificando a forma com
que aplicativos cliente geram solicitações para os sistemas corporativos
e permitindo aos desenvolvedores construir inteligência no aplicativo.
Aplicativo de otimização de capacidade
A Empresa C aproveitou o Excel para fornecer uma interface de cliente
rica para que os analistas de negócio possam construír modelos de
utilização fundamentados nos princípios do cálculo de custos baseado
em atividade. Ao permitir que esses modelos extraiam dados ao vivo de
recursos e custos dos sistemas de back-end, a Empresa C pôde
automatizar o processo para determinar quais pontos de capacidade
não utilizada poderiam gerar receita adicional sem afetar os custos fixos
associados ao produto e, assim, aumentar as suas margens. Ao fornecer
informações de utilização calculadas aos sistemas corporativos, os
painéis de gerenciamento puderam apresentar não apenas as
informações de utilização de capacidade atuais e periódicas, mas
executar análises de tendências que ajudam a gerência a tomar
decisões sobre onde concentrar recursos futuros de marketing e
vendas.
"
Módulo processador de cálculo para configurar, salvar e executar
Solução técnica
Ao solucionar três problemas diferentes com a mesma abordagem
arquitetural, várias características comuns tornaram-se aparentes e
vários frameworks implementados são suficientemente gerais para
serem utilizados em projetos futuros.
O framework da lógica do negócio permite aos designers de pastas de
trabalho (usuários Excel qualificados que conhecem as relações dos
dados de uma pasta de trabalho e sua apresentação) modificar as regras
do negócio do sistema sem incluir um desenvolvedor para recompilar e
reimplantar o código. O acesso baseado em função para metadados da
pasta de trabalho proporcionam uma IU especial para esses designers,
permitindo-lhes executar tarefas tais como modificar o comportamento
de uma pasta de trabalho, alterar itens de menu, controlar como os
dados dos sistemas corporativos são mapeados por meio de Web
Services para campos das pastas de trabalho e ocultando ou exibindo
planilhas ou linhas e colunas individuais baseadas em dados.
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
Para entender melhor a arquitetura da solução, examinaremos a
solução de gerenciamento de capacidade da Empresa C mais
detalhadamente. O enfoque, neste caso, estará em como um
desenvolvedor de pasta de trabalho aproveita o framework que contém
a lógica do negócio para fazer a conexão de pastas de trabalho com
sistemas corporativos via Web Services e "executar" as tarefas de cálculo
criadas para a pasta de trabalho nos cenários de cliente e servidor. A
solução geral compreende quatro componentes (vide a Figura 2):
uma tarefa de cálculo (usados nos dois cenários: cliente e servidor);
"
IU do processador de cálculo que implementa a IU do módulo
processador de cálculo;
"
Serviço do processador do trabalho de cálculo para cálculos em
execução no servidor utilizando os serviços Excel chamados de um
serviço Windows;
"
Agendador de trabalhos de cálculo para configurar a execução
baseada em tempo dos trabalhos de cálculo.
Criação de tarefa de cálculo
O módulo processador de cálculo é responsável por modelar e
seqüencialmente executar as etapas que formam uma tarefa de cálculo.
Tarefa de cálculo é uma unidade de execução assim denominada por
compreender um conjunto simples de etapas de cálculo que descrevem
como:
"
chamar métodos de Web Service para transferir dados de/para a
pasta de trabalho;
"
transferir dados dentro da própria pasta de trabalho;
"
conectar eventos de IU do Excel para reagirem às interações do
usuário (executado apenas quando a pasta de trabalho está aberta
no cliente).
31
Microsoft Office como Plataforma de Software + Serviços
Figura 3: Criação de etapa de cálculo com base em método
do Web Service
Figura 4: Mapeamento de um esquema gerado do método do
Web Service
Add Web Service Method Invocation Step
Rename / Dele
Delete / Run
Web Service URL
Make sure to provide a simple, but explanatory name for this input eld .
Rename / Dele
Delete /
Retrieve Methods
http://companyc.com/Services/CalculationReslts.asmx?wsdl
et Expenses
t FTEs
t Product Stats
Rename / Dele
Delete / Run
t Resource Cost Driver Stats
Web Service Method
Rename / Dele
DeleteSelect
/ Runa method to call from this web service.
SaveFunctionalCalculation
Add a Step
Description:
Transmits results of a functional calculation to the system of
record for a product, site, and reporting period.
Inputs:
Reporting Period Start
Reporting Period End
Product Code
Site Code
Capacity Metric By Function Calcs
Capacity Based Unit Cost Calcs
Hour Rate Calcs
Capacity Based Unit Cost Summary Calc
Hour Rate Summary Calc
<datetime>
<datetime>
<string>
<string>
<object>
<object>
<object>
<object>
<object>
Outputs:
Status
Updated
<string>
<datetime>
2 Steps) Edit / Delete
>
(4
4 Steps) Edit / Delete
Step Name
Make sure to provide a simple, but explanatory name for this step.
Save Functional Calculation Results
Add this Step
Além disso, uma tarefa de cálculo possui um conjunto de entradas
fornecidas pelo usuário para acionar a execução da tarefa.
Um designer de pasta de trabalho usa o assistente de conexão para
adicionar chamadas de método do Web Service específicas para uma
tarefa de cálculo (vide Figura 3). Ao especificar o identificador de
recurso uniforme (URI) para uma WSDL (Web Service Definition
Language) do Web Service, seus métodos e respectivas assinaturas são
recuperados e apresentados ao designer da pasta de trabalho que,
depois, acrescenta um método de interesse para a tarefa de cálculo
como uma etapa do cálculo.
Uma vez acrescida, o processador de cálculo gera, de modo dinâmico,
uma definição de esquema XML (XSD) correspondente às entradas e
saídas do método do Web Service, incluindo-a na pasta de trabalho
como um mapa XML do Excel. A seguir, o designer da pasta de
trabalho faz o mapeamento dos elementos individuais do mapa XML
para as planilhas utilizando o recurso arrastar-e-soltar do painel de
tarefas-fonte XML (vide Figura 4). Essas tarefas serão valores escalares
mapeados para células individuais ou coleções de elementos que se
repetem, mapeados para tabelas do Excel 2007, anteriormente
conhecidas no Excel 2003 como listas Excel. Enquanto os mapas XML
preservam a estrutura hierárquica dos objetos proxy do Web Service,
estes ficam desnormalizados quando mapeados para tabelas ou pastas
de trabalho do Excel.
Ao colocar em serviço pastas de trabalho existentes, quase sempre
recomenda-se preservar a apresentação dos dados na pasta de
trabalho. Muitas vezes, dados similares não são apresentados na forma
de tabela, como exigido pelo mapeamento de elementos que se
repetem nos mapas XML. Além disso, existe um limite para mapas
XML do Excel, ou seja, as células de mapeamento não podem se
sobrepor àquelas de outros mapas XML. Nesses casos, algumas vezes é
preciso transferir dados de uma faixa de células da planilha para outra,
para fazer com que as entradas e saídas do serviço "fiquem em linha".
Um tipo de etapa de cálculo denominada copiar dados permite ao
designer da pasta de trabalho especificar como duplicar dados para
outros locais de uma pasta.
Nos cenários em que o Excel é usado no cliente para edição e
atualização de dados, algumas vezes a lógica do negócio em dados
recuperados exige mudanças dinâmicas na IU do Excel. Tal etapa de
manipulação de dados da pasta de trabalho poderá, por exemplo,
ocultar e exibir dados das planilhas com base em valores específicos
dos dados. Um tipo de etapa modificar IU permite ao designer da
pasta de trabalho fazer a conexão dessas interações.
32
Adicionalmente à criação de etapas de cálculo, o designer da pasta de
trabalho também especifica entradas bem tipadas para configurar
uma tarefa de cálculo utilizando um assistente de entrada de tarefa de
cálculo para especificar nomes de entrada e seus respectivos tipos de
dados. O processador de cálculo gera de modo dinâmico uma XSD
correspondente às entradas a qual é, depois, adicionada à pasta de
trabalho como um mapa XML Excel e mapeada para as células da
planilha, como anteriormente mostrado na Figura 4. Quando a tarefa
de cálculo é executada no cliente Excel, o sistema apresenta ao usuário
um formulário gerado que solicita os valores das entradas (vide Figura
5). Quando executado pelo processador do trabalho de cálculo no
servidor, são usados os valores das entradas especificados pelo
agendador de trabalho de cálculo.
Execução de tarefa de cálculo
O mecanismo de execução é o coração do módulo processador de
cálculo. É responsável por interpretar a chamada do método do Web
Service, copiar as etapas de dados e executá-las na ordem especificada
pelo designer da pasta de trabalho em uma tarefa de cálculo. Quando
o Excel é executado em um cliente, o mecanismo de execução acessa
diretamente o modelo de objeto Excel, utilizando os mapas XML para
vincular dados de/para planilhas. Quando executado no servidor,
utiliza o Excel Services para realizar a vinculação, o cálculo e a
recuperação dos dados.
Figura 5: Execução de uma tarefa de cálculo
All Workbook
Workbook Tasks
Tasks
T
-
Create a New Task
Run Capacity Management Calculation (4 Steps) Edit / Delete
Performs the capacity management calculation for a
reporting period, site, and product.
Run Task
Debug Task
Run Capacity Management Calculation
1. Reporting Period Start / Date
e
Edit / Delete
Reporting Period Start
Reporting Period End
2. Reporting Period End / Date
Edit / Delete
3. Product Code / List
Edit / Delete
4. Site Code / List
Edit / Delete
Product Code
Add an Input
Site Code
Continue1. Get Expenses
Rename / Delete / Run
2. Get FTEs
Rename / Delete / Run
3. Get Product Stats
Rename / Delete / Run
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
Microsoft Office como Plataforma de Software + Serviços
Programação e execução de trabalho de cálculo
Figura 6: Programação de um trabalho de cálculo
Edit Job
Name
Create a New Jo b
V
iew Job Logs Make sure to provide a simple, but explanatory name for calling this task.
View
ed Jobs
Monthly Cap Man - Dalla s
Scheduled
Schedul Jobs
s
Edit / Delete
elete
T.
Monthly Cap Man - Dalla
Monthly Cap Man - Dalla
T on 1/1/2007
This task runs daily at 6:00am CS
Last run at 6:00am CS
Tulsa
Tulsa Edit / Delete
Document to Use Run Job
Select the spreadsheet that you'd like to use with this job.
Browse
CapMan.xls x
Task to Run
Load
Sunday
Monthly on the
1st
Once on January
at
at
00 : 00
06 : 00
1st
2007
UTC
at
00 : 00
UTC
Limitações atuais do Excel Services proíbem que pastas de trabalho
com mapas XML sejam abertas no servidor. Para contornar essa
limitação, o módulo processador de cálculo extrai as informações de
vinculação armazenadas nos mapas XML de uma pasta de trabalho,
remove os mapas XML e apresenta uma cópia "limpa" ao Excel
Services. As etapas de chamada do método do Web Service utilizam
estas informações de vinculação para determinar como configurar e
obter faixas de células dentro da pasta de trabalho por meio da API do
Excel Services. Esta abordagem é similar ao modelo "push" em que os
dados são alimentados para o documento utilizando a estrutura de
controle explícita na tarefa de cálculo. Uma abordagem alternativa que
aproveita as funções definidas pelo usuário (UDFs - User Defined
Functions) do Excel para encapsular as chamadas do Web Service
também é possível, mas apresenta várias limitações, inclusive:
"
ter de confiar no gráfico de dependência da planilha para o
seqüenciamento das chamadas do método do serviço (sem controle
explícito);
"
apenas um volume predeterminado de dados pode advir das UDFs
pois a lista de tipos de valor de retorno deve estar vinculada a faixas
fixas do Excel;
"
exige manutenção adicional para implantar e fidelizar UDFs nos
termos do Excel Services.
O gerente de persistência abstrai o armazenamento dos metadados do
processador de cálculo. Os metadados serializados ficam armazenados
como uma parte XML personalizada (recurso novo do Excel 2007)
dentro do pacote Office Open XML que representa a pasta de
trabalho. Dessa forma, todas as informações sobre o trabalho de
cálculo ficam armazenadas na própria pasta de trabalho, disponível
para o serviço do processador do trabalho de cálculo.
A IU do cliente de cálculo pode ser implementada como um add-in do
Excel ou como uma personalização do Excel que acrescenta itens de
menu para que a IU do Excel tenha acesso a um jogo de formulários
do Windows. Esses formulários ampliam a IU do Excel por meio de um
conjunto de assistentes para que um designer de pasta de trabalho,
não desenvolvedor, possa configurar, salvar, expor uma tarefa de
cálculo para execução, executá-la diretamente ou examinar suas
etapas de cálculo. Outra classe de usuário, sem autorização para
modificar o cálculo, poderia ter acesso restrito apenas para a interface
de execução.
• Journal 13 •
"
programação da execução (recorrente ou data de execução única);
"
entradas iniciais para o trabalho de cálculo conforme determinado
pelos metadados da tarefa de cálculo;
"
caminho da pasta na qual os instantâneos de auditoria da pasta de
trabalho devem ser armazenados.
UTC
Save/Create this Jo b
THE ARCHITECTURE JOURNAL
"
caminho da pasta de trabalho;
"
identificação de qual tarefa de cálculo da pasta de trabalho deve ser
executada;
Run Job
T
T..
Provide Input Values
Run Capacity Management Calculation
Weekly Cap Man - T
d Last run at 2:00am CS T on 1/1/2007
1
ly Disabled
Run Job
This task runs weekly on Sunday at 2:00am CS
Schedule
T.
Currently
Current Disable
You should provide a fairly detailed description of the purpose of this task
Cap Man - Kansas City Edit / Delete
and a high-level overview of the steps involved.
y on Januar y 1st at 2:00am C
Annual Cap Man - Kansas City
T on 1/1/2007
Daily at 00 : 00 UTC
This task runs annually
annuall on January 1st at 2:00am CS
Weekly on
O agendador de trabalhos de cálculo é um aplicativo pelo qual
usuários administrativos configuram pastas de trabalho e os
respectivos trabalhos de cálculo para execução em hora marcada (vide
Figura 6). As informações fornecidas são:
www.architecturejournal.net
O serviço do processador do trabalho de cálculo é executado como um
serviço do Windows e chama o módulo do processador de cálculo
sempre que um critério de programação de um trabalho de cálculo for
satisfeito. As entradas iniciais fornecidas no momento em que o
trabalho foi programado são transferidas para o cálculo e o trabalho
de cálculo da pasta é executado utilizando o Excel Services.
Opcionalmente, um instantâneo da pasta de trabalho (depois de
concluída a tarefa de cálculo) pode ser gravado em local
predeterminado para fornecer uma trilha de auditoria do trabalho de
cálculo.
Conclusão
Esta abordagem arquitetural para resolver problemas do negócio
extremamente comuns tem sido utilizada muitas vezes, ultimamente.
Provou-se robusta e confiável, agregando incrível valor ao negócio.
Em um dos casos, esta solução revolucionou completamente o
modelo de negócio da empresa, permitindo uma oferta de serviços da
qual que nenhum outro concorrente poderia sequer se aproximar.
A visão software + serviços de IUs ricas em dispositivos do cliente
chamando serviços na nuvem adapta-se muito bem ao sistema do
Microsoft Office, especialmente porque a IU oferecida pelo Office é
absolutamente universal e conhecida.
Referências
Denise Partlow, EMC Global Services (ex-Geniant, LLC). “Improving
Data Integrity in Financial Analyses”. Abril, 2006.
Denise Partlow, EMC Global Services (ex-Geniant, LLC). “Real Estate
Firm Simplifies Risk Analyses with Web Services and Excel Smart
Clients”. Abril, 2006.
Microsoft Office Business Applications http://office.microsoft.com/enus/products/FX102204261033.aspx
Sobre os autores
Chip Wilson é arquiteto corporativo da EMC Global Services. Seu mais
recente livro publicado, Transparent IT: Building Blocks for an Agile
Enterprise (www.TransparentIT.com), descreve um framework e
roadmap detalhados para a adoção de uma arquitetura orientada a
serviço e a criação de uma empresa ágil.
Dr. Alan Josephson é consultor sênior de prática da EMC Global
Services, especializado no desenvolvimento do sistema Microsoft
Office. Criou soluções personalizadas de Smart Client e Office
Automation para clientes nos setores financeiro, de seguros e energia.
33
Um Planeta Regido por
Arquiteturas de Software
por Gianpaolo Carraro
O
mundo da arquitetura de software deu um passo "gigante" à
frente quando passou dos acrônimos de três letras (SOA e ESB)
para os acrônimos de quatro letras (AJAX e SaaS). Como você pôde
testemunhar nesta edição, agora temos um novo acrônimo que inclui
um caractere não alfanumérico: S+S (software + serviços). Agora, duas
perguntas povoam nossas mentes:
1. Os analistas se sentirão ameaçados por esta nova geração de
acrônimos e aumentarão a aposta introduzindo outros que exijam
codificação Unicode?
2. Como posso transmitir de modo eficaz a visão S+S em minha
organização?
A resposta da primeira pergunta é: só o tempo dirá! Tentando
responder a segunda, entretanto, quis explorar uma analogia, a de um
planeta com eras imaginárias em que cada uma delas é dominada por
uma civilização específica, metaforicamente representando um estilo
de arquitetura. Faz sentido? Espero que sim. Vamos começar…
A época da escuridão
Architectopia nem sempre foi um lugar feliz como hoje. Não faz muito
tempo, a maior parte de suas terras era dominada pelo império BigIron. Embora não sendo maligno, o império Big-Iron impunha regras
muito rígidas sobre as populações locais; naqueles dias, a liberdade de
expressão era bastante limitada. Nessa época da escuridão, não havia
outra opção a não ser cumprir respeitosamente a autoridade central
do imperador Mainframe I.
A renascença
A renascença foi um tempo de inovação rápida que viu o surgimento
de novos sistemas políticos, o início da ciência moderna e a
exploração geográfica. Nesse tempo, os Architectopianos acalentavam
um forte desejo de emancipação que trouxe certo declínio ao império
Big-Iron e a criação de vários Estados poderosos, notadamente: a
República de Desktopistan e o Grão-ducado de Enterprisia.
A República de Desktopistan
A República de Desktopistan foi instituída com base nos princípios da
individualidade e da independência. Chegou aonde as regras limitam
a expressão. Agora, todos podem ter acesso à literatura, matemática e
arte; para que isso ficasse garantido a todos, um livro, um ábaco e
uma tela podiam ser encontrados sobre as mesas de cada lar.
Nenhuma casa da república é igual à outra, todas têm layout
personalizado, papel de parede feito em casa e equipamentos
adicionais diferentes como espaço extra de armazenamento,
iluminação ativada por voz e, como norma, TVs de tela grande. Em
Desktopistan, espera-se que os artesãos produzam artefatos que se
adaptem a esses ambientes e equipamentos adicionais personalizados.
Muitos detestam cortador de cookies e abordagens de denominador
comum.
Contudo, a forte individualidade da cultura tem um preço: é uma
sociedade muito solitária. Reuniões sociais e compartilhamento de
34
experiências não fazem parte de suas tradições. A Tabela 1 compara os
prós e os contras da vida em Desktopistan.
Grão-ducado de Enterprisia
Forte aliado do império Big-Iron durante a época da escuridão, o
Grão-ducado de Enterprisia reinventou a si mesmo durante a
renascença. A dependência do império esvaiu-se dada a maior
influência de Desktopistan. As motivações não foram filosóficas mas,
sim, fundamentadas na vantagem econômica dessa mudança. Tal fato
não surpreende pois o Grão-ducado foi sempre dirigido como uma
"economicracia", ou seja, todas as decisões políticas devem resultar em
maior valor para o total dos ativos do Grão-ducado. De acordo com
essas regras, algum descontentamento da população é aceitável,
especialmente se a felicidade for considerada muito cara.
Ainda que apenas em princípio, o Grão-ducado está aberto à adoção
de novos modelos para vantagens globais aprimoradas, mas adota
posição bastante conservadora para aceitar tais modelos, ferramentas
e equipamentos. Essa lenta adoção, usada como um mecanismo de
proteção, é fiscalizada pelo influente "comitê pragmático de novas
adoções" formado por 27 membros resolutos. De acordo com os
governantes do ducado, a adoção lenta é um preço pequeno a se
pagar pelo rigor e controle permitidos pela disseminação disciplinada
de tecnologia nova. Posto isto, pode-se observar que muitos chefes de
vilas não se queixam do lento processo de adoção e assumem novos
modelos localmente, sem a permissão do Grão-duque. Em geral, é
sempre muito tarde para que o Grão-duque altere qualquer coisa no
momento em que fica sabendo do fato.
Observando-se o lado positivo, elevados padrões de qualidade são
prevalentes em todas as disciplinas. A infra-estrutura do ducado
(estradas e energia elétrica) embora antiga, é bastante confiável e
raramente passa por períodos de interrupção. O sistema legal também
é bastante desenvolvido e os acordos de serviço contratual são, em
geral, bastante respeitados.
Ultimamente, como parte do seu plano de crescimento de cinco anos,
o próprio duque concedeu autorização à Sociedade da Ordem e
Abundância (SOA) para reformar grande parte do modo de operação
do ducado. Ainda não se sabe ao certo se benefícios substanciais serão
obtidos sem reformas mais fundamentais do Grão-ducado, mas as
esperanças são grandes. A Tabela 2 apresenta os prós e os contras da
vida no Grão-ducado de Enterprisia.
Tabela 1: Prós e contras da vida em Desktopistan
Contras
Prós
• Experiências ricas
• Pleno uso dos recursos locais
• Extensibilidade
THE ARCHITECTURE JOURNAL
• Experiência isolada
• Journal 13 •
www.architecturejournal.net
Um planeta regido por arquiteturas de software
Tabela 2: Prós e contras da vida no Grão-Ducado de Enterprisia
Prós
Contras
• Padrões de qualidade elevados
• Contratos e acordos de nível de
serviço baseados na economia
• Governança
• Adoção lenta, aceitação lenta
• Falta de agilidade
• Muitos dados legados
A erupção do monte Web
A República Popular do Mundo On-line é uma jovem nação instituída
em um novo continente criado pelas violentas erupções do monte
Web. Em muitos aspectos, a República Popular se rege por valores
opostos aos do Grão-ducado de Enterprisia. Na mesma medida em
que Enterprisia é dirigida a processo, com sistemas centralizados, a
República Popular caminha rápido e é centrada nas pessoas. Em lugar
de confiar em práticas definidas e bem comprovadas, os cidadãos da
República Popular preferem o procedimento tentativa-e-erro. Outro
ponto divergente trata da habilidade artesanal. Fica claro que as
qualidades leve e funcional são as preferências da República Popular
para seus produtos artesanais, em detrimento da elegância ou
durabilidade. Até mesmo no tempo parecem diferentes pois o restante
de Architectopia rege-se por anos orbitais longos e na República
Popular o tempo é contado em dias lunares meridionais, muito mais
curtos.
Um ditado popular desse país (considerado herege em Enterprisia) diz
“vamos tentar e ver o que acontece”. Explosões são freqüentes nos
laboratórios da República Popular. Muitos nem se surpreendem pois
os cientistas, em sua maioria, são adolescentes que aspiram ser
alquimistas e que se recusaram a cursar as melhores universidades do
Grão-ducado de Enterprisia. Em vez de irem à escola, preferem
dedicar sua energia inesgotável procurando pela pedra filosofal a qual,
no dialeto local, denomina-se "IPO". Pela perspectiva sociológica, é
interessante notar que muitas dessas experimentações são
patrocinadas por uma sociedade secreta conhecida por duas letras:
C.R. (capital de risco). Entretanto, nem todos os experimentos
terminam em explosões: os poucos que tiveram êxito, em geral,
modificam a face de Architectopia e tornam-se modelos para todos os
outros países, ainda que adaptados às culturas locais.
Um valor fundamental da cultura da República Popular é o enfoque
nas formas de trabalho centradas nas pessoas, que permitiu o
estabelecimento de uma infra-estrutura de comunicações muito
avançada. Nesse país, muito pouco parece ser divertido, se não for
feito em grupo. O trabalho é feito em grupo, reuniões sociais em
massa são comuns e alcançar todas as pessoas é o principal estandarte
de sua filosofia.
Um aspecto final do interesse cultural da República Popular é a noção
de que todas as compras deveriam ser grátis, de acordo com os seus
cidadãos.
Tabela 3: Prós e contras da vida na República Popular do
Mundo On-Line
Prós
• Alcance
• Coletividade
• Inovação rápida (técnica e
nos modelos de negócio)
THE ARCHITECTURE JOURNAL
Tabela 4: Prós e contras a vida em Deviceland
Prós
• Mobilidade
• Acesso em qualquer lugar
• Fator forma
Contras
• Fator forma pode degradar
toda a experiência
A única exigência é passar algum tempo ao final da experiência de
compras na frente de uma grande tela na qual exibe-se propaganda
(ironicamente, do Grão-ducado de Enterprisia). O tempo que você
deve passar assistindo a propaganda é diretamente proporcional ao
valor estimado da sua experiência de compra. A Tabela 3 apresenta os
prós e os contras da vida na República Popular do Mundo On-line.
Deviceland
Kermit-TTY, o primeiro governante de Deviceland, chegou atrasado na
reunião do Tratado de Divisão de Architectopia, pelo qual os vários
continentes foram alocados às várias civilizações antigas
(supostamente porque "não recebeu o memorando"). Desde então, os
habitantes de Deviceland são obcecados por ter acesso às informações
a qualquer hora, em qualquer lugar.
Formados por tribos nômades de guerreiros errantes, os residentes de
Deviceland adaptaram plenamente seus hábitos para acomodar-se ao
estilo de vida apressado, sempre em alta velocidade. A perspicácia das
tribos não deve ser subestimada: é prática comum para eles observar o
que está acontecendo nos outros países e adaptar os avanços que
encontram à sua vida nômade - quase sempre, entretanto, à custa da
riqueza da experiência.
Em Deviceland, as tribos vivem muito felizes em territórios isolados,
mas mantêm contato constante entre si e com a cidade da capital. O
lugar mais provável no qual se encontram membros das tribos são
pontos específicos conhecidos como Hot Spots. São muito populares
em Deviceland pois fornecem "o suco", uma fonte de energia
necessária para todos, assim como "sinal forte", campo
eletromagnético quase-místico, que fornece um profundo sentimento
de paz às pessoas. Os Hot Spots são o tema central do hino de
Deviceland: "Agora você me escuta?" A Tabela 4 lista os prós e os
contras da vida em Deviceland.
O novo mundo
A recente colonização de Servicetopia, anteriormente territórios hostis
de Architectopia, lançou algo novo. Em lugar de viverem isolados em
cidades-Estado como era o hábito em sua terra natal, os colonizadores
do velho mundo, especialmente a República de Desktopistan, o Grãoducado de Enterprisia, a República Popular do Mundo On-line e
Deviceland estabeleceram casamentos inter-raciais e mesclaram seus
valores.
Tabela 5: Os atributos centrais da Federação Unida de S+S
e a influência da origem
Atributo
Influenciado por
Padrões elevados e SLAs
Grão-Ducado de Enterprisia
Contras
Individualidade e experiências ricas
República de Desktopistan
• Sem contratos, todas as transações
seguem o “Farei o possível”
Alcance, coletividade e inovação
rápida
República Popular do Mundo
On-Line
• Tende a satisfazer uma
experiência de denominador
comum
Fatores de forma e mobilidade de
hardware otimizado
Deviceland
• Journal 13 •
www.architecturejournal.net
35
Um planeta regido por arquiteturas de software
Figura 1: Bandeira da Federação Unida de S+S
Figura 2: Um padrão S+S possível para empresa
Solução
contábil
SaaS
Solução
CRM Saas
Contabilidade
CRM
Portal
Arquitetura
de integração
Colaboração
Arquitetura
de
composição
Usuário
corporativo
E-mail
A diversidade e o respeito pela escolha tornaram-se o principal
conjunto de características do povo de Servicetopia. Assim, não é de
se surpreender que quando Servicetopia tornou-se a Federação Unida
de Software + Serviços (UF S+S), a diversidade e a escolha tornaram-se
elementos centrais da sua constituição. Na verdade, como
representado pela sua bandeira, pode-se pensar que a Federação
Unida de S+S é uma mescla do que cada cultura do velho mundo
tinha a oferecer (Figura 1).
Em sua essência, a UF S+S é uma sociedade que baniu a tirania que
obrigava a escolha de um modo de vida ou outro e, em lugar disso,
adotou o poder da fusão. Os padrões elevados de Enterprisia e a
liberdade de experimentação da República Popular são desejados;
procura-se ter as experiências ricas dos nativos de Desktopistan e a
mobilidade normalmente encontrada em Deviceland. Opiniões
dogmáticas e vacas sagradas são substituídas por tomada de decisão
pragmática, processo linear para se fazer a escolha certa, no momento
certo. A Tabela 5 apresenta os atributos centrais da Federação Unida
de S+S e a influência originada.
O que tudo isso quer dizer, realmente?
O objetivo da história irônica anterior foi o de transmitir a premissa
fundamental da visão software + serviços: arquiteturas híbridas são
boas.
Similar à fusão musical em que os estilos pop, folclore e reggae são
misturados, ou à fusão culinária que coloca patê de fígado sobre um
sushi, software + serviços combina padrões arquiteturais encontrados
na empresa, na web, nos aplicativos para desktop e nos dispositivos.
Em lugar de escolher um ou outro, a visão software + serviços agrupaos e aceita todos os padrões de cada domínio trazendo oportunidades
únicas para uma solução global.
Portanto, propomos um distanciamento do modelo "tamanho único"
e, em seu lugar, combinar várias arquiteturas na mesma solução, para
tentar conseguir a abordagem "o melhor de todos os mundos".
Não se trata mais de comprometer a riqueza pelo maior alcance, mas
oferecer ambos; tampouco comprometer controle rígido e
propriedade dos dados de uma solução interna por estrutura de custo
para vários locatários, mais econômica, mas conseguir ambos.
Atualmente, existem muitos exemplos de software + serviços. A
combinação Xbox / Xbox Live oferece um exemplo perfeito:
proporciona ricas experiências em 3-D, maximizando o poder de
processamento gráfico do console local (influência “Desktopistana”) e,
ao mesmo tempo, permite experiências participativas por meio do
serviço Xbox Live (influência da "República Popular do Mundo On36
line"). Este padrão, claro, não é utilizado apenas pela Microsoft, mas
está se tornando uma tendência do setor. As combinações
iPod/iTunes da Apple, Salesforce.com/Salesforce.com Offline Edition
também são exemplos deste modelo.
Contudo, a visão software + serviços não se limita a clientes locais
ricos que acessam aplicativos Saas. Outro exemplo poderia ser o
modelo estendido da arquitetura orientada a serviço (SOA) em que as
empresas executam parte do seu portfólio localmente e parte dele na
nuvem, conforme ilustrado pela Figura 2.
Sob a proteção do guarda-chuva software + serviços pode-se admitir
um número maior de cenários e eu diria que as três realizações mais
freqüentes (pelo menos inicialmente) serão:
1. Software local complementando um serviço na nuvem (por
exemplo, uma interface baseada em Outlook para o CRM Live).
Este modelo combina a experiência rica, ágil, familiar do usuário
local com economia de escala e distribuição SaaS um-para-muitos.
2. Software local ampliado por um serviço na nuvem (por
exemplo, um serviço anti-spam, anti-phishing baseado na nuvem,
ampliando um servidor de mensagens executado no local). Este
modelo permite que uma incrível variedade de serviços de valor
agregado seja acrescentada na nuvem, liberando os sistemas
existentes que controlam os dados considerados preferenciais para
ficarem intramuros.
3. Consumo de serviço independente de local, muitos-para-um no
TI corporativo (por exemplo, cenário de “SOA estendida”). Este é
um cenário típico de otimização de TI.
Por fim, para concluir esta narrativa fantasiosa, deixo-os com a
recomendação que teria sido, estou certo, a afirmação da hipotética
da constituição da Federação Unida de Software + Serviços: “Aceite a
diversidade, exija escolher”.
Agradecimentos
Agradeço muito aos meus irmãos de armas, Eugenio Pace e Frederick
Chong, pelas conversas que tivemos que nos levaram aos vários países
fictícios.
Sobre o autor
Gianpaolo Carraro é diretor de Distribuição de serviço – Estratégia de
arquitetura da Microsoft. Para saber mais sobre ele, visite o blog do
Gianpaolo: http:// blogs.msdn.com/gianpaolo
THE ARCHITECTURE JOURNAL
• Journal 13 •
www.architecturejournal.net
ARC
THE
ARCHITECTURE
JOURNAL
Inscreva-se no endereço: www.architecturejournal.net
Download

Software + Serviços - Center