Categoria

Arquitetura de Software e Sistemas Distribuídos

Padrões de segurança em arquiteturas de microservices
Arquitetura de Software e Sistemas Distribuídos

Padrões de segurança em arquiteturas de microservices

Em uma arquitetura monolítica, a segurança é tipicamente implementada como uma camada única — um firewall de borda, uma autenticação centralizada e uma única base de dados para sessões. Em microservices, cada serviço opera de forma independente, com seus próprios processos de comunicação, armazenamento e exposição. Isso elimina o "perímetro seguro" tradicional e exige que cada serviço seja capaz de se defender sozinho.

29/06/2024
Como aplicar event storming para modelagem de domínios complexos
Arquitetura de Software e Sistemas Distribuídos 25/06/2024

Como aplicar event storming para modelagem de domínios complexos

Event Storming é uma técnica de modelagem colaborativa criada por Alberto Brandolini, originalmente concebida para acelerar a compreensão de domínios complexos. Diferente de abordagens tradicionais que partem de diagramas estáticos, o Event Storming reúne especialistas de negócio e desenvolvedores em uma sala (física ou virtual) para mapear, em tempo real, todos os eventos que ocorrem no domínio. A técnica utiliza post-its coloridos, cada cor representando um elemento do modelo: eventos (laranja

Estratégias de escalabilidade horizontal de aplicações
Arquitetura de Software e Sistemas Distribuídos 15/06/2024

Estratégias de escalabilidade horizontal de aplicações

A escalabilidade horizontal (scale-out) consiste em adicionar mais instâncias de uma aplicação para distribuir a carga de trabalho, diferentemente da escalabilidade vertical (scale-up), que aumenta os recursos de uma única máquina. Enquanto o scale-up encontra limites físicos e financeiros, o scale-out permite crescimento quase ilimitado, desde que a arquitetura seja projetada para isso.

Como modelar eventos de domínio com clareza e sem ambiguidade
Arquitetura de Software e Sistemas Distribuídos 07/06/2024

Como modelar eventos de domínio com clareza e sem ambiguidade

Eventos de domínio representam fatos consumados que ocorreram dentro de um contexto delimitado (bounded context). No design orientado a eventos, eles são a espinha dorsal da comunicação entre agregados e sistemas, registrando mudanças de estado que importam para o negócio.

Durable execution com Temporal: workflows que sobrevivem a falhas e reinícios
Arquitetura de Software e Sistemas Distribuídos 02/06/2024

Durable execution com Temporal: workflows que sobrevivem a falhas e reinícios

Em sistemas distribuídos, falhas não são exceções — são a regra. Um servidor pode cair no meio de uma transação, uma chamada de rede pode expirar, ou uma exceção inesperada pode interromper o processamento de um pedido. Em cenários críticos como processamento de pagamentos, aprovisionamento de infraestrutura ou orquestração de ETL, essas falhas podem causar perda de dados, estados inconsistentes e retrabalho manual.

Health checks em microsserviços: liveness vs readiness
Arquitetura de Software e Sistemas Distribuídos 31/05/2024

Health checks em microsserviços: liveness vs readiness

Em arquiteturas de microsserviços, a resiliência não é opcional — é um requisito fundamental. Health checks são mecanismos que permitem que orquestradores como Kubernetes determinem se um contêiner está funcionando corretamente. Sem eles, um serviço que entrou em deadlock continuaria recebendo tráfego, causando degradação progressiva do sistema.

NATS JetStream: mensageria persistente e rápida para sistemas distribuídos
Arquitetura de Software e Sistemas Distribuídos 30/05/2024

NATS JetStream: mensageria persistente e rápida para sistemas distribuídos

NATS é um sistema de mensageria open source conhecido por sua simplicidade, alto desempenho e latência extremamente baixa. Originalmente criado pela Cloud Foundry e posteriormente mantido pela CNCF, o NATS Core oferece comunicação publish/subscribe e request/reply com entrega "at-most-once". Essa simplicidade, porém, limitava seu uso em cenários que exigiam persistência, garantias de entrega mais fortes e replay de mensagens.

Estratégias de observabilidade em sistemas distribuídos
Arquitetura de Software e Sistemas Distribuídos 29/05/2024

Estratégias de observabilidade em sistemas distribuídos

Observabilidade não é sinônimo de monitoramento. Enquanto o monitoramento tradicional responde a perguntas conhecidas ("o serviço X está no ar?"), a observabilidade permite fazer perguntas que você não sabia que precisava fazer. Em sistemas distribuídos, onde dezenas ou centenas de serviços interagem, o monitoramento clássico falha porque não consegue capturar a complexidade das interações.

Estratégias de active-active e active-passive em clusters de banco de dados
Arquitetura de Software e Sistemas Distribuídos 15/05/2024

Estratégias de active-active e active-passive em clusters de banco de dados

Clusters de banco de dados são conjuntos de servidores interconectados que trabalham de forma coordenada para oferecer alta disponibilidade, escalabilidade e tolerância a falhas. O objetivo principal é garantir que o sistema permaneça operacional mesmo diante de falhas de hardware, rede ou software, minimizando o tempo de inatividade e a perda de dados.

Como aplicar o padrão priority queue para processamento diferenciado por SLA
Arquitetura de Software e Sistemas Distribuídos 13/05/2024

Como aplicar o padrão priority queue para processamento diferenciado por SLA

O padrão priority queue em sistemas distribuídos consiste em filas que organizam mensagens por níveis de urgência, onde cada elemento recebe um valor de prioridade que determina sua posição de processamento. Diferente de filas FIFO tradicionais, as priority queues ordenam as mensagens de forma que as de maior prioridade sejam consumidas primeiro, independentemente da ordem de chegada.