Empresa filiada à Câmara Brasileira do Livro
SOA na Prática Nicolai M. Josuttis
Rio de Janeiro . 2008 I
SOA na Prática
Do original SOA in Practice Copyright © 2008 da Editora Alta Books Ltda. Authorized translation from English language edition, entitled SOA in Practice by Nicolai M. Josuttis, published by O’Reilly Media, Inc. Copyright © 2007 by O’Reilly Media, Inc.This translation is published and sold by permission of O’Reilly Media,Inc., the owner of all rights to publish and sell the same. PORTUGUESE language edition published by Editora Alta Books, Copyright © 2008 by Editora Alta Books.
Todos os direitos reservados e protegidos pela Lei 5988 de 14/12/73. Nenhuma parte deste livro, sem autorização prévia por escrito da editora, poderá ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrônico, mecânico, fotográfico, gravação ou quaisquer outros. Todo o esforço foi feito para fornecer a mais completa e adequada informação, contudo a editora e o(s) autor(es) não assumem responsabilidade pelos resultados e usos da informação fornecida. Recomendamos aos leitores testar a informação, bem como tomar todos os cuidados necessários (como o backup), antes da efetiva utilização. Este livro não contém CD-ROM, disquete ou qualquer outra mídia. Erratas e atualizações: Sempre nos esforçamos para entregar a você, leitor, um livro livre de erros técnicos ou de conteúdo; porém, nem sempre isso é conseguido, seja por motivo de alteração de software, interpretação ou mesmo quando alguns deslizes constam na versão original de alguns livros que traduzimos. Sendo assim, criamos em nosso site, www.altabooks.com.br, a seção Erratas, onde relataremos, com a devida correção, qualquer erro encontrado em nossos livros. Avisos e Renúncia de Direitos: Este livro é vendido como está, sem garantia de qualquer tipo, seja expressa ou implícita. Marcas Registradas: Todos os termos mencionados e reconhecidos como Marca Registrada e/ou comercial são de responsabilidade de seus proprietários. A Editora informa não estar associada a nenhum produto e/ou fornecedor apresentado no livro. No decorrer da obra, imagens, nomes de produtos e fabricantes podem ter sido utilizados, e desde já a Editora informa que o uso é apenas ilustrativo e/ou educativo, não visando ao lucro, favorecimento ou desmerecimento do produto/ fabricante. Produção Editorial: Editora Alta Books Coordenação Editorial: Fernanda Silveira Tradução: Ivan Bosnic Revisão: Rômulo Leite da Cunha Revisão Técnica: Rafael Contatori Diagramação: Fernanda Silveira Impresso no Brasil
O código de propriedade intelectual de 1º de Julho de 1992 proíbe expressamente o uso coletivo sem autorização dos detentores do direito autoral da obra, bem como a cópia ilegal do original. Esta prática generalizada nos estabelecimentos de ensino, provoca uma brutal baixa nas vendas dos livros a ponto de impossibilitar os autores de criarem novas obras.
Rua Viúva Cláudio, 291 – Jacaré Rio de Janeiro – RJ. CEP: 20970-031 Tel: 21 3278-8069/ Fax: 3277-1253 site: www.altabooks.com.br e-mail:
[email protected] II
SOA NA PRÁTICA
Sumário PREFÁCIO 1
2
3
IX
MOTIVAÇÃO
1
1.1
Características de Grandes Sistemas Distribuídos
2
1.2
A História do Barramento Mágico
4
1.3
O que Podemos Aprender sobre a História do Barramento Mágico
5
1.4
A História de SOA
5
1.5
SOA em Cinco Slides
7
SOA
11
2.1
Definições de SOA
11
2.2
Drivers SOA
12
2.3
Conceitos de SOA
15
2.4
Ingredientes de SOA
17
2.5
SOA não é uma Bola de Prata
19
2.6
SOA não é uma Tecnologia Específica
20
2.7
SOA versus Objetos Distribuídos
21
2.8
Terminologia SOA
21
2.9
Sumário
22
SERVIÇOS
23
3.1
Serviços
24
3.2
Interfaces e Contratos
24
3.3
Atributos Adicionais dos Serviços
26
3.4
Sumário
30
II I
4
5
6
7
8
ACOPLAMENTO FRACO
33
4.1
A Necessidade de Tolerância às Falhas
33
4.2
Formas de Acoplamento Fraco
33
4.3
Lidar com Acoplamento Fraco
42
4.4
Sumário
42
BARRAMENTO DE SERVIÇOS CORPORATIVOS
43
5.1
Responsabilidades de ESB
43
5.2
ESBs Heterogêneos
44
5.3
Diferenças de ESB
45
5.4
Serviços ESB com valor agregado
50
5.5
Sumário
53
CLASSIFICAÇÃO DE SERVIÇOS
55
6.1
Uma Classificação Básica de Serviços
55
6.2
Serviços Básicos
56
6.3
Serviços Compostos
60
6.4
Serviços de Processos
63
6.5
Outras Classsificações dos Serviços
65
6.6
Serviços Técnicos e de Infra-Estrutura
69
6.7
Por Detrás dos Serviços
70
6.8
Sumário
70
GERENCIAMENTO DE PROCESSOS DE NEGÓCIOS
73
7.1
Terminologia de BPM
73
7.2
BPM e SOA
74
7.3
Exemplo de BPM com Serviços
75
7.4
Modelagem de Processos de Negócio
78
7.5
Outras Abordagens para Identificar Serviços
84
7.6
Orquestração versus Coreografia
86
7.7
Mais Algumas Coisas para se Pensar a Respeito
87
7.8
Sumário
88
SOA E A ORGANIZAÇÃO
89
8.1
Papeis e Organizações
89
8.2
Modelos de Fundos
93
8.3 9
10
11
12
13
Sumário
94
SOA NO CONTEXTO
95
9.1
Modelos de Arquitetura baseados em SOA
95
9.2
Lidando com Frontends e Backends
99
9.3
Sumário
105
PADRÕES DE TROCA DE MENSAGENS
107
10.1
Introcução a MEPs
107
10.2
MEPs Básicos
107
10.3
MEPs mais complicados
111
10.4
Lidando com Confiança e Erros
112
10.5
Lidando com Diferentes Camadas de MEP
114
10.6
Arquitetura orientada a Eventos
115
10.7
Sumário
118
CICLO DE VIDA DOS SERVIÇOS
119
11.1
Serviços sob Desenvolvimento
119
11.2
Serviços em Produção
121
11.3
Sumário
124
CONTROLE DE VERSÕES
125
12.1
Requisitos para Controle de Versões
125
12.2
Controle de Versões Orientado a Domínio
126
12.3
Controle de Versões de Tipos de Dados
129
12.4
Controle de Versões Orientado a Gerenciamento de Configuração 134
12.5
Controle de Versões na Prática
134
12.6
Sumário
136
SOA E DESEMPENHO
137
13.1
Onde Desempenho Importa
137
13.2
Das Stored Procedures Remotas aos Serviços
139
13.3
Desempenho e Reusabilidade
140
13.4
Desempenho e Compatibilidade com Versões Anteriores
145
13.5
Sumário
147
14
15
16
17
18
VI
SOA NA PRÁTICA
SOA E SEGURANÇA
149
14.1
Requisitos de Segurança
149
14.2
Lidando com Requisitos de Segurança
150
14.3
Segurança de SOA na Prática
153
14.4
Segurança com XML e Web Services
157
14.5
Quando Segurança entra em Jogo
162
14.6
Sumário
162
DETALHES TÉCNICOS
165
15.1
Serviços e Estado
165
15.2
Idempotência
171
15.3
Testes e Depuração
173
15.4
Lidando com Dados Técnicos (Dados de Cabeçalho)
175
15.5
Tipos de Dados
176
15.6
Tratamento de erros
178
15.7
Sumário
179
WEB SERVICES
181
16.1
Motivação para uso de Web Services
181
16.2
Padrões Fundamentais de Web Services
182
16.3
Web Services na Prática
190
16.4
Observações Finais
197
16.5
Sumário
198
GERENCIAMENTODE SERVIÇOS
199
17.1
A História dos Brokers de Serviços
199
17.2
Repositórios e Registros
200
17.3
Sumário
203
DESENVOLVIMENTO DE SERVIÇOS ORIENTADO A MODELO
205
18.1
Código de Serviço Gerado
205
18.2
Modelando Serviços
206
18.3
Metamodelos na Prática
211
18.4
Definindo os Prcoessos MDSD
213
18.5
Ferramentas
220
19
20
18.6
Evitando Gargalos
223
18.7
Sumário
223
ESTABELECENDO SOA E GOVERNANÇA SOA
225
19.1
Introduzindo SOA
225
19.2
Governança SOA
226
19.3
SOA Passo a Passo
229
19.4
Outras Abordagens de SOA
233
19.5
Recomendações Adicionais
235
19.6
Sumário
239
EPÍLOGO
241
20.1
SOA é algo novo?
241
20.2
SOA Aumenta Complexidade?
241
20.3
Quais são Fatores-Chave para o Sucesso de SOA?
242
20.4
Onde SOA não é Apropriada?
242
20.5
SOA Substitui POO?
242
REFERÊNCIAS
245
GLOSSÁRIO
251
NOTAS
261
VII
VI II
S OA N A P RÁ TI CA
Prefácio
Nunca planejei me tornar um especialista em SOA. Eu era o líder de uma equipe em um departamento que foi instruído a usar uma nova abordagem de arquitetura orientada a serviços para a comunicação com sistemas de outros departamentos e unidades de negócio. A equipe SOA interdepartamental tinha fornecido um conceito SOA, incluindo centenas de páginas de documentação, diversos frameworks e bibliotecas e alguns rascunhos de processos correspondentes. Todos nós, enquanto unidade de negócio, – com sua própria TI – tínhamos apenas que usar essas soluções para estabelecer SOA. Uma vez iniciado o projeto, as coisas se comportaram de forma menos suave do que o esperado. Enquanto lidava com a abordagem SOA, eu aprendi não apenas o que é SOA, mas aprendi também a diferença entre teoria e prática, o que Laurence Peter “Yogi” descreve perfeitamente da seguinte forma: Na teoria, teoria e prática são a mesma coisa. Na prática, não são. De fato, eu reclamei tanto sobre o que foi fornecido pela equipe central de SOA que finalmente recebi a tarefa de arrumar tudo. Em resumo, tive que assegurar de que o meu gerente não escutaria mais reclamações sobre SOA vindas das unidades de negócios. Então nós consertamos idéias errôneas e processos fragmentados, automatizamos esforços manuais, influenciamos decisões estratégicas, fornecemos suporte e (por último, mas não menos importante) ensinamos aos outros os conceitos e as idéias por detrás de SOA e explicamos as razões e as motivações das nossas específicas decisões de arquitetura e políticas. Hoje em dia, o cenário SOA que nós construímos provê o suporte para os processos distribuídos entre diversos sistemas locais, nacionais e internacionais. Com centenas de serviços, o sistema suporta milhões de chamadas de serviço a cada dia. Baseado nessa experiência, e nas minhas observações de abordagens e projetos SOA em muitas outras empresas (em diferentes estágios de expansão), comecei a dar consultoria em SOA, revisões, palestras e treinamentos. Ao longo desse tempo, me tornei bastante familiarizado com os diversos aspectos de SOA e os diversos jeitos de lidar com ela. Além disso, aprendi sobre todas as questões que devem ser respondidas e sobre o melhor jeito de ensinar SOA. Ainda aprendo a cada dia, mas acredito que o conhecimento que adquiri até agora poderá ajudá-lo a encontrar uma maneira apropriada e bem-sucedida para estabelecer SOA e lidar com as suas propriedades na prática.
IX
SOA se tornou um grande paradigma e agora significa coisas diferentes para pessoas diferentes. Eu me concentrarei em SOA como sendo uma estratégia para prover e auxiliar o processamento corporativo distribuído. Nesse sentido, SOA é uma estratégia que, embora possa ser liderada pela TI, sempre atinge o negócio como todo. Este livro apresentará conceitos, mas com o foco na sua aplicação prática. Esta é uma razão pela qual este livro se encaixa perfeitamente na série “Teoria na prática” de O´Reilly.
O Que Deve Saber Antes De Ler Este Livro Como leitor deste livro, você deve ter um entendimento comum sobre ciência da computação e da programação. A experiência com os sistemas grandes e distribuídos irá ajudar, mas ela não é exigida porque este livro cobre todos esses conceitos (do ponto de vista de SOA).
A Estrutura do Livro O livro é estruturado para ser lido seqüencialmente, do começo até o fim. Começaremos com os conceitos gerais de SOA, e depois iremos para os assuntos mais avançados. As referências cruzadas o ajudarão a encontrar as explanações e outros detalhes contidos em outros capítulos e seções. A primeira metade do livro cobre o básico: Capítulo 1, Motivação Este capítulo explora a razão de usar SOA dentro do contexto de grandes sistemas distribuídos, explora como SOA emergiu, conta a história do Barramento Mágico e dá uma breve visão de SOA. Capítulo 2, SOA Este capítulo examina e consolida as diferentes definições de SOA e as suas principais propriedades. Capítulo 3, Serviços Este capítulo examina e consolida as definições de diversos serviços envolvidos em SOA. Capítulo 4, Acoplamento Fraco Este capítulo faz uma introdução e discute o acoplamento fraco (Loose Coupling), um conceito-chave de SOA e de construção de grandes sistemas distribuídos de um modo geral. Capítulo 5, Barramento de Serviços Corporativos Este capítulo trata do barramento de serviços corporativos (ESB), a fundação da infra-estrutura para alta interoperabilidade em um cenário SOA. Capítulo 6, Classificação de Serviços Este capítulo mostra como categorizar os serviços para que possa lidar com as diferentes classes de serviços, camadas de serviços e estágios da expansão de SOA. Capítulo 7, Gerenciamento de Processos Corporativos Este capítulo introduz o gerenciamento de processos corporativos (BPM) como sendo uma abordagem para identificar os serviços como parte do processo corporativo. Ele inclui orquestração, Linguagem de Execução de Processos Corporativos (BPEL), gerenciamento de portfolio e coreografia.
X
SOA NA PRÁTICA
Capítulo 8, SOA e a Organização Este capítulo discute o impacto que as estratégias SOA causam nas organizações e nas empresas. Capítulo 9, SOA no Contexto Este capítulo explora como SOA se encaixa em outras arquiteturas e abordagens, e como lidar com os diferentes níveis de processamento em partes diferentes do negócio. A segunda metade do livro discute aspectos específicos de introdução e execução de SOA. Embora os tópicos sejam apresentados em uma ordem lógica, tentei escrever estes capítulos de tal forma que você possa lê-los em qualquer ordem, contanto que entenda os conceitos fundamentais e a terminologia. Capítulo 10, Padrões de Troca de Mensagens Este capítulo introduz e discute os padrões de troca de mensagens (MEPs). MEPs define a seqüência das mensagens em uma chamada de serviço ou operação. Um desses padrões conduzirá aos eventos e às arquiteturas baseadas em eventos (EDA). Capítulo 11, Ciclo de Vida do Serviço Este capítulo acompanha o ciclo de vida dos serviços, da identificação das necessidades até a implementação, e da execução até a retirada; Capítulo 12, Controle de Versões Este capítulo discute a árdua questão das versões dos serviços, incluindo o controle de versões de tipos de dados associados. Capítulo 13, SOA e Performance Este capítulo discute como a performance, especialmente o tempo de execução, afeta a modelagem e a reusabilidade dos serviços. Capítulo 14, SOA e Segurança Este capítulo apresenta as questões de segurança em implementações de SOA e como lidar com elas. Capítulo 15, Detalhes Técnicos Este capítulo explora alguns detalhes-chave de SOA incluindo statefulness, idempotência, testes e depuração e tipos de dados fundamentais. Capítulo 16, Web Services Este capítulo examina Web Services e a sua posição como um padrão de fato para a infra-estrutura de SOA. Ele apresenta os padrões mais importantes de Web Services e o que a sua aplicação significa na prática. Capítulo 17, Gerenciamento de Serviços Este capítulo discute o uso de repositórios e registros para gerenciar serviços. Capítulo 18, Desenvolvimento de Serviços Orientado a Modelos Este capítulo descreve as conseqüências da especificação de serviços como modelos e geração de código a partir desses modelos. XI
Capítulo 19, Estabelecendo SOA e Governança SOA Este capítulo examina como SOA pode ou deve ser estabelecida dentro de uma organização, e explora o movimento para frente da sua governança. Capítulo 20, Epílogo Esta conclusão finalmente discute algumas questões principais de SOA, incluindo se isto é realmente uma novidade, onde o seu uso é apropriado e se aumenta ou diminui a complexidade. O livro termina com uma bibliografia (incluindo todas as fontes de referências que você pode encontrar na Internet), um glossário com os principais termos de SOA e um índice.
Convenções Utilizadas Neste Livro As seguintes convenções tipográficas são usadas neste livro: Itálico
Usado para dar ênfase onde os novos termos são definidos, URLs e endereços de e-mail. Fonte courier
Indica comandos, exemplos de código, parâmetros, valores, objetos, nomes de serviços, marcações XML, conteúdo de arquivos ou saída de comandos. Fonte courier negrito
Usada para destacar partes de código Fonte courier itálico
Mostra o texto que deve ser substituído por valores fornecidos pelo usuário.
Informações Adicionais Você pode obter mais informações sobre este livro, e SOA em geral, a partir do meu site: http://www.soa-in-practice.com
Como conveniência, as referências e os recursos usados neste livro são listados no site para que você possa navegar diretamente para esses recursos e dessa forma quaisquer atualizações se tornam integradas (web sites geralmente são muito mais voláteis que livros). Além disso, o site inclui um glossário SOA atualizado, exemplos de código e informações suplementares sobre SOA. A editora também tem uma página na Internet sobre este livro que contém as erratas, os exemplos e as informações adicionais. Você pode acessar essa página em: http://www.altabooks.com.br
Feedback, Comentários e Perguntas Agradeço o seu feedback e críticas construtivas – tanto positivas quanto negativas. Tentei preparar este livro cuidadosamente; no entanto, sou humano e em algum ponto tive que parar de escrever, revisar e pensar para que pudesse “publicar o produto”. Você poderá, portanto, encontrar erros, inconsistências, discussões que podem ser melhoradas ou até tópicos que faltaram por completo. O seu feedback me dará a chance de manter todos os leitores informados através do site do livro e para melhorar as próximas edições. XII
SOA NA PRÁTICA
A melhor forma de entrar em contato comigo é através de e-mail. No entanto, por causa dos problemas com spam, não quero incluir um endereço de e-mail neste livro (tive que parar de usar o endereço de e-mail que havia colocado em um dos meus livros sobre C++ depois que comecei a receber centenas de e-mails de spam por dia). Por favor, visite o site do livro em http://www.soa-in-practice.com para obter o endereço de e-mail atual. Alternativamente, use o e-mail da editora no Brasil. Você pode também verificar o site do livro para ver erratas conhecidas antes de submeter relatórios. Os comentários e as questões a respeito deste livro também podem ser endereçados diretamente para a editora: Editora Alta Books Rua Viúva Cláudio, 291 - Jacaré Rio de Janeiro - RJ 20970-031 Tels: 21 3278-8069/8419 FAX: 21 3277-1253 email:
[email protected] Para mais informações sobre os livros da Alta Books, veja o web site: http://www.altabooks.com.br
Agradecimentos Escrever um livro é o processo que leva vários anos e envolve várias pessoas. Eu não tenho como agradecer a todas elas pessoalmente. No entanto, quero agradecer a algumas pessoas que merecem um crédito especial por este livro. Em primeiro lugar, quero agradecer a todos os revisores deste livro. Eles fizeram um trabalho incrível, dandome o feedback sobre as primeiras versões, que continham erros e que foram difíceis de entender. Agradeço a Alan Lenton, Mirko Drobietz, Gudrun Dürr, Thomas George, Jochen Hiller, Gregor Hohpe, Christian Möllenberg, Bruce Sams, Steffen Schäfer, Herman Schlamann, Markus Völter e Torsten Winterberg. Em segundo lugar, quero agradecer aos editores da O´Reilly por terem me dado a capacidade de publicar este livro e por todo o apoio. Agradeço a Simon St.Laurent, Mike Hendrickson, Mary O‘Brien, Tatiana Apandi, Caitrin McCullough, Nancy Reinhardt, Sumita Mukherji e Jessamyn Read. Um agradecimento especial para Rachel Head, que fez um trabalho incrível ao transformar o meu “Inglês Alemão” em “Inglês Americano”. Em terceiro lugar, quero agradecer a todas as pessoas que me ajudaram a aprender e entender o assunto de SOA em projetos reais e pela ajuda com livros, artigos, palestras, conversas particulares, e assim por diante. Sempre que alguma informação-chave é a citação de uma pessoa, livro ou recurso, eu mencionei isso. Por favor, perdoem-me se esqueci algo ou alguém. Além disso, quero agradecer aos meus filhos que me ajudaram a manter os pés no chão e me fizeram entender o que realmente importa. Agradeço a Lucas, Anica e Frederic. Por último, mas não menos importante, agradeço a Jutta Eckstein pelo papel que teve em relação a este livro e à minha vida. Jutta me convenceu a tornar público o meu conhecimento de SOA, um apoio incrível e faz valer a pena viver a minha vida dia após dia. Aproveite a sua vida. - Nicolai M. Josuttis Braunschweig, julho de 2007 XIII
XIV
S OA NA PR ÁTI CA