SlideShare uma empresa Scribd logo
1 de 36
Microserviços - Desafios para
lidar com a qualidade
André Abe Vicente
Especialista de Qualidade –
Trilha Testes - 2018
https://www.linkedin.com/in/andvicente
https://about.me/andvicente
/Who is André?
• Testes e Agile [Msc. ICMC – USP]
• QA @ PagSeguro UOL [2012 – Atual]
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Sumário
1. Microserviços - Novos desafios
2. Testes em Microserviços
3. Delivery Contínuo e Testes em Produção
4. Monitorações, Logs e Troubleshoot
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Monolito vs Microserviços
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
https://www.redhat.com/en/topics/microservices/what-are-microservices
Monolito vs Microserviços
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
http://knowyourmeme.com/memes/blue-ball-machine
Migração e Novos Serviços
Benefícios Microserviços
• Heterogeneidade de Tecnologias
• Resiliência e Escalabilidade
• Facilidade de Deploy
• Alinhamento Organizacional (Times)
• Componibilidade / Reuso
• Facilidade para Substituir / Migrar
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Nossa Jornada até agora...
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
2007 2012
2014-17 2018
http://bit.ly/ps-mesos
http://bit.ly/ps-constelacao
• Agile
• Melhoria Ambiente
• UX, Mobile, Cloud ...
Perfomance do time, confiança na
entrega, manutenção e evolução
Migração e Novos Serviços
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
• Convivência com o Monolito
• Evolução do Ambiente e Monitoramento
• Novas Tecnologias
• Banco de Dados
- Integrações com o Monolito (Legado)
- Kafka (tráfego e armazenamento de mensagens
de domínio)
• Excelência QA (Negócios + Técnico)
Desafios
https://www.instagram.com/augmentedrealityimages
2. Testes em Microserviços
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Pirâmide de Teste?
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Testes de Contrato
• End-to-End
• Exploratórios
• Testes em
Produção
Sam Newman - https://www.oreilly.com/learning/building-microservices-
testing
Testes End-to-End
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Atendimento
E-commerce
Programa de
Pontuação
Gateway
Pagamento
(Sam Newman, 2015) - Building Microservices
End-to-End (Containers)A
Infra
- Serviços, Filas,
Banco, Massa de
Dados...
- Infra as code
(Docker, Puppet,
Jenkins ...)
Testes End-to-End
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
End-to-End (Containers) Mock Services
Recursos Confiável Estabilidade
A B
Jornadas
Pequeno número de
testes (core),
restante coberto por
serviços testados de
forma isolada
Recursos Confiável Estabilidade
*
* http://bit.ly/microservice-testing-mf
Mocks / Stubs
• Desenvolvimento e Testes UI
• Wiremock - http://wiremock.org
• Versionamento dos stubs (GIT)
• Expressão regular
• Simular respostas incorretas
• Exemplos: DELAY, CONNECTION_RESET_BY_PEER
• Record/Play e Proxy para Serviço Real
• Outras:
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
...
Testes de Contrato
• Praticamente impossível saber todas as formas que o
consumidores irão utilizar os nossos serviços.
• "Quando fazemos o deploy de um novo serviço em produção,
nossas mudanças não podem quebrar os consumidores”
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
2006 - Consumer Driven Contract
https://martinfowler.com/articles/consumerDrivenContracts.html
2015 - Technology Radar ThoughtWorks
Deploys independentes (microserviços)
Testes de Contrato
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
http://bit.ly/microservice-testing-mf
Documentação
https://swagger.io
Testes de Contrato
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Spring Cloud Contract
https://cloud.spring.io/spring-cloud-contract
https://specto.io/blog/2016/11/16/spring-cloud-contract
https://pact.io
Consumidor API
(Request/Resp)
Fornecedor API
Pipeline
Consumidor
3
1
4
2
3. Delivery Contínuo e Testes em Produção
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Pipeline de Entregas (e os testes exploratórios?)
• Feedback automático (do commit à produção)
• Pipeline as code e criação sob demanda de infra-estrutura
• Pre-Commit: Pull Request (código e migrations), Testes Manuais /
Automatizados, Segurança, Review (UI e PO)
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Pipeline de Entregas (e os testes exploratórios?)
• Testes Exploratórios
• Feature-Branch (atualizado), Develop (várias funcionalidades)
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Feature Toggle - Motivações e Usos
• Liga/Desliga de uma funcionalidade
• Tipos: Release Toggles, Experiment Toggles, OPs Toogles,
Permission Toogles
• Delivery Contínuo
• Não estocar código / small batchs
• Código incompleto ou não testado em produção (Release Toggle)
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Feature Toogles - Como Testar
1. Toogle do release que pretende – Ligar
2. Toogle do release que pretende – Desligar
3. Todos os toggle - Ligados
4. Outros casos
• Regra dinâmica: testar usuários dentro e fora desse grupo
• Experimental: consistência entre sessões do usuário (comportamento
igual)
• Operações ou Permissões: explorar combinações para ver como a
nova configuração interage com as opções já existentes.
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Testes A/B
• Criar duas ou mais variações do seu software, para apresentar
para cada usuário uma das variações em um experimento
controlado
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
https://www.kameleoon.com/en/ab-testing
Testes A/B
• Cuidados: Subjetividade e decisões somente baseadas em dados
(data/metric oriented)
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Testes A/B e Smart Routing ...
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
• Java: FF4J, Tooglez
• Mobile: Firebase + Remote
Config + Analytics, mixpanel,
TestFlight, Wasabi (API)
• Smart Routing
https://github.com/Netflix/zuul
• Microservices
https://istio.io
Ferramentas
Controle de Usuários (Beta Testing)
• Nova versão para um conjunto restrito de usuários
• Foco geral: aspectos funcionais da aplicação
• Time: usabilidade, acessibilidade, performance, segurança
• Oportunidade: testes de alarmes, monitorações, logs, métricas...
• Staged rollout
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Dogfooding
• Dogfooding: beta testing para quem desenvolve
• Nem sempre são representativos em relação aos usuários
• Percepções de qualidade diferentes e prioridades problemas
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Testes de Usabilidade + PesquisaDoogfooding Avaliações APPs
4. Monitorações, Logs e Troubleshoot
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Pirâmide de Testes - DevOps Bugfilter
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
• Bugs podem aparecer sem ter passado
previamente pelos filtros
• Testes unitários (código-fonte)
• Testes de integração (banco, serviços
externos)
• Testes End-To-End (irão cobrir a arquitetura
como um todo)
• Produção: Alertas, Monitorações, Logs
(Katrina Clokie, 2017) - A Practical Guide to Testing in DevOps
Ambiente Produção - Ferramentas
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
LOGs | Negócios Notificações| IncidentesGráficos | Ambiente
Disponibilidade
Lib Monitoração
Mobile
Ambiente | Desempenho | Capacidade
Ambiente Produção - Monitoração
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Como escalar?
• Muitos Desenvolvedores
• Poucos Operações
• Muitos Serviços (+ 300)
Monitor
Descrição
Severidade
Documentação
Ambiente Produção - Monitoração
• Lib de Monitoração: Monitorações de Negócio e Dependências
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Execução Métodos
• Tempo de Resposta
• Taxa de Sucesso
• Idle Period
Monitor de Negócio (Personalizado)
Exemplos:
• Recebimento de Arquivos
• Pagamentos sem sincronizar por x
minutos
@Annotations
Ambiente Produção - Monitoração
• Lib de Monitoração: Monitorações de Negócio e Dependências
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
IntegraçõesFilas (Limite Msgs e Cluster)
Documentação
• Diagnóstico
• Solução
Ambiente Produção - Logs
• Informação em baixo nível para análise de problemas
• Microserviços (Logs Distribuídos)
• Cloud Sleuth +
• Referências
• https://dzone.com/articles/centralized-logging
• https://dzone.com/articles/monitoring-microservices-with-spring-cloud-sleuth
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Perguntas?
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
https://www.linkedin.com/company/pagseguro-uol
https://about.me/andvicente
andvicente
Referências - Microserviços
• (Katrina Clokie, 2017) - A Practical Guide to Testing in DevOps
• (Sam Newman, 2015) - Building Microservices
• (Toby Clemson, 2014) - Testing Strategies in Microservice Architecture -
https://martinfowler.com/articles/microservice-testing/
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
Referências – Testes de Contrato
• Technology Radar – Deploys independentes (microserviços)
https://www.thoughtworks.com/radar/techniques/consumer-driven-contract-
testing
• Pact: Verifying Microservice Integrations with Contract Testing - Atlassian Summit
2016
• Spring Cloud Contract: Consumer Driven Contracts and Your Microservice
Architecture - Marcin Grzejszczak, Adib Saikali
Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)

Mais conteúdo relacionado

Mais procurados

Plano do projeto de software
Plano do projeto de softwarePlano do projeto de software
Plano do projeto de softwareDanilo Gois
 
X-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareX-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareAlexandreBartie
 
Visão geral da engenharia de software qualidade de software
Visão geral da engenharia de software   qualidade de softwareVisão geral da engenharia de software   qualidade de software
Visão geral da engenharia de software qualidade de softwarejordanavy
 
Prodemge gts - implantação de fábrica de testes - conip 2012 - apresentação...
Prodemge   gts - implantação de fábrica de testes - conip 2012 - apresentação...Prodemge   gts - implantação de fábrica de testes - conip 2012 - apresentação...
Prodemge gts - implantação de fábrica de testes - conip 2012 - apresentação...Welington Monteiro
 
Visao geraldorup 20slides
Visao geraldorup 20slidesVisao geraldorup 20slides
Visao geraldorup 20slideshoraciosila
 
Qualidade de Software - Introdução
Qualidade de Software - Introdução Qualidade de Software - Introdução
Qualidade de Software - Introdução Elaine Cecília Gatto
 
Qualidade de Software com Microsoft Visual Studio
Qualidade de Software com Microsoft Visual StudioQualidade de Software com Microsoft Visual Studio
Qualidade de Software com Microsoft Visual StudioAdriano Bertucci
 
Gerenciamento de projetos, MPS.BR e qualidade em software
Gerenciamento de projetos, MPS.BR e qualidade em softwareGerenciamento de projetos, MPS.BR e qualidade em software
Gerenciamento de projetos, MPS.BR e qualidade em softwareelliando dias
 
Introdução a Qualidade de Software
Introdução a Qualidade de SoftwareIntrodução a Qualidade de Software
Introdução a Qualidade de SoftwareIgor Takenami
 
Gerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptxGerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptxRoberto Nunes
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de SoftwareLeinylson Fontinele
 

Mais procurados (20)

Plano do projeto de software
Plano do projeto de softwarePlano do projeto de software
Plano do projeto de software
 
X-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de SoftwareX-Zone - Garantia da Qualidade de Software
X-Zone - Garantia da Qualidade de Software
 
Visão geral da engenharia de software qualidade de software
Visão geral da engenharia de software   qualidade de softwareVisão geral da engenharia de software   qualidade de software
Visão geral da engenharia de software qualidade de software
 
Gaia Riscos - CLEI 2012
Gaia Riscos - CLEI 2012Gaia Riscos - CLEI 2012
Gaia Riscos - CLEI 2012
 
Prodemge gts - implantação de fábrica de testes - conip 2012 - apresentação...
Prodemge   gts - implantação de fábrica de testes - conip 2012 - apresentação...Prodemge   gts - implantação de fábrica de testes - conip 2012 - apresentação...
Prodemge gts - implantação de fábrica de testes - conip 2012 - apresentação...
 
Visao geraldorup 20slides
Visao geraldorup 20slidesVisao geraldorup 20slides
Visao geraldorup 20slides
 
Cast IT group
Cast IT groupCast IT group
Cast IT group
 
Qualidade
QualidadeQualidade
Qualidade
 
Qualidade de Software - Introdução
Qualidade de Software - Introdução Qualidade de Software - Introdução
Qualidade de Software - Introdução
 
Qualidade do Software
Qualidade do SoftwareQualidade do Software
Qualidade do Software
 
Qualidade de Software com Microsoft Visual Studio
Qualidade de Software com Microsoft Visual StudioQualidade de Software com Microsoft Visual Studio
Qualidade de Software com Microsoft Visual Studio
 
Qualidade de software
Qualidade de softwareQualidade de software
Qualidade de software
 
Gerenciamento de projetos, MPS.BR e qualidade em software
Gerenciamento de projetos, MPS.BR e qualidade em softwareGerenciamento de projetos, MPS.BR e qualidade em software
Gerenciamento de projetos, MPS.BR e qualidade em software
 
Apqp
ApqpApqp
Apqp
 
Introdução a Qualidade de Software
Introdução a Qualidade de SoftwareIntrodução a Qualidade de Software
Introdução a Qualidade de Software
 
Gerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptxGerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptx
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de Software
 
Aula 2 - Modelos de processos
Aula 2 -  Modelos de processosAula 2 -  Modelos de processos
Aula 2 - Modelos de processos
 
Resumo apqp
Resumo apqpResumo apqp
Resumo apqp
 
DevOps - visão geral
DevOps - visão geralDevOps - visão geral
DevOps - visão geral
 

Semelhante a Microserviços - Desafios para lidar com a qualidade

ERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a QualidadeERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a QualidadeAndré Abe Vicente
 
Desenvolvimento de software - novas abordagens e desafios - Ricardo Cristalli
Desenvolvimento de software - novas abordagens e desafios - Ricardo CristalliDesenvolvimento de software - novas abordagens e desafios - Ricardo Cristalli
Desenvolvimento de software - novas abordagens e desafios - Ricardo CristalliRio Info
 
Gerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aGerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aLeonardo Molinari
 
Agile e Testes: Um Relato de Experiência da Indústria
Agile e Testes: Um Relato de Experiência da IndústriaAgile e Testes: Um Relato de Experiência da Indústria
Agile e Testes: Um Relato de Experiência da IndústriaAndré Abe Vicente
 
QA-2023-qualityassuranceequipe-teste_v3.pptx
QA-2023-qualityassuranceequipe-teste_v3.pptxQA-2023-qualityassuranceequipe-teste_v3.pptx
QA-2023-qualityassuranceequipe-teste_v3.pptxMaryanaFeijo
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Igor Abade
 
[GUTS-RS] GUTS Universitário - UNISINOS Campus POA
[GUTS-RS] GUTS Universitário - UNISINOS Campus POA[GUTS-RS] GUTS Universitário - UNISINOS Campus POA
[GUTS-RS] GUTS Universitário - UNISINOS Campus POAGUTS-RS
 
Brateste 2013: Testes Agile em Processos Agile
Brateste 2013:  Testes Agile em Processos AgileBrateste 2013:  Testes Agile em Processos Agile
Brateste 2013: Testes Agile em Processos Agileananegrello
 
Organizando demandas de desenvolvimento com o microsoft team foundation server
Organizando demandas de desenvolvimento com o microsoft team foundation serverOrganizando demandas de desenvolvimento com o microsoft team foundation server
Organizando demandas de desenvolvimento com o microsoft team foundation serverVinicius Moura
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = ProdutividadeAdriano Bertucci
 
O caso ONS, escalar ágil como uma resposta para as necessidades de mais valor...
O caso ONS, escalar ágil como uma resposta para as necessidades de mais valor...O caso ONS, escalar ágil como uma resposta para as necessidades de mais valor...
O caso ONS, escalar ágil como uma resposta para as necessidades de mais valor...Eduardo Primo de Souza
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidaderzauza
 
Teste Contínuo de Integração e Virtualização de Serviços
Teste Contínuo de Integração e Virtualização de ServiçosTeste Contínuo de Integração e Virtualização de Serviços
Teste Contínuo de Integração e Virtualização de ServiçosRationalBrasil
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasKleitor Franklint Correa Araujo
 
BaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de SoftwareBaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de SoftwareAdriano Bertucci
 
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous DeliveryQConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous DeliveryRodrigo Russo
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
Shift left DevOps Experience
Shift left DevOps ExperienceShift left DevOps Experience
Shift left DevOps ExperienceWalter Coan
 

Semelhante a Microserviços - Desafios para lidar com a qualidade (20)

ERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a QualidadeERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
 
Desenvolvimento de software - novas abordagens e desafios - Ricardo Cristalli
Desenvolvimento de software - novas abordagens e desafios - Ricardo CristalliDesenvolvimento de software - novas abordagens e desafios - Ricardo Cristalli
Desenvolvimento de software - novas abordagens e desafios - Ricardo Cristalli
 
Gerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2aGerenciando Testes Com Qualidade V2a
Gerenciando Testes Com Qualidade V2a
 
Agile e Testes: Um Relato de Experiência da Indústria
Agile e Testes: Um Relato de Experiência da IndústriaAgile e Testes: Um Relato de Experiência da Indústria
Agile e Testes: Um Relato de Experiência da Indústria
 
QA-2023-qualityassuranceequipe-teste_v3.pptx
QA-2023-qualityassuranceequipe-teste_v3.pptxQA-2023-qualityassuranceequipe-teste_v3.pptx
QA-2023-qualityassuranceequipe-teste_v3.pptx
 
Curriculo christiane abril13
Curriculo christiane abril13Curriculo christiane abril13
Curriculo christiane abril13
 
Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?Menos teste e mais qualidade - como equilibrar essa equação?
Menos teste e mais qualidade - como equilibrar essa equação?
 
[GUTS-RS] GUTS Universitário - UNISINOS Campus POA
[GUTS-RS] GUTS Universitário - UNISINOS Campus POA[GUTS-RS] GUTS Universitário - UNISINOS Campus POA
[GUTS-RS] GUTS Universitário - UNISINOS Campus POA
 
aula03-2s2016.pdf
aula03-2s2016.pdfaula03-2s2016.pdf
aula03-2s2016.pdf
 
Brateste 2013: Testes Agile em Processos Agile
Brateste 2013:  Testes Agile em Processos AgileBrateste 2013:  Testes Agile em Processos Agile
Brateste 2013: Testes Agile em Processos Agile
 
Organizando demandas de desenvolvimento com o microsoft team foundation server
Organizando demandas de desenvolvimento com o microsoft team foundation serverOrganizando demandas de desenvolvimento com o microsoft team foundation server
Organizando demandas de desenvolvimento com o microsoft team foundation server
 
Microsoft ALM = Produtividade
Microsoft ALM = ProdutividadeMicrosoft ALM = Produtividade
Microsoft ALM = Produtividade
 
O caso ONS, escalar ágil como uma resposta para as necessidades de mais valor...
O caso ONS, escalar ágil como uma resposta para as necessidades de mais valor...O caso ONS, escalar ágil como uma resposta para as necessidades de mais valor...
O caso ONS, escalar ágil como uma resposta para as necessidades de mais valor...
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidade
 
Teste Contínuo de Integração e Virtualização de Serviços
Teste Contínuo de Integração e Virtualização de ServiçosTeste Contínuo de Integração e Virtualização de Serviços
Teste Contínuo de Integração e Virtualização de Serviços
 
Automação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégiasAutomação de testes - uma introdução sobre estratégias
Automação de testes - uma introdução sobre estratégias
 
BaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de SoftwareBaixadaTech 2012 - Qualidade de Software
BaixadaTech 2012 - Qualidade de Software
 
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous DeliveryQConRio 2014 - Tutorial Iniciando Com Continuous Delivery
QConRio 2014 - Tutorial Iniciando Com Continuous Delivery
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
Shift left DevOps Experience
Shift left DevOps ExperienceShift left DevOps Experience
Shift left DevOps Experience
 

Microserviços - Desafios para lidar com a qualidade

  • 1. Microserviços - Desafios para lidar com a qualidade André Abe Vicente Especialista de Qualidade – Trilha Testes - 2018 https://www.linkedin.com/in/andvicente https://about.me/andvicente
  • 2. /Who is André? • Testes e Agile [Msc. ICMC – USP] • QA @ PagSeguro UOL [2012 – Atual] Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
  • 3. Sumário 1. Microserviços - Novos desafios 2. Testes em Microserviços 3. Delivery Contínuo e Testes em Produção 4. Monitorações, Logs e Troubleshoot Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
  • 4. Monolito vs Microserviços Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) https://www.redhat.com/en/topics/microservices/what-are-microservices
  • 5. Monolito vs Microserviços Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) http://knowyourmeme.com/memes/blue-ball-machine
  • 6. Migração e Novos Serviços Benefícios Microserviços • Heterogeneidade de Tecnologias • Resiliência e Escalabilidade • Facilidade de Deploy • Alinhamento Organizacional (Times) • Componibilidade / Reuso • Facilidade para Substituir / Migrar Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
  • 7. Nossa Jornada até agora... Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) 2007 2012 2014-17 2018 http://bit.ly/ps-mesos http://bit.ly/ps-constelacao • Agile • Melhoria Ambiente • UX, Mobile, Cloud ... Perfomance do time, confiança na entrega, manutenção e evolução
  • 8. Migração e Novos Serviços Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) • Convivência com o Monolito • Evolução do Ambiente e Monitoramento • Novas Tecnologias • Banco de Dados - Integrações com o Monolito (Legado) - Kafka (tráfego e armazenamento de mensagens de domínio) • Excelência QA (Negócios + Técnico) Desafios https://www.instagram.com/augmentedrealityimages
  • 9. 2. Testes em Microserviços Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
  • 10. Pirâmide de Teste? Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) Testes de Contrato • End-to-End • Exploratórios • Testes em Produção Sam Newman - https://www.oreilly.com/learning/building-microservices- testing
  • 11. Testes End-to-End Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) Atendimento E-commerce Programa de Pontuação Gateway Pagamento (Sam Newman, 2015) - Building Microservices End-to-End (Containers)A
  • 12. Infra - Serviços, Filas, Banco, Massa de Dados... - Infra as code (Docker, Puppet, Jenkins ...) Testes End-to-End Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) End-to-End (Containers) Mock Services Recursos Confiável Estabilidade A B Jornadas Pequeno número de testes (core), restante coberto por serviços testados de forma isolada Recursos Confiável Estabilidade * * http://bit.ly/microservice-testing-mf
  • 13. Mocks / Stubs • Desenvolvimento e Testes UI • Wiremock - http://wiremock.org • Versionamento dos stubs (GIT) • Expressão regular • Simular respostas incorretas • Exemplos: DELAY, CONNECTION_RESET_BY_PEER • Record/Play e Proxy para Serviço Real • Outras: Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) ...
  • 14. Testes de Contrato • Praticamente impossível saber todas as formas que o consumidores irão utilizar os nossos serviços. • "Quando fazemos o deploy de um novo serviço em produção, nossas mudanças não podem quebrar os consumidores” Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) 2006 - Consumer Driven Contract https://martinfowler.com/articles/consumerDrivenContracts.html 2015 - Technology Radar ThoughtWorks Deploys independentes (microserviços)
  • 15. Testes de Contrato Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) http://bit.ly/microservice-testing-mf Documentação https://swagger.io
  • 16. Testes de Contrato Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) Spring Cloud Contract https://cloud.spring.io/spring-cloud-contract https://specto.io/blog/2016/11/16/spring-cloud-contract https://pact.io Consumidor API (Request/Resp) Fornecedor API Pipeline Consumidor 3 1 4 2
  • 17. 3. Delivery Contínuo e Testes em Produção Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
  • 18. Pipeline de Entregas (e os testes exploratórios?) • Feedback automático (do commit à produção) • Pipeline as code e criação sob demanda de infra-estrutura • Pre-Commit: Pull Request (código e migrations), Testes Manuais / Automatizados, Segurança, Review (UI e PO) Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
  • 19. Pipeline de Entregas (e os testes exploratórios?) • Testes Exploratórios • Feature-Branch (atualizado), Develop (várias funcionalidades) Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
  • 20. Feature Toggle - Motivações e Usos • Liga/Desliga de uma funcionalidade • Tipos: Release Toggles, Experiment Toggles, OPs Toogles, Permission Toogles • Delivery Contínuo • Não estocar código / small batchs • Código incompleto ou não testado em produção (Release Toggle) Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
  • 21. Feature Toogles - Como Testar 1. Toogle do release que pretende – Ligar 2. Toogle do release que pretende – Desligar 3. Todos os toggle - Ligados 4. Outros casos • Regra dinâmica: testar usuários dentro e fora desse grupo • Experimental: consistência entre sessões do usuário (comportamento igual) • Operações ou Permissões: explorar combinações para ver como a nova configuração interage com as opções já existentes. Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
  • 22. Testes A/B • Criar duas ou mais variações do seu software, para apresentar para cada usuário uma das variações em um experimento controlado Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) https://www.kameleoon.com/en/ab-testing
  • 23. Testes A/B • Cuidados: Subjetividade e decisões somente baseadas em dados (data/metric oriented) Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
  • 24. Testes A/B e Smart Routing ... Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) • Java: FF4J, Tooglez • Mobile: Firebase + Remote Config + Analytics, mixpanel, TestFlight, Wasabi (API) • Smart Routing https://github.com/Netflix/zuul • Microservices https://istio.io Ferramentas
  • 25. Controle de Usuários (Beta Testing) • Nova versão para um conjunto restrito de usuários • Foco geral: aspectos funcionais da aplicação • Time: usabilidade, acessibilidade, performance, segurança • Oportunidade: testes de alarmes, monitorações, logs, métricas... • Staged rollout Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
  • 26. Dogfooding • Dogfooding: beta testing para quem desenvolve • Nem sempre são representativos em relação aos usuários • Percepções de qualidade diferentes e prioridades problemas Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) Testes de Usabilidade + PesquisaDoogfooding Avaliações APPs
  • 27. 4. Monitorações, Logs e Troubleshoot Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
  • 28. Pirâmide de Testes - DevOps Bugfilter Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) • Bugs podem aparecer sem ter passado previamente pelos filtros • Testes unitários (código-fonte) • Testes de integração (banco, serviços externos) • Testes End-To-End (irão cobrir a arquitetura como um todo) • Produção: Alertas, Monitorações, Logs (Katrina Clokie, 2017) - A Practical Guide to Testing in DevOps
  • 29. Ambiente Produção - Ferramentas Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) LOGs | Negócios Notificações| IncidentesGráficos | Ambiente Disponibilidade Lib Monitoração Mobile Ambiente | Desempenho | Capacidade
  • 30. Ambiente Produção - Monitoração Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) Como escalar? • Muitos Desenvolvedores • Poucos Operações • Muitos Serviços (+ 300)
  • 31. Monitor Descrição Severidade Documentação Ambiente Produção - Monitoração • Lib de Monitoração: Monitorações de Negócio e Dependências Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) Execução Métodos • Tempo de Resposta • Taxa de Sucesso • Idle Period Monitor de Negócio (Personalizado) Exemplos: • Recebimento de Arquivos • Pagamentos sem sincronizar por x minutos @Annotations
  • 32. Ambiente Produção - Monitoração • Lib de Monitoração: Monitorações de Negócio e Dependências Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) IntegraçõesFilas (Limite Msgs e Cluster) Documentação • Diagnóstico • Solução
  • 33. Ambiente Produção - Logs • Informação em baixo nível para análise de problemas • Microserviços (Logs Distribuídos) • Cloud Sleuth + • Referências • https://dzone.com/articles/centralized-logging • https://dzone.com/articles/monitoring-microservices-with-spring-cloud-sleuth Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
  • 34. Perguntas? Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes) https://www.linkedin.com/company/pagseguro-uol https://about.me/andvicente andvicente
  • 35. Referências - Microserviços • (Katrina Clokie, 2017) - A Practical Guide to Testing in DevOps • (Sam Newman, 2015) - Building Microservices • (Toby Clemson, 2014) - Testing Strategies in Microservice Architecture - https://martinfowler.com/articles/microservice-testing/ Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)
  • 36. Referências – Testes de Contrato • Technology Radar – Deploys independentes (microserviços) https://www.thoughtworks.com/radar/techniques/consumer-driven-contract- testing • Pact: Verifying Microservice Integrations with Contract Testing - Atlassian Summit 2016 • Spring Cloud Contract: Consumer Driven Contracts and Your Microservice Architecture - Marcin Grzejszczak, Adib Saikali Microserviços - Desafios para lidar com a Qualidade (TDC SP 2018 – Trilha Testes)

Notas do Editor

  1. Agradecer Cordenação: Nátali, Júlio e Wellington Disclaimer Apresentação: no Hands-On e sim direções para o QA que trabalha em projetos de microserviços
  2. Mestrado em Agile, Métricas e Testes QA PagSeguro: equipe de infra (testes automatizados e negócios) Atualmente Emissão de Cartões Fintech (inclusão de desbancarizados, spread bancário ...) Tecnologia (Internet das Coisas, Assistentes de Voz, Apple) Cerveja
  3. 1: Novos desafios e Benefícios de trabalhar em projetos com Microserviços 2: Algumas técnicas e ferramentas que ajudam nos testes de microserviços 3 e 4: Itens relacionados DevOPs que são consequência da alta quantidade de Microserviços, mas que temos que nos preocupar na qualidade do que está funcionando e o que acabou de ser entregue Microserviços - Novos desafios (14 min) Testes em Microserviços (13 min) Delivery Contínuo e Testes em Produção (13 min) Monitorações, Logs e Troubleshoot (10 min)
  4. Microserviços são pequenos serviços autônomos que trabalham juntos. Origem: DDD, Continuous Delivery, Automação de Infra, Escalabilidade e pequenos times autônomos
  5. Focados em fazer uma coisa bem (DDD) Não é sobre tamanho, mas fatalmente você vai pensar em um monstro bem gordo, difícil de entregar Cada um com seu domínio específico com uma interface de comunicação entre eles
  6. Alinhamento de vários times trabalhando separadamente e não precisam compartilhar uma mesma base de código Deploy Contínuo, Escalabilidade Reuso (aproveitar um componente de autenticação, cadastro ou de movimentações financeiras) Consulta e Operações de Cartão que podem ser feitos pelo App ou URA
  7. 2007: PagSeguro adquire BR-Pay (foco em Pagamentos Web) 2012: NFC e primeiras experiências com deploy separado e um componente separado 2014 – 2017: Começamos a ver grandes dificuldades de manutenção e performance dos times 2018: Mobile First, Foco no usuário, melhoria contínua com o Ágil.
  8. Precisamos consultar muita informação do Monolito Monitoração e Gerenciamento de vários microserviços desafiador. Impacto se o sistema legado (monolito cair), ou se um serviço dependente cair continuamos funcionando? Novas tecnologias (podem ser problema) Trazer dados do Monolito para relatórios de negócio ou simplesmente para utilizarem algum microserviço Negócios: Entender o Domínio – existe/novo (fatiamento dos microserviços) QA Técnico – Importante (filas,logs,disponibilidade...)
  9. Vamos falar sobre Técnicas/Ferramentas que ajudam a dar apoio quando falamos de microserviços (13 min)
  10. Pirâmede de Testes (Sam Newman) Q1: Testes de Contrato (Acordo entre Cliente e Fornecedores de uma API interna) Q3: Testes End-to-End / Exploratórios e focamos em equipes DevOPS Beta, A/B, Feature Toggle...
  11. Duas abordagens para testar além das fronteiras: End-to-End ou Mock Sofrer com estabilidades (que logicamente podem ser tratadas, por exemplo com Mocks) Apesar de facilidade para fazer o deploy de vários microserviços isso gera um alto custo Confiável porque está utilizando o serviço real End-to-End + Mocks pode não ser confiável O que acontece se um fornecedor de uma API muda a assinatura e o mock de quem utiliza não é atualizado?
  12. Infra-estrutura é mais fácil, mas depender de infra pode gerar muita instabilidade Poucos testes e Testes com Mocks Mock com Wiremock, Apiary, Mock API Confiabilidade: remoção/alteração de um campo de resposta de uma API Atualizar Mock
  13. Apiary: para documentação e facilitar desenvolvimento Mobile (antes do BE) Wiremock: utilizar stubs bem escritos para os testes Pode simular problemas e pode gravar respostas
  14. Produtor não quebrar os consumidores Como saber como e quais são todos os clientes que utilizam o serviço Antigo (desde 2006 pelo MartinFownler) e em 2015 foco em microserviços
  15. Contrato: Mudança de Name para User (name + lastname) Swagger: Documentação e Execução de End-Points
  16. Consumidor faz os contratos em groovy e gera testes integrados para o provider Gerado o Stub baseados nos contratos Client executa testes contra o servidor de stubs PACT: Suporte a diversas linguagens, UI para gerenciar os contratos e grafo de dependência
  17. Agora iremos falar sobre delivery contínuo, pipelines e testes exploratórios Também temos testes em produção que podem abordar Feature Toggle, Beta-Testing e Testes A/B 16 min
  18. Pipeline é um ponto importante para entrega contínua E os Testes como ficam? Temos que fazer testes exploratórios mas como? Processos pré-commit: PR, Sec, Review e Testes Evoluções: Validar em máquinas isoladas e usar o mesmo artefato
  19. Testes Manuais / Exploratórios (podem ser feitos em um branch da funcionalidade ou integrado com outras) Pergunta que tira o sono dos QAs (Testamos o suficiente?)
  20. Esconder funcionalidades incompletas ou com risco de todos ou de parte dos usuários, experimentar e controlar o sistema Release toggles: permite que códigos incompletos e com caminhos não testados sejam entregues em produção Experiment toggles: utilizados para fazer testes A/B ou multivariados. Ops toggles: utilizados para controlar aspectos operacionais de comportamento do sistema Ex.: desabilitição intencional de features não críticas durante perído de uso pesado (black Friday) Permissioning toggles: utilizado para modificar funcionalidades ou experência que certos usuários recebem. Ex.: ativar funcionalidades premium para programa de pontos (fidelidade) Ajuda no delivery contínuo, mas não podemos estocar código e Não devemos fazer delivery de código não testado
  21. Gosto de testar ligado e desligado Outros casos: verificar se ela tem iteração com outra funcionalidade
  22. - Dividir o tráfego ou separar em grupos
  23. Testes A/B não deve se tornar a única forma de se tomar uma decisão. Não remover autonomia da equipe de desenvolvimento Comportamento pode fornecer insight para melhoria, mas as pessoas podem reagir mal a inovações que desafiem ele. Henry Ford (Se perguntasse o que as pessoas queriam, eles diriam cavalos mais rápidos) Steve Jobs (Pessoas não sabem o que querem até você mostrar isso a elas)
  24. Testes A/B no PagSeguro: Ordem dos meios de pagamento, deixar pagamentos oculto Home: O que converte mais moderninhas? Hypothesis driven development
  25. Diferente dos Testes A/B eles são para detectar bugs! Limitações nos testes de desenvolvimento (devices, ou conhecimento mais profundo da funcionalidade) Time testar com ambiente de produção, várias oportunidades de teste
  26. No PagSeguro para alguns produtos conseguimos fazer dogfooding Não representa os usuários que utilizam efetivamente o produto Percepção de qualidade diferente do usuário final Ele pode ser complementado pelas avaliações dos APPs Sugestões, Problemas e Elogios E um trabalho feito entre o pessoal de UX+UI com POs
  27. Por fim vamos falar de um aspecto muito importante em Microserviços A monitoração, com uma grande quantidade de microserviços a gente precisa fazer com que as equipes assumam essa responsabilidade e ajudem a equipe de operações a monitorar os nossos sistemas em produção 13 min
  28. - Bugs de diferentes tamanhos e que podem ser detectados em produção
  29. Um dos desafios que enfrentamos depois de sofremos algumas vezes com problemas em produção Monitoração: como conseguir escalar isso para que todo microserviço tenha monitorações de infra-estrutura e negócio que facilitem a atuação da equipe de operações
  30. A biblioteca java gera um arquivo JSON com o status das monitorações da aplicação Script lê esse arquivo e toma as ações necessárias caso haja algum problema Idle Period (Periodo sem executar)
  31. Podemos também monitorar filas rabbit ou integações com outros sistemas É importante documentarmos para em caso de alarme operações saiba o que fazer Notificações via Slack e abertura de chamados
  32. Para análise de problemas em produção é muito importate termos logs Quando tratamos de microserviços para uma jornada do usuário é importante a gente conseguir ter uma rastreabilidade Sleuth para gerar os logs e Zipkin para consolidar esses logs
  33. - Vagas no PagSeguro (QA, Dev FE e BE, Banco, Infra...)