Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Exemplo 1: Circuit Breaker - biblioteca local

Neste exemplo teremos um sistema com a seguinte arquitetura:

  • User Service:

    • API REST
    • implementado em Node.JS
    • retorna dados pessoais fictícios de um possível usuário
  • Address Service:

    • API REST
    • implementado em Node.JS
    • retorna um endereço fictício de um possível usuário
  • BFF Service:

    • API GraphQL
    • implementado em Node.JS
    • usando Apollo Server
    • retorna um perfil fictício de um usuário que consiste dos dados pessoas e endereço que são buscados no user service e address service respectivamente
    • chamadas http aos serviços são protegidas por circuit breakers utilizando a lib Opossum

Execução local

O sistema é deployado localmente utilizando docker e docker-compose.

Comandos

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 cada serviço
make start/address
make start/bff
make start/user

# derruba cada serviço
make stop/address
make stop/user

# tail do log de cada serviço
make logs/address
make logs/bff
make logs/user

# gera carga de requisições ao bff utilizando apache benchmark
make test

# mostra o consumo de recursos do container do BFF
make resources

# derruba toda a infraestrutura
make stop

Variáveis de ambiente

No docker-compose.yml podemos alterar as variáveis de ambiente de cada serviço.

  • Address Service
    • FORCED_DELAY: tempo em milisegundos que serviço espera para retornar uma resposta a requisições http
  • User Service
    • FORCED_DELAY: tempo em milisegundos que serviço espera para retornar uma resposta a requisições http
  • BFF Service
    • CIRCUIT_BREAKER_ENABLED: true ou false - habilita ou desabilita o uso de circuit breaker nas chamadas aos outros serviços
    • ADDRESS_SERVICE_URL: URL do address service
    • USER_SERVICE_URL: URL do user service

Referências

Expert

Rodrigo Botti