Neste artigo abordaremos os principais conceitos relacionados ao Spring Integration. Além de explicar o objetivo do framework e alguns dos patterns de integração mais importantes, o artigo apresenta um exemplo completo do uso da ferramenta, tornando o entendimento intuitivo e didático.
Para que serve:
O Spring Integration é um framework leve e de baixa curva de aprendizado, podendo ser aplicado a situações diversas sem necessidade da extensiva configuração normalmente exigida por soluções de integração. O seu uso, portanto, pode significar a diferença entre o sucesso e o fracasso de um software que precisa ser escrito rapidamente sem abrir mão da confiança e das boas práticas.
Em que situação o tema útil:
Integração de sistemas é um tema importante e atual. O conhecimento dos principais patterns e de quando aplica-los é, portanto, um assunto que deve ser de conhecimento de todo desenvolvedor que deseja se manter atualizado e pronto para projetos que envolvam comunicação entre sistemas.
Resumo DevMan:
O Spring Integration é uma das novas alternativas para integração de sistemas. Seguindo as mesmas premissas do Spring, o framework oferece um alto nível de abstração baseado nos clássicos patterns de integração e isola os componentes de negócio da infraestrutura de mensageria, permitindo que o desenvolvedor possa focar no que realmente é importante: o negócio.
Neste artigo trataremos do framework e seus principais objetivos, mostrando o quão fácil é construir uma aplicação completa através de regras simples e configuração amigável.
Por mais que os sistemas evoluam e novas linguagens de programação sejam criadas, nenhum sistema funciona sozinho, e cedo ou tarde haverá a necessidade de se integrar o novo software com sistemas legados ou sistemas escritos em outras plataformas.
O mercado hoje oferece muitas alternativas para integração, incluindo soluções comerciais (de custo considerável) e frameworks open-source que permitem em menor ou maior grau conectar aplicações distintas.
Um dos maiores empecilhos à adoção dessas soluções, no entanto, é que elas geralmente exigem configurações particulares, evolvendo geralmente a instalação de um novo software para suportar o processo. Assim, além de precisar “aprender” os conceitos relacionados à integração em si, o desenvolvedor ainda se vê obrigado a se familiarizar com uma ferramenta completamente nova.
O Spring Integration é uma das mais recentes iniciativas para lidar com os desafios da integração de sistemas, oferecendo fácil configuração e uso simplificado. Baseado nos mesmos conceitos pregados pelo renomado framework, o Spring Integration permite fácil adoção e mínima configuração, tornando o desenvolvedor produtivo desde o primeiro contato com a ferramenta.
Neste artigo faremos uma breve introdução a essa ferramenta, abordando seus principais conceitos e a construção de um exemplo completo.
Conceitos fundamentais
Antes de partir para a codificação, faremos uma breve introdução dos principais conceitos utilizados pelo Spring Integration. Os conceitos, que são conhecidos para aqueles que possuem alguma familiaridade com integração de sistemas, são essenciais para se tirar ainda mais proveito da ferramenta.
Integration Patterns
A disciplina de Enterprise Application Integration, ou simplesmente EAI, trata da integração de dados e serviços entre aplicações. Esse é um tema complexo e desafiador, pois em geral envolve diferentes sistemas operacionais, linguagens de programação, sistemas distribuídos, processos batch, etc.
O assunto tem sido tratado com grande interesse por desenvolvedores e arquitetos, principalmente nos anos recentes, com a grande proliferação de sistemas e tecnologias e a necessidade cada vez maior de conectá-los.
As abordagens para tratar do problema de integração são diversas, mas de forma geral podem ser categorizadas em quatro grandes grupos, como explicado no clássico livro Enterprise Integration Patterns. Assim, as estratégias de integração acabam se encaixando em uma das soluções abaixo:
• Transferência de arquivos: arquivos são transferidos entre sistemas distintos, que sabem como fazer o parsing e acessar as informações neles contidas;
• Banco de dados compartilhado: os sistemas utilizam uma mesma base de dados para compartilhar informações;
• Procedimento Remoto: através de tecnologias como CORBA e RMI os sistemas invocam funções publicadas por outros sistemas seguindo contratos pré-estabelecidos;
• Troca de mensagens: os sistemas se conectam a um sistema de mensagens que, por sua vez, fornece funcionalidades para troca de dados e acesso a serviços (O Spring Integration se encaixa neste modelo).
É importante notar que não existe “bala de prata” quando se fala em integração de sistemas, e as abordagens são normalmente complementares. Como cada integração apresenta peculiaridades e desafios, um arsenal flexível e abrangente é sempre a melhor opção para o arquiteto, que deve saber adequar a estratégia ao problema a ser resolvido.
Para evitar a “reinvenção da roda”, os arquitetos e desenvolvedores utilizam estratégias de integração que comprovadamente funcionam. Essas estratégias, também conhecidas como Integration Patterns, são na verdade receitas de soluções para problemas recorrentes no contexto de integração de sistemas (alguma semelhança com os Design Patterns?).
O livro Enterprise Integration Patterns descreve 65 patterns, que podem ser aplicados a problemas de natureza diversa. Neste artigo mostraremos a utilização de alguns deles, cujo Spring Integration oferece suporte nativo.
Mas por que Spring Integration?
O Spring Integration provê uma plataforma rica e simplificada para construção de aplicações que se baseiam em mensagens. O framework oferece um alto nível de abstração baseado nos patterns de integração e isola os componentes de negócio da infraestrutura de mensageria, permitindo que o desenvolvedor possa focar no que realmente é importante: o negócio.
Quando se trata de integração de sistemas, duas regras básicas de construção de software continuam válidas: alta coesão e baixo acoplamento. O ideal é que os sistemas façam seu trabalho individualmente e que não precisem ter conhecimento uns dos outros para atingir o “objetivo final” do negócio. O Spring Integration abraça esse princípio e muitos outros que são considerados como boas práticas de desenvolvimento (como inversão de controle e injeção de dependências) e que contribuíram para o sucesso do Spring.
Além disso, a curva de aprendizado do framework é relativamente pequena, pois os principais conceitos são herdados do Spring core. Como veremos adiante, o desenvolvimento de uma aplicação utilizando o Spring Integration não é muito diferente de uma aplicação web que utiliza o Spring. A configuração é definida no Spring Context, que é referenciado do arquivo web.xml e carregado quando a aplicação é iniciada.