testes em uma arquitetura de micro-serviços - renan martins
Post on 19-Aug-2015
93 Views
Preview:
TRANSCRIPT
TESTANDO ARQUITETURAS DE MICRO-SERVIÇOSRenan Martins @renan89
1
Recife, Belo Horizonte, São Paulo e Porto Alegre
2
3
#TWnaMTC2015
@thoughtworks_pt
4
AGENDA
1. O que são micro-serviços?
2. Vantagens e Desvantagens das arquiteturas de micro-serviços
3. Testando arquiteturas de micro-serviços
5
FALAREMOS SOBRE
DEFINIÇÃO
6
“Micro-serviços são pequenos, autônomos serviços que trabalham em
conjunto"
PEQUENOS
7
Focados em fazer apenas uma coisa bem feita!
AUTÔNOMOS
8
Podem ser modificados independente um dos outros. E podem ser implantados sem demandar mudanças em
seus consumidores.
ESTOU FAZENDO CORRETAMENTE?
9
É possível mudar um serviço e implantá-lo sem efeitos colaterais em
outros serviços?
10
VANTAGENS DAS ARQUITETURAS DE MICRO-SERVIÇOS
HETEROGENEIDADE TECNOLÓGICA
11
A tecnologia correta para cada problema
POSTS <<ruby>>
FRIENDS <<golang>>
PICTURES <<java>>
<<Document Store>> <<graph DB>> <<Blob Store>>
RESILIÊNCIA
12
Podemos construir sistemas capazes de lidar com falhas totais de serviços e apenas degradar apropriadamente
as funcionalidades afetadas
ESCALAR
PICTURES POSTS
FRIENDS
FACILIDADE DE IMPLANTAÇÃO
Implantações são mais rápidas e independentes. Os problemas podem
ser isolados mais facilmente.
ALINHAMENTO ORGANIZACIONAL
INVOICING SERVICE
INVENTORY SERVICE
Times e repositórios de código menores!
Conway's Law
COMPONIBILIDADE E SUBSTITUIBILIDADE
COMPONIBILIDADE E SUBSTITUIBILIDADE
MONOLITHIC ECOM SYSTEM
COMPONIBILIDADE E SUBSTITUIBILIDADE
MONOLITHIC ECOM SYSTEM
PROFILE MODULE
COMPONIBILIDADE E SUBSTITUIBILIDADE
MONOLITHIC ECOM SYSTEM
PROFILE MODULE
COMPONIBILIDADE E SUBSTITUIBILIDADE
MONOLITHIC ECOM SYSTEM
PROFILE MODULE
HTTPS
COMPONIBILIDADE E SUBSTITUIBILIDADE
MONOLITHIC ECOM SYSTEM
PROFILE MODULE
New Point of Sale
HTTPS
COMPONIBILIDADE E SUBSTITUIBILIDADE
MONOLITHIC ECOM SYSTEM
PROFILE MODULE
New Point of Sale
HTTPSHTTP
COMPONIBILIDADE E SUBSTITUIBILIDADE
MONOLITHIC ECOM SYSTEM
PROFILE MODULE
New Point of Sale
HTTPSHTTP
Affiliate Store
HTTPS
17
NO
MICRO-SERVIÇOS NÃO SÃO PARA QUALQUER UM
http://martinfowler.com/bliki/MicroservicePrerequisites.html
MONOLÍTICOS PRIMEIRO…
19http://martinfowler.com/bliki/MonolithFirst.html
20
TESTES
21
TEST AUTOMATION
CLOSER TO THE USER
CLOSER TO THE DEVELOPER
$$$ SLOWER / FEWER
$ FASTER / MORE
USER JOURNEY
UI
INTEGRATION
UNIT
Connection of UI tests to a persona like flow through the system
Testing on the level of the users - incl. browser, network, databases, external systems, …
Tests of multiple integrated method
Tests of single methods without dependencies
22
CÓDIGO PRODUÇÃOUnit, Integration, end to end tests, smoke
tests, etc..
Consumidores
23
COMO ISSO SE APLICA AS ARQUITETURAS DE MICRO-SERVIÇOS ?
ANATOMIA DE UM MICRO-SERVIÇO
24http://martinfowler.com/articles/microservice-testing/
TESTES UNITÁRIOS EM MICRO-SERVIÇOS
25
Domain - Devemos focar em testar o comportamento, observando mudanças de
estado.
Gateways, Resources and Persistence - Devemos focar
em testar as interações e colaborações (Mocks, test
doubles)
http://martinfowler.com/articles/microservice-testing/
TESTES DE INTEGRAÇÃO - PERSISTENCE E GATEWAYS
26http://martinfowler.com/articles/microservice-testing/
TESTES DE COMPONENTE - IN PROCESS
27http://martinfowler.com/articles/microservice-testing/
TESTES DE COMPONENTE - OUT OF PROCESS
28http://martinfowler.com/articles/microservice-testing/
TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?
29
mountebank - over the wire test doubles
TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?
30
TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?
30
teste
TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?
30
teste
Configura os impostores
TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?
30
teste
Configura os impostores
TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?
30
teste
Configura os impostores
TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?
30
teste
SMTP TCP
IMPOSTOR
HTTP
Configura os impostores
TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?
30
teste
SUA APLICAÇÃO
SMTP TCP
IMPOSTOR
HTTP
Configura os impostores
TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?
30
teste
SUA APLICAÇÃO
SMTP TCP
IMPOSTOR
HTTP
Configura os impostores
TESTES DE COMPONENTE - PROBLEMAS COM STUBS
31
TESTES DE COMPONENTE - PROBLEMAS COM STUBS
31
SUA APLICAÇÃO IMPOSTOR
Test
TESTES DE COMPONENTE - PROBLEMAS COM STUBS
31
SERVIÇO REAL EM CONSTANTE
MUDANÇA
SUA APLICAÇÃO IMPOSTOR
Test
TESTES DE COMPONENTE - PROBLEMAS COM STUBS
31
SERVIÇO REAL EM CONSTANTE
MUDANÇA
SUA APLICAÇÃO IMPOSTOR
Test
TESTES DE COMPONENTE - PROBLEMAS COM STUBS
31
SERVIÇO REAL EM CONSTANTE
MUDANÇA
SUA APLICAÇÃO IMPOSTOR
Test
SE TORNA INVÁLIDO!!
TESTES DE COMPONENTE - PROBLEMAS COM STUBS
31
SERVIÇO REAL EM CONSTANTE
MUDANÇA
SUA APLICAÇÃO IMPOSTOR
Test
SE TORNA INVÁLIDO!!
TESTES DE COMPONENTE - PROBLEMAS COM STUBS
31
SERVIÇO REAL EM CONSTANTE
MUDANÇA
BECOMES INVALID!
SUA APLICAÇÃO IMPOSTOR
Test
SE TORNA INVÁLIDO!!
TESTES DE COMPONENTE - PROBLEMAS COM STUBS
31
SERVIÇO REAL EM CONSTANTE
MUDANÇA
BECOMES INVALID!
SUA APLICAÇÃO IMPOSTOR
Test
SE TORNA INVÁLIDO!!
TESTES DE COMPONENTE - PROBLEMAS COM STUBS
31
SERVIÇO REAL EM CONSTANTE
MUDANÇA
BECOMES INVALID!
SUA APLICAÇÃO IMPOSTOR
Test
SE TORNA INVÁLIDO!!
TESTES DE COMPONENTE - PROBLEMAS COM STUBS
31
SERVIÇO REAL EM CONSTANTE
MUDANÇA
BECOMES INVALID!
SUA APLICAÇÃO IMPOSTOR
Test
SE TORNA INVÁLIDO!!
TESTES DE COMPONENTE - PROBLEMAS COM STUBS
31
SERVIÇO REAL EM CONSTANTE
MUDANÇA
BECOMES INVALID!
SUA APLICAÇÃO IMPOSTOR
Test
SE TORNA INVÁLIDO!!
TESTES DE COMPONENTE - PROBLEMAS COM STUBS
31
SERVIÇO REAL EM CONSTANTE
MUDANÇA
SUPOSIÇÕES - Quão frequentemente você altera seus testes e stubs ?
BECOMES INVALID!
SUA APLICAÇÃO IMPOSTOR
Test
SE TORNA INVÁLIDO!!
TESTES DE CONTRATO
32
SERVIÇO REAL EM CONSTANTE
MUDANÇA
CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)
33
CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)
33
SERVIÇO REAL EM
CONSTANTE MUDANÇA
CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)
33
SERVIÇO REAL EM
CONSTANTE MUDANÇA
CI PIPELINE DO SERVIÇO
CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)
33
SERVIÇO REAL EM
CONSTANTE MUDANÇA
CI PIPELINE DO SERVIÇO
CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)
33
SERVIÇO REAL EM
CONSTANTE MUDANÇA
UNIT
CI PIPELINE DO SERVIÇO
CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)
33
SERVIÇO REAL EM
CONSTANTE MUDANÇA
UNIT
INTEGRATION
CI PIPELINE DO SERVIÇO
CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)
33
SERVIÇO REAL EM
CONSTANTE MUDANÇA
UNIT
INTEGRATION
COMPONENT
CI PIPELINE DO SERVIÇO
CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)
33
SERVIÇO REAL EM
CONSTANTE MUDANÇA
UNIT
INTEGRATION
COMPONENT
CONTRACT
CI PIPELINE DO SERVIÇO
CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)
33
SERVIÇO REAL EM
CONSTANTE MUDANÇA
UNIT
INTEGRATION
COMPONENT
CONTRACT
CI PIPELINE DO SERVIÇO
CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)
33
SERVIÇO REAL EM
CONSTANTE MUDANÇA
UNIT
INTEGRATION
COMPONENT
CONTRACT
CI PIPELINE DO SERVIÇO
CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)
33
SERVIÇO REAL EM
CONSTANTE MUDANÇA
UNIT
INTEGRATION
COMPONENT
CONTRACT
CI PIPELINE DO SERVIÇO
CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)
33
SERVIÇO REAL EM
CONSTANTE MUDANÇA
UNIT
INTEGRATION
COMPONENT
CONTRACT
CI PIPELINE DO SERVIÇO
CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)
33
SERVIÇO REAL EM
CONSTANTE MUDANÇA
UNIT
INTEGRATION
COMPONENT
CONTRACT
CI PIPELINE DO SERVIÇO
CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)
33
SERVIÇO REAL EM
CONSTANTE MUDANÇA
UNIT
INTEGRATION
COMPONENT
CONTRACT
CI PIPELINE DO SERVIÇO
CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)
33
SERVIÇO REAL EM
CONSTANTE MUDANÇA
UNIT
INTEGRATION
COMPONENT
CONTRACT
CI PIPELINE DO SERVIÇO
CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)
33
SERVIÇO REAL EM
CONSTANTE MUDANÇA
UNIT
INTEGRATION
COMPONENT
CONTRACT
IMPLANTAÇÃO!
CI PIPELINE DO SERVIÇO
CONSUMER DRIVEN CONTRACTS - IMPLEMENTAÇÕES
34
https://github.com/realestate-com-au/pact
TESTES PONTA A PONTA - CAIXA PRETA
35
TESTES PONTA A PONTA - CAIXA PRETA
35
TESTES PONTA A PONTA - CAIXA PRETA
35
14
2
3
5
6
7
8
TESTES PONTA A PONTA - CAIXA PRETA
35
14
2
3
5
6
7
8
TESTES PONTA A PONTA - CAIXA PRETA
35
14
2
3
5
6
7
8
TESTES PONTA A PONTA - CAIXA PRETA
35
14
2
3
5
6
7
8
BOA SORTE!
TESTES DE PONTA A PONTA EM ARQUITETURAS DE MICRO-SERVIÇOS
36
Escreva o menor número de testes ponta a ponta possível!
TESTES DE PONTA A PONTA EM ARQUITETURAS DE MICRO-SERVIÇOS
37
Teste jornadas do usuário e não estórias
TESTES DE PONTA A PONTA EM ARQUITETURAS DE MICRO-SERVIÇOS
38
Certifique-se que seus testes ponta a ponta são independente de dados
existentes
CI PIPELINE - FEEDBACK RÁPIDO VS CUSTO
39
UNITINTEGRATION
CONTRACTCOMPONENT
JOURNEYS
FALAMOS SOBRE TODA A PIRÂMIDE - ACABAMOS?
40
FALAMOS SOBRE TODA A PIRÂMIDE - ACABAMOS?
40
Não.
FALAMOS SOBRE TODA A PIRÂMIDE - ACABAMOS?
40
Não. Testes após a implantação em produção!
TESTANDO EM PRODUÇÃO
41
Diferenciar Implantação de Release
BLUE GREEN
DEPLOYMENT
TESTANDO EM PRODUÇÃO
41
Diferenciar Implantação de Release
BLUE GREEN
DEPLOYMENT
TESTANDO EM PRODUÇÃO
41
Diferenciar Implantação de Release
BLUE GREEN
DEPLOYMENT
SERVICE V1
TESTANDO EM PRODUÇÃO
41
Diferenciar Implantação de Release
BLUE GREEN
DEPLOYMENT
SERVICE V1
TESTANDO EM PRODUÇÃO
41
Diferenciar Implantação de Release
BLUE GREEN
DEPLOYMENT
SERVICE V1
SERVICE V2
TESTANDO EM PRODUÇÃO
41
Diferenciar Implantação de Release
BLUE GREEN
DEPLOYMENT
SERVICE V1
SERVICE V2
TESTANDO EM PRODUÇÃO
41
Diferenciar Implantação de Release
BLUE GREEN
DEPLOYMENT
SERVICE V1
SERVICE V2
TESTANDO EM PRODUÇÃO
41
Diferenciar Implantação de Release
BLUE GREEN
DEPLOYMENT
SERVICE V1
SERVICE V2
CANARY RELEASE
42
CANARY RELEASE
42
CANARY RELEASE
42
CANARY RELEASE
42
SERVICE V1
CANARY RELEASE
42
SERVICE V1
CANARY RELEASE
42
SERVICE V1
SERVICE V2
CANARY RELEASE
42
SERVICE V1
SERVICE V2
CANARY RELEASE
42
SERVICE V1
SERVICE V2
CANARY RELEASE
42
SERVICE V1
SERVICE V2
CANARY RELEASE
42
SERVICE V1
SERVICE V2
15%
85%
TEMPO MÉDIO PARA SE RECUPERAR
43
Não há dúvidas que os testes reduzem a quantidade de defeitos, mas é importante reconhecer que eles
não os eliminam por completo!
TECH RADAR RECOMENDA ESSAS PRÁTICAS!
44http://www.thoughtworks.com/radar
FALAMOS SOBRE
45
microservices meanTimeToRecover canaryRelease blueGreenDeploy
CIPipelines testAutomation testJourneys consumerDrivenContracts contractTests
componentTests mountebank pact noSilverBullet technologyHeterogeneity
resilience scaling easeOfDeployment organizationalAlignment
top related