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.
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.
- 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.
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.
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.
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.
- Linguagens: Go (Golang)
- Orquestração: Kubernetes (K8s)
- Contentorização: Docker
- Base de Dados: PostgreSQL
- IaC: Terraform, Ansible
- Observabilidade: Prometheus, Grafana
- Terraform
- Ansible
- Docker & Kubernetes CLI
1. Provisionar Infraestrutura:
cd terraform/
terraform init
terraform apply2. Deploy da Aplicação:
ansible-playbook deploy.yml3. Desenvolvimento Local (Docker Compose):
docker compose -f compose/docker-compose.yml up --build