[Desafio] - 10 Desafios Simples de System Design: Resolução 1/9 (Integração via Arquivos)

zanfranceschi

Francisco Zanfranceschi

Posted on March 25, 2023

[Desafio] - 10 Desafios Simples de System Design: Resolução 1/9 (Integração via Arquivos)

Conteúdo original em https://twitter.com/zanfranceschi/status/1639708014411395074


Ei dev,

Proposta de resolução do Desafio 1/9 dos 10 Desafios Simples de System Design que postei recentemente.

"Integração via Arquivos"

Image

https://twitter.com/zanfranceschi/status/1638232585615851520


Como disse na thread dos desafios, esse tipo de cenário é um clássico – arriscaria dizer que a maioria esmagadora das empresas do mundo fazem alguma integração via arquivos.

Não vou dar uma solução, mas vou falar de alguns aspectos comuns desse desafio para se considerar.


- Ferramentas/Tecnologias

Existem muitas – mas muitas ferramentas mesmo – para integração via arquivos. Antigamente, o protocolo FTP (SFTP e FTPS) eram uma escolha bem comum pra esse tipo de coisa.

Existem também muitas ferramentas proprietárias como o Connect:Direct da IBM.


Hoje em dia, provedores cloud oferecem várias opções que podem apoiar bem a integração via arquivos. Por exemplo, a AWS tem o Storage Gateway (que é uma abstração), EFS, S3, etc.


Mas se quiser usar outra ferramenta não disponível nativamente em nuvem, é possível configurar conexões de alta velocidade entre nuvem e on premise, como o AWS Direct Connect (sempre confundo o nome com o Connect:Direct da IBM). Claro, dá pra fazer de nuvem pra nuvem também.


- Um Pouco de História

O modelo de troca de arquivos tem muito a ver com recursos computacionais escassos de antigamente. A ideia era mais ou menos juntar tudo que se pudesse para enviar duma vez só para o processamento. Procure por "batch processing" na internet.


- Tamanho dos Arquivos

Por causa dessa técnica de juntar o máximo de coisas possíveis para o processamento em conjunto com o crescimento de informações atualmente, os arquivos começaram a ficar grandes. Por isso, é bem comum que nessas trocas de arquivos eles sejam bem grandes.


- Intervalos/Agendamentos para Processamento

Muito por causa da história dessa técnica e tamanho dos arquivos, na maioria das vezes existe um intervalo considerável para que a troca de arquivos ocorra – muito frequentemente é um intervalo diário. Claro, pode ser maior ou menor.


E pra manter essa integração dentro dum intervalo regular (p.ex: todo dia às 2 da manhã) é comum que se use ferramentas de agendamento. Troca de arquivos é quase sinônimo de ferramentas de agendamento. Essas ferramentas ajudam na questão de detecção de falhas, controles, etc.


Seria desperdício computacional manter uma aplicação em execução a espera de um arquivo que só vem uma vez por dia, por exemplo. Algo como um file ou directory watcher faz mais sentido quando o intervalo de troca de arquivos é menor.


Ainda sobre agendamento. Agendamentos podem ser tanto para quem gera e transfere os arquivos como pra quem os lê e processa. E isso acaba exigindo uma coordenação de horários, pois se a leitura/processamento ocorrer antes da geração/transferência, as coisas podem dar errado.


É importante fazer uma relação entre as ferramentas que comentei no início e agendamento. Muitas ferramentas do tipo Connect:Direct da IBM possuem capacidades de agendamento também.


- Backup/Expurgo

Quando se trabalha com arquivos grandes, é preciso considerar questões de backup e de expurgo. O backup serve para auditoria/troubleshooting (conteúdo do arquivo) e para reprocessamento quando necessário.


Você vai querer pensar no expurgo, pois os arquivos podem acabar ocupando muito espaço e isso demandar um custo desnecessário com armazenamento. É preciso definir um período mínimo seguro para excluí-lo, caso contrário reprocessar e investigar os arquivos pode ficar inviável.


- Formatos

Na maioria das vezes, esses arquivos são de texto puro. E os formatos mais comuns são valores separados por vírgula (CSV), e colunas de tamanho fixo. Claro, existem muitos formatos, proprietários ou não. Mas sinceramente, esses são os mais comuns.


É isso que consegui me lembrar de mais importante sobre troca de arquivos. Resumindo, essas são as dimensões mais importantes para considerar nessa técnica:

- Ferramentas/Tecnologias
- Tamanho dos Arquivos
- Intervalos/Agendamentos para Processamento
- Backup/Expurgo
- Formatos


Esse problema não é lá muito atraente para quem está começando – parece arcaico e sem graça –, mas ainda é muito comum para empresas mais antigas e até para algumas mais novas.

Espero que tenha gostado dessa thread.

💖 💪 🙅 🚩
zanfranceschi
Francisco Zanfranceschi

Posted on March 25, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related