Skip to content

Arquitetura do Sistema

graph TB
    subgraph "Cliente"
        A[Aplicação Frontend<br/>ou Cliente HTTP]
    end

    subgraph "API Gateway"
        B[FastAPI Application]
    end

    subgraph "Camada de Autenticação"
        C[JWT Token Middleware]
        D[Password Hashing<br/>Argon2]
    end

    subgraph "Camada de Roteamento"
        E[API Routers]
        E1[Auth Router]
        E2[Users Router] 
        E3[Brands Router]
        E4[Cars Router]
    end

    subgraph "Camada de Serviço"
        F[Business Logic]
        G[Validation Layer<br/>Pydantic Schemas]
    end

    subgraph "Camada de Dados"
        H[SQLAlchemy ORM]
        I[Async Database Driver<br/>AIOSQLite/AsyncPG]
    end

    subgraph "Banco de Dados"
        J[(SQLite/PostgreSQL)]
    end

    A --> B
    B --> C
    C --> E
    E --> E1
    E --> E2
    E --> E3
    E --> E4
    E --> F
    F --> G
    G --> H
    H --> I
    I --> J
    D --> H
    C --> D

    style A fill:#4CAF50,stroke:#388E3C,color:#fff
    style B fill:#2196F3,stroke:#0D47A1,color:#fff
    style C fill:#FF9800,stroke:#EF6C00,color:#fff
    style D fill:#FF9800,stroke:#EF6C00,color:#fff
    style E fill:#9C27B0,stroke:#4A148C,color:#fff
    style F fill:#607D8B,stroke:#263238,color:#fff
    style G fill:#607D8B,stroke:#263238,color:#fff
    style H fill:#795548,stroke:#3E2723,color:#fff
    style I fill:#795548,stroke:#3E2723,color:#fff
    style J fill:#F44336,stroke:#B71C1C,color:#fff

Componentes da Arquitetura

Cliente

  • Aplicação Frontend ou Cliente HTTP: Interface que consome a API, podendo ser uma aplicação web, mobile ou outro serviço.

API Gateway

  • FastAPI Application: Ponto de entrada principal da aplicação, responsável por receber requisições HTTP e coordenar o fluxo de processamento.

Camada de Autenticação

  • JWT Token Middleware: Middleware responsável por validar tokens JWT nas requisições protegidas.
  • Password Hashing (Argon2): Componente responsável por criar e verificar hashes de senhas usando o algoritmo Argon2.

Camada de Roteamento

  • API Routers: Conjunto de roteadores que dividem a funcionalidade da API em módulos lógicos:
  • Auth Router: Gerencia autenticação e autorização
  • Users Router: Gerencia operações relacionadas a usuários
  • Brands Router: Gerencia operações relacionadas a marcas
  • Cars Router: Gerencia operações relacionadas a carros

Camada de Serviço

  • Business Logic: Lógica de negócios específica para cada domínio da aplicação.
  • Validation Layer (Pydantic Schemas): Camada de validação de dados de entrada e saída usando esquemas Pydantic.

Camada de Dados

  • SQLAlchemy ORM: Object-Relational Mapping que abstrai operações de banco de dados.
  • Async Database Driver: Drivers assíncronos para comunicação com o banco de dados (AIOSQLite para SQLite, AsyncPG para PostgreSQL).

Banco de Dados

  • SQLite/PostgreSQL: Sistemas de gerenciamento de banco de dados relacional onde os dados são persistidos.

Características da Arquitetura

Separation of Concerns

A arquitetura segue o princípio de separação de preocupações, com cada camada tendo responsabilidades bem definidas.

Assincronicidade

A arquitetura é totalmente assíncrona, utilizando drivers assíncronos e funções async/await para melhor desempenho e escalabilidade.

Segurança

A segurança é implementada em múltiplas camadas, desde autenticação JWT até hashing de senhas com Argon2.

Escalabilidade

A arquitetura permite fácil escalabilidade horizontal graças ao estadoless do protocolo HTTP e ao uso de tokens JWT.

Manutenibilidade

A divisão clara em camadas e módulos facilita a manutenção e evolução do sistema.