-
Notifications
You must be signed in to change notification settings - Fork 0
9. Arquitetura
Este documento descreve a arquitetura técnica do aplicativo Sabor Express, detalhando as decisões de design, tecnologias e padrões adotados para garantir um sistema robusto, seguro e escalável.
A arquitetura do Sabor Express segue um padrão de microsserviços, com frontend móvel, backend distribuído e armazenamento em camadas para otimizar desempenho e disponibilidade.
flowchart TB
subgraph "Dispositivos"
MobileApp["Aplicativo Mobile (React Native)"]
WebApp["Versão Web (React)"]
end
subgraph "CDN / Distribuição"
CDN["Amazon CloudFront / Firebase Hosting"]
end
subgraph "API Gateway / Load Balancer"
Gateway["API Gateway"]
LB["Load Balancer"]
end
subgraph "Serviços Backend"
Auth["Serviço de Autenticação"]
Recipe["Serviço de Receitas"]
User["Serviço de Usuários"]
Search["Serviço de Busca"]
Media["Serviço de Mídia"]
Recommend["Serviço de Recomendações"]
end
subgraph "Armazenamento"
SQL[(DB Relacional PostgreSQL)]
NoSQL[(DB NoSQL MongoDB)]
Cache[(Cache Redis)]
Storage["Armazenamento de Objetos (S3/Firebase)"]
Search_Engine["Motor de Busca (Elasticsearch)"]
end
MobileApp & WebApp --> CDN
CDN --> Gateway
Gateway --> LB
LB --> Auth & Recipe & User & Search & Media & Recommend
Auth & User --> SQL
Recipe --> NoSQL
Recipe & User --> Cache
Media --> Storage
Search --> Search_Engine
Recommend --> NoSQL & SQL
Recipe -.-> Search
Recipe -.-> Recommend
| Camada | Tecnologias | Justificativa |
|---|---|---|
| Frontend Mobile | React Native, Expo, TypeScript | • Desenvolvimento multiplataforma (iOS/Android) • Comunidade ativa e rica biblioteca de componentes • Tipagem forte para reduzir erros |
| Frontend Web | React.js, TypeScript, Next.js | • Renderização do lado do servidor para SEO • Compartilhamento de código com a versão mobile • Performance otimizada |
| Backend | Node.js, NestJS, TypeScript | • Eficiência em operações I/O • Framework estruturado com suporte a microsserviços • Tipagem forte para APIs consistentes |
| Banco de Dados | PostgreSQL, MongoDB, Redis | • Modelo relacional para dados estruturados • Modelo documental para receitas e conteúdos • Cache em memória para operações frequentes |
| Busca | Elasticsearch | • Busca de texto completo otimizada • Suporte para buscas fonéticas e por aproximação • Indexação eficiente para grandes volumes |
| Armazenamento | AWS S3 / Firebase Storage | • Armazenamento escalável para imagens e vídeos • CDN integrado para distribuição global • Custo proporcional ao uso |
| Infraestrutura | AWS / Google Cloud | • Serviços gerenciados para reduzir overhead operacional • Escalabilidade automática • Alta disponibilidade |
| DevOps | Docker, Kubernetes, GitHub Actions | • Containerização para consistência entre ambientes • Orquestração para escala e resiliência • CI/CD automatizado |
| Monitoramento | Prometheus, Grafana, Sentry | • Métricas em tempo real • Visualização customizável • Captura e análise de erros |
O frontend do Sabor Express é construído com uma abordagem mobile-first, utilizando uma base de código compartilhada entre a aplicação móvel (React Native) e web (React.js).
flowchart TD
subgraph "Arquitetura Frontend"
Core["Core / Shared\n(Lógica comum, tipos, utilitários)"]
subgraph "Componentes"
UI["UI Kit\n(Componentes reutilizáveis)"]
Pages["Pages / Screens"]
Navigation["Navegação"]
end
subgraph "Estado"
Redux["Redux / Context API"]
LocalStorage["Armazenamento Local"]
Sync["Sincronização Offline"]
end
subgraph "Serviços"
API["API Service"]
Auth["Autenticação"]
Analytics["Analytics"]
Push["Notificações Push"]
end
end
Core --> UI & Navigation
UI --> Pages
Navigation --> Pages
Pages --> Redux
Redux --> API
Redux --> LocalStorage
LocalStorage --> Sync
API --> Auth
API --> Analytics
Auth --> Push
- Arquitetura Modular: Organizada em componentes reutilizáveis e independentes
- Design System: Sistema de design consistente em todas as plataformas
- Estado Gerenciado: Redux para estado global, Context API para estados localizados
- Modo Offline: Sincronização de dados para funcionamento sem conexão
- Lazy Loading: Carregamento sob demanda para otimizar performance inicial
- Responsividade: Adaptação a diferentes tamanhos de tela e orientações
- Acessibilidade: Conformidade com WCAG 2.1 AA
O backend adota uma arquitetura de microsserviços, com cada serviço responsável por um domínio específico da aplicação.
flowchart LR
Gateway["API Gateway"]
subgraph "Serviços Core"
Auth["Serviço de Autenticação"]
User["Serviço de Usuários"]
Recipe["Serviço de Receitas"]
end
subgraph "Serviços de Suporte"
Search["Serviço de Busca"]
Media["Serviço de Mídia"]
Notif["Serviço de Notificações"]
Analytics["Serviço de Analytics"]
end
subgraph "Serviços de Valor Agregado"
Recommend["Serviço de Recomendações"]
Social["Serviço Social"]
ML["Serviço de Machine Learning"]
end
Gateway --> Auth
Gateway --> User
Gateway --> Recipe
Gateway --> Search
Gateway --> Media
Gateway --> Notif
Gateway --> Analytics
Gateway --> Recommend
Gateway --> Social
Recipe --> Search
Recipe --> Recommend
User --> Notif
User --> Social
Recommend --> ML
| Serviço | Responsabilidade | Tecnologias Específicas |
|---|---|---|
| Autenticação | Gerenciar identidade e acesso | • JWT para tokens • OAuth para login social • Firebase Auth como provider |
| Usuários | Perfis, preferências e histórico | • PostgreSQL para dados relacionais • Redis para cache de sessão |
| Receitas | CRUD de receitas e categorias | • MongoDB para armazenamento documental • Redis para cache de conteúdo popular |
| Busca | Indexação e pesquisa de receitas | • Elasticsearch para busca textual • API de sugestões e autocomplete |
| Mídia | Gerenciamento de imagens e vídeos | • S3/Firebase Storage para armazenamento • Processamento de imagens sob demanda |
| Recomendações | Sugestões personalizadas | • Algoritmos de filtragem colaborativa • Modelos de similaridade de conteúdo |
| Notificações | Comunicação com usuários | • Firebase Cloud Messaging • Templates para personalização |
| Analytics | Coleta e análise de dados de uso | • Integração com Google Analytics • Pipeline de dados para análise interna |
- Síncrona: REST API para comunicação direta entre serviços e clientes
- Assíncrona: Apache Kafka para eventos e comunicação pub/sub entre serviços
- Contratos: OpenAPI/Swagger para documentação e validação de APIs
- Descoberta: Service registry para localização dinâmica de serviços
A arquitetura de dados do Sabor Express utiliza uma abordagem poliglota, combinando diferentes tipos de bancos de dados para atender requisitos específicos.
erDiagram
USUARIO ||--o{ FAVORITO : possui
USUARIO ||--o{ HISTORICO_PREPARO : registra
USUARIO ||--o{ AVALIACAO : faz
RECEITA ||--o{ PASSO_PREPARO : contem
RECEITA ||--o{ INGREDIENTE_RECEITA : usa
RECEITA }|--|| TIPO_RECEITA : classifica
RECEITA }o--o{ CATEGORIA : pertence
RECEITA ||--o{ AVALIACAO : recebe
RECEITA ||--o{ RECOMENDACAO : gera
INGREDIENTE_RECEITA }o--|| INGREDIENTE : referencia
FAVORITO }|--|| RECEITA : referencia
HISTORICO_PREPARO }|--|| RECEITA : referencia
RECOMENDACAO }|--|| RECEITA : sugere
| Tipo de Dado | Banco de Dados | Justificativa |
|---|---|---|
| Dados de Usuários | PostgreSQL | • Consistência ACID • Relações complexas • Transações seguras |
| Receitas e Conteúdo | MongoDB | • Schema flexível para conteúdo variável • Armazenamento de documentos aninhados • Boa performance para leituras |
| Cache | Redis | • Alta velocidade para dados frequentes • Expiração automática • Estruturas de dados especializadas |
| Busca | Elasticsearch | • Índices invertidos para busca textual • Análise linguística • Facetas e agregações |
| Dados Analíticos | BigQuery | • Processamento colunar • Análise de grandes volumes • Integração com ferramentas de BI |
A segurança do Sabor Express é implementada em múltiplas camadas, seguindo o princípio de defesa em profundidade.
| Camada | Medidas de Segurança |
|---|---|
| Aplicação | • Sanitização de entradas • Proteção contra XSS e CSRF • Content Security Policy • Validação de dados |
| API | • Limitação de taxa (Rate Limiting) • Validação de JWT • Sanitização de parâmetros • Logs de auditoria |
| Autenticação | • MFA para operações sensíveis • OAuth 2.0 com OpenID Connect • Política de senhas fortes • Detecção de anomalias de login |
| Dados | • Criptografia em repouso • Criptografia em trânsito (TLS 1.3) • Backup criptografado • Mascaramento de dados sensíveis |
| Infraestrutura | • Firewalls e Security Groups • WAF para proteção contra ataques comuns • Ambientes isolados (prod/staging/dev) • Atualizações automáticas |
| Operacional | • Análise de vulnerabilidades • Testes de penetração regulares • Resposta a incidentes • Monitoramento de segurança |
A arquitetura do Sabor Express foi projetada priorizando:
- Experiência do usuário: Performance e disponibilidade
- Escalabilidade: Crescimento sem redesign completo
- Segurança: Proteção em todas as camadas
- Manutenibilidade: Estrutura modular e bem documentada
- Custo-eficiência: Utilização otimizada de recursos
Esta arquitetura suporta não apenas as necessidades atuais do aplicativo, mas também proporciona uma base sólida para evolução futura à medida que a base de usuários e conjunto de funcionalidades crescem.