[Desafio] - 10 Desafios Simples de System Design: Resolução 1/9 (Integração via Arquivos)
Francisco Zanfranceschi
Posted on March 25, 2023
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.
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
November 29, 2024