Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login

Apache Camel: Um guia completo

Conheça esse poderoso framework que simplifica a integração entre sistemas.

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (3)  (0)
Fique por dentro
Este artigo apresenta o Apache Camel, um framework para integração entre sistemas baseado em padrões. Esse consolidado framework open source diminui as dificuldades existentes nas integrações encapsulando código complexo através de uma linguagem simples e intuitiva, e com a utilização de componentes pré-existentes garante maior agilidade e eficiência no desenvolvimento. Portanto, aqueles que desejam aprender como o Apache Camel funciona, seus conceitos, recursos e como utilizá-lo em suas aplicações, encontrarão neste artigo um material de referência completo.

A TI se encaixa como uma grande aliada para suportar os negócios das empresas e assegurar que todo o ecossistema globalizado e interligado funcione de forma satisfatória. Portanto, há um grande esforço por parte da TI para construir, integrar e manter os diversos sistemas que compõem todo o fluxo de negócio da empresa.

Diante dessas condições, o artigo apresentará em detalhes os problemas que geralmente são enfrentados nesse contexto de integração de sistemas, além de desafios que constantemente colocam sistemas à prova, e, as soluções/estratégias que ao longo do tempo surgiram para simplificar todo esse cenário.

Além disso, será apresentado o framework Apache Camel, que foi desenvolvido com base nessas soluções e cuja principal função é facilitar a construção de sistemas voltados especialmente para integrações.

Para iniciar o estudo do tema proposto, a próxima seção apresentará em detalhes os problemas e desafios que são largamente enfrentados pelos desenvolvedores quando eles lidam com requisitos de integração.

Problemas e desafios para a integração

Uma integração efetiva é um pré-requisito fundamental para o sucesso dos negócios, mas os desafios relacionados à mesma, como tempo, custo e problemas técnicos, podem acabar com grandes investimentos e levar ao fracasso muitos projetos. Esses problemas incluem:

  • Sistemas legados baseados no desenvolvimento “tapa buraco”;
  • Sistemas com arquitetura de uma única camada;
  • Sistemas legados que não foram projetados para atender novos requisitos de qualidade e que são diretamente afetados pela necessidade de interoperabilidade, desempenho e segurança;
  • Sistemas que foram projetados para trabalhar com os dados restritos ao uso interno;
  • Decisões tomadas sem as devidas análises de arquitetura de software; e
  • Falta de definições adequadas referentes ao escopo e esforço necessários para a integração.

Além dos problemas mencionados, existem alguns desafios que devem ser considerados durante a integração entre sistemas. São eles:

  • Redes são instáveis e as soluções de integração implicam no transporte de dados por meio de redes que muitas vezes não são resilientes. Portanto, os sistemas integrados devem estar preparados para lidar com problemas relacionados à rede;
  • Como as redes são lentas, o envio de dados por meio destas é mais lento que chamadas locais. Sendo assim, pensar em uma solução distribuída da mesma forma que se pensa em uma solução isolada pode acarretar em sérios problemas relacionados a desempenho;
  • Visto que os sistemas são implementados com as mais diversas tecnologias, uma solução de integração necessita transmitir e receber dados de sistemas que utilizam diferentes linguagens de programação, plataformas, frameworks e formatos de dados. Portanto, a solução a ser construída deve ser capaz de atender a esse cenário;
  • Como mudanças são inevitáveis, sistemas são alterados a todo momento. Sendo assim, uma solução de integração deve garantir seu correto funcionamento e, consequentemente, o fluxo de negócio, independentemente das alterações realizadas nos sistemas que se conecta.

Felizmente os problemas e desafios apresentados até o momento têm sido superados pelos desenvolvedores ao longo do tempo, através de estilos de integração que foram adotados amplamente pelo mercado. Para nos aprofundarmos nesses estilos, a seção a seguir trará uma análise com mais detalhes.

Estilos de integração

Diante de todas as dificuldades e necessidades identificadas anteriormente, as integrações precisam ocorrer não apenas entre soluções homogêneas, mas também entre soluções estruturadas em plataformas distintas, separadas geograficamente dentro e fora do escopo da organização e que adotam as mais variadas tecnologias. Baseado nisso, as diferentes abordagens para que sistemas se comuniquem podem ser resumidas em quatro grandes estilos, a saber:

  • Transferência de arquivo (Electronic Data Interchange ou EDI): um sistema escreve um arquivo de texto ou binário para que um outro sistema leia. Esse estilo exige conformidades no nome do arquivo, localização e formato (layout). Normalmente está associado ao uso do protocolo FTP (File Transfer Protocol). Na Figura 1 é exibido um diagrama exemplificando a integração por EDI;
Integração
entre sistemas através da transferência de arquivo

Figura 1. Integração entre sistemas através da transferência de arquivo.

  • Banco de dados compartilhado: múltiplos sistemas utilizam um mesmo banco de dados físico para consultar e manipular dados. Com isso, não há duplicidade de informação. A Figura 2 ilustra esse estilo;

Integração entre sistemas através do dado compartilhado via banco de dados

Figura 2. Integração entre sistemas através do dado compartilhado via banco de dados.

  • Invocação Remota de Procedimento (Remote Procedure Call ou RPC): um sistema expõe suas funcionalidades para que sejam acessadas remotamente por outros sistemas. Nesse estilo a comunicação ocorre em tempo real, sincronamente e necessita que os sistemas integrados possuam compatibilidade em relação à tecnologia remota para que a comunicação funcione. A Figura 3 demonstra um cenário de integração com RPC;

Integração entre sistemas através de RPC

Figura 3. Integração entre sistemas através de RPC.

  • Mensageria: é a tecnologia que permite a entrega rápida e confiável de mensagens através da comunicação assíncrona. Nessa proposta, a mensagem é simplesmente um tipo de estrutura de dados como um texto (string), um arranjo de bytes, um registro ou um objeto, servindo como um meio de integrar sistemas. Tudo isso funciona através de um sistema que publica uma mensagem em um canal para que outro, que também possui acesso a esse canal, possa ler e interpretar essa mensagem. A Figura 4 apresenta um diagrama exibindo um exemplo de comunicação através desse estilo;

Integração entre sistemas através de mensagens

Figura 4. Integração entre sistemas através de mensagens.

Apesar dos quatro estilos apresentados resolverem os mesmos problemas de integração, existem vantagens e desvantagens a serem consideradas na escolha de cada um. Para auxiliar essa escolha, foram definidos alguns critérios que devem ser analisados cuidadosamente. A Tabela 1 apresenta um comparativo entre os estilos de integração considerando esses critérios.

Critérios

Transferência de Arquivo

Banco de Dados Compartilhado

Invocação Remota de Procedimento

Mensageria

Acoplamento entre os sistemas

++

---

-

+++

Nível de intrusão

++

---

+

+++

Escolha da tecnologia

++

++

++

-

Formato dos dados

+

++

++

+++

Tempo para atualização dos dados

--

+++

++

++

Exposição das funcionalidades

---

---

+++

++

Processamento assíncrono

+++

++

++

+++

Confiabilidade

--

+++

+

+++

Tabela 1. Comparativo de pontos positivos e negativos de cada estilo baseado em critérios comuns.

Observa-se que o estilo de mensageria é o que possui mais pontos positivos dentre os critérios comparados, ou seja, a mensageria é o estilo de integração que possui mais vantagens e por isso é considerada a melhor opção. Porém, os sistemas podem se integrar por meio de vários estilos, de forma que cada ponto da integração tire o melhor proveito de cada um.

Baseado na experiência dos desenvolvedores com o uso dos estilos apresentados, foram reconhecidos e definidos padrões empresarias de integração que indicam soluções elegantes para problemas comumente identificados nesse contexto. A seguir, por constituírem a base do framework Apache Camel, esses padrões serão analisados.

Enterprise Integration Patterns

Os Enterprise Integration Patterns ou EIPs foram criados para resolver uma variedade de problemas recorrentes do contexto de integração entre sistemas. Eles definem uma série de recomendações e boas práticas, independentes de plataforma e tecnologia, que foram documentadas no livro “Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions”, dos autores Gregor Hohpe e Bobby Woolf (veja a seção Links).

O livro apresenta 65 padrões agrupados e classificados em seis categorias relacionadas a diferentes cenários da integração. Além disso, são indicadas as vantagens e desvantagens de cada padrão, um vocabulário e uma notação de modelagem a serem seguidos.

Mesmo divididos e categorizados, os padrões de integração podem ser combinados para atender cenários específicos do mundo real empresarial. Ademais, não são “receitas de bolo” que devem ser copiadas e colocadas para a resolução de um problema. Eles devem ser encarados como pequenos conselhos que descrevem soluções para problemas recorrentes e que por meio de tecnologia modelam padrões de negócio de forma elegante.

Visando garantir sistemas mais eficientes, flexíveis, adaptáveis e com baixo custo de manutenção, os EIPs são fortemente baseados no conceito de baixo acoplamento, onde o princípio fundamental é reduzir a dependência que os sistemas integrados têm um do outro quando trocam informações para então aumentar a testabilidade e rastreabilidade do código. Para isso, os autores indicam o uso do estilo de integração baseado em mensageria.

Baseado em todo esse contexto de integração, juntamente com as boas práticas, padrões e mensageria, os autores do livro de EIPs propuseram diagramas formados por três elementos base com o objetivo de definir uma notação em linguagem visual que facilitasse o entendimento e representasse de forma mais clara os padrões. Essa notação acabou sendo difundida pela comunidade e consolidada como um padrão para representar e modelar visualmente a integração de sistemas. Portanto, entender os elementos base que constituem essa notação tornou-se bastante importante atualmente e sendo assim, na seção seguinte os mesmos serão apresentados.

Notação base para modelagem dos padrões

Conforme observa-se na Figura 5, os três elementos base das notações são: mensagem, conexão e componente. O elemento Mensagem representa os dados trafegando através das conexões e é constituído por uma estrutura em árvore onde o círculo sinaliza o nó raiz e os pequenos quadrados aninhados sinalizam os dados propriamente ditos. Já a Conexão representa o transporte dessas mensagens e o Componente é o item responsável por receber, processar e enviar essas mensagens.

Elementos básicos da notação dos padrões de integração

Figura 5. Elementos básicos da notação dos padrões de integração.

A partir das notações exibidas é possível realizar toda a modelagem necessária para descrever um padrão. Porém, em grande parte dos cenários de integração os mesmos são utilizados em conjunto para atender uma determinada solução. Nesses casos, pode-se adotar a notação ou imagem que representa o próprio padrão conectada aos outros através de um símbolo de conexão. Para facilitar o entendimento, a Figura 6 apresenta um exemplo de padrões utilizados em conjunto.

Padrões em conjunto para resolver um cenário de integração

Figura 6. Padrões em conjunto para resolver um cenário de integração.

Apresentados os conceitos envolvidos em um padrão e as notações básicas para representação visual, já é possível entender de forma mais clara a distribuição dos mesmos e seus propósitos específicos. Portanto, a seção a seguir abordará com mais detalhes essa classificação.

Além dos elementos básicos apresentados para a modelagem visual de um padrão de integração, existe uma imagem específica e única que o representa, isto é, uma figura composta por elementos base que procuram indicar de forma direta o objetivo daquele padrão. Para a relação completa dos padrões com suas imagens de representação visual, verifique a seção Links.

Classificações dos padrões

A integração entre sistemas abrange muitos problemas de domínio e negócio e por isso um bom recurso é dividir os padrões em categorias que refletem seu escopo e suas abstrações. Baseado nessa ideia, os autores do livro classificaram os padrões em seis categorias. Para apresentar a divisão proposta, a Figura 7 exibe um diagrama completo com os padrões agrupados em suas respectivas categorias.

Categorias
e seus respectivos padrões de integração

Figura 7. Categorias e seus respectivos padrões de integração.

Conforme observa-se nessa imagem, os padrões estão classificados em:

  • Canais de Mensagens (Messaging Channels): oferecem um meio para que aplicações possam trocar dados através de um canal conhecido, diminuindo bastante o acoplamento entre os envolvidos. A aplicação que envia o dado pode não saber exatamente qual sistema irá recebê-lo, mas há garantia de que este será enviado à aplicação correta em virtude da utilização de um canal em comum;
  • Construção de Mensagem (Message Construction ou Messaging Patterns): oferecem soluções que descrevem as várias formas, funções e atividades que envolvem a criação e transformação da mensagem a ser trafegada entre os sistemas;
  • Roteamento de Mensagens (Messaging Routing): oferecem mecanismos para direcionar mensagens de um remetente para um destinatário através de canais de comunicação como, por exemplo, filas e tópicos. Essas mensagens roteadas podem ser divididas, redirecionadas separadamente e reagrupadas posteriormente. Porém, vale ressaltar que esses padrões não alteram o conteúdo de uma mensagem. Eles apenas movem a mesma de um canal para outro;
  • Transformação de Mensagem (Message Transformation): visam mudar o conteúdo de uma mensagem para diferentes necessidades de envio e recebimento. Em alguns cenários, dados precisam ser retirados ou adicionados para que as mensagens sejam reconstruídas;
  • Terminais de Mensagens (Messaging Endpoints): esses padrões oferecem uma interface entre a aplicação e a API do servidor de mensageria (vide BOX 1), servindo como um “ponto de ligação”. Com isso, a aplicação pouco conhece sobre os formatos de mensagens e canais, pois o padrão encaps" [...]

    A exibição deste artigo foi interrompida :(
    Este post está disponível para assinantes MVP

Carregando
 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Ajude-nos a evoluir: você gostou do post?  (3)  (0)
Confirmar voto
Compartilhe:
Ficou com alguma dúvida?