Olá pessoal. Tudo certo?!
Integrar aplicações é uma necessidade crescente. Processos organizacionais cada vez mais complexos exigem que as aplicações que os suportam funcionem de forma harmoniosa e coordenada.
Não é mistério, nem segredo, minha preferência por integrações utilizando mecanismos de mensageria. Entretanto, reconheço que, em alguns cenários, essa possa não ser uma alternativa viável.
No post de hoje, falo sobre outra alternativa: integração por “troca de arquivos”.
Qualquer programador, em qualquer plataforma de operação/desenvolvimento, consegue escrever código para salvar e ler arquivos. Talvez por isso, a “troca de arquivos” seja a forma mais comum de pensar integração entre aplicações. Afinal, estas podem ser escritas em diferentes plataformas, linguagens e conceitos de negócio.
A implementação básica desse formato de integração pode ser conferido abaixo:

Basicamente, temos:
O que torna esse tipo de “integração” interessante é que há uma minimização da importância da forma como cada aplicativo conduz o negócio. O único aspecto realmente relevante é que os dados precisam estar em um formato comum, entendido por todos.
Nesse modelo mais comum, a “integração” é orquestrada por um agente humano – não automatizado – que toma o cuidado de “exportar” de um lado e “importar” de outro.
Gosto desse modelo, em cenários muito simples.
Em alguns casos, mais complexos, é comum que a “troca de arquivos” ganhe alguma automação. Arquivos são gerados e/ou consumidos sob determinadas circunstâncias e são empilhados em uma pasta/diretório para tratamento em lote.

Esse cenário costuma ser uma “continuação” do demonstrado acima. Geralmente, os processos de negócio crescem em volume tornando a interação humana mais dispendiosa e com riscos de erro.
Também é comum que apenas um dos lados – o que envia ou o que recebe – passe por alguma automação.
Raramente, os dados gerados pela aplicação de origem serão aproveitados integralmente pela aplicação de destino. Em casos extremos, os arquivos gerados passam por algum tipo de transformação antes que possam ser lidos.
Além disso, em relações desse tipo, é comum que mais de uma aplicação “importe” os dados gerados de uma única fonte. Por causa disso, alterações de formato costumam ser um grande problema a gerenciar.
No passado, era comum usar formatos tabulares ou com delimitadores fixos que, quando alterados, implicavam na revisão dos códigos que os consumia. Recentemente, formatos auto-descritos estão ficando mais populares. XML está entre os formatos mais populares hoje em dia. JSON está crescendo (e muito) em popularidade.
Outro problema com integrações baseadas em “transferência de arquivos” está na configuração de uma agenda para “exportar e importar”. Afinal, há algum custo computacional e de IO relacionado.
Em sistemas de negócio, a geração costuma respeitar intervalos regulares – dia, semana, quinzena, mês.
Uma das grandes vantages da integração por troca de arquivos está no acoplamento quase inexistente.
Cada aplicação, emissora ou receptora, poderá ser alterada livremente sem afetar a outra desde que continue produzindo arquivos sob as mesmas regras de localização e formato.
Efetivamente, os acordos quanto as convenções de nomeclatura e formato consistem uma interface pública entre as aplicações.
Nem tudo são flores. A integração por transferência de arquivos costuma presentear os desenvolvedores com “dores de cabeça” frequentemente ignoradas durante o projeto da aplicação. Relacionando algumas:
Todas as dificuldades acima são potencializados pela falta de um “canal atuante”, como ocorre em integrações baseadas em mensageria. Assim, precisam ser mitigadas pelas aplicações envolvidas mediante acordos implícitos, facilmente não cumpridos e difíceis de auditar.
Integração por “troca de arquivos” é uma alternativa viável e recomendada para necessidades de integração pontuais e eventuais. Destaco cenários onde um-recebe-muitos ou muitos-recebem-um.
Geralmente, integrações desse tipo oferecem “dificuldades” difíceis de detectar, mitigar e gerenciar que crescem conforme o cenário fica mais complexo até ficarem instáveis e inadequadas. Nesses cenários, adote essa estratégia por sua conta e risco.
Era isso.
Muito bom, achei interessante essa sua abordagem sobre utilização de “troca de arquivos” como mecanismo de integração. Alemar, eu venho acompanho seus topicos, e eu estou fazendo um TCC sobre HTML5, e eu estava lendo um topico que voce havia feito sobre HTML5, que tambem achei interessante. Gostaria de saber se voce poderia me dar algumas dicas, desde ja fico agradecido.
Meu email para contato, caso voce puder me ajudar,
ronnylucas186@gmail.com
No que acha que eu poderia ajudar?
Ae Elemar, Capitalizando um pouco né? Agora os snippets e os posts polêmicos vão render uma grana extra com o AdWords.
Uns MVP’s vendem tutoriais que deveriam ser de graça devido a participação na comunidade e agora a nova modalidade AdWords em blogs
Pior que não, man. Toda “propaganda” que aparece no blog é do WordPress. Não minha.
Pingback: Sobre a integração de aplicações através da execução de “chamadas remotas” « Elemar DEV