boa noite, sr valter.
eu sugiro que o sr armazene em bucket/storage, configure uma forma de cobrar pelo bucket ou pela nota.
se pela nota, é pagamento único. se pelo bucket, vai ter prazo que vc pode negociar ou vai ter que obedecer ao mínimo imposto pela lei. leve isso em consideração.
execute técnica de compressão e não apresente isso na parte contratual pelo contratante/cliente do sr, pois eis que surge a margem de segurança para cados inesperados.
além disso, execute a compressão em client side. não execute em server side.
gzip, brotli, lzma, são boas libs que podem executar em client side. utilize web worker para manter paralelismo e não bloquear a thread principal.
para escolher a lib, vai ter elicitar teus requisitos: velocidade, streaming, capacidade de compressão, arquivos, grandes volumes, etc.
para texto, brotli (compressão máx 90%). para literalmente arquivos, lzma (máx 95%, com algumas ressalvas). para velocidade, gzip (máx 90%).
coloque uma assinatura e um salt, até mesmo encriptar com senha, talvez. fluxo: compress -> signature -> salt -> encrypt password.
se compartilhar os requisitos do sistema para a gente, poderei conversar melhor sobre o assunto.