Skip to content

Arquitetura de Microsserviços - Plataforma de Notícias

flowchart TD
    %% Camada de Apresentação
    subgraph Clients ["1. Camada de Clientes"]
        Web[Web Browser]
        App[App Mobile]
    end

    %% Porta de Entrada
    subgraph Gateway ["2. API Gateway / BFF"]
        Router["Roteamento & Autenticação<br>(valida token JWT)"]
    end

    %% Domínios de Negócio (Microsserviços)
    subgraph Services ["3. Microsserviços de Domínio"]
        News["Pacote: News Service<br>(Leitura, Publicação e Categorização)"]
        User["Pacote: User Service<br>(Perfil, Auth, Favoritos, Tópicos)"]
        Notif["Pacote: Notification Service<br>(Push, Email, WebSocket)"]
        Reco["Pacote: Recommendation Service<br>(Sugestão de Notícias)"]
        Search["Pacote: Search Service<br>(Busca e Filtro por Categoria)"]
    end

    %% Infraestrutura de Eventos
    subgraph EventBus ["4. Message Broker (Event-Driven)"]
        Kafka[("Kafka / RabbitMQ")]
    end

    %% Bancos de Dados e Caches
    subgraph Databases ["5. Bancos de Dados e Caches"]
        DB_News[("DB Notícias - ex: MongoDB")]
        DB_User[("DB Usuários - ex: PostgreSQL")]
        DB_Notif[("DB Notificações<br>(preferências e histórico de envio)")]
        DB_Reco[("DB Recomendações<br>(perfil de interesse)")]
        Cache[("Cache - Redis<br>(notícias populares/lidas)")]
        Index[("Índice - Elasticsearch<br>(busca por categoria/tags)")]
    end

    %% Relacionamentos e Fluxos
    Clients -->|HTTPS / WebSocket| Gateway
    Gateway -->|REST/gRPC| News
    Gateway -->|REST/gRPC| User
    Gateway -->|REST/gRPC| Reco
    Gateway -->|REST/gRPC| Search

    News --- DB_News
    News --- Cache
    User --- DB_User
    Notif --- DB_Notif
    Reco --- DB_Reco
    Search --- Index

    %% Fluxo de Eventos - Publicação
    News -.->|Publica: NotíciaCriada| Kafka
    News -.->|Publica: NotíciaCategorizada| Kafka
    User -.->|Publica: TópicoSeguido| Kafka
    User -.->|Publica: NotíciaFavoritada| Kafka
    User -.->|Publica: NotíciaLida| Kafka

    %% Fluxo de Eventos - Consumo
    Kafka -.->|Consome: NotíciaCriada| Notif
    Kafka -.->|Consome: NotíciaCriada| Search
    Kafka -.->|Consome: NotíciaCategorizada| Search
    Kafka -.->|Consome: TópicoSeguido| Reco
    Kafka -.->|Consome: NotíciaFavoritada| Reco
    Kafka -.->|Consome: NotíciaLida| Reco
    Kafka -.->|Consome: NotíciaCriada| Reco

Código em mermaid:

flowchart TD
    %% Camada de Apresentação
    subgraph Clients ["1. Camada de Clientes"]
        Web[Web Browser]
        App[App Mobile]
    end

    %% Porta de Entrada
    subgraph Gateway ["2. API Gateway / BFF"]
        Router["Roteamento & Autenticação<br>(valida token JWT)"]
    end

    %% Domínios de Negócio (Microsserviços)
    subgraph Services ["3. Microsserviços de Domínio"]
        News["Pacote: News Service<br>(Leitura, Publicação e Categorização)"]
        User["Pacote: User Service<br>(Perfil, Auth, Favoritos, Tópicos)"]
        Notif["Pacote: Notification Service<br>(Push, Email, WebSocket)"]
        Reco["Pacote: Recommendation Service<br>(Sugestão de Notícias)"]
        Search["Pacote: Search Service<br>(Busca e Filtro por Categoria)"]
    end

    %% Infraestrutura de Eventos
    subgraph EventBus ["4. Message Broker (Event-Driven)"]
        Kafka[("Kafka / RabbitMQ")]
    end

    %% Bancos de Dados e Caches
    subgraph Databases ["5. Bancos de Dados e Caches"]
        DB_News[("DB Notícias - ex: MongoDB")]
        DB_User[("DB Usuários - ex: PostgreSQL")]
        DB_Notif[("DB Notificações<br>(preferências e histórico de envio)")]
        DB_Reco[("DB Recomendações<br>(perfil de interesse)")]
        Cache[("Cache - Redis<br>(notícias populares/lidas)")]
        Index[("Índice - Elasticsearch<br>(busca por categoria/tags)")]
    end

    %% Relacionamentos e Fluxos
    Clients -->|HTTPS / WebSocket| Gateway
    Gateway -->|REST/gRPC| News
    Gateway -->|REST/gRPC| User
    Gateway -->|REST/gRPC| Reco
    Gateway -->|REST/gRPC| Search

    News --- DB_News
    News --- Cache
    User --- DB_User
    Notif --- DB_Notif
    Reco --- DB_Reco
    Search --- Index

    %% Fluxo de Eventos - Publicação
    News -.->|Publica: NotíciaCriada| Kafka
    News -.->|Publica: NotíciaCategorizada| Kafka
    User -.->|Publica: TópicoSeguido| Kafka
    User -.->|Publica: NotíciaFavoritada| Kafka
    User -.->|Publica: NotíciaLida| Kafka

    %% Fluxo de Eventos - Consumo
    Kafka -.->|Consome: NotíciaCriada| Notif
    Kafka -.->|Consome: NotíciaCriada| Search
    Kafka -.->|Consome: NotíciaCategorizada| Search
    Kafka -.->|Consome: TópicoSeguido| Reco
    Kafka -.->|Consome: NotíciaFavoritada| Reco
    Kafka -.->|Consome: NotíciaLida| Reco
    Kafka -.->|Consome: NotíciaCriada| Reco