SlideShare uma empresa Scribd logo
1 de 14
Circuit Breaker
Introdução
Introdução
• Quando desenvolvemos aplicações, geralmente precisamos realizar chamadas a
serviços e aplicações externas
 Ex.: Um sistema de compra de eletrodomésticos que realiza chamadas a serviços de
pagamento e anti-fraude, validando se os dados do cliente são válidos
• Sempre que realizamos chamadas a serviços externos, existe a possibilidade de ocorrer
problemas na rede ou então que o serviço esteja com falhas.
• Sendo assim, se o serviço externo está com falhas, realizar novas tentativas de acesso
ao serviço não irá ajuda-lo a serem recuperados.
• Se soubermos que o problema está com o serviço de fato, pode-se implementar o
padrão Circuit Breaker na aplicação do cliente
Padrão Circuit Breaker
Padrão Circuit Breaker
• Escrito por Michael T. Nygard no
livro Design and Deploy
Production-Ready Software
(2007).
• Previne que a aplicação tente
repetidamente executar uma
operação que provavelmente irá
falhar.
• O padrão também permite que
uma aplicação detecte se a falha
foi resolvida.
Padrão Circuit Breaker
• Circuit Breaker age como um proxy para operações que podem falhar.
• O proxy deve monitorar o número de falhas recentes que ocorreram e usar esta
informação para decidir quando permitir que a operação continue, ou
simplesmente retornar uma exceção.
• O proxy pode ser implementado como uma máquina de estados, que simulam
um circuito (Circuit Breaker).
Máquina de estados Circuit Breaker
Estado 1: Closed
• O proxy mantém a quantidade de falhas recentes, e se
uma chamada a operação ocorre novamente, o proxy
incrementa um contador de falhas.
• Caso a operação ocorra com sucesso, o resultado é
retornado com sucesso.
• Se o número de falhas excedem a quantidade ao
threshold em um certo período, o proxy é
redirecionado para o estado Open.
• Um timer referente a timeout é iniciado neste estado.
Quando este timer expira, o proxy é redirecionado para
o estado Half-Open.
Estado 1I: Open
• Uma requisição da aplicação falha imediatamente e
uma exceção é retornada para a aplicação.
• Se o Timer expira, é redirecionado para o estado Half-
Open.
Estado III: Half-Open
• Estado invocado apenas se um determinado número de
requisições da aplicação foi atingido.
• Se as requisições ocorreram com sucesso, assume-se
que a falha anterior foi fixada e que então o Circuit
Breaker poderá ir para o estado Closed (e o contador é
reiniciado).
• Se as requisições falham, o Circuit Breaker assume que
a falha continua presente e o estado é alterado para
Open, reiniciando o Timer de timeout.
Considerações sobre o padrão Circuit Breaker
Considerações sobre o padrão Circuit Breaker
• Ao implementar o padrão Circuit Breaker, é necessário realizar as seguintes
considerações:
• Tratamento de exceções: O Cirtuit Breaker deve ser capaz de examinar o máximo de
exceções possíveis.
• Logs de erros: Sempre devem ocorrer para que o administrador do sistema possa
verificar o comportamento do mesmo.
• Concorrência: O Circuit Breaker pode ser acessado por um alto número de instâncias
da aplicação simultaneamente. A aplicação não deverá bloquear requisições que sejam
concorrentes.
• Timeouts Inapropriados de Serviços Externos: O Circuit Breaker pode não ser capaz
de proteger aplicações que tenham um timeout específico.
Considerações sobre o padrão Circuit Breaker
• O padrão Circuit Breaker deverá ser utilizado quando:
• Deve-se impedir que a aplicação tente invocar um serviço remoto ou acessar um
recurso compartilhado, caso esta operação provavelmente falhe.
• O padrão Circuit Breaker não deverá ser considerado quando:
• Tenta-se manipular recursos privados de uma aplicação, como por exemplo a estrutura
de dados. Neste caso, o Circuit Breaker irá gerar uma sobrecarga no sistema.
• Como um substituto de manipulador de exceções para tratar lógica de negócio nas
aplicações.
Exemplo Prático

Mais conteúdo relacionado

Semelhante a Circuit Breaker: Protegendo chamadas a serviços externos

Sistemas Distribuídos
Sistemas DistribuídosSistemas Distribuídos
Sistemas DistribuídosRoberto Aragy
 
Categorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo EscalonadorCategorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo EscalonadorSofia Trindade
 
Aula 04 qs - sistemas embarcados
Aula 04   qs - sistemas embarcadosAula 04   qs - sistemas embarcados
Aula 04 qs - sistemas embarcadosJunior Gomes
 
Estudo sistemas operacionais p2
Estudo sistemas operacionais  p2Estudo sistemas operacionais  p2
Estudo sistemas operacionais p2Gustavo Souza
 
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, DeadlockApresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, DeadlockWilliams Gomes da Silva
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Edlaine Zamora
 
Teste de Software - Especialização Univem
Teste de Software - Especialização UnivemTeste de Software - Especialização Univem
Teste de Software - Especialização UnivemAndré Abe Vicente
 
Introdução aos Testes de Desempenho
Introdução aos Testes de DesempenhoIntrodução aos Testes de Desempenho
Introdução aos Testes de DesempenhoBase2 Tecnologia
 
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execução
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execuçãoTreinamento: como usar o JMeter, interpretar resultados e otimizar a execução
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execuçãoBeatriz Makiyama Celestino
 
Testes de Performance com JMeter
Testes de Performance com JMeterTestes de Performance com JMeter
Testes de Performance com JMeterEdlaine Zamora
 
ITIL na prática - Gerenciamento de Incidentes, Problemas e Mudanças
ITIL na prática - Gerenciamento de Incidentes, Problemas e MudançasITIL na prática - Gerenciamento de Incidentes, Problemas e Mudanças
ITIL na prática - Gerenciamento de Incidentes, Problemas e MudançasWise Systems
 
Redes industriais a informática aplicada no chão das fábricas
Redes industriais   a informática aplicada no chão das fábricasRedes industriais   a informática aplicada no chão das fábricas
Redes industriais a informática aplicada no chão das fábricasWilson Mathias Pereira Florentino
 
[GUTS-RS] Testes de Performance
 [GUTS-RS] Testes de Performance [GUTS-RS] Testes de Performance
[GUTS-RS] Testes de PerformanceGUTS-RS
 
ALM e Operações - Workshop - Como Diagnosticar um Incidente
ALM e Operações - Workshop - Como Diagnosticar um IncidenteALM e Operações - Workshop - Como Diagnosticar um Incidente
ALM e Operações - Workshop - Como Diagnosticar um IncidenteAlan Carlos
 
Apostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaApostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaDaniel Silveira
 

Semelhante a Circuit Breaker: Protegendo chamadas a serviços externos (20)

Sistemas Distribuídos
Sistemas DistribuídosSistemas Distribuídos
Sistemas Distribuídos
 
Categorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo EscalonadorCategorias de Escalonamento e Objetivos do Algorítmo Escalonador
Categorias de Escalonamento e Objetivos do Algorítmo Escalonador
 
DB2 Express-C
DB2 Express-CDB2 Express-C
DB2 Express-C
 
Aula 04 qs - sistemas embarcados
Aula 04   qs - sistemas embarcadosAula 04   qs - sistemas embarcados
Aula 04 qs - sistemas embarcados
 
Estudo sistemas operacionais p2
Estudo sistemas operacionais  p2Estudo sistemas operacionais  p2
Estudo sistemas operacionais p2
 
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, DeadlockApresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
 
the-hard-road.PDF
the-hard-road.PDFthe-hard-road.PDF
the-hard-road.PDF
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
 
Teste de Software - Especialização Univem
Teste de Software - Especialização UnivemTeste de Software - Especialização Univem
Teste de Software - Especialização Univem
 
Introdução aos Testes de Desempenho
Introdução aos Testes de DesempenhoIntrodução aos Testes de Desempenho
Introdução aos Testes de Desempenho
 
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execução
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execuçãoTreinamento: como usar o JMeter, interpretar resultados e otimizar a execução
Treinamento: como usar o JMeter, interpretar resultados e otimizar a execução
 
Testes de Performance com JMeter
Testes de Performance com JMeterTestes de Performance com JMeter
Testes de Performance com JMeter
 
Aula 6 semana
Aula 6 semanaAula 6 semana
Aula 6 semana
 
ITIL na prática - Gerenciamento de Incidentes, Problemas e Mudanças
ITIL na prática - Gerenciamento de Incidentes, Problemas e MudançasITIL na prática - Gerenciamento de Incidentes, Problemas e Mudanças
ITIL na prática - Gerenciamento de Incidentes, Problemas e Mudanças
 
Redes industriais a informática aplicada no chão das fábricas
Redes industriais   a informática aplicada no chão das fábricasRedes industriais   a informática aplicada no chão das fábricas
Redes industriais a informática aplicada no chão das fábricas
 
[GUTS-RS] Testes de Performance
 [GUTS-RS] Testes de Performance [GUTS-RS] Testes de Performance
[GUTS-RS] Testes de Performance
 
Dba Ciclo Palestra P5 V1a
Dba Ciclo Palestra P5 V1aDba Ciclo Palestra P5 V1a
Dba Ciclo Palestra P5 V1a
 
Serminario itil service_desk
Serminario itil service_deskSerminario itil service_desk
Serminario itil service_desk
 
ALM e Operações - Workshop - Como Diagnosticar um Incidente
ALM e Operações - Workshop - Como Diagnosticar um IncidenteALM e Operações - Workshop - Como Diagnosticar um Incidente
ALM e Operações - Workshop - Como Diagnosticar um Incidente
 
Apostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiulaApostilas - cliente servidor - aula 1 - fabiula
Apostilas - cliente servidor - aula 1 - fabiula
 

Circuit Breaker: Protegendo chamadas a serviços externos

  • 3. Introdução • Quando desenvolvemos aplicações, geralmente precisamos realizar chamadas a serviços e aplicações externas  Ex.: Um sistema de compra de eletrodomésticos que realiza chamadas a serviços de pagamento e anti-fraude, validando se os dados do cliente são válidos • Sempre que realizamos chamadas a serviços externos, existe a possibilidade de ocorrer problemas na rede ou então que o serviço esteja com falhas. • Sendo assim, se o serviço externo está com falhas, realizar novas tentativas de acesso ao serviço não irá ajuda-lo a serem recuperados. • Se soubermos que o problema está com o serviço de fato, pode-se implementar o padrão Circuit Breaker na aplicação do cliente
  • 5. Padrão Circuit Breaker • Escrito por Michael T. Nygard no livro Design and Deploy Production-Ready Software (2007). • Previne que a aplicação tente repetidamente executar uma operação que provavelmente irá falhar. • O padrão também permite que uma aplicação detecte se a falha foi resolvida.
  • 6. Padrão Circuit Breaker • Circuit Breaker age como um proxy para operações que podem falhar. • O proxy deve monitorar o número de falhas recentes que ocorreram e usar esta informação para decidir quando permitir que a operação continue, ou simplesmente retornar uma exceção. • O proxy pode ser implementado como uma máquina de estados, que simulam um circuito (Circuit Breaker).
  • 7. Máquina de estados Circuit Breaker
  • 8. Estado 1: Closed • O proxy mantém a quantidade de falhas recentes, e se uma chamada a operação ocorre novamente, o proxy incrementa um contador de falhas. • Caso a operação ocorra com sucesso, o resultado é retornado com sucesso. • Se o número de falhas excedem a quantidade ao threshold em um certo período, o proxy é redirecionado para o estado Open. • Um timer referente a timeout é iniciado neste estado. Quando este timer expira, o proxy é redirecionado para o estado Half-Open.
  • 9. Estado 1I: Open • Uma requisição da aplicação falha imediatamente e uma exceção é retornada para a aplicação. • Se o Timer expira, é redirecionado para o estado Half- Open.
  • 10. Estado III: Half-Open • Estado invocado apenas se um determinado número de requisições da aplicação foi atingido. • Se as requisições ocorreram com sucesso, assume-se que a falha anterior foi fixada e que então o Circuit Breaker poderá ir para o estado Closed (e o contador é reiniciado). • Se as requisições falham, o Circuit Breaker assume que a falha continua presente e o estado é alterado para Open, reiniciando o Timer de timeout.
  • 11. Considerações sobre o padrão Circuit Breaker
  • 12. Considerações sobre o padrão Circuit Breaker • Ao implementar o padrão Circuit Breaker, é necessário realizar as seguintes considerações: • Tratamento de exceções: O Cirtuit Breaker deve ser capaz de examinar o máximo de exceções possíveis. • Logs de erros: Sempre devem ocorrer para que o administrador do sistema possa verificar o comportamento do mesmo. • Concorrência: O Circuit Breaker pode ser acessado por um alto número de instâncias da aplicação simultaneamente. A aplicação não deverá bloquear requisições que sejam concorrentes. • Timeouts Inapropriados de Serviços Externos: O Circuit Breaker pode não ser capaz de proteger aplicações que tenham um timeout específico.
  • 13. Considerações sobre o padrão Circuit Breaker • O padrão Circuit Breaker deverá ser utilizado quando: • Deve-se impedir que a aplicação tente invocar um serviço remoto ou acessar um recurso compartilhado, caso esta operação provavelmente falhe. • O padrão Circuit Breaker não deverá ser considerado quando: • Tenta-se manipular recursos privados de uma aplicação, como por exemplo a estrutura de dados. Neste caso, o Circuit Breaker irá gerar uma sobrecarga no sistema. • Como um substituto de manipulador de exceções para tratar lógica de negócio nas aplicações.