Neste exemplo teremos um sistema com a seguinte arquitetura:
-
Backend Service:
- API REST
- implementado em Node.JS
- retorna um nome fictício de um possível usuário
-
Client Service:
- API REST
- implementado em Node.JS
- chama o backend service e retorna o valor recebido
- chamda http ao backend service protegida por implementação de
circuit breaker
local que utiliza oRedis
para armazenar seu estado - deployado em três replicas
-
Redis
- Redis como cache distribuído
- guarda o estado dos circuit breakers como chave-valor
O sistema é deployado localmente utilizando docker e docker-compose.
O exemplo utiliza make
como task manager.
Os targets estão definidos no Makefile.
# builda todas as imagens e sobe os serviços dentro de uma mesma rede
make start
# reinicia o backend service
make start/server
# derruba o backend server
make stop/server
# tail do log de cada replica do client service
make logs/1
make logs/2
make logs/3
# conecta-se ao redis
# precisa de Node.JS instalado
make redis-cli
# derruba toda a infraestrutura
make stop
- https://martinfowler.com/bliki/CircuitBreaker.html
- https://docs.microsoft.com/en-us/azure/architecture/patterns/circuit-breaker
- https://redis.io/
- https://github.com/luin/ioredis
Rodrigo Botti |