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"
↓
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.
Top comments (0)