SOA: Service-oriented architecture
Roteiro Breve História O que é Arquitetura de Software? O que é SOA? Serviços Infraestrutura Composição Sua empresa está preparada para SOA?
Breve História Uma empresa de Seguros vendia apólices para as outras empresas; Ao passar dos anos, houve a necessidade de adquirir/elaborar softwares para gerencia: Os contratos dos clientes; O financeiro; Entre outros setores; Até meados de 1990, os sistemas atendiam todas necessidades da empresa;
Breve História Ao passar dos anos, este empresa teve que comprar outras; Problema, os sistemas das outras empresas não eram compatíveis com a da atual; A pessoal de TI necessita de tempo (2 anos) para integrar os sistemas; O custo é elevado e a empresa pode decidir novos rumos durante esse tempo (levando mais tempo para se adequar); Deste modo, há um conflito entre as partes e demora para na integração dos sistemas;
Breve História Gerentes Não entendem ( e nem devem ) das limitações dos hardware e software da empresa; São focados em decidir o rumo negócio, e; Determinar as funções de negócio (as atividades); Pessoal de TI Não entendem completamente as funções de negócio; Sabem das restrições das tecnologias usadas dentro da empresa; Qualquer alteração do sistema, necessita de tempo para projetar e colocar em prática;
Breve História A solução para este problema é a utilização de SOA, pois: Por utilizar padrões de integração de sistema; Substitui, gradativamente, os sistemas legados por serviços; Serviços podem ser reutilização por outros serviços; O pessoal de TI e os Gerentes podem ter uma visão uniforme do sistema por utiliza uma linguagem de alto nível
Breve História Gerentes e Pessoal de TI Antes eram separados, agora podem se unir para determinarem juntos a melhor solução; Eles tem visão uniforme sobre o negócio e tecnologia; As limitações de software e hardware continuam, no entanto, os gerentes podem avaliar melhor o impacto sobre o seu negócio;
O que é Arquitetura de Software? Def 1: Uma arquitetura é um conjunto de decisões importantes sobre a organização do software [Booch, Rumbaugh e Jacobson] Def 2: Arquitetura de software é a estrutura do software que incluie lementos de software, suas propriedades visíveis externamente e o relacionamento entre eles [Brass, Clements e Kazman] Def 3: Arquitetura de software é a estrutura organizacional de um sistema [IEEE Standard 610.12] Def 4: Arquitetura de software é um conjunto de statements que descrevem componentes de software e associam a funcionalidade do sistema a estes componentes. Ela descreve a estrutura técnica, restrições, e características dos componentes e as interfaces entre eles. A arquitetura é uma visão inicial do sistema que funciona como uma plano em alto nível para a sua construção [Krazig, Banke, Slama]
O que é SOA? SOA é o acrônimo de Service-Oriented Architecture (Arquitetura orientada a Serviço); SOA pode se entender como: uma filosofia, concepção, representação ou um paradigma; SOA não é uma ferramenta, não dá para comprar; As funcionalidades implementadas pelas aplicações devem ser disponibilizadas na forma de serviços; também se relaciona com determinadas políticas e conjuntos de "boas práticas"; facilitar a tarefa de encontrar, definir e gerenciar os serviços disponibilizados;
O que é SOA? Palavra chave para utilizar SOA: flexibilidade e reutilização Pode utilizar qualquer sistema de forma fácil e rápida Pode reutilizar um sistema para outra finalidade sem haver a necessidade alterar o código SOA tem 3 bases fundamentais: Serviço: unidade básica de um sistema distribuído; Enterprise Service Bus (ESB): infraestrutura para a comunicação entre serviço que suporta diversas tecnologias e plataformas; Fraco Acoplamento: reduzir a dependência entre serviço, deste modo, poder reutilizar um serviço sem ter a necessidade alterá-lo;
O que é SOA?
O que é SOA? Application Front-End Aplicação responsável por interagir com os usuários ou realizar alguma tarefa periodicamente; GUI (ex. Aplicação Web) Batch (executa periodicamente uma atividade) Repassa os dados para os serviços correspondentes;
O que é SOA? Serviço Encapsulam um conceito de alto nível do negócio; É uma caixa-preta (esconde as complexidades); Possui 3 componentes: Contrato Interface Implementação
O que é SOA? Serviço Serviço A Interface A - Operação 1 - Operação 2 - Operação 3 Contrato Implementação Interface B - Operação 1 - Operação 2 - Operação 3 Lógica Dado
O que é SOA? Serviço - Contrato Especificação informal da finalidade, funcionalidade, restrições e uso do serviço Pode (não é obrigatório) incluir a definição da interface através de linguagens como IDL (Interface Definition Language) (ex. WSDL); Pode conter questões da qualidade de serviço (QoS); Ou até SLA; Contrato possui mais informação do que a interface.
O que é SOA? Serviço - Interface Defini um conjunto de operações oferecidas pelo serviço; Da interface são gerados os Stubs e Skeletons;
O que é SOA? Serviço - Implementação O código do serviço; Realização técnica que atende ao contrato Consiste de um+ programas, configurações e base de dados
O que é SOA? Serviço - Implementação Consiste em duas partes: Na lógica do negócio; Dados (ou recursos de máquina);
O que é SOA? Repositório de Serviços Também um serviço, no entanto, com função especial de armazena os contratos/referencias dos demais serviços oferecidos; Permite a descrição, publicação, busca e binding de serviços;
O que é SOA? Service Bus (canal de comunicação) Também um serviço, no entanto, com função especial de armazena os contratos/referencias dos demais serviços oferecidos; Permite a descrição, publicação, busca e binding de serviços;
O que é SOA? Service Bus (canal de comunicação) A infraestrutura é a que conecta os serviços; Fornece múltiplos canais para acessar o serviço (eg., via dispositivo moveis) sobre varias redes (eg., bluetooth); Elemento chave: Entrepise Service Bus (ESB)
Entrepise Service Bus
Entrepise Service Bus permite a implementação, implantação e gerenciamento de aplicações distribuídas conjunto de funcionalidades implementadas por um middleware facilita o desenvolvimento de aplicações executando em ambientes heterogêneos e usando formato de dados distintos
Entrepise Service Bus fornece interoperabilidade entre aplicações adotando adaptadores e interfaces baseadas em padrões funciona como um meio de transporte evolução dos mecanismos de store-and-forward encontrados em middleware (e.g., JMS) aplicações vistas como serviços fornece controle de mensagem, segurança, políticas, e confiabilidade
Entrepise Service Bus ESB baseados em container Serviço vive dentro de um container que expõe a funcionalidade/não-funcionalidade do serviço para o mundo exterior Funções básicas Conectividade / padrões de troca de mensagens Provê facilidades de transação, segurança, métricas de desempenho Suporte a Configuração dinâmica Monitoramento do comportamento/estado do serviços Conversão de protocolo/dados Descoberta de serviço
Dá para adaptar um software legado para SOA? Sim. Há vários maneiras de oferecer um software como serviço.
Tipos de Serviço em SOA Básico serviços simples em SOA (base); Tipos: Data-centric e Logic-centric Intermediários Funcionam como mediadores (stateless) e ajudam a resolver gaps tecnológicos ou conceituais da arquitetura Tipos (mais utilizados): Gateway e Adaptador
Tipos de Serviço em SOA Básico - Logic-Centric Encapsulam algoritmos ou regras de negócio Em aplicações tradicionais isto é encapsulado em bibliotecas ou frameworks
Tipos de Serviço em SOA Básico - Logic-Centric Encapsula seus dados, escondendo onde e como está sendo salvo; Trata dados persistentes: armazenamento, recuperação, mecanismos de lock e gerenciamento de transação;
Tipos de Serviço em SOA Intermediário - Gateway Funcionam como proxies para os serviços básicos (negócio) Representam a funcionalidade de serviços básicos em um ambiente que é tecnologicamente diferente do ambiente onde este serviço executa
Tipos de Serviço em SOA Intermediário - Adaptador Mapeia as assinaturas/formatos de mensagens para uma necessidade dos clientes e.g., fusão da empresa A e empresa B, ambas já fornecem serviços, dados dos clientes
Qual a vantagem de trabalhar com serviço? Pode elaborar composição de serviço.
Composição de Serviço Quando um serviço é composto apenas por operações oferecidas por outros serviços, dizemos que este serviço é uma composição de outros Serviços mais complexos são formados por serviços mais simples Uma composição de serviços também é oferecida como serviços Há duas formas de composição: Orquestração Coreografia
Composição de Serviço Orquestração O controle da composição é centralizada Refere-se a execução (imperativo) ex. WS-BPEL (com uma engine de BPEL) Serviço B Serviço A Serviço C Serviço D
Composição de Serviço Orquestração
Não há um controle centralizado da composição; Refere-se a observação (declarativo); e.g., WS-CDL Composição de Serviço Coreografia Serviço B Serviço A Serviço C Serviço D
Composição de Serviço Exemplo Exemplo: Sinal de Trânsito: representa uma orquestração, onde os eventos são controlados de forma centralizada pelo sinal. Giradouro: representa uma coreografia, onde cada carro segue regras pré-definidas
Mas, como um gerente de negócio pode planejar melhor um serviço? Através de linguagens gráficas, como BPM.
Business Process Management BPM visa o mapeamento e a simulação de um processo; Podendo planejar melhor as ações da empresa; Está na categoria de automação dos negócio; Visualmente, é possível planejar um serviço; São utilizados métodos, técnicas e ferramentas para analisar, modelar, publicar, otimizar e controlar processos; Em SOA, processo são, podem ser entendidos, os serviço; recomendo: www.soainstitute.org/articles/article/article/bringing-bpm-and-soatogether-for-maximum-business-value.html
Business Process Management
Business Process Management
Teste: a empresa (cliente, onde você trabalha ) está pronta para SOA?
Teste: a empresa está pronta para SOA? Antes de implantar SOA, é necessário saber se a empresa necessita, ou não, de mudança; Para isto, foram elaborados 10 perguntas (apresentadas a seguir); As pergunta tem peso diferentes, pois tem assunto que são mais importantes do que outros; As respostas devem ser de 1 a 10 1: se a realidade da empresa não está próxima a descrição da questão; 10: muito próxima da realidade da empresa;
Teste: a empresa está pronta para SOA? 1 Questão O ecossistema de negócio é amplo e complexo? Ecossistema de negócio: empresas compram de fornecedores, contratam terceirizados, e vendem para clientes; Vamos tomar como exemplo um Pet shop; 1 caso loja simples, sem filiais e que tem poucos fornecedores; Não a necessidade de diversos software para gerenciar a empresa; Caso a empresa se assemelha a esse cenário, o valor está próximo de 1; 2 caso uma rede de loja, vários fornecedores e possui parceiros de venda; Tem diversos software para gerenciar adequadamente os setores da empresa; Caso a empresa se assemelha a esse cenário, o valor está próximo de
Teste: a empresa está pronta para SOA? 2 Questão A área de atuação da empresa muda rapidamente? SOA exige um investimento de tempo e esforço; Se os sistemas atuais atendem a demanda, talvez não seja preciso mudá-los; 1 caso: cimento A poucos fornecedores de cimentos existentes (pouca alteração de preço); Os software existentes pode atender a demanda atual da empresa; Caso a empresa se assemelha a esse cenário, o valor está próximo de 1; 2 caso: mídia para Internet Areá muito dinâmica; Sempre há uma novidade que os sistemas devem dá suporte; Caso a empresa se assemelha a esse cenário, o valor está próximo de 10;
Teste: a empresa está pronta para SOA? 3 Questão Foi desenvolvido algum software proprietário com algum código especial que é utilizado até hoje? Código importantes que representam a alma da companhia; Exemplo, o anexador de páginas do Google e bancos; Geralmente, essas joias da coroa da companhia não podem ser alteradas facilmente; Se a empresa não tem tantas joias da coroa, o valor está próximo de 1; Se a empresa tem várias técnicas proprietárias, o valor está próximo de 10;
Teste: a empresa está pronta para SOA? 4 Questão Os sistemas da empresa são flexíveis? Os sistemas tem uma arquitetura modular (plugável)? É possível adicionar/remover partes do sistema de forma rápida? Segue algum padrão de projeto? Se a maioria das respostas forem NÃO, o valor está próximo de 1; Se foi SIM, o valor está próximo de 10;
Teste: a empresa está pronta para SOA? 5 Questão A empresa está preparada para adotar mudanças? Há o interesse de compartilhar aplicações (código, documento e processos) em comum entre setores distintos? O controle de TI é centralizado? Se a maioria das respostas forem NÃO, o valor está próximo de 1; Se foi SIM, o valor está próximo de 10;
Teste: a empresa está pronta para SOA? 6 Questão Os serviços oferecidos pelo TI estão com um bom desempenho e atendem a expectativa da empresa? Uma infraestrutura de TI de fraca performance vai diminuir o desempenho do negócio quando mover para SOA; Como SOA presa a reutilização, caso haja um erro em um serviço, afetará outros sistemas; Caso o desempenho dos sistemas NÃO atendem o interesse da empresa, o valor está próximo de 1; Se foi SIM, o valor está próximo de 10;
Teste: a empresa está pronta para SOA? 7 Questão A tecnologia da empresa pode suportar padrões corporativos e governança de TI? Há alguma regra de acesso ao sistema? A empresa consegue certificar que apenas as pessoas certas estão tendo acesso aos sistemas? O pessoal de TI segue algum padrão de governança? Caso a maioria das respostas sejam NÃO, o valor está próximo de 1; Se foi SIM, o valor está próximo de 10;
Teste: a empresa está pronta para SOA? 8 Questão A empresa sabe onde estão as suas regras de negócios? Regras de negócios: condições, fluxo de dados e etc; Exemplo: porcentagem de comissão dos vendedores; Uma regra de negócio pode ser utilizada por todos os sistemas? Qual é a regra de negócio vigente? Caso NÃO saibam definir as regras, o valor está próximo de 1; Se foi SIM, o valor está próximo de 10;
Teste: a empresa está pronta para SOA? 9 Questão Os seus dados corporativos são flexíveis e você confia na qualidade deles? Não entendi.
Teste: a empresa está pronta para SOA? 10 Questão Você pode conectar as implementações do software da empresa a entidades fora da empresa? Seus parceiros e fornecedores possuem softwares, você consegue se comunicar com eles? Há um planejamento de interagir com softwares fora da empresa? Caso NÃO tenha a necessidade de integrar com os outros sistemas, o valor está próximo de 1; Se TEM, o valor está próximo de 10;
Teste: a empresa está pronta para SOA? Pontuação 1 Questão: Se a resposta foi 3 ou maior, adicione 5 pontos 2 Questão: Se a resposta foi 3 ou maior, adicione 6 pontos 3 Questão: Se a resposta foi 3 ou maior, adicione 5 pontos 4 Questão: Se a resposta foi 5 ou maior, adicione 3 pontos 5 Questão: Se a resposta foi 5 ou maior, adicione 10 pontos 6 Questão: Se a resposta foi 5 ou maior, adicione 5 pontos 7 Questão: Se a resposta foi 5 ou maior, adicione 10 pontos 8 Questão: Se a resposta foi 4 ou maior, adicione 10 pontos 9 Questão: Se a resposta foi 5 ou maior, adicione 15 pontos 10 Questão: Se a resposta foi 4 ou maior, adicione 5 pontos
Teste: a empresa está pronta para SOA? Resultado X < 11: SOA não pode ser a abordagem ideal para a empresa; X < 34: A empresa ainda não está pronta para implantar SOA; 34 < X < 117: A um bom encaixe entre SOA e a empresa; X => 117: A empresa tem uma boa posição para começar SOA; 117 < X < 150: Pode começar a planejar SOA para a empresa; X > 150: SOA é uma tecnologia ideal para a empresa; nota: é sempre bom revisar as questões com nota baixa para entender melhor a empresa.