Testando Arquiteturas de Micro-Serviços

Post on 11-Aug-2015

67 views 2 download

Transcript of Testando Arquiteturas de Micro-Serviços

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

rmartins@thoughtworks.com

MUITO OBRIGADO!