Service Oriented Architecture
Transcript of Service Oriented Architecture
Arquitetura SOA
Service Oriented Architecture
Deyvisson Oliveira Flávio Ota Renan Wiezel Battaglin Rodrigo Ferreira Bagni
Agenda Introdução Interesse Repercussão no Mercado Arquitetura Problemas e Soluções Composição, Interação e Exemplos Oferecendo e buscando o Serviço SOA e Design Patterns SOA e Baixo Acoplamento Vantagens X Desvantagens
Introdução Consórcio de gigantes: Microsoft, IBM, BEA Systems,
Intel... Enfoque da IBM: = Hardware
(flexibilidade de infra-estrutura) e Software (SOA) SOA (Service Oriented Architecture) Enfoque nos Serviços Tecnologia mais próxima de regras e processos de
negócio Investimento em padrões abertos Toda aplicação ou recurso são tratados como serviços
Interesse
Repercussão no MercadoSOAs to have 'profound impact'IDC looks forward to challenges and opportunitiesRobert Jaques, vnunet.com 03 Apr 2006http://www.vnunet.com/vnunet/news/2153310/soas-profound-impact?vnu_lt=vnu_art_related_articles
IT directors dismiss SOA as marketing hypeTwo-thirds write off Service Oriented Architecture as 'meaningless puff'Matt Chapman, vnunet.com 04 Apr 2006http://www.whatpc.co.uk/vnunet/news/2153394/directors-believe-soa-hype
IBM's SOA strategy under fire from expertsBig Blue's plans dismissed as 'disjointed' and lacking in third-party integrationTom Sanders in California, vnunet.com 24 Mar 2006http://www.vnunet.com/vnunet/news/2152664/analysts-puzzled-ibm-soa
Repercussão no MercadoThe Sun is Shining over SOA MarketSoftpedia, 20th of June 2005, 10:29 GMThttp://news.softpedia.com/news/The-Sun-is-Shining-over-SOA-Market-3402.shtml
Planejamento em etapas é chave para sucesso de projetos SOA, diz GartnerPor Camila Fusco, do COMPUTERWORLD18 de abril de 2006 - 11h18http://computerworld.uol.com.br/gestao/2006/04/18/idgnoticia.2006-04-18.6974930760/IDGNoticia_view
Arquitetura
Evolução da Arquitetura Evolução natural Une o melhor do paradigma de orientação a objetos e de componentização
Problemas
Principais problemas a serem enfrentados: Heterogeinidade de sistemas Evoluções constantes Integração com sistemas legados Flexibilidade Escalabilidade Dimunição de custos
Soluções
Resolvendo os problemas: Reusabilidade Baixo acoplamento Alta coesão Padronização
Exemplos
Exemplos do mundo real:
CD Player Um CD diferentes players
Validador de cartão de crédtido Um validador para vários cartões
Composição
Elementos da arquitetura Funcionais Serviços de qualidade
Interação
Entidades que compõem a arquitetura
Oferecendo o ServiçoPasso a Passo
Serviço: entidade de software que é disponibilizada para ser usada por um consumidor.
Através da troca de mensagens o Cliente deseja utilizar o serviço disponibilizado pelo Servidor.
Questão: Como saber quais os serviços disponibilizados?
Oferecendo o ServiçoPasso a Passo
Registry: repositório que armazena dados dos serviços disponíveis.
O Servidor informa ao Registry quais são os serviços diponíveis.
Cada record do Registry armazena: Local do servidor que provê o serviço; A interface que o servidor utiliza para receber a requisição para
o serviço (Contract); A descrição do serviço.
Em busca do ServiçoPasso a Passo
Buscar o Serviço no Registry usando como critério o descrição do mesmo.
Busca também conhecida por Dynamic Discovery.
O repositório retorna uma lista com com os serviços encontrados que satisfazem os critérios de busca.
Cliente selecionará o serviço que melhor satisfaz a sua necessidade.
Com o local e a interface em mãos o Cliente solicita o Serviço desejado
Em busca do ServiçoEsquema gráfico
ClienteCliente
RegistryRegistry
ServidorServidor
Dynamic
Discovery
Contract
Serviços Disponíveis
Requisição de Serviço
Resultado do Serviço
Estrutura de RegistryObservação
O Registry pode estar distribuído ou até replicado em várias máquinas.
Obtemos maior disponibilidade do serviço de Registry e maior certeza na execução de cada Dynamic Discovery requisitado.
SOA e Baixo Acoplamento
Baixo acoplamento advindo do Registry
As interfaces disponíveis no Registry devem ser simples, não ambíguas, com semântica e vocabulário comuns a Clientes e Servidores.
SOA e Baixo Acoplamento
Baixo acoplamento advindo da comunicação. Através da interface definida pelo Contract o Cliente
poderá requisitar o serviço sem saber como ele é implementado.
Troca de mensagens descritivas e não instrutivas.
Para atingir as metas acima contamos com vocabulário e estrutura da comunicação propositadamente limitado.
SOA e Design Patterns
Inúmeros Design Patterns podem ser identificados em SOA: Proxy Adapter Microkernel etc.
Mas comentaremos apenas dois que se destacam por caracterizarem a própria definição da Arquitetura.
SOA ServiceLocator
Descreve a solução de design a ser usada para implementar a busca em repositórios (Registries) de componetes distribuídos.
Provê um ponto centralizado de controle
Encapsular as especificidades nas funcionalidades de busca de cada fabricante.
Age como um cache que elimina buscas redundantes.
SOA Broker
Outra maneira de interpretar a entidade de Registry.
Consumidor e o Servidor interagem com o Service Broker (Registry)
SOA Broker
SOA Broker
Pode ser visto como um broker dinâmico, já que o Service Provider pode estar atualizando o repositório constantemente.
O uso do Broker passa a ser um dos pilares do baixo acoplamento.
Vantagens Desvantagens
Recursos antigos: não é necessário se desfazer de sistemas legados ou parte deles.
Aplicações isoladas, não distribuídas que não requerem integração com outras aplicações.
Baixo acoplamento: a principal integração que ocorre em SOA é com relação à parte de especificação dos
serviços, permitindo liberdade com relação à sua implementação.
Aplicações que são desenvolvidas com o intuito de durarem pouco tempo, SOA visa longevidade.
Escalabilidade: a arquitetura oferece facilidade de integração de novas funcionalidades e permite respostas rápidas a inovações requeridas pelos
usuários.
Aplicações homogêneas, por exemplo, desenvolvidas sobre uma única plataforma.
Reuso: os serviços disponíveis podem ser combinados para fornecer novos serviços aos clientes sem a
necessidade de mais esforço em desenvolvimento.
Aplicações que requerem altas taxas de transmissão de dados.