Como Reduzimos o Tempo de Conversão de Vídeos de 25 para 2 Minutos na Nossa Área de Membros
O Desafio da Escala
Na empresa onde trabalho, a área de membros é um dos componentes vitais do nosso produto. Com o crescimento da base de usuários e o aumento exponencial do upload de conteúdos, nos deparamos com um gargalo crítico: o tempo de processamento de vídeos.
Antigamente, um vídeo de alta qualidade levava cerca de 25 minutos para estar pronto para consumo após o upload. Isso gerava frustração para os criadores de conteúdo e uma espera inaceitável para os alunos. Nosso objetivo era ambicioso: reduzir esse tempo drasticamente, mantendo ou melhorando a qualidade final.
O resultado? Hoje, conseguimos processar o mesmo vídeo em apenas 2 minutos. Neste post, vou abrir a caixa preta da engenharia que tornou isso possível.
Arquitetura e Engenharia: A Base Sólida
Para atingir esse nível de performance, não bastava apenas "otimizar o código". Precisávamos de uma arquitetura robusta e escalável, capaz de lidar com picos de demanda sem degradar o serviço.
Inspirados profundamente nos conceitos ensinados no curso FullCycle, desenhamos um sistema baseado em microsserviços e processamento assíncrono, garantindo desacoplamento e resiliência.
O Stack Tecnológico
Nossa escolha recaiu sobre tecnologias modernas e eficientes:
- Linguagem: Go (Golang) pela sua performance bruta e excelente suporte a concorrência.
- Mensageria: RabbitMQ para gerenciar a fila de jobs de encoding, garantindo que nenhum upload se perca.
- Cache & Controle: Redis para controle de estado rápido.
- Storage: MinIO (compatível com S3) para armazenamento eficiente de objetos.
- Banco de Dados: PostgreSQL para persistência de metadados.
Design Pattern: Clean Architecture
Para manter o código manutenível e testável, adotamos a Clean Architecture. Se você olhar nosso repositório, verá uma clara separação de responsabilidades:
- Entity: O coração da nossa lógica de negócios.
- UseCase: A orquestração dos fluxos de trabalho.
- Infra: Onde a mágica acontece com implementações concretas (repositórios, encoder, storage).
Essa estrutura nos permite trocar componentes de infraestrutura (como mudar do MinIO para S3 da AWS) com zero impacto nas regras de negócio.
A Mágica do Encoding: FFmpeg e Bento4
O grande segredo da redução de tempo está na forma como processamos o vídeo. Utilizamos o FFmpeg para a transcodificação bruta e o Bento4 para a fragmentação e empacotamento.
Em vez de gerar um único arquivo pesado (MP4), convertemos o vídeo para o padrão MPEG-DASH. Isso nos permite:
- Adaptive Bitrate Streaming: O player do usuário escolhe automaticamente a melhor qualidade com base na internet dele.
- Fragmentação: O vídeo é quebrado em pequenos pedaços, permitindo que o player comece a reproduzir quase instantaneamente, sem precisar baixar o arquivo inteiro.
Resultados e Impacto no Negócio
A implementação deste novo sistema trouxe ganhos imediatos e tangíveis:
1. Experiência do Cliente Transformada
A redução de 25 minutos para 2 minutos significa que o conteúdo está disponível quase em tempo real ("near real-time"). A sensação de fluidez e velocidade aumentou a satisfação tanto dos criadores quanto dos consumidores do conteúdo.
2. Redução Drástica de Custos
Além da velocidade, a eficiência do Go combinada com a arquitetura de filas nos permitiu otimizar o uso de recursos de infraestrutura. Conseguimos processar mais vídeos com menos máquinas, resultando em uma economia direta na conta de cloud.
Conclusão
Este projeto foi a prova de que boas práticas de engenharia, como Clean Architecture e escolha correta de ferramentas (Go, RabbitMQ, FFmpeg), não são apenas "hype". Elas trazem resultados reais para o negócio.
Se você enfrenta problemas de performance semelhantes, recomendo fortemente olhar para soluções assíncronas e arquiteturas desacopladas. E claro, uma olhada no conteúdo da FullCycle pode ser o ponto de partida que você precisa, assim como foi para nós.

Comentarios (0)