Elemar DEV

Tecnologia e desenvolvimento .net

Sobre a utilização de “troca de arquivos” como mecanismo de integração

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”.

Por que integrações por “troca de arquivos” é tão popular?

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.

Implementação básica

A implementação básica desse formato de integração pode ser conferido abaixo:

Basicamente, temos:

  • uma aplicação que “envia dados”, os disponibiliza através de uma opção “Exportar para …”;
  • uma aplicação que “recebe dados”, lê estes arquivos através de uma opção “Importar de …”;
  • “arquivos de dados” – exportados pela aplicação que envia e importados pela aplicação que recebe.

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.

Automatizando a “troca de arquivos”

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.

O desafio do formato

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.

Dificuldades de agendamento

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.

Liberdade de tecnologia

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.

Dificuldades inerentes

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:

  •  As aplicações envolvidas nesse tipo de integração precisam concordar e manter padrões de nomeclatura para arquivos bem como localização;
  • É necessário acordar que critérios precisam ser respeitados para que os arquivos possam ser apagados;
  • É necessário garantir algum mecanismo de concorrência evitando que uma aplicação comece a processar um arquivo que ainda não está pronto;
  • É necessário determinar e manter alguma estratégia de segurança, caso todas as aplicações tenham acesso a um mesmo dispositivo de armazenamento;
  • É necessário estabelecer e manter alguma estratégia de transferência de arquivos, caso as aplicações envolvidas não tenham acesso aos mesmos dispositivos de armazenamento;
  • É necessário alguma política de validação e consistência;
  • É necessário alguma mecânica para tratamento de falhas.

O principal problema é o “canal burro”

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.

Concluindo

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.

5 Comentários em “Sobre a utilização de “troca de arquivos” como mecanismo de integração

  1. Ronny lucas
    14/10/2012

    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

  2. Fenomeno
    15/10/2012

    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 :D

    • elemarjr
      15/10/2012

      Pior que não, man. Toda “propaganda” que aparece no blog é do WordPress. Não minha.

  3. Pingback: Sobre a integração de aplicações através da execução de “chamadas remotas” « Elemar DEV

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

WordPress.com Logo

Você está comentando usando sua conta WordPress.com. Sair / Mudar )

Imagem do Twitter

Você está comentando usando sua conta Twitter. Sair / Mudar )

Foto do Facebook

Você está comentando usando sua conta Facebook. Sair / Mudar )

Conectando a %s

Informação

Publicado às 14/10/2012 por em Post e marcado , .

Estatísticas

  • 429,379 hits
%d bloggers like this: