Visão Geral da Infraestrutura
Este artigo fornece uma visão abrangente da infraestrutura que alimenta o site público da Thinvent. Vamos cobrir a pilha tecnológica completa, desde o servidor web até a camada de banco de dados, e explicar como todos os componentes trabalham juntos para oferecer uma experiência de e-commerce rápida, confiável e escalável.
Pilha da Aplicação Web
Flask - A Base
Nosso site é construído sobre o Flask, um framework web Python leve e flexível. O Flask fornece o sistema de roteamento central, o tratamento de requisições/respostas e o sistema de blueprints que organiza nossa aplicação em componentes modulares.
Principais recursos do Flask que utilizamos:
-
Blueprints: Organizam a aplicação em módulos lógicos (web, api, cart, product, etc.)
-
Modelagem Jinja2: Geração de HTML no lado do servidor com herança de templates
-
Contexto de requisição: Tratamento automático de requisições HTTP e sessões
-
Werkzeug: Servidor de desenvolvimento e funções utilitárias
A aplicação Flask é inicializada no módulo web onde nós:
-
Criamos o blueprint web
-
Inicializamos o Babel para internacionalização
-
Configuramos o armazenamento de sessão Valkey
-
Configuramos processadores de contexto para variáveis de template
Gunicorn - Servidor de Produção
Para produção, usamos o Gunicorn (Green Unicorn), um servidor HTTP WSGI para Python. O Gunicorn executa nossa aplicação Flask com múltiplos processos de trabalho.
O Gunicorn é gerenciado pelo systemd, que garante que ele reinicie automaticamente se falhar ou se o servidor for reiniciado. Isso nos dá alta disponibilidade sem intervenção manual.
Nginx - Proxy Reverso & Balanceador de Carga
O Nginx atua como nosso proxy reverso e balanceador de carga. Ele fica na frente do Gunicorn e lida com:
-
Terminação SSL/TLS: Criptografia/descriptografia HTTPS
-
Serviço de arquivos estáticos: CSS, JavaScript, imagens (servidos diretamente do disco)
-
Proxy reverso: Encaminha requisições dinâmicas para o Gunicorn
-
Limitação de taxa: Protege contra abuso
-
Compressão de requisições: Compressão Gzip para transferências mais rápidas
Ubuntu - Sistema Operacional
Todas as instâncias EC2 executam o Ubuntu, nossa distribuição Linux escolhida. Preferimos usar pacotes Python do Ubuntu quando disponíveis, em vez do pip.
O fluxo típico de uma requisição é:
flowchart LR
A[Navegador do Cliente] -->|Requisição HTTPS| B[Nginx]
B -->|Proxy para| C[Gunicorn]
C -->|WSGI| D[Aplicação Flask]
D -->|Consulta| E[Cache Valkey]
E -->|Miss| F[DynamoDB]
F -->|Resposta| E
E -->|Hit| G[Resposta]
G --> B
B -->|Resposta| ACloudFront - Rede de Distribuição de Conteúdo
O CloudFront é nossa CDN, fornecendo:
-
Proteção DDoS: Proteção integrada contra ataques distribuídos
-
Escudo de origem: Protege nossos servidores de origem de picos de tráfego
Nossa distribuição CloudFront tem duas origens:
-
Servidor backend: Aplicação Flask backend
-
S3: Bucket S3 para ativos estáticos
Comportamentos de cache configurados:
-
/s/*- Ativos estáticos (CSS, JS, imagens) com TTL de 24 horas -
/ds/*.pdf- Fichas técnicas com TTL de 24 horas -
/api/*- Endpoints da API sem cache -
/cart- Carrinho com TTL de 24 horas -
/set-language- Sem cache (dinâmico)
Camada de Dados
DynamoDB - Banco de Dados Primário
Usamos o Amazon DynamoDB como nosso banco de dados primário. O DynamoDB é um banco de dados NoSQL.
Nossas tabelas do DynamoDB incluem:
-
Recommendations: Recomendações de produtos geradas por IA
-
Product descriptions: Descrições de produtos em múltiplos idiomas
-
Query pages: Páginas de consulta analisadas para SEO
Usamos o PynamoDB, um ORM Pythonico para DynamoDB, que fornece:
- Definições de modelo: Classes Python para tabelas do banco de dados
Valkey - Cache em Memória
O Valkey (um fork do Redis) é nossa camada de cache em memória, fornecendo:
-
Armazenamento de sessão: Sessões de usuário com expiração deslizante de 30 dias
-
Dados acessados frequentemente: Contagens de produtos, consultas populares
-
Cache de autocompletar: Sugestões de pesquisa
-
Manifesto de imagens: Localizações de imagens de produtos
O Valkey oferece benefícios significativos de desempenho:
-
100x mais rápido que o DynamoDB para operações de leitura
-
Carga reduzida no banco de dados: Acertos no cache evitam consultas ao DynamoDB
-
Persistência de sessão: Sessões apoiadas pelo Valkey entre requisições
Usamos o Valkey para:
-
Sessões: Estado de login do usuário, dados do carrinho
-
Cache: Consultas populares, sugestões de autocompletar
-
Contadores: Contagens de estoque de produtos (em cache para desempenho)
-
Filas: Processamento de trabalhos em segundo plano
S3 - Armazenamento de Objetos
O Amazon S3 é nosso serviço de armazenamento de objetos.
Usamos o S3 para:
-
Imagens de produtos: Fotos de produtos em alta resolução
-
Fichas técnicas: Especificações de produtos em PDF
-
Ativos estáticos: CSS, JS, imagens
DNS & Roteamento
Route53 - Gerenciamento de Domínio
O Route53 cuida do nosso gerenciamento de DNS:
- Registro de domínio: thinvent.in e domínios relacionados
Roteamento Nginx
O Nginx roteia requisições com base em padrões de URL:
-
/→ Aplicação Flask (início, produtos, carrinho, checkout) -
/q/→ Aplicação Flask (páginas de consulta, resultados de busca) -
/api/→ Aplicação Flask (endpoints da API) -
/static/→ CloudFront/S3 (ativos estáticos)
Infraestrutura de Busca & IA
Serviço de Busca
Executamos uma aplicação Flask independente para funcionalidade de busca. Este serviço fornece:
-
Busca vetorial: Similaridade semântica para consultas relacionadas
-
Autocompletar: Sugestões de busca baseadas em prefixo
-
Consultas populares: Termos mais pesquisados
-
Extração de filtros: Analisa consultas de busca para facetas
O serviço de busca usa:
-
Valkey RediSearch: Busca por similaridade vetorial
-
SentenceTransformer: Geração de embeddings
-
Mapeamentos de frase: Extração de filtros via correspondência de substring
Provedores de IA
Usamos múltiplos provedores de IA para diferentes tarefas:
DeepSeek
-
Modelo: deepseek-chat
-
Casos de uso: Descrições de produtos, conteúdo de páginas de consulta, tradução
-
API: API DeepSeek com fallback da Together.ai
-
Cache: Prompts do sistema para eficiência de cache de prompts
Gemini
-
Modelo: Gemini (modelo específico)
-
Casos de uso: Geração de conteúdo
-
Integração: Chamadas diretas à API
Amazon Bedrock
-
Modelos: Nova Pro
-
Casos de uso: Chat interno
-
Integração: SDK boto3
Amazon Bedrock
-
Modelos: Nova Lite
-
Casos de uso: Chatbot para clientes
-
Integração: SDK boto3
Fluxo Completo de uma Requisição
Veja como uma requisição típica flui através de nossa infraestrutura:
flowchart TD
A[Navegador do Cliente] -->|Consulta DNS| B[Route53]
B -->|Endereço IP| C[CloudFront]
C -->|Verificação de Cache| D{Cache Hit?}
D -->|Sim| E[Retorna Conteúdo em Cache]
D -->|Não| F[Nginx]
F -->|Proxy| G[Gunicorn]
G -->|WSGI| H[Aplicação Flask]
H -->|Verificação de Cache| I[Valkey]
I -->|Hit| J[Retorna Dados em Cache]
I -->|Miss| K[DynamoDB]
K -->|Consulta| L[Retorna Dados]
L --> I
J --> M[Constrói Resposta]
E --> M
M --> N[Envia para o Cliente]Monitoramento & Saúde
UptimeRobot - Monitoramento Externo
Usamos o UptimeRobot para monitoramento externo de todos os endpoints públicos:
-
Servidor backend: Site backend
-
www.thinvent.in: Site público
Verificações de Saúde
-
Gunicorn: O systemd gerencia reinicializações
-
Flask: O endpoint
/healthretorna o status -
Valkey: Saúde da conexão monitorada
-
DynamoDB: Latência e taxa de transferência monitoradas
Registro de Logs
-
Logs da aplicação: Gunicorn error.log
-
Logs de acesso: Gunicorn access.log
-
E-mail: Notificações em tempo real para eventos críticos com tracebacks Python
Resumo
Nossa infraestrutura é projetada para:
-
Desempenho: Múltiplas camadas de cache, CDN, consultas otimizadas
-
Escalabilidade: Bancos de dados de autoescalonamento, balanceamento de carga
-
Custo-efetividade: Pagamento por uso, cache para reduzir carga no banco de dados
A combinação de Flask, Gunicorn, Nginx, Ubuntu, DynamoDB, Valkey, CloudFront e UptimeRobot fornece uma base robusta e escalável para nossa plataforma de e-commerce.
Artigos Relacionados
-
Arquitetura de Análise - Aprenda sobre nossa abordagem híbrida de análise
-
Pipeline de SEO - Entenda como consultas de busca se tornam páginas de produtos
-
Arquitetura do Serviço de Busca - Mergulhe em nossa infraestrutura de busca
-
Estratégia de Cache - Explore o cache em todas as camadas
-
Arquitetura de Implantação - Veja como o sistema é implantado
-
Considerações de Segurança - Revise as medidas de segurança