O documento discute a importância dos serviços para integrar sistemas. Apresenta a arquitetura orientada a serviços e como a biblioteca de serviços empresariais da Benner facilita a exposição de funcionalidades como serviços SOAP/HTTP para promover a interoperabilidade.
A vida em bando é difícil! ..
É preciso interagir, se comunicar..
Neste sentido, serviço é interface de comunicação.
É o que permite a INTEGRAÇÃO.
A linguagem, a plataforma, os ciclos de versões, os fornecedores. Tudo é diferente e dinâmico.
# O desafio então é manter o sistema funcionando, alheio ao caos. Idependência
E qual é a solução??
* Quando pensamos em uma solução do ponto de vista de fornecedor de vários produtos, é mais desafiador.
* Temos clientes de vários tamanhos, com topografias distintas,... Então “cada caso é um caso”
* Cada estilo de integração tem vantagens e desvantagens
* Não existe uma solução padrão
** Inclusive tem esse livro que é referência, e aborda o assunto do ponto de vista de mensagens como forma solução.
** Publicado no fim de 2003, avalizado pelo Fowler.
** Ou seja ele fez um DECRETO
Qual era a motivação do Jeff? O que queria?
Padronizar
Garantir independência e desacoplamento
Evitar problemas de manutenção
Multiplataforma
Isto de certa forma foi a semente do AWS.
O Amazon Web Services foi lançado em 2006 e hoje a Amazon é um dos grandes players de nuvem.
A Amazon foi precursora.
E Jeff Bezos foi considerado alguém a frente de seu tempo:
Percebeu que para ir adiante precisava ajeitar a casa.
Ele é o cara!
É a abordagem moderna. Serviço não tem nada de misterioso.
Alguém dispara o serviço passando alguns parâmetros (requisição), a requisição é processada e o serviço devolve alguma informação (resposta).
Mesmo colocando um middleware a comunicação continua sendo necessária.
SOA é uma abordagem arquitetural com foco na forma de expor dados e funcionalidades de um sistema,
Faz isso através de serviços,
Considerando boas práticas e padrões.
Ou seja definindo alguns princípios.
A Interface deve ser bem definida e intuitiva. A única amarração está neste contrato. É o que “protege” o sistema e o processo de negócio publicando apenas um ponto de acesso.
A abstração da estrutura e do funcionamento é o que esconde as particularidades de cada aplicação: Não preciso conhecer as tabelas do outro sistema, nem como os dados são gravados.
Multiplataforma
Preciso pensar no reuso, na composição. Varios serviços com granularidade fina podem compor um novo serviço com granularidade grossa.
Ser stateless é importate contribui com os benefícios, adiante
Permitir acionamento assíncrono também é fundamental
Outros no livro de Thomas Erl, de 2008
“resumo” do livro: https://marcobaccaro.wordpress.com/2013/11/29/8-principios-de-design-para-soa/
O quanto melhor você seguir os princípios, maiores serão os benefícios
E claro que isso não se restringe apenas aos princípios de SOA mas aos princípios de design e de orientação a objetos em geral:
DRY: Don't Repeat Yourself (DRY) or Duplication is Evil (DIE)
KISS: "Keep it simple, Stupid!“
SOLID: Single responsibility, Open-closed, Liskov substitution, Interface segregation and Dependency inversion
https://en.wikipedia.org/wiki/Don%27t_repeat_yourself
https://en.wikipedia.org/wiki/KISS_principle
https://en.wikipedia.org/wiki/SOLID_(object-oriented_design)
São problemas difíceis de resolver
A solução depende muito pouco de ferramentas
Nossa filosofia:
Facilitar / Automatizar
Deixar o desenvolvedor livre
(Aqui vem a DEMO)
Regra de negócio
O gerador está integrado ao visual studio, pode ser instalado pelo Extension Gallery
Ele não é obrigatório!
Não mantém sessão, não requer afinidade de sessão, facilita escalabilidade
Link para Benner Wiki: http://goo.gl/58Dwkw
Permitir gerar serviços compatíveis com layouts já estabelecidos pelo governo/parceiros/mercado
Facilitar que serviços com processamento pesado sejam direcionados para a fila do BTL
Possibilitar o monitoramento dos serviços com ferramentas de mercado, como Nagios
Uservoice: https://goo.gl/p1p81K
Projetos já mapeados que estão relacionados com o tema
Forma padrão para integrar.
Promover debate sobre o tema, sobre mensageria, sobre microserviços
Quais demandas expectativas?
Como atender as deficiências?
Evoluir Web Service genérico de Integração:
Suportar xml, lote,
Oauth 2
Fila
Monitoramento
API para consumir em .NET, Java, ..