Padrões de Integração 4

Múltiplos passos de processamento em uma cadeia de Pipes e Filters são conectados por Canais de Mensagens.

Como você pode desacoplar as etapas de processamento individuais para que as mensagens possam ser passadas para diferentes filtros dependendo de um conjunto de condições?

Insira um filtro especial, um roteador de mensagens, que consome uma mensagem de um canal de mensagens e o republica em um canal de canal de mensagens diferente dependendo de um conjunto de condições.

O Message Router difere da noção mais básica de Pipes e Filtros na medida em que se conecta a múltiplos canais de saída. Graças à arquitetura Pipes and Filters, os componentes que envolvem o Message Router desconhecem completamente a existência de um roteador de mensagens. Uma propriedade chave do roteador de mensagens é que ele não modifica o conteúdo da mensagem. Só se preocupa com o destino da mensagem.

Para todas as informações desta série, veja esse artigo.

“O ensinamento verdadeiro e que deve ser crido e aceito de todo o coração é este: Cristo Jesus veio ao mundo para salvar os pecadores, dos quais eu sou o pior.” 1 Timóteo 1:15

Anúncios

Padrões de Integração 3

Em muitos cenários de integração empresarial, um único evento desencadeia uma seqüência de etapas de processamento, cada uma executando uma função específica.

Por exemplo, vamos assumir que um novo pedido chega em nossa empresa sob a forma de uma mensagem. Um requisito pode ser que a mensagem seja criptografada para impedir que os espiões espionais espionem a ordem de um cliente. Um segundo requisito é que as mensagens contenham informações de autenticação sob a forma de um certificado digital para garantir que os pedidos sejam colocados apenas por clientes confiáveis. Além disso, as mensagens duplicadas podem ser enviadas a partir de partes externas (lembre-se de todos os avisos nos sites de compras populares para clicar no botão “Ordem agora” apenas uma vez?). Para evitar entradas duplicadas e clientes infelizes, precisamos eliminar mensagens duplicadas antes que as etapas de processamento de pedidos subseqüentes sejam iniciadas.

Para atender a esses requisitos, precisamos transformar um fluxo de mensagens duplicadas e criptografadas contendo dados de autenticação extras em um fluxo de mensagens simples e simples de ordem de texto simples, sem os campos de dados estranhos.

Como podemos realizar um processamento complexo em uma mensagem, mantendo a independência e a flexibilidade?

Use o estilo arquitetônico de Pipes e Filters para dividir uma tarefa de processamento maior em uma seqüência de etapas de processamento independentes menores (Filtros) que estão conectadas por canais (Canais).

Cada filtro expõe uma interface muito simples: recebe mensagens no tubo de entrada, processa a mensagem e publica os resultados no tubo de saída. O tubo conecta um filtro ao próximo, enviando mensagens de saída de um filtro para o próximo. Como todos os componentes usam a mesma interface externa, eles podem ser compostos em diferentes soluções, conectando os componentes a diferentes tubulações. Podemos adicionar novos filtros, omitir os existentes ou reorganizá-los em uma nova seqüência – tudo sem ter que mudar os próprios filtros. A conexão entre o filtro e o tubo às vezes é chamada de porta.

Para todas as informações desta série, veja esse artigo.

“A resposta delicada acalma o furor, mas a palavra dura aumenta a raiva.” Provérbios 15:1

Padrões de Integração 2

Uma empresa possui duas aplicações separadas que estão se comunicando via Mensagens, usando um canal de mensagens que as conecta.

Como dois aplicativos conectados por um canal de mensagens podem trocar informações?

Coloque as informações em uma Mensagem, uma “carta” de dados que o sistema de mensagens pode transmitir através de um canal de mensagem. Assim, qualquer dado que deve ser transmitido através de um sistema de mensagens deve ser convertido em uma ou mais mensagens que podem ser enviadas através de canais de mensagens.

Para todas as informações desta série, veja esse artigo.

“Por acaso eu procuro a aprovação das pessoas? Não! O que eu quero é a aprovação de Deus.” Gálatas 1:10

Padrões de Integração 1


Como um aplicativo se comunica com outro usando mensagens?

Conecte os aplicativos usando um canal de mensagens, onde um aplicativo grava informações no canal e o outro lê essa informação do canal. Quando um aplicativo tem informações para se comunicar, ele não apenas exibe as informações no sistema de mensagens, ele adiciona a informação a um canal de mensagens específico. Um aplicativo que recebe informações não é apenas retirá-lo aleatoriamente do sistema de mensagens; Ele recupera as informações de um determinado canal de mensagens.

Para todas as informações desta série, veja esse artigo.

“Todo aquele que afirma que Jesus é o Filho de Deus, Deus vive unido com ele, e ele vive unido com Deus.” 1 João 4:15

Série de Padrões de Integração

Uma solução não vive sozinha

As aplicações de hoje raramente vivem isoladas. Os usuários esperam acesso instantâneo a todas as funcionalidades, que podem ser fornecidas por aplicativos e serviços diferentes, dentro ou fora da corporação. Sendo assim, a integração de soluções nas corporações hoje é um requisito obrigatório para qualquer negocio. Em um mundo ideal, pode se imaginar uma organização que tenha um sistema único e coeso, projetado desde o inicio para funcionar de forma unificada e coerente. Porém, a realidade que vemos é completamente diferente. Em uma empresa, mesmo que pequena, muito dificilmente existe apenas uma aplicação. E mesmo que se opte por desenvolver tal aplicação única, diversos seriam os desafios que acabariam por inviabilizar a estratégia.

Integrar é dificil

E para cumprir esse requisito, projetistas e arquitetos de software precisam considerar que integrações são complexas e cheios de desafios, uma vez que podem ocorrer entre soluções estruturadas, de diferentes provedores, de diferentes épocas, com plataformas distintas, com tecnologias distintas, usando protocolos distintos, repleta de restrições, limitações, problemas, separadas geograficamente dentro e fora do escopo da organização.

Reuso de Conhecimento

A grande questão desse tópico é que faz algum tempo que não precisamos mais nos “aventurar a desvendar ou inventar” os segredos da integração! No livro Enterprise Integration Patterns, temos uma documentação extensa e completa de um catálogo de padrões que nos fornece um arsenal de informações a respeito de várias estratégias já usadas e aprovados em ambientes de produção nas ultimas décadas. O proposito desse artigo hoje é resumir os principais pontos desse livro. Acomode-se na sua cadeira e vamos que vamos 🙂 .

Caraterísticas de Integração

Segundo o livro, antes de qualquer ação, é necessário que o responsável pela integração pondere pelo menos 10 características fundamentais na decisão que repercutiram futuramente na qualidade, evolução e sustentabilidade, podendo impactar positivamente ou negativamente no serviço final. Segue eles abaixo:

  1. Acoplamento: Aplicações integradas devem minimizar as dependências entre si, de forma que cada uma possa evoluir sem causar problemas para as demais. Integrações devem ser específicas o suficiente para cumprir seu papel, porém, genéricas o suficiente para garantir que mudanças não façam com que as aplicações dependentes parem.
  2. Formato: Para se integrarem, aplicações devem concordar em um formato de dado. Considerando que alterar todas as aplicações da organização para considerar um formato de dado único pode ser inviável, tradutores intermediários podem ser empregados. Outro assunto relacionado é como a evolução do formato do dado ao longo do tempo pode impactar as aplicações dependentes.
  3. Seleção de Tecnologia: Diferentes abordagens de integração requerem diferentes quantidades de licenças de software e hardware. Tais ferramentas podem ser caras, podem levar a dependência da organização com fornecedores específicos e ao aumento da curva de aprendizado dos desenvolvedores.
  4. Exposição de Funcionalidades: Muitas abordagens de integrações permitem que aplicações compartilhem não apenas dados, mas também funcionalidades. Tal compartilhamento é interessante, pois gera um nível maior de abstração entre as aplicações envolvidas.
  5. Tempo para atualização: Integrações devem ser estruturadas pensando na minimização do tempo de defasagem de dado. Idealmente, aplicações consumidoras de dado deveriam ser informadas assim que o dado estivesse pronto para consumo. Quanto mais tempo se leva para o compartilhamento do dado, maior a probabilidade de falta de sincronismo de dados.
  6. Processamento Assíncrono: A chamada de funcionalidades remotas de forma síncrona pode ser algo custoso para a aplicação consumidora. A capacidade de realizar tarefas assíncronas traz diversas vantagens como, por exemplo, escalabilidade. Porém, tal solução tem design, desenvolvimento e depuração mais complexos.
  7. Confiabilidade: Conexões remotas não são apenas lentas, mas também são muito menos confiáveis do que a execução de procedimentos locais. Aplicações remotas podem não estar disponíveis ou a rede pode estar temporariamente indisponível. Comunicações assíncronas e confiáveis permitem que a aplicação origem realize outras tarefas, de forma confiante que a aplicação destino receberá a informação.
  8. Intrusividade: Integrações devem causar o mínimo de impacto em códigos existentes e devem requerer pouca codificação.
  9. Esforço: Algumas soluções de integração podem endereçar bem os diversos fatores apresentados, porém, podem ser difíceis de se desenvolver, depurar e manter. Profissionais específicos podem ser necessários para monitorá-las e para gerenciar erros.
  10. Escalabilidade: Integrações devem causar o mínimo de impacto na performance dos sistemas envolvidos. Também devem ser projetadas para suportar aumento no volume de dados trafegados e ainda pensando-se nos impactos decorrentes de acréscimo no número de sistemas consumidores de uma determinada informação. (Não constam no livro. Adicionados por mim por considera-los igualmente importantes com relação aos demais.)

Estilos de Integração

Segundo o livro, a evolução de anos de integração nos mostram que existem 4 principais estilos de integração. Esses quatros estilos, se endereçam automaticamente assumindo as caraterísticas acima citadas. Vejamos a seguir:

1) Transferência de Arquivo

Um sistema escreve um arquivo texto ou binário para que outro sistema leia.

1

2) Banco de Dados Compartilhado

Múltiplos sistemas utilizam o mesmo banco de dados físicos para consultar e manipular dados.

2

3) Invocação Remota

Um sistema expõe dados e funcionalidades para que sejam acessadas remotamente por outro sistema através de uso de tecnologias e protocolos proprietário ou públicos.

3

4) Mensageria

As aplicações se conectam a um sistema comum e intermediário de mensageria conhecido como MOM, de forma a compartilhar dados e a invocar operações através do uso de mensagens. O livro defini 65 diferentes micros padrões dentro desse estilo que pode ser combinado para dar soluções nos mais diversos cenários.

4

Prós e Contras de Cada Estilo

Cada um dos estilos possuem vantagens e desvantagens. A ideia não é usar sempre a mesma, mas ao invés, aquela que melhor se adeque a um cenário em particular. O livro é tão bom que já nos poupa tempo, classificando sistematicamente os prós e contras de cada caraterísticas versus o estilos, nos ajudando a ter uma visão global na tomada de decisão. Segue abaixo:

clip_image012

Qual é melhor ou Pior? Qual é o bala de Prata?

Segundo o livro, nenhum estilo ou abordagem de integração existente endereça todas as características acima ao mesmo tempo de forma igualmente bem. O estilo Mensageira é que mais se destaca entre todos por apresentar 80% de pontos fortes e 20% pontos fracos, e devem ser sempre o primeiro a ser considerado, porém, determinadas abordagens de integração podem ser melhores do que outras em determinados cenários. Em alguns casos, se faz necessário ate misturar dois ou mais estilos juntos para se chegar em um modelo mais adequado.

65 Padrões de Mensageria

A partir de hoje estarei postando um resumo de cada padrão de mensageria para ser utilizado como material de referencia e estudo. Até lá!

“Quando estamos na presença de Deus, temos coragem por causa do seguinte: se pedimos alguma coisa de acordo com a sua vontade, temos a certeza de que ele nos ouve.”1 João 5:14