SlideShare uma empresa Scribd logo
1 de 61
Baixar para ler offline
Leandro Silva
https://github.com/leandrosilva
TechTalk
Jul-2019
Esperança não é
uma estratégia
Site Reliability Engineering
Indústria de software
tradicional
Constrói o que
não participou da
especificação
Opera o que
não participou
da construção
Sofre no
relacionamento
com o cliente
Uns perseguem velocidade de mudança Outros estabilidade
Todos querem ver o cliente feliz e satisfeito
No final
“Desenvolvimento
de software com
qualidade”
Cena do clássico
True Story Pictures (2000)
Silos Blame Culture
Como garantir confiança no produto entregue
sem a toxicidade da cultura do dedinho?
Site Reliability Engineering
{ engenharia de confiabilidade }
“Fundamentalmente, é o que acontece quando você pede para um
engenheiro de software projetar uma função de operação.”
Ben Treynor Sloss, Vice Presidente, Google Engineering, Fundador do Google SRE
Nasceu no Google em 2003, antes do movimento DevOps.
A missão era garantir a disponibilidade do site dentro de certas
expectativas pré-definidas e que qualquer mudança que se
pretendesse fazer levasse em conta os seus benefícios vs. os
riscos oferecidos à estabilidade esperada.
A idéia foi reunir um time que criasse uma ponte entre a gestão
de produto, o desenvolvimento e a operação, aplicando a
mentalidade de engenharia de software à infraestrutura e
operação de sistemas, de forma a automatizar tantas tarefas
humanas quanto possível.
Mais confiabilidade, menor custo total.
The Holy Book
(2016)
class SRE : DevOps
Todo problema é um problema de software.
Não estamos
falando apenas de
programação de
funcionalidades
de negócio.
O
p
e
r
a
ç
ã
o
Disponibilidade (quando está disponível para uso)
Latência (quanto tempo demora para responder a uma ação)
Performance (quanto de trabalho correto consegue executar)
Capacidade (quanto requer de recursos para operar satisfatoriamente)
Eficiência (quão bem estão sendo usados os recursos)
Mudança (como alterar o serviço sem quebrá-lo)
01001110 11000011 10100011 01101111 00100000 01100101 01101110 01110100
01110010 01100101 01100111 01100001 01101101 01101111 01110011 00100000
01100010 01101001 01101110 11000011 10100001 01110010 01101001 01101111
01110011 00101100 00100000 01100101 01101110 01110100 01110010 01100101
01100111 01100001 01101101 01101111 01110011 00100000 01110011 01100101
01110010 01110110 01101001 11000011 10100111 01101111 01110011 00101110
01001110 11000011 10100011 01101111 00100000 01100101 01101110 01110100
01110010 01100101 01100111 01100001 01101101 01101111 01110011 00100000
01100010 01101001 01101110 11000011 10100001 01110010 01101001 01101111
01110011 00101100 00100000 01100101 01101110 01110100 01110010 01100101
01100111 01100001 01101101 01101111 01110011 00100000 01110011 01100101
01110010 01110110 01101001 11000011 10100111 01101111 01110011 00101110
Não entregamos binários, entregamos serviços.
Reliability é a primeira
feature desejada para um
sistema de software.
É o quanto pode-se confiar que
um sistema está constantemente
disponível por dado período.
( re·li·a·bil·i·ty )
disponibilidade =
atividade
(atividade + inatividade)
Perseguindo
constantemente a
disponibilidade
Indicadores,
Objetivos e
Acordos1º
Indicadores (SLI)
● Latência das requisições
● Falhas de requisições
● Throughput de processos batches
● Número de arquivos PDF gerados
Tudo que tenha valor em ser medido.
Objetivos (SLO)
● Número absoluto ou intervalo para um
indicador que esteja sendo medido.
● PM e SRE definem juntos.
● Sua performance é comunicada pela
monitoração de seus indicadores.
● Novas funcionalidades são publicadas
somente se a estabilidade do serviço
estiver dentro dos objetivos.
● Quando atingidos, incentivos são
muito bem-vindos.
Acordos (SLA)
● São acordos legais firmados entre os
clientes e os provedores dos serviços.
● Tipicamente são baseados em SLO,
acrescidos de uma margem de
segurança para recuperação.
● Tem alguma repercussão quando são
quebrados.
● 100% é caro e inviável. (diminishing return)
exempli gratia (1)
SLI
Percentil 95 da latência da geração de PDF < 2 min por página nos
últimos 15 minutos.
SLO
Percentil 95 da geração de PDF terá sucesso 99,9% ao longo do ano.
SLA
Haverá crédito ao cliente se o percentil 95 da geração de PDF tiver
menos que 99,5% de sucesso ao longo do ano.
SLI
● Disponibilidade
● Latência
SLO
● Disponibilidade 97%
● Latência 90% para PDF < 1,5 min
● Latência 99% para PDF < 2 min
exempli gratia (2)
O que causa problemas em sistemas?
or change something
Error Budget
$
$
$
$
$
$
$
$
$
$
O objetivo de se estabelecer Error Budget é não
incluir mais variáveis em um sistema instável ou
com disponibilidade a quem dos objetivos.
(não)
Error Budget = 100% - SLO
100% - 99,9% = 0,1%
SLO = 99,9% disponibilidade/mês = 0,1% indisponibilidade/mês
Error Budget = 0,001 x 30 dias x 24 horas x 60 min = 43,2 min/mês
Por volta de 5% positivo
no final. Ainda dá para
assumir o risco de fazer
mais o que?
Você pode ter uma infraestrutura decente e software bem feito, e então,
gastar seu budget com mudanças que entreguem novas features para o
usuário e inovações para o negócio.
(ou)
Você pode desperdiçar seu orçamento de erros com uma infraestrutura
porcaria e correção de bugs em software mal feito.
Volte ao trabalho até que o serviço apresente a
disponibilidade esperada.
Error Budget insuficiente
Outages
Minimize os impactos rapidamente.
Faça uma post-mortem.
Aprenda com os erros.
Não deixe acontecer novamente.
Seja mais pessimista com seu código,
arquitetura, infraestrutura e usuário.
Log tudo.
Monitore preventivamente.
Automatize tarefas manuais.
Reduza ao máximo o “Toil” diário.
● Não existe a pergunta: quem é o culpado? (blameless)
● Assume que as pessoas são inteligentes e bem intencionadas
● Mantém o foco no processo e na tecnologia
● Cria uma linha do tempo para entender onde aconteceu o que
● Obtém todos os fatos
● Cria bug para cada trabalho que precisa de follow-up
Filosofia da post-mortem
Recomendações
1. Arquitetura de sistemas
2. Boas práticas de programação
3. Sistemas operacionais
4. Redes
Habilidades fundamentais:
Uma empresa pequena não precisa ter um time de SRE, mas pode aplicar os princípios de SRE.
Mikey Dickerson's Hierarchy of Reliability
Por onde começar?
Pode-se priorizar a saúde de um
serviço de modo semelhante a
como Abraham Maslow categorizou
as necessidades humanas.
● The 12 Factor;
● Fonte única e versionada de configuração
do serviço;
● Forma rápida de fazer rollback;
● Monitoração (fique atento aos golden
signals: tráfego > erros > latência >
saturação);
● Log agregado para ter um único lugar
onde monitorar e usar na hora do
troubleshooting;
Must have nas aplicações:
● Métricas em um lugar único de onde tirar
dados estatísticos do serviço;
● Traceabilidade para saber onde passou
cada request (o problema pode ocorrer
em uma única máquina);
● Não seja ingênuo, seja pessimista, teste
tudo e ofereça um fallback amigável para
falhas;
● Feature flags;
● Canary releases.
1. Reduza o tempo de detecção de falha
(↓time-to-detect / TTD)
2. Reduza o tempo de reparação de falha
(↓time-to-resolution / TTR)
3. Reduza o impacto % das falhas
(↓usuários / funcionalidades)
4. Reduza a frequência das falhas
(↓time-to-failure / TTF)
Invista tempo em melhorar a disponibilidade:
Quanto mais você avança no nível de disponibilidade,
mais você reduz a velocidade de mudanças, a.k.a.
publicação de novas funcionalidades e inovação.
Tem que ter essa consciência e buscar somente o
nível de disponibilidade suficiente para deixar o
cliente feliz.
Lembre-se do princípio de diminishing return.
Mais disponibilidade do que o necessário não é bom.
99%
99,9%
99,99%
10x esforço
10x esforço
Custo da disponibilidade:
não se esqueça...
Invista algum tempo sério em educar o seu cliente sobre a cultura
de confiabilidade de sistemas, porque se as integrações dos
sistemas dele com os serviços que você oferece estiverem
fragilizadas, ele terá uma impressão errada da disponibilidade dos
seus serviços e ficará infeliz com isso.
Customer Reliability Engineering
DevOps
Conjunto de práticas e cultura que promovem a quebra da barreira entre
desenvolvimento e operação com objetivo de fazer entregas melhores em um
espaço de tempo menor.
O que é?
O Zen de John Willis, Damon Edwards e Jez Humble:
CALMS
Redução dos silos organizacionais (“dev + ops” e não um time de
devops separado dos times de dev e de ops)
Aceitar que falhas acontecem (shit happens)
Implementar mudanças gradualmente (pacotes menores
diminuem o risco das implantações)
Potencializar ferramental e automação de tarefas (seja
preguiçoso e se livre do trabalho automatizando)
Medir tudo (como saber se um serviço está bom sem mensurar?
Qual a
estratégia?
class SRE : DevOps
lembra?
Essa é uma maneira prescritiva
de implementar concretamente
um conjunto de motivações e
expectativas.
DevOps SRE
Redução dos silos organizacionais
Compartilhar o “ownership” do
serviço entre PM, Dev e Ops
Aceitar que falhas acontecem
SLOs e Post-Mortems que não
apontam culpados
Implementar mudanças
gradualmente
Reduzir do custo de falhas, fazendo
implantações pequenas, canary
releases e feature flags
Potencializar ferramental e
automação de tarefas
Automatizar o trabalho do ano todo
Medir tudo
SLIs e medição do quanto de
trabalho manual precisa ser feito
diariamente (toil)
Não é um ou outro.
Não é um ou outro. É uma forma concreta de.
Conclusão
SRE nasceu no Google, uma empresa gigantesca, para eliminar os silos
que haviam entre PM, Dev e Ops e promover evolução sustentável do site
com máxima disponibilidade, sem desperdiçar recursos.
De lá para cá, muitas empresas implantaram SRE.
Empresas pequenas, startups, não precisam ter equipes dedicadas de
SRE, nem devem tentar copiar Google, Twitter, LinkedIn, New Relic, etc.
O que precisam, sim, é desenvolver a mentalidade de SRE desde cedo e
aplicar os princípios que levam progressivamente à confiabilidade dos
serviços.
Em um startup, todo desenvolvedor tem o boné de SRE na sua mesa.
Todo problema pode ser resolvido com código ⎼ tanto quanto possível.
Esperança não é uma
estratégia.
Trabalhe pela disponibilidade consistente do seu serviço.

Mais conteúdo relacionado

Mais procurados

Gestão da qualidade metodologia ágil v01 (2)
Gestão da qualidade   metodologia ágil v01 (2)Gestão da qualidade   metodologia ágil v01 (2)
Gestão da qualidade metodologia ágil v01 (2)Sabrina Mariana
 
Bate-papo com Especialista Terra XP
Bate-papo com Especialista Terra XPBate-papo com Especialista Terra XP
Bate-papo com Especialista Terra XPWildtech
 
Embratel Lives | DevOps: Sua empresa está madura para dar esse passo?
Embratel Lives | DevOps: Sua empresa está madura para dar esse passo?Embratel Lives | DevOps: Sua empresa está madura para dar esse passo?
Embratel Lives | DevOps: Sua empresa está madura para dar esse passo?Embratel
 
IPA Conhecendo XP
IPA Conhecendo XPIPA Conhecendo XP
IPA Conhecendo XPWildtech
 
GCS - Aula 07 - Sistemas de Controle de Versões
GCS - Aula 07 - Sistemas de Controle de VersõesGCS - Aula 07 - Sistemas de Controle de Versões
GCS - Aula 07 - Sistemas de Controle de VersõesMisael Santos
 
DevOps Apresentação Encontro Rational 2013
DevOps Apresentação Encontro Rational 2013DevOps Apresentação Encontro Rational 2013
DevOps Apresentação Encontro Rational 2013Felipe Freire
 
[ServiceNow] Governança da Plataforma (5ª edição)
[ServiceNow] Governança da Plataforma (5ª edição)[ServiceNow] Governança da Plataforma (5ª edição)
[ServiceNow] Governança da Plataforma (5ª edição)Alessandro Almeida
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous deliveryMarco Valtas
 
Cultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develCultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develJose Augusto Carvalho
 
Extreme Programming (XP) e Scrum
Extreme Programming (XP) e ScrumExtreme Programming (XP) e Scrum
Extreme Programming (XP) e ScrumRafael Souza
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaOtávio Calaça Xavier
 
[ServiceNow] Governança das Instâncias - 3ª versão
[ServiceNow] Governança das Instâncias - 3ª versão[ServiceNow] Governança das Instâncias - 3ª versão
[ServiceNow] Governança das Instâncias - 3ª versãoAlessandro Almeida
 
Falando de Testes de Desempenho - por Evandro Grezeli
Falando de Testes de Desempenho - por Evandro GrezeliFalando de Testes de Desempenho - por Evandro Grezeli
Falando de Testes de Desempenho - por Evandro GrezeliJoao Galdino Mello de Souza
 
Metodologias ágeis de desenvolvimento trabalho
Metodologias ágeis de desenvolvimento   trabalhoMetodologias ágeis de desenvolvimento   trabalho
Metodologias ágeis de desenvolvimento trabalhoRuan Pozzebon
 
[ServiceNow] Governança das Instâncias
[ServiceNow] Governança das Instâncias[ServiceNow] Governança das Instâncias
[ServiceNow] Governança das InstânciasAlessandro Almeida
 
Apresentando Extreme Programming
Apresentando Extreme ProgrammingApresentando Extreme Programming
Apresentando Extreme ProgrammingMilfont Consulting
 
Métodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de SoftwareMétodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de Softwarealexandre_malaquias
 

Mais procurados (20)

Gestão da qualidade metodologia ágil v01 (2)
Gestão da qualidade   metodologia ágil v01 (2)Gestão da qualidade   metodologia ágil v01 (2)
Gestão da qualidade metodologia ágil v01 (2)
 
Bate-papo com Especialista Terra XP
Bate-papo com Especialista Terra XPBate-papo com Especialista Terra XP
Bate-papo com Especialista Terra XP
 
Embratel Lives | DevOps: Sua empresa está madura para dar esse passo?
Embratel Lives | DevOps: Sua empresa está madura para dar esse passo?Embratel Lives | DevOps: Sua empresa está madura para dar esse passo?
Embratel Lives | DevOps: Sua empresa está madura para dar esse passo?
 
IPA Conhecendo XP
IPA Conhecendo XPIPA Conhecendo XP
IPA Conhecendo XP
 
GCS - Aula 07 - Sistemas de Controle de Versões
GCS - Aula 07 - Sistemas de Controle de VersõesGCS - Aula 07 - Sistemas de Controle de Versões
GCS - Aula 07 - Sistemas de Controle de Versões
 
DevOps Apresentação Encontro Rational 2013
DevOps Apresentação Encontro Rational 2013DevOps Apresentação Encontro Rational 2013
DevOps Apresentação Encontro Rational 2013
 
[ServiceNow] Governança da Plataforma (5ª edição)
[ServiceNow] Governança da Plataforma (5ª edição)[ServiceNow] Governança da Plataforma (5ª edição)
[ServiceNow] Governança da Plataforma (5ª edição)
 
Continuous delivery
Continuous deliveryContinuous delivery
Continuous delivery
 
Cultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develCultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e devel
 
Programacao Extrema
Programacao ExtremaProgramacao Extrema
Programacao Extrema
 
Extreme Programming (XP) e Scrum
Extreme Programming (XP) e ScrumExtreme Programming (XP) e Scrum
Extreme Programming (XP) e Scrum
 
Arquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega ContinuaArquitetura de Software para a Entrega Continua
Arquitetura de Software para a Entrega Continua
 
[ServiceNow] Governança das Instâncias - 3ª versão
[ServiceNow] Governança das Instâncias - 3ª versão[ServiceNow] Governança das Instâncias - 3ª versão
[ServiceNow] Governança das Instâncias - 3ª versão
 
Falando de Testes de Desempenho - por Evandro Grezeli
Falando de Testes de Desempenho - por Evandro GrezeliFalando de Testes de Desempenho - por Evandro Grezeli
Falando de Testes de Desempenho - por Evandro Grezeli
 
Metodologias Ageis
Metodologias AgeisMetodologias Ageis
Metodologias Ageis
 
Aula 5 semana
Aula 5 semanaAula 5 semana
Aula 5 semana
 
Metodologias ágeis de desenvolvimento trabalho
Metodologias ágeis de desenvolvimento   trabalhoMetodologias ágeis de desenvolvimento   trabalho
Metodologias ágeis de desenvolvimento trabalho
 
[ServiceNow] Governança das Instâncias
[ServiceNow] Governança das Instâncias[ServiceNow] Governança das Instâncias
[ServiceNow] Governança das Instâncias
 
Apresentando Extreme Programming
Apresentando Extreme ProgrammingApresentando Extreme Programming
Apresentando Extreme Programming
 
Métodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de SoftwareMétodos Ágeis para Desenvolvimento de Software
Métodos Ágeis para Desenvolvimento de Software
 

Semelhante a Site Reliability Engineering: garantindo a confiabilidade dos serviços

Uma introdução à SRE - Site reliability engineering
Uma introdução à SRE - Site reliability engineeringUma introdução à SRE - Site reliability engineering
Uma introdução à SRE - Site reliability engineeringThiago Ferreira
 
Paletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoPaletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoflavio1110
 
Aula 5 - Introdução ao Teste.pptx
Aula 5 - Introdução ao Teste.pptxAula 5 - Introdução ao Teste.pptx
Aula 5 - Introdução ao Teste.pptxAlexandreLisboadaSil
 
Aula 3 - Introdução ao Teste.pptx
Aula 3 - Introdução ao Teste.pptxAula 3 - Introdução ao Teste.pptx
Aula 3 - Introdução ao Teste.pptxALEXANDRELISBADASILV
 
Senac QSS - 1) Intro
Senac QSS - 1) IntroSenac QSS - 1) Intro
Senac QSS - 1) Introlcbj
 
Da Gestão 1.0 A Gestão 2.0
Da Gestão 1.0 A Gestão 2.0Da Gestão 1.0 A Gestão 2.0
Da Gestão 1.0 A Gestão 2.0Juan Bernabó
 
Site Reliability Engineering - Descubra a nova era para (Infraestrutura|Opera...
Site Reliability Engineering - Descubra a nova era para (Infraestrutura|Opera...Site Reliability Engineering - Descubra a nova era para (Infraestrutura|Opera...
Site Reliability Engineering - Descubra a nova era para (Infraestrutura|Opera...Pery Lemke
 
Utilizando Cucumber para um Continuous Delivery
Utilizando Cucumber para um Continuous DeliveryUtilizando Cucumber para um Continuous Delivery
Utilizando Cucumber para um Continuous DeliveryRobson Agapito Correa
 
Palestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwarePalestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwareJúlio de Lima
 
Como soluções de desenvolvimento ágil podem trazer flexibilidade e velocidade...
Como soluções de desenvolvimento ágil podem trazer flexibilidade e velocidade...Como soluções de desenvolvimento ágil podem trazer flexibilidade e velocidade...
Como soluções de desenvolvimento ágil podem trazer flexibilidade e velocidade...Embratel
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)André Dias
 
DevOps - Novos Desafios para TI
DevOps - Novos Desafios para TIDevOps - Novos Desafios para TI
DevOps - Novos Desafios para TICarlos Buzeto
 
DEV-OPS para teste de software
DEV-OPS para teste de softwareDEV-OPS para teste de software
DEV-OPS para teste de softwareQualister
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 

Semelhante a Site Reliability Engineering: garantindo a confiabilidade dos serviços (20)

Webinar DevOps - Encontros Ágeis
Webinar DevOps - Encontros ÁgeisWebinar DevOps - Encontros Ágeis
Webinar DevOps - Encontros Ágeis
 
Uma introdução à SRE - Site reliability engineering
Uma introdução à SRE - Site reliability engineeringUma introdução à SRE - Site reliability engineering
Uma introdução à SRE - Site reliability engineering
 
Paletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojoPaletra sobre TDD, ocorrida no #DevDojo
Paletra sobre TDD, ocorrida no #DevDojo
 
Aula 5 - Introdução ao Teste.pptx
Aula 5 - Introdução ao Teste.pptxAula 5 - Introdução ao Teste.pptx
Aula 5 - Introdução ao Teste.pptx
 
Aula 3 - Introdução ao Teste.pptx
Aula 3 - Introdução ao Teste.pptxAula 3 - Introdução ao Teste.pptx
Aula 3 - Introdução ao Teste.pptx
 
Senac QSS - 1) Intro
Senac QSS - 1) IntroSenac QSS - 1) Intro
Senac QSS - 1) Intro
 
Métodos Ágeis - Aula02
Métodos Ágeis - Aula02Métodos Ágeis - Aula02
Métodos Ágeis - Aula02
 
DevOps - Operação contínua
DevOps - Operação contínuaDevOps - Operação contínua
DevOps - Operação contínua
 
Da Gestão 1.0 A Gestão 2.0
Da Gestão 1.0 A Gestão 2.0Da Gestão 1.0 A Gestão 2.0
Da Gestão 1.0 A Gestão 2.0
 
Site Reliability Engineering - Descubra a nova era para (Infraestrutura|Opera...
Site Reliability Engineering - Descubra a nova era para (Infraestrutura|Opera...Site Reliability Engineering - Descubra a nova era para (Infraestrutura|Opera...
Site Reliability Engineering - Descubra a nova era para (Infraestrutura|Opera...
 
Utilizando Cucumber para um Continuous Delivery
Utilizando Cucumber para um Continuous DeliveryUtilizando Cucumber para um Continuous Delivery
Utilizando Cucumber para um Continuous Delivery
 
Palestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwarePalestra DevOps para Teste de Software
Palestra DevOps para Teste de Software
 
Como soluções de desenvolvimento ágil podem trazer flexibilidade e velocidade...
Como soluções de desenvolvimento ágil podem trazer flexibilidade e velocidade...Como soluções de desenvolvimento ágil podem trazer flexibilidade e velocidade...
Como soluções de desenvolvimento ágil podem trazer flexibilidade e velocidade...
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
 
DevOps - Novos Desafios para TI
DevOps - Novos Desafios para TIDevOps - Novos Desafios para TI
DevOps - Novos Desafios para TI
 
DEV-OPS para teste de software
DEV-OPS para teste de softwareDEV-OPS para teste de software
DEV-OPS para teste de software
 
Qualidade e Testes de Software
Qualidade e Testes de SoftwareQualidade e Testes de Software
Qualidade e Testes de Software
 
Scrum
ScrumScrum
Scrum
 
O que é devops?
O que é devops?O que é devops?
O que é devops?
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 

Mais de Leandro Silva

Arquitetura de Software 101
Arquitetura de Software 101Arquitetura de Software 101
Arquitetura de Software 101Leandro Silva
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#Leandro Silva
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao TerraformLeandro Silva
 
Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Leandro Silva
 
Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Leandro Silva
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo RealLeandro Silva
 
Gerenciando times autogerenciáveis
Gerenciando times autogerenciáveisGerenciando times autogerenciáveis
Gerenciando times autogerenciáveisLeandro Silva
 
Como vi Scrum ser rechaçado em uma grande empresa
Como vi Scrum ser rechaçado em uma grande empresaComo vi Scrum ser rechaçado em uma grande empresa
Como vi Scrum ser rechaçado em uma grande empresaLeandro Silva
 
Erlang/OTP - Caelum Tech Day 2009
Erlang/OTP - Caelum Tech Day 2009Erlang/OTP - Caelum Tech Day 2009
Erlang/OTP - Caelum Tech Day 2009Leandro Silva
 

Mais de Leandro Silva (9)

Arquitetura de Software 101
Arquitetura de Software 101Arquitetura de Software 101
Arquitetura de Software 101
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#
 
Uma breve introdução ao Terraform
Uma breve introdução ao TerraformUma breve introdução ao Terraform
Uma breve introdução ao Terraform
 
Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013Composição e Integração de Sistemas em 2013
Composição e Integração de Sistemas em 2013
 
Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012Sistemas para o Mundo Real - TDC 2012
Sistemas para o Mundo Real - TDC 2012
 
Sistemas para o Mundo Real
Sistemas para o Mundo RealSistemas para o Mundo Real
Sistemas para o Mundo Real
 
Gerenciando times autogerenciáveis
Gerenciando times autogerenciáveisGerenciando times autogerenciáveis
Gerenciando times autogerenciáveis
 
Como vi Scrum ser rechaçado em uma grande empresa
Como vi Scrum ser rechaçado em uma grande empresaComo vi Scrum ser rechaçado em uma grande empresa
Como vi Scrum ser rechaçado em uma grande empresa
 
Erlang/OTP - Caelum Tech Day 2009
Erlang/OTP - Caelum Tech Day 2009Erlang/OTP - Caelum Tech Day 2009
Erlang/OTP - Caelum Tech Day 2009
 

Site Reliability Engineering: garantindo a confiabilidade dos serviços

  • 2. Esperança não é uma estratégia Site Reliability Engineering
  • 4. Constrói o que não participou da especificação Opera o que não participou da construção Sofre no relacionamento com o cliente Uns perseguem velocidade de mudança Outros estabilidade Todos querem ver o cliente feliz e satisfeito No final
  • 5. “Desenvolvimento de software com qualidade” Cena do clássico True Story Pictures (2000)
  • 6.
  • 8. Como garantir confiança no produto entregue sem a toxicidade da cultura do dedinho?
  • 9.
  • 10. Site Reliability Engineering { engenharia de confiabilidade }
  • 11. “Fundamentalmente, é o que acontece quando você pede para um engenheiro de software projetar uma função de operação.” Ben Treynor Sloss, Vice Presidente, Google Engineering, Fundador do Google SRE
  • 12. Nasceu no Google em 2003, antes do movimento DevOps. A missão era garantir a disponibilidade do site dentro de certas expectativas pré-definidas e que qualquer mudança que se pretendesse fazer levasse em conta os seus benefícios vs. os riscos oferecidos à estabilidade esperada. A idéia foi reunir um time que criasse uma ponte entre a gestão de produto, o desenvolvimento e a operação, aplicando a mentalidade de engenharia de software à infraestrutura e operação de sistemas, de forma a automatizar tantas tarefas humanas quanto possível. Mais confiabilidade, menor custo total. The Holy Book (2016)
  • 13. class SRE : DevOps
  • 14. Todo problema é um problema de software.
  • 15. Não estamos falando apenas de programação de funcionalidades de negócio.
  • 16. O p e r a ç ã o Disponibilidade (quando está disponível para uso) Latência (quanto tempo demora para responder a uma ação) Performance (quanto de trabalho correto consegue executar) Capacidade (quanto requer de recursos para operar satisfatoriamente) Eficiência (quão bem estão sendo usados os recursos) Mudança (como alterar o serviço sem quebrá-lo)
  • 17. 01001110 11000011 10100011 01101111 00100000 01100101 01101110 01110100 01110010 01100101 01100111 01100001 01101101 01101111 01110011 00100000 01100010 01101001 01101110 11000011 10100001 01110010 01101001 01101111 01110011 00101100 00100000 01100101 01101110 01110100 01110010 01100101 01100111 01100001 01101101 01101111 01110011 00100000 01110011 01100101 01110010 01110110 01101001 11000011 10100111 01101111 01110011 00101110
  • 18. 01001110 11000011 10100011 01101111 00100000 01100101 01101110 01110100 01110010 01100101 01100111 01100001 01101101 01101111 01110011 00100000 01100010 01101001 01101110 11000011 10100001 01110010 01101001 01101111 01110011 00101100 00100000 01100101 01101110 01110100 01110010 01100101 01100111 01100001 01101101 01101111 01110011 00100000 01110011 01100101 01110010 01110110 01101001 11000011 10100111 01101111 01110011 00101110 Não entregamos binários, entregamos serviços.
  • 19. Reliability é a primeira feature desejada para um sistema de software.
  • 20. É o quanto pode-se confiar que um sistema está constantemente disponível por dado período. ( re·li·a·bil·i·ty )
  • 24. Indicadores (SLI) ● Latência das requisições ● Falhas de requisições ● Throughput de processos batches ● Número de arquivos PDF gerados Tudo que tenha valor em ser medido.
  • 25. Objetivos (SLO) ● Número absoluto ou intervalo para um indicador que esteja sendo medido. ● PM e SRE definem juntos. ● Sua performance é comunicada pela monitoração de seus indicadores. ● Novas funcionalidades são publicadas somente se a estabilidade do serviço estiver dentro dos objetivos. ● Quando atingidos, incentivos são muito bem-vindos.
  • 26. Acordos (SLA) ● São acordos legais firmados entre os clientes e os provedores dos serviços. ● Tipicamente são baseados em SLO, acrescidos de uma margem de segurança para recuperação. ● Tem alguma repercussão quando são quebrados. ● 100% é caro e inviável. (diminishing return)
  • 27. exempli gratia (1) SLI Percentil 95 da latência da geração de PDF < 2 min por página nos últimos 15 minutos. SLO Percentil 95 da geração de PDF terá sucesso 99,9% ao longo do ano. SLA Haverá crédito ao cliente se o percentil 95 da geração de PDF tiver menos que 99,5% de sucesso ao longo do ano.
  • 28. SLI ● Disponibilidade ● Latência SLO ● Disponibilidade 97% ● Latência 90% para PDF < 1,5 min ● Latência 99% para PDF < 2 min exempli gratia (2)
  • 29. O que causa problemas em sistemas?
  • 33. O objetivo de se estabelecer Error Budget é não incluir mais variáveis em um sistema instável ou com disponibilidade a quem dos objetivos. (não)
  • 34. Error Budget = 100% - SLO 100% - 99,9% = 0,1% SLO = 99,9% disponibilidade/mês = 0,1% indisponibilidade/mês Error Budget = 0,001 x 30 dias x 24 horas x 60 min = 43,2 min/mês
  • 35.
  • 36. Por volta de 5% positivo no final. Ainda dá para assumir o risco de fazer mais o que?
  • 37.
  • 38. Você pode ter uma infraestrutura decente e software bem feito, e então, gastar seu budget com mudanças que entreguem novas features para o usuário e inovações para o negócio. (ou) Você pode desperdiçar seu orçamento de erros com uma infraestrutura porcaria e correção de bugs em software mal feito.
  • 39. Volte ao trabalho até que o serviço apresente a disponibilidade esperada. Error Budget insuficiente
  • 41.
  • 42. Minimize os impactos rapidamente. Faça uma post-mortem. Aprenda com os erros. Não deixe acontecer novamente. Seja mais pessimista com seu código, arquitetura, infraestrutura e usuário. Log tudo. Monitore preventivamente. Automatize tarefas manuais. Reduza ao máximo o “Toil” diário.
  • 43. ● Não existe a pergunta: quem é o culpado? (blameless) ● Assume que as pessoas são inteligentes e bem intencionadas ● Mantém o foco no processo e na tecnologia ● Cria uma linha do tempo para entender onde aconteceu o que ● Obtém todos os fatos ● Cria bug para cada trabalho que precisa de follow-up Filosofia da post-mortem
  • 45. 1. Arquitetura de sistemas 2. Boas práticas de programação 3. Sistemas operacionais 4. Redes Habilidades fundamentais: Uma empresa pequena não precisa ter um time de SRE, mas pode aplicar os princípios de SRE.
  • 46. Mikey Dickerson's Hierarchy of Reliability Por onde começar? Pode-se priorizar a saúde de um serviço de modo semelhante a como Abraham Maslow categorizou as necessidades humanas.
  • 47. ● The 12 Factor; ● Fonte única e versionada de configuração do serviço; ● Forma rápida de fazer rollback; ● Monitoração (fique atento aos golden signals: tráfego > erros > latência > saturação); ● Log agregado para ter um único lugar onde monitorar e usar na hora do troubleshooting; Must have nas aplicações: ● Métricas em um lugar único de onde tirar dados estatísticos do serviço; ● Traceabilidade para saber onde passou cada request (o problema pode ocorrer em uma única máquina); ● Não seja ingênuo, seja pessimista, teste tudo e ofereça um fallback amigável para falhas; ● Feature flags; ● Canary releases.
  • 48. 1. Reduza o tempo de detecção de falha (↓time-to-detect / TTD) 2. Reduza o tempo de reparação de falha (↓time-to-resolution / TTR) 3. Reduza o impacto % das falhas (↓usuários / funcionalidades) 4. Reduza a frequência das falhas (↓time-to-failure / TTF) Invista tempo em melhorar a disponibilidade:
  • 49. Quanto mais você avança no nível de disponibilidade, mais você reduz a velocidade de mudanças, a.k.a. publicação de novas funcionalidades e inovação. Tem que ter essa consciência e buscar somente o nível de disponibilidade suficiente para deixar o cliente feliz. Lembre-se do princípio de diminishing return. Mais disponibilidade do que o necessário não é bom. 99% 99,9% 99,99% 10x esforço 10x esforço Custo da disponibilidade: não se esqueça...
  • 50. Invista algum tempo sério em educar o seu cliente sobre a cultura de confiabilidade de sistemas, porque se as integrações dos sistemas dele com os serviços que você oferece estiverem fragilizadas, ele terá uma impressão errada da disponibilidade dos seus serviços e ficará infeliz com isso. Customer Reliability Engineering
  • 52. Conjunto de práticas e cultura que promovem a quebra da barreira entre desenvolvimento e operação com objetivo de fazer entregas melhores em um espaço de tempo menor. O que é?
  • 53. O Zen de John Willis, Damon Edwards e Jez Humble: CALMS
  • 54. Redução dos silos organizacionais (“dev + ops” e não um time de devops separado dos times de dev e de ops) Aceitar que falhas acontecem (shit happens) Implementar mudanças gradualmente (pacotes menores diminuem o risco das implantações) Potencializar ferramental e automação de tarefas (seja preguiçoso e se livre do trabalho automatizando) Medir tudo (como saber se um serviço está bom sem mensurar? Qual a estratégia?
  • 55. class SRE : DevOps lembra? Essa é uma maneira prescritiva de implementar concretamente um conjunto de motivações e expectativas.
  • 56. DevOps SRE Redução dos silos organizacionais Compartilhar o “ownership” do serviço entre PM, Dev e Ops Aceitar que falhas acontecem SLOs e Post-Mortems que não apontam culpados Implementar mudanças gradualmente Reduzir do custo de falhas, fazendo implantações pequenas, canary releases e feature flags Potencializar ferramental e automação de tarefas Automatizar o trabalho do ano todo Medir tudo SLIs e medição do quanto de trabalho manual precisa ser feito diariamente (toil)
  • 57. Não é um ou outro.
  • 58. Não é um ou outro. É uma forma concreta de.
  • 60. SRE nasceu no Google, uma empresa gigantesca, para eliminar os silos que haviam entre PM, Dev e Ops e promover evolução sustentável do site com máxima disponibilidade, sem desperdiçar recursos. De lá para cá, muitas empresas implantaram SRE. Empresas pequenas, startups, não precisam ter equipes dedicadas de SRE, nem devem tentar copiar Google, Twitter, LinkedIn, New Relic, etc. O que precisam, sim, é desenvolver a mentalidade de SRE desde cedo e aplicar os princípios que levam progressivamente à confiabilidade dos serviços. Em um startup, todo desenvolvedor tem o boné de SRE na sua mesa. Todo problema pode ser resolvido com código ⎼ tanto quanto possível.
  • 61. Esperança não é uma estratégia. Trabalhe pela disponibilidade consistente do seu serviço.