SlideShare uma empresa Scribd logo
1 de 61
Baixar para ler offline
Pensando e Arquitetando
Aplicações Resilientes
Wilson Júnior
● Pythonista desde muleque
● Também é Gopher e Erlangueiro
● Goiano root's
● Apaixonado por tecnologia e
como ela se apoia nas pessoas.
● Biker
● Desenvolvedor na Globo.com há 3 anos
Agenda
● Pensando nas 'catástrofes' e nas consequencias
● Atitudes para evitar estes problemas
● Simplificando estas atitudes.
Softwares são feitos para
atender as pessoas...
Existem "imprevistos" no
mundo computacional...
E como as pessoas que
dependem do software
reagem ?...
O Software está falhando, mais tarde eu tento
novamente ...
Porém sabemos que alguns
usuários não são assim...
Ou até deixar de salvar uma vida ...
Edward A. Murphy
"Se algo pode dar
errado, dará."
Lei de murphy
landing.google.com/sre/
"Hope is not a strategy."
Introdução ao SRE do Google
Então o que é resiliência ?
Algo difícil de derrubar!
Ou quando cai levanta rápido
Pensando nas 'catástrofes'
e nas consequencias
Falhas de sistemas
operacionais
O disco pode lotar
$ df -lh
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk0s2 223Gi 210Gi 13Gi 100% 55227003 3296783 94% /
Memória RAM pode lotar
Podemos atingir o máximo de arquivos
abertos
$ too many open files
O processo da minha aplicação pode morrer
$ ps aux
Cadê minha aplicação ?!
Falhas de sistemas
dependentes
Meu banco de dados pode cair
Algum serviço que eu dependa pode ficar
fora do ar
Algum serviço que eu dependa pode ficar
lento ou sobrecarregado.
Posso sofrer uma 'partição de rede'
Minha aplicação pode receber mais usuários
do que ela é capaz
Atitudes para evitar estes
problemas
Evite: Single Point of
Failures: Seja redundante!
Simplicidade!
Simply philosophy
● Simple is better than complex. Zend of Python
● KISS: Keep It Simple, Stupid
● Less is exponentially more - Rob Pike (um dos criadores do GOLang)
● O preço da confiabilidade é a busca da máxima simplicidade - Tony Hoare
(Vencedor do Turing Award de 1980)
● simplicidade é o último grau de sofisticação - Leonardo da Vinci
Automatize!
Monitoração eficiente!
Monitoração eficiente!
Circuit breaker
Timeouts!
Retries
Operações idempotentes
Hystrix like
100% de disponibilidade
não existe!
Teste para garantir a
resiliência
Testes unitários
Testes de integração
Testes de fumaça
(Smoke tests)
Testes de performance
Testes de performance
- WRK
- Apache AB
Testes em produção
Sim!, é isso mesmo!
Testes de entorno (rollout
gradual)
Testes de stress
Canary tests
canary in a coal mine
Um projeto opensource que
nós ajuda a sermos mais
resilientes
Funcionalidades do tsuru
● Roda qualquer aplicação (Python,
Ruby, Java, GO, etc)
● Auto-Scale
● Otimiza recursos
● Ajuda a detectar aplicações mal
comportadas
● Auto provisiona servidores quando
necessário
tsuru.io
Obrigado (=
github.com/wpjunior
about.me/wpjunior
Estamos contratando:
talentos.globo.com

Mais conteúdo relacionado

Semelhante a Pensando e Arquitetando Aplicações Resilientes

Palestra - FACSENAC - De Hacker e louco, todo mundo tem um pouco
Palestra - FACSENAC - De Hacker e louco, todo mundo tem um poucoPalestra - FACSENAC - De Hacker e louco, todo mundo tem um pouco
Palestra - FACSENAC - De Hacker e louco, todo mundo tem um poucoAs Zone
 
Facsenac - De hacker e louco, todo mundo tem um pouco
Facsenac - De hacker e louco, todo mundo tem um poucoFacsenac - De hacker e louco, todo mundo tem um pouco
Facsenac - De hacker e louco, todo mundo tem um poucoThiago Dieb
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador PragmaticoLeonardo Fernandes
 
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de softwareTDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de softwaretdc-globalcode
 
Monitoração - muito além do sistema operacional - WeOp 2014
Monitoração - muito além do sistema operacional - WeOp 2014Monitoração - muito além do sistema operacional - WeOp 2014
Monitoração - muito além do sistema operacional - WeOp 2014Marcus Vechiato
 
Armadilhas no Desenvolvimento de Software
Armadilhas no Desenvolvimento de SoftwareArmadilhas no Desenvolvimento de Software
Armadilhas no Desenvolvimento de Softwarejamersonlima
 
P01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhorP01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhorLeandro Ferreira
 
"Monitoração - muito além do sistema operacional" - Marcus Vechiato (Locaweb)...
"Monitoração - muito além do sistema operacional" - Marcus Vechiato (Locaweb)..."Monitoração - muito além do sistema operacional" - Marcus Vechiato (Locaweb)...
"Monitoração - muito além do sistema operacional" - Marcus Vechiato (Locaweb)...WeOp - The Operations Summit
 
Digital Day BH - Microinterações
Digital Day BH - MicrointeraçõesDigital Day BH - Microinterações
Digital Day BH - MicrointeraçõesAnderson Façanha
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Sérgio Souza Costa
 
Palestra Fatec - Gestão
Palestra Fatec - GestãoPalestra Fatec - Gestão
Palestra Fatec - GestãoRenato Puccini
 
Desenvolvimento ágil de software
Desenvolvimento ágil de softwareDesenvolvimento ágil de software
Desenvolvimento ágil de softwareSompo Seguros
 

Semelhante a Pensando e Arquitetando Aplicações Resilientes (20)

Palestra - FACSENAC - De Hacker e louco, todo mundo tem um pouco
Palestra - FACSENAC - De Hacker e louco, todo mundo tem um poucoPalestra - FACSENAC - De Hacker e louco, todo mundo tem um pouco
Palestra - FACSENAC - De Hacker e louco, todo mundo tem um pouco
 
Facsenac - De hacker e louco, todo mundo tem um pouco
Facsenac - De hacker e louco, todo mundo tem um poucoFacsenac - De hacker e louco, todo mundo tem um pouco
Facsenac - De hacker e louco, todo mundo tem um pouco
 
Palestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnitPalestra Testes De Unidade Com JUnit
Palestra Testes De Unidade Com JUnit
 
Seja Um Programador Pragmatico
Seja Um Programador PragmaticoSeja Um Programador Pragmatico
Seja Um Programador Pragmatico
 
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de softwareTDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
 
Software Livre 22 Abril
Software Livre 22 AbrilSoftware Livre 22 Abril
Software Livre 22 Abril
 
Monitoração - muito além do sistema operacional - WeOp 2014
Monitoração - muito além do sistema operacional - WeOp 2014Monitoração - muito além do sistema operacional - WeOp 2014
Monitoração - muito além do sistema operacional - WeOp 2014
 
Armadilhas no Desenvolvimento de Software
Armadilhas no Desenvolvimento de SoftwareArmadilhas no Desenvolvimento de Software
Armadilhas no Desenvolvimento de Software
 
P01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhorP01 - Como ser um desenvolvedor melhor
P01 - Como ser um desenvolvedor melhor
 
"Monitoração - muito além do sistema operacional" - Marcus Vechiato (Locaweb)...
"Monitoração - muito além do sistema operacional" - Marcus Vechiato (Locaweb)..."Monitoração - muito além do sistema operacional" - Marcus Vechiato (Locaweb)...
"Monitoração - muito além do sistema operacional" - Marcus Vechiato (Locaweb)...
 
Digital Day BH - Microinterações
Digital Day BH - MicrointeraçõesDigital Day BH - Microinterações
Digital Day BH - Microinterações
 
5 sentidos mobile
5 sentidos mobile5 sentidos mobile
5 sentidos mobile
 
Joomla! for dummies - HackThursday CW 36
Joomla! for dummies - HackThursday CW 36Joomla! for dummies - HackThursday CW 36
Joomla! for dummies - HackThursday CW 36
 
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento Engenharia de Software - Conceitos e Modelos de Desenvolvimento
Engenharia de Software - Conceitos e Modelos de Desenvolvimento
 
Unifesp sao jose
Unifesp sao joseUnifesp sao jose
Unifesp sao jose
 
Palestra
PalestraPalestra
Palestra
 
Palestra Fatec - Gestão
Palestra Fatec - GestãoPalestra Fatec - Gestão
Palestra Fatec - Gestão
 
Palestra
PalestraPalestra
Palestra
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
Desenvolvimento ágil de software
Desenvolvimento ágil de softwareDesenvolvimento ágil de software
Desenvolvimento ágil de software
 

Mais de Wilson Júnior

Configurações de aplicações distribuidas com etcd
Configurações de aplicações distribuidas com etcdConfigurações de aplicações distribuidas com etcd
Configurações de aplicações distribuidas com etcdWilson Júnior
 
Escreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornadoEscreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornadoWilson Júnior
 
Arquitetura de projetos e pacotes em GO
Arquitetura de projetos e pacotes em GOArquitetura de projetos e pacotes em GO
Arquitetura de projetos e pacotes em GOWilson Júnior
 
Golang para desenvolvedores pragmáticos parte 2
Golang para desenvolvedores pragmáticos  parte 2Golang para desenvolvedores pragmáticos  parte 2
Golang para desenvolvedores pragmáticos parte 2Wilson Júnior
 
Go Lang para desenvolvedores pragmáticos (parte 1)
Go Lang para desenvolvedores pragmáticos (parte 1)Go Lang para desenvolvedores pragmáticos (parte 1)
Go Lang para desenvolvedores pragmáticos (parte 1)Wilson Júnior
 
JSON Schema: Valide e navegue entre suas APIS
JSON Schema: Valide e navegue entre suas APISJSON Schema: Valide e navegue entre suas APIS
JSON Schema: Valide e navegue entre suas APISWilson Júnior
 

Mais de Wilson Júnior (7)

Configurações de aplicações distribuidas com etcd
Configurações de aplicações distribuidas com etcdConfigurações de aplicações distribuidas com etcd
Configurações de aplicações distribuidas com etcd
 
Escreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornadoEscreva aplicações web assíncronas com python3 + tornado
Escreva aplicações web assíncronas com python3 + tornado
 
Arquitetura de projetos e pacotes em GO
Arquitetura de projetos e pacotes em GOArquitetura de projetos e pacotes em GO
Arquitetura de projetos e pacotes em GO
 
Golang para desenvolvedores pragmáticos parte 2
Golang para desenvolvedores pragmáticos  parte 2Golang para desenvolvedores pragmáticos  parte 2
Golang para desenvolvedores pragmáticos parte 2
 
Go Lang para desenvolvedores pragmáticos (parte 1)
Go Lang para desenvolvedores pragmáticos (parte 1)Go Lang para desenvolvedores pragmáticos (parte 1)
Go Lang para desenvolvedores pragmáticos (parte 1)
 
JSON Schema: Valide e navegue entre suas APIS
JSON Schema: Valide e navegue entre suas APISJSON Schema: Valide e navegue entre suas APIS
JSON Schema: Valide e navegue entre suas APIS
 
Mongoengine
MongoengineMongoengine
Mongoengine
 

Pensando e Arquitetando Aplicações Resilientes