SOA Service Oriented Architecture Maxmiliano Franco Braga Agenda O que é? SOA Glossário de SOA Vantagens e Cuidados Exemplos Viagem Restaurante Processos do MP O que é SOA? [1] Service Oriented Architecture Em português: Arquitetura Orientada a Serviços Um conceito Orientação a Serviços Separação do software em porções (serviços) Arquitetura de Software Orientações e Regras para Design e Implementação Boas práticas O que é SOA? [2] SOA está relacionada Projeto Implementação Administração SOA abrange: Questões tecnológicas Princípios organizacionais Princípios de processos a: O que é SOA? [3] Protocolos: SOAP (Simple Object Access Protocol) REST (Representational State Transfer) Padrão W3C Conceito chave: WSDL Forte validação de tipos Envio de XML em envelopes Utilizado pelo Google, Amazon Está em franca ascenção Conceito chave: URI É de fácil compreensão aos seres humanos Utilizado pelo Yahoo, Amazon, eBay RPC (Remote Procedure Call) Forma mais 'crua' de tratar serviços Glossário SOA: Serviço Unidade significativa de Software Abstração Pode de processo de negócio ser compartilhado e reutilizado Possui interface/protocolo bem definido Stateless (sem estado) Princípios para criação de Serviços Nomes devem facilitar o consumo Granularidade Serviços devem ser coesos e completos Encapsular Permitir deve ser bem definida detalhes da implementação diferentes padrões de chamada Independência de estado Glossário SOA: Orchestration Camada Cria consumidora de Serviços soluções a partir de Serviços Define fluxo de dados e de funções Adiciona Maior lógica adicional necessária volatilidade facilita mudanças Modelo Conceitual Vantagens de SOA Reutilização de Software Serviços são utilizados por diferentes sistemas Cuidado: serviços devem ser conhecidos e publicados Aumento de produtividade Maior agilidade Facilita manutenção Maior proximidade com Negócio Dificuldades em SOA Identificar partes reutilizáveis Pontos de vista diferentes: de Negócio Negócio x TI Negócio x Negócio Criar serviços comuns e genéricos Granularidade Generalização x Especialização Divulgação de serviços É preciso conhecer para utilizar Exemplo – Viagem [1] Considere uma hipotética apresentação de um sistema da SINFO à área de TI do Ministério Público do Maranhão Cenário: O MP-GO não possui linhas aéreas O MP-GO não possui frota de táxi O MP-GO não possui rede hoteleira Exemplo – Viagem [2] Será consumido um serviço de CIA Aérea Integrantes do MP não conhecem o Negócio Aviação Integrantes do MP não sabem pilotar um avião Só é preciso informar o destino do vôo e viajar Será consumido um serviço de Táxi Integrantes do MP não conhecem caminho do aeroporto para o Hotel Integrantes do MP não conhecem as ruas de São Luís Só é preciso informar o destino da corrida e relaxar Exemplo – Viagem [3] Será consumido um serviço de Hotel Os viajantes não conhecem o Negócio Hotel Ninguém precisa, sequer, saber arrumar cama Só é preciso fazer a reserva, informando os parâmetros, e 'consumir' o quarto Exemplo – Rede de Restaurantes [1] Considere um restaurante Pedidos são feitos O pedido é preparado e entregue ao cliente O cliente paga pela refeição Serviços identificados: RegistrarPedido() EntregarPedido() EfetuarPagamento() Exemplo – Rede de Restaurantes [2] Nosso restaurante, no cenário atual, orquestrou os serviços na seguinte ordem: RegistrarPedido() EntregarPedido() EfetuarPagamento() Estes serviços podem ser Outros sistemas do restaurante Filiais em outras localidades reutilizados Exemplo – Rede de Restaurantes [3] O restaurante abriu uma filial no shopping, que trabalhará como um fast-food Para atender à nova demanda, os serviços são orquestrados na seguinte ordem: RegistrarPedido() EfetuarPagamento() EntregarPedido() Exemplo – Rede de Restaurantes [4] Outras possibilidades Delivery / Entregas Buffet Self-Service por quilo Empório Loja de Conveniência Novos de reutilização serviços podem ser criados Diferentes orquestrações podem ser realizadas para novas demandas Exemplo – Processos do MP [1] Considere que o MPGO desenvolve webservices para a sociedade: Obter lista de processos Obter informações detalhadas de um processo Registrar denúncia Exemplo – Processos do MP [2] Obter lista de processos Recurso: Processo URL: http://www.mp.go.gov.br/processos/ Retorno: <?xml version="1.0"?> <p:Processos xmlns:p="http://www.mp.go.gov.br" xmlns:xlink="http://www.w3.org/1999/xlink"> <Processo id="00345" xlink:href="http://www.mp.go.gov.br/processos/00345"/> <Processo id="00346" xlink:href="http://www.mp.go.gov.br/processos/00346"/> <Processo id="00347" xlink:href="http://www.mp.go.gov.br/processos/00347"/> <Processo id="00348" xlink:href="http://www.mp.go.gov.br/processos/00348"/> </p:Processos> Exemplo – Processos do MP [3] Obter informações de um processo Recurso: Processo URL: http://www.mp.go.gov.br/processos/00345 Retorno: <?xml version="1.0"?> <p:Processo xmlns:p="http://www.mp.go.gov.br" xmlns:xlink="http://www.w3.org/1999/xlink"> <Processo-ID>00345</Processo-ID> <Descricao>Deúncia contra fulano de tal...</Descricao> <Promotor xlink:href="http://www.mp.go.gov.br/processos/00345/prom otor" /> </p:Processo> Exemplo – Processos do MP [4] Registrar Denúncia Recurso: Denúncia URL: http://www.mp.go.gov.br/denuncia Cliente cria uma instância de Denúncia Envio através de HTTP POST É atribuído uma URL para a Denúncia criada Ex.: http://www.mp.go.gov.br/denuncia/00005 Dúvidas? Perguntas podem ser feitas neste momento Respostas podem ser dadas, ou não Respostas dadas não são garantidas Obrigado! Agradeço a todos os presentes A quem contribui com a apresentação E aos ausentes, também Enfim... Obrigado a todos!