Skip to content

9. Arquitetura

Sérgio Martins edited this page May 15, 2025 · 2 revisions

Sabor Express - Arquitetura do Sistema

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.

Visão Geral da Arquitetura

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
Loading

Tecnologias Utilizadas

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

Arquitetura Frontend

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).

Componentes Principais

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
Loading

Características

  • 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

Arquitetura Backend

O backend adota uma arquitetura de microsserviços, com cada serviço responsável por um domínio específico da aplicação.

Serviços Principais

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
Loading

Detalhamento dos Serviços

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

Comunicação entre Serviços

  • 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

Banco de Dados

A arquitetura de dados do Sabor Express utiliza uma abordagem poliglota, combinando diferentes tipos de bancos de dados para atender requisitos específicos.

Modelo de Dados Simplificado

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
Loading

Estratégia de Persistência

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

Segurança

A segurança do Sabor Express é implementada em múltiplas camadas, seguindo o princípio de defesa em profundidade.

Estratégias de Segurança

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

Considerações Finais

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.

Clone this wiki locally