SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
Como fazer uma aplicação
que não cai
Alexander Ramos Jardim - Volanty
Quem sou eu?
● Gerente de Tecnologia na Volanty desde fevereiro/2019
● experiência com e-commerce, telecom, pesquisas de mercado, automotivos
● + de 15 anos trabalhando com internet
● backend
● suporte comercial
● devops
Do que estamos falando?
● internet e serviços integrados
● sites
● backend for frontends
● apis http
● integrações com fontes de dados massivas
Por que uma aplicação cai?
Por que uma aplicação cai?
Por que uma aplicação cai?
Pode acontecer com todo mundo
Pode acontecer com todo mundo
Por que uma aplicação cai?
Problemas de Escalabilidade
Problemas de Resiliência
Escalabilidade
"Em telecomunicações, infraestrutura de tecnologia da informação e na
engenharia de software, escalabilidade é uma característica desejável em todo o
sistema, rede ou processo, que indica a capacidade de manipular uma porção
crescente de trabalho de forma uniforme, ou estar preparado para crescer. Por
exemplo, isto pode-se referir à capacidade de um sistema suportar um aumento
de carga total quando os recursos (normalmente do hardware) assim requisitam."
https://pt.wikipedia.org/wiki/Escalabilidade
Escalabilidade
Escalabilidade
Vertical
● compartilhamento de estado
mais simples
● complexidade de deployment
reduzida
● impacto de indisponibilidade é o
mesmo
● busca por desempenho
Horizontal
● estado distribuído, complexo de
compartilhar
● deployment flexível
● impacto de indisponibilidade é
dividido por nó
● busca por resiliência
VAMOS FALAR DE ESCALABILIDADE
HORIZONTAL
Como escalar?
Não compartilhe estado
● Quem escreve?
● Performance de
leitura?
● Failover?
Como escalar?
Não compartilhe estado
SPOF (Single Point of Failure)
Como escalar?
Não compartilhe estado
Como escalar?
Não compartilhe estado
● Estado deve ser distribuído
● Não armazene estado local
● nós da aplicação devem ser descartáveis
Como escalar?
Não compartilhe estado
File Systems distribuídos SQL NoSQL
Como escalar?
Não compartilhe estado
Não provisione seu próprio estado
distribuído
Como escalar?
Proteja as suas fontes de dados
Cache
Como escalar?
Proteja as suas fontes de dados
Cache HTTP
Como escalar?
Proteja as suas fontes de dados
Cache HTTP
Resiliência
"Capacidade que tem um sistema dinâmico de se adaptar com certo sucesso a
perturbações, de forma a neutralizar ameaças as funções, a viabilidade ou ao
desenvolvimento."
http://papers.cumincad.org/data/works/att/sigradi2017_076.pdf
Resiliência
Não falhe se uma
dependência
falhar
Resiliência
● Trate os erros de
dependências
opcionais e
não-críticas
● Retry: apenas 1 vez
e nunca no mesmo
nó
● Interrompa
chamadas por um
tempo aceitável
● CIRCUIT
BREAKERS!!!
Resiliência
Escreva testes
$ (barato)
$$$ (caro)
Resiliência
Testes unitários
● Isole as regras do modelo de dados
● Teste alguns casos de erro mais comuns
● Tente montar objetos inválidos
● Se tiver que escrever somente um tipo de teste, escreva testes unitários
● Sempre comece pelo caminho triste
Resiliência
Testes integrados
● Teste seus circuit breakers aqui!!!
● Escreva chamadas erradas
● Não adicione mocks das dependências ao seu projeto
● Sempre use algum ambiente externo legítimo (dev ou hml)
● Se você criar mocks e colocar dentro do seu projeto, quando a dependência
evoluir, você não saberá
● Objetivo principal é simular outage e baixa performance
Resiliência
Seja amigável
com os seus
clientes
SITES
Resiliência
Seja amigável
com os seus
clientes
APIS
{
"message": "car.price cannot be
null",
"status:" 400
}
{
"message": "error",
"status:" 400
}
CHEGA DE UNICÓRNIOS
Resiliência
Separe os seus problemas em camadas
Resiliência
Separe os seus
problemas em
camadas
MUITO OBRIGADO
alexander@volanty.com

Mais conteúdo relacionado

Semelhante a Como fazer uma aplicacao que nao cai

Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineFrederico Maia Arantes
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azuretdc-globalcode
 
Computacao em nuvem windows azure
Computacao em nuvem   windows azureComputacao em nuvem   windows azure
Computacao em nuvem windows azureRodrigo Vidal
 
Hexagonal Rails
Hexagonal RailsHexagonal Rails
Hexagonal RailsLuiz Costa
 
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...iMasters
 
Tornando se um DevOps sem perder a cabeça #SE7I2016
Tornando se um DevOps sem perder a cabeça #SE7I2016Tornando se um DevOps sem perder a cabeça #SE7I2016
Tornando se um DevOps sem perder a cabeça #SE7I2016Camilla Gomes
 
ODI SERIES - Melhores Práticas
ODI SERIES - Melhores PráticasODI SERIES - Melhores Práticas
ODI SERIES - Melhores PráticasCaio Lima
 
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...André Leon S. Gradvohl
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoLuiz Costa
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformAndré Paulovich
 
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)Bruno Camara
 
Precisamos de um barco maior introdução ao dimensionamento de aplicações
Precisamos de um barco maior introdução ao dimensionamento de aplicaçõesPrecisamos de um barco maior introdução ao dimensionamento de aplicações
Precisamos de um barco maior introdução ao dimensionamento de aplicaçõesJackson F. de A. Mafra
 
Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemastaniamaciel
 
Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de MicroservicosNorberto Enomoto
 

Semelhante a Como fazer uma aplicacao que nao cai (20)

Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
 
Computacao em nuvem windows azure
Computacao em nuvem   windows azureComputacao em nuvem   windows azure
Computacao em nuvem windows azure
 
Hexagonal Rails
Hexagonal RailsHexagonal Rails
Hexagonal Rails
 
Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010
Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010
Analysis of vulnerabilities in web applications - LinuxCon Brazil 2010
 
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
InterCon 2016 - Refactor direto e reto: migração de uma arquitetura 100% acop...
 
Tornando se um DevOps sem perder a cabeça #SE7I2016
Tornando se um DevOps sem perder a cabeça #SE7I2016Tornando se um DevOps sem perder a cabeça #SE7I2016
Tornando se um DevOps sem perder a cabeça #SE7I2016
 
Mulesoft Meetup Latam Summit Brazil
Mulesoft Meetup Latam Summit BrazilMulesoft Meetup Latam Summit Brazil
Mulesoft Meetup Latam Summit Brazil
 
ODI SERIES - Melhores Práticas
ODI SERIES - Melhores PráticasODI SERIES - Melhores Práticas
ODI SERIES - Melhores Práticas
 
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
Pangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud PlatformPangea - Plataforma digital com Google Cloud Platform
Pangea - Plataforma digital com Google Cloud Platform
 
Construindo um sistema distribuido usando rest
Construindo um sistema distribuido usando restConstruindo um sistema distribuido usando rest
Construindo um sistema distribuido usando rest
 
Frameworks em Java
Frameworks em JavaFrameworks em Java
Frameworks em Java
 
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)
 
Trabalho de sgbd
Trabalho de sgbdTrabalho de sgbd
Trabalho de sgbd
 
Precisamos de um barco maior introdução ao dimensionamento de aplicações
Precisamos de um barco maior introdução ao dimensionamento de aplicaçõesPrecisamos de um barco maior introdução ao dimensionamento de aplicações
Precisamos de um barco maior introdução ao dimensionamento de aplicações
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Replicacao Object Sistemas
Replicacao Object SistemasReplicacao Object Sistemas
Replicacao Object Sistemas
 
Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de Microservicos
 

Como fazer uma aplicacao que nao cai