109
TESTANDO ARQUITETURAS DE MICRO-SERVIÇOS Renan Martins @renan89 1

Testando Arquiteturas de Micro-Serviços

Embed Size (px)

Citation preview

Page 1: Testando Arquiteturas de Micro-Serviços

TESTANDO ARQUITETURAS DE MICRO-SERVIÇOSRenan Martins @renan89

1

Page 2: Testando Arquiteturas de Micro-Serviços

Recife, Belo Horizonte, São Paulo e Porto Alegre

2

Page 3: Testando Arquiteturas de Micro-Serviços

3

#TWnaMTC2015

@thoughtworks_pt

Page 4: Testando Arquiteturas de Micro-Serviços

4

AGENDA

Page 5: Testando Arquiteturas de Micro-Serviços

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

Page 6: Testando Arquiteturas de Micro-Serviços

DEFINIÇÃO

6

“Micro-serviços são pequenos, autônomos serviços que trabalham em

conjunto"

Page 7: Testando Arquiteturas de Micro-Serviços

PEQUENOS

7

Focados em fazer apenas uma coisa bem feita!

Page 8: Testando Arquiteturas de Micro-Serviços

AUTÔNOMOS

8

Podem ser modificados independente um dos outros. E podem ser implantados sem demandar mudanças em

seus consumidores.

Page 9: Testando Arquiteturas de Micro-Serviços

ESTOU FAZENDO CORRETAMENTE?

9

É possível mudar um serviço e implantá-lo sem efeitos colaterais em

outros serviços?

Page 10: Testando Arquiteturas de Micro-Serviços

10

VANTAGENS DAS ARQUITETURAS DE MICRO-SERVIÇOS

Page 11: Testando 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>>

Page 12: Testando Arquiteturas de Micro-Serviços

RESILIÊNCIA

12

Podemos construir sistemas capazes de lidar com falhas totais de serviços e apenas degradar apropriadamente

as funcionalidades afetadas

Page 13: Testando Arquiteturas de Micro-Serviços

ESCALAR

PICTURES POSTS

FRIENDS

Page 14: Testando Arquiteturas de Micro-Serviços

FACILIDADE DE IMPLANTAÇÃO

Implantações são mais rápidas e independentes. Os problemas podem

ser isolados mais facilmente.

Page 15: Testando Arquiteturas de Micro-Serviços

ALINHAMENTO ORGANIZACIONAL

INVOICING SERVICE

INVENTORY SERVICE

Times e repositórios de código menores!

Conway's Law

Page 16: Testando Arquiteturas de Micro-Serviços

COMPONIBILIDADE E SUBSTITUIBILIDADE

Page 17: Testando Arquiteturas de Micro-Serviços

COMPONIBILIDADE E SUBSTITUIBILIDADE

MONOLITHIC ECOM SYSTEM

Page 18: Testando Arquiteturas de Micro-Serviços

COMPONIBILIDADE E SUBSTITUIBILIDADE

MONOLITHIC ECOM SYSTEM

PROFILE MODULE

Page 19: Testando Arquiteturas de Micro-Serviços

COMPONIBILIDADE E SUBSTITUIBILIDADE

MONOLITHIC ECOM SYSTEM

PROFILE MODULE

Page 20: Testando Arquiteturas de Micro-Serviços

COMPONIBILIDADE E SUBSTITUIBILIDADE

MONOLITHIC ECOM SYSTEM

PROFILE MODULE

HTTPS

Page 21: Testando Arquiteturas de Micro-Serviços

COMPONIBILIDADE E SUBSTITUIBILIDADE

MONOLITHIC ECOM SYSTEM

PROFILE MODULE

New Point of Sale

HTTPS

Page 22: Testando Arquiteturas de Micro-Serviços

COMPONIBILIDADE E SUBSTITUIBILIDADE

MONOLITHIC ECOM SYSTEM

PROFILE MODULE

New Point of Sale

HTTPSHTTP

Page 23: Testando Arquiteturas de Micro-Serviços

COMPONIBILIDADE E SUBSTITUIBILIDADE

MONOLITHIC ECOM SYSTEM

PROFILE MODULE

New Point of Sale

HTTPSHTTP

Affiliate Store

HTTPS

Page 24: Testando Arquiteturas de Micro-Serviços

17

NO

Page 25: Testando Arquiteturas de Micro-Serviços

MICRO-SERVIÇOS NÃO SÃO PARA QUALQUER UM

http://martinfowler.com/bliki/MicroservicePrerequisites.html

Page 26: Testando Arquiteturas de Micro-Serviços

MONOLÍTICOS PRIMEIRO…

19http://martinfowler.com/bliki/MonolithFirst.html

Page 27: Testando Arquiteturas de Micro-Serviços

20

TESTES

Page 28: Testando Arquiteturas de Micro-Serviços

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

Page 29: Testando Arquiteturas de Micro-Serviços

22

CÓDIGO PRODUÇÃOUnit, Integration, end to end tests, smoke

tests, etc..

Consumidores

Page 30: Testando Arquiteturas de Micro-Serviços

23

COMO ISSO SE APLICA AS ARQUITETURAS DE MICRO-SERVIÇOS ?

Page 31: Testando Arquiteturas de Micro-Serviços

ANATOMIA DE UM MICRO-SERVIÇO

24http://martinfowler.com/articles/microservice-testing/

Page 32: Testando Arquiteturas de Micro-Serviços

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/

Page 33: Testando Arquiteturas de Micro-Serviços

TESTES DE INTEGRAÇÃO - PERSISTENCE E GATEWAYS

26http://martinfowler.com/articles/microservice-testing/

Page 34: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - IN PROCESS

27http://martinfowler.com/articles/microservice-testing/

Page 35: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - OUT OF PROCESS

28http://martinfowler.com/articles/microservice-testing/

Page 36: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?

29

mountebank - over the wire test doubles

Page 37: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?

30

Page 38: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?

30

teste

Page 39: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?

30

teste

Configura os impostores

Page 40: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?

30

teste

Configura os impostores

Page 41: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?

30

teste

Configura os impostores

Page 42: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?

30

teste

SMTP TCP

IMPOSTOR

HTTP

Configura os impostores

Page 43: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?

30

teste

SUA APLICAÇÃO

SMTP TCP

IMPOSTOR

HTTP

Configura os impostores

Page 44: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - COMO SIMULAR SERVIÇOS EXTERNOS ?

30

teste

SUA APLICAÇÃO

SMTP TCP

IMPOSTOR

HTTP

Configura os impostores

Page 45: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - PROBLEMAS COM STUBS

31

Page 46: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - PROBLEMAS COM STUBS

31

SUA APLICAÇÃO IMPOSTOR

Test

Page 47: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - PROBLEMAS COM STUBS

31

SERVIÇO REAL EM CONSTANTE

MUDANÇA

SUA APLICAÇÃO IMPOSTOR

Test

Page 48: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - PROBLEMAS COM STUBS

31

SERVIÇO REAL EM CONSTANTE

MUDANÇA

SUA APLICAÇÃO IMPOSTOR

Test

Page 49: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - PROBLEMAS COM STUBS

31

SERVIÇO REAL EM CONSTANTE

MUDANÇA

SUA APLICAÇÃO IMPOSTOR

Test

SE TORNA INVÁLIDO!!

Page 50: Testando Arquiteturas de Micro-Serviços

TESTES DE COMPONENTE - PROBLEMAS COM STUBS

31

SERVIÇO REAL EM CONSTANTE

MUDANÇA

SUA APLICAÇÃO IMPOSTOR

Test

SE TORNA INVÁLIDO!!

Page 51: Testando Arquiteturas de Micro-Serviços

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!!

Page 52: Testando Arquiteturas de Micro-Serviços

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!!

Page 53: Testando Arquiteturas de Micro-Serviços

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!!

Page 54: Testando Arquiteturas de Micro-Serviços

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!!

Page 55: Testando Arquiteturas de Micro-Serviços

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!!

Page 56: Testando Arquiteturas de Micro-Serviços

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!!

Page 57: Testando Arquiteturas de Micro-Serviços

TESTES DE CONTRATO

32

SERVIÇO REAL EM CONSTANTE

MUDANÇA

Page 58: Testando Arquiteturas de Micro-Serviços

CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)

33

Page 59: Testando Arquiteturas de Micro-Serviços

CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)

33

SERVIÇO REAL EM

CONSTANTE MUDANÇA

Page 60: Testando Arquiteturas de Micro-Serviços

CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)

33

SERVIÇO REAL EM

CONSTANTE MUDANÇA

CI PIPELINE DO SERVIÇO

Page 61: Testando Arquiteturas de Micro-Serviços

CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)

33

SERVIÇO REAL EM

CONSTANTE MUDANÇA

CI PIPELINE DO SERVIÇO

Page 62: Testando Arquiteturas de Micro-Serviços

CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)

33

SERVIÇO REAL EM

CONSTANTE MUDANÇA

UNIT

CI PIPELINE DO SERVIÇO

Page 63: Testando Arquiteturas de Micro-Serviços

CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)

33

SERVIÇO REAL EM

CONSTANTE MUDANÇA

UNIT

INTEGRATION

CI PIPELINE DO SERVIÇO

Page 64: Testando Arquiteturas de Micro-Serviços

CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)

33

SERVIÇO REAL EM

CONSTANTE MUDANÇA

UNIT

INTEGRATION

COMPONENT

CI PIPELINE DO SERVIÇO

Page 65: Testando Arquiteturas de Micro-Serviços

CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)

33

SERVIÇO REAL EM

CONSTANTE MUDANÇA

UNIT

INTEGRATION

COMPONENT

CONTRACT

CI PIPELINE DO SERVIÇO

Page 66: Testando Arquiteturas de Micro-Serviços

CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)

33

SERVIÇO REAL EM

CONSTANTE MUDANÇA

UNIT

INTEGRATION

COMPONENT

CONTRACT

CI PIPELINE DO SERVIÇO

Page 67: Testando Arquiteturas de Micro-Serviços

CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)

33

SERVIÇO REAL EM

CONSTANTE MUDANÇA

UNIT

INTEGRATION

COMPONENT

CONTRACT

CI PIPELINE DO SERVIÇO

Page 68: Testando Arquiteturas de Micro-Serviços

CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)

33

SERVIÇO REAL EM

CONSTANTE MUDANÇA

UNIT

INTEGRATION

COMPONENT

CONTRACT

CI PIPELINE DO SERVIÇO

Page 69: Testando Arquiteturas de Micro-Serviços

CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)

33

SERVIÇO REAL EM

CONSTANTE MUDANÇA

UNIT

INTEGRATION

COMPONENT

CONTRACT

CI PIPELINE DO SERVIÇO

Page 70: Testando Arquiteturas de Micro-Serviços

CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)

33

SERVIÇO REAL EM

CONSTANTE MUDANÇA

UNIT

INTEGRATION

COMPONENT

CONTRACT

CI PIPELINE DO SERVIÇO

Page 71: Testando Arquiteturas de Micro-Serviços

CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)

33

SERVIÇO REAL EM

CONSTANTE MUDANÇA

UNIT

INTEGRATION

COMPONENT

CONTRACT

CI PIPELINE DO SERVIÇO

Page 72: Testando Arquiteturas de Micro-Serviços

CONTRATOS GUIADOS POR CONSUMIDORES (CONSUMER DRIVEN CONTRACTS)

33

SERVIÇO REAL EM

CONSTANTE MUDANÇA

UNIT

INTEGRATION

COMPONENT

CONTRACT

CI PIPELINE DO SERVIÇO

Page 73: Testando Arquiteturas de Micro-Serviços

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

Page 74: Testando Arquiteturas de Micro-Serviços

CONSUMER DRIVEN CONTRACTS - IMPLEMENTAÇÕES

34

https://github.com/realestate-com-au/pact

Page 75: Testando Arquiteturas de Micro-Serviços

TESTES PONTA A PONTA - CAIXA PRETA

35

Page 76: Testando Arquiteturas de Micro-Serviços

TESTES PONTA A PONTA - CAIXA PRETA

35

Page 77: Testando Arquiteturas de Micro-Serviços

TESTES PONTA A PONTA - CAIXA PRETA

35

14

2

3

5

6

7

8

Page 78: Testando Arquiteturas de Micro-Serviços

TESTES PONTA A PONTA - CAIXA PRETA

35

14

2

3

5

6

7

8

Page 79: Testando Arquiteturas de Micro-Serviços

TESTES PONTA A PONTA - CAIXA PRETA

35

14

2

3

5

6

7

8

Page 80: Testando Arquiteturas de Micro-Serviços

TESTES PONTA A PONTA - CAIXA PRETA

35

14

2

3

5

6

7

8

BOA SORTE!

Page 81: Testando Arquiteturas de Micro-Serviços

TESTES DE PONTA A PONTA EM ARQUITETURAS DE MICRO-SERVIÇOS

36

Escreva o menor número de testes ponta a ponta possível!

Page 82: Testando Arquiteturas de Micro-Serviços

TESTES DE PONTA A PONTA EM ARQUITETURAS DE MICRO-SERVIÇOS

37

Teste jornadas do usuário e não estórias

Page 83: Testando Arquiteturas de Micro-Serviços

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

Page 84: Testando Arquiteturas de Micro-Serviços

CI PIPELINE - FEEDBACK RÁPIDO VS CUSTO

39

UNITINTEGRATION

CONTRACTCOMPONENT

JOURNEYS

Page 85: Testando Arquiteturas de Micro-Serviços

FALAMOS SOBRE TODA A PIRÂMIDE - ACABAMOS?

40

Page 86: Testando Arquiteturas de Micro-Serviços

FALAMOS SOBRE TODA A PIRÂMIDE - ACABAMOS?

40

Não.

Page 87: Testando Arquiteturas de Micro-Serviços

FALAMOS SOBRE TODA A PIRÂMIDE - ACABAMOS?

40

Não. Testes após a implantação em produção!

Page 88: Testando Arquiteturas de Micro-Serviços

TESTANDO EM PRODUÇÃO

41

Diferenciar Implantação de Release

BLUE GREEN

DEPLOYMENT

Page 89: Testando Arquiteturas de Micro-Serviços

TESTANDO EM PRODUÇÃO

41

Diferenciar Implantação de Release

BLUE GREEN

DEPLOYMENT

Page 90: Testando Arquiteturas de Micro-Serviços

TESTANDO EM PRODUÇÃO

41

Diferenciar Implantação de Release

BLUE GREEN

DEPLOYMENT

SERVICE V1

Page 91: Testando Arquiteturas de Micro-Serviços

TESTANDO EM PRODUÇÃO

41

Diferenciar Implantação de Release

BLUE GREEN

DEPLOYMENT

SERVICE V1

Page 92: Testando Arquiteturas de Micro-Serviços

TESTANDO EM PRODUÇÃO

41

Diferenciar Implantação de Release

BLUE GREEN

DEPLOYMENT

SERVICE V1

SERVICE V2

Page 93: Testando Arquiteturas de Micro-Serviços

TESTANDO EM PRODUÇÃO

41

Diferenciar Implantação de Release

BLUE GREEN

DEPLOYMENT

SERVICE V1

SERVICE V2

Page 94: Testando Arquiteturas de Micro-Serviços

TESTANDO EM PRODUÇÃO

41

Diferenciar Implantação de Release

BLUE GREEN

DEPLOYMENT

SERVICE V1

SERVICE V2

Page 95: Testando Arquiteturas de Micro-Serviços

TESTANDO EM PRODUÇÃO

41

Diferenciar Implantação de Release

BLUE GREEN

DEPLOYMENT

SERVICE V1

SERVICE V2

Page 96: Testando Arquiteturas de Micro-Serviços

CANARY RELEASE

42

Page 97: Testando Arquiteturas de Micro-Serviços

CANARY RELEASE

42

Page 98: Testando Arquiteturas de Micro-Serviços

CANARY RELEASE

42

Page 99: Testando Arquiteturas de Micro-Serviços

CANARY RELEASE

42

SERVICE V1

Page 100: Testando Arquiteturas de Micro-Serviços

CANARY RELEASE

42

SERVICE V1

Page 101: Testando Arquiteturas de Micro-Serviços

CANARY RELEASE

42

SERVICE V1

SERVICE V2

Page 102: Testando Arquiteturas de Micro-Serviços

CANARY RELEASE

42

SERVICE V1

SERVICE V2

Page 103: Testando Arquiteturas de Micro-Serviços

CANARY RELEASE

42

SERVICE V1

SERVICE V2

Page 104: Testando Arquiteturas de Micro-Serviços

CANARY RELEASE

42

SERVICE V1

SERVICE V2

Page 105: Testando Arquiteturas de Micro-Serviços

CANARY RELEASE

42

SERVICE V1

SERVICE V2

15%

85%

Page 106: Testando Arquiteturas de Micro-Serviços

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!

Page 107: Testando Arquiteturas de Micro-Serviços

TECH RADAR RECOMENDA ESSAS PRÁTICAS!

44http://www.thoughtworks.com/radar

Page 108: Testando Arquiteturas de Micro-Serviços

FALAMOS SOBRE

45

microservices meanTimeToRecover canaryRelease blueGreenDeploy

CIPipelines testAutomation testJourneys consumerDrivenContracts contractTests

componentTests mountebank pact noSilverBullet technologyHeterogeneity

resilience scaling easeOfDeployment organizationalAlignment