Skip to content

ElPollero/cloud_native_messenger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cloud_native_messenger

Esta plataforma é um sistema de mensagens instantâneas seguro e em tempo real, construído sobre uma arquitetura de microserviços distribuída. Utiliza orquestração de contentores e infraestrutura como código (IaC) para fornecer um ambiente altamente escalável e observável.


Visão Geral da Arquitetura

O sistema segue um design desacoplado onde serviços independentes comunicam através de APIs internas gRPC/REST e canais WebSocket.

  • Authentication Service (Go): Gere o registo de utilizadores, login e emite tokens seguros para verificação de identidade no cluster.
  • Chat Service (Go): Trata da lógica central para criação de grupos, persistência de mensagens e metadados de conversas.
  • WebSocket Service (Go): Atua como o pipeline de comunicação em tempo real, entregando notificações e mensagens instantâneas.
  • Edge Layer: Um controlador NGINX Ingress gere o tráfego externo, encaminhando pedidos para os serviços apropriados.

Funcionalidades Core

  • Entrega em Tempo Real: Troca de mensagens de baixa latência através de streams WebSocket dedicados.
  • Persistência e Consistência: Cada serviço utiliza uma base de dados PostgreSQL dedicada com volumes persistentes para garantir a durabilidade dos dados.
  • Mensagens de Grupo: Suporte para chats diretos e de grupo com histórico de mensagens.
  • Service Mesh: Proxies sidecar integrados tratam do balanceamento de carga, retentativas, circuit breaking e encriptação mTLS entre serviços.

Infraestrutura e Automação

Toda a stack é provisionada e gerida utilizando ferramentas de DevOps padrão da indústria:

  • Infrastructure as Code (IaC): O Terraform automatiza o aprovisionamento de recursos na cloud, incluindo VPCs, firewalls e nós Kubernetes em Google Cloud Platform.
  • Gestão de Configuração: Playbooks de Ansible tratam da configuração do cluster, do service mesh e do deployment de manifestos Kubernetes.
  • Escalonamento Horizontal: Horizontal Pod Autoscalers (HPA) ajustam dinamicamente o número de réplicas (até 10 por serviço) com base na utilização de CPU.

Observabilidade

O sistema inclui uma stack de monitorização completa para acompanhamento de saúde e desempenho:

  • Prometheus: Recolhe métricas granulares dos pods da aplicação e da infraestrutura Kubernetes.
  • Grafana: Fornece dashboards visuais para acompanhamento de throughput, latência e comportamento de autoscaling.

Avaliação de Desempenho

Testes realizados com ApacheBench demonstram a capacidade do sistema em lidar com tráfego de produção:

  • Throughput: Escalou eficazmente até 50 clientes concorrentes, atingindo um pico de 2257.85 pedidos por segundo.
  • Latência: Desempenho estável com 99% dos pedidos (P99) concluídos em 32ms sob carga elevada.

Tech Stack

  • Linguagens: Go (Golang)
  • Orquestração: Kubernetes (K8s)
  • Contentorização: Docker
  • Base de Dados: PostgreSQL
  • IaC: Terraform, Ansible
  • Observabilidade: Prometheus, Grafana

Deployment

Pré-requisitos

  • Terraform
  • Ansible
  • Docker & Kubernetes CLI

Setup

1. Provisionar Infraestrutura:

cd terraform/
terraform init
terraform apply

2. Deploy da Aplicação:

ansible-playbook deploy.yml

3. Desenvolvimento Local (Docker Compose):

docker compose -f compose/docker-compose.yml up --build

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors