Slide 1

Slide 1 text

Evoluindo Ecossistemas com Contratos 1

Slide 2

Slide 2 text

aos envolvidos... 2

Slide 3

Slide 3 text

Marcos Matos Thiago Colucci doravante denonimados de OS PALESTRANTES 3

Slide 4

Slide 4 text

desenvolvedores na ThoughtWorks doravante denonimada de A EMPRESA 4

Slide 5

Slide 5 text

Imaginem manter uma aplicação de 1 000 000 linhas de código 5

Slide 6

Slide 6 text

Ninguém mais faz isso hoje em dia, certo? (eu espero que seja certo) 6

Slide 7

Slide 7 text

nós criamos REST SOAP RPCs 7 (blarg!) (meus olhooooos)

Slide 8

Slide 8 text

Técnicas para separar um sistema em vários componentes 8

Slide 9

Slide 9 text

doravante denominados Micro Serviços 9

Slide 10

Slide 10 text

Micro Serviço Uma base de código pequena com uma funcionalidade bem definida (the Unix Way) 10

Slide 11

Slide 11 text

nós movemos de... 11

Slide 12

Slide 12 text

12 grandes aplicações monolíticas

Slide 13

Slide 13 text

para 13

Slide 14

Slide 14 text

14 diversos micro serviços

Slide 15

Slide 15 text

Que podem evoluir independentemente 15

Slide 16

Slide 16 text

Assim acabamos com a complexidade em nossos sistemas! 16

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Na verdade o que fazemos é mover esta complexidade 18

Slide 19

Slide 19 text

Princípio da Conservação de Energia A quantidade total de complexidade de um sistema computacional permanece constante 19 Complexidade Vários caras espertos

Slide 20

Slide 20 text

Uma arquitetura de micro serviços levanta diversas perguntas 20

Slide 21

Slide 21 text

como por exemplo o paradoxo dos contratos 21

Slide 22

Slide 22 text

Contrato Promessa de como se dá a interação com um serviço. (Uma API + Boa fé) 22

Slide 23

Slide 23 text

23 /usuarios/:email um ENDPOINT { nome: “marcos”, idade: 27 } uma RESPOSTA exemplo de um contrato

Slide 24

Slide 24 text

24 um serviço expõe sua funcionalidade

Slide 25

Slide 25 text

25 vários clientes começam a depender do contrato

Slide 26

Slide 26 text

26 não se sabe como alterações afetam os clientes

Slide 27

Slide 27 text

Serviços desacoplados se tornam acoplados novamente! 27

Slide 28

Slide 28 text

pior! este acoplamento é totalmente Oculto! 28

Slide 29

Slide 29 text

como lidar com isso? 29

Slide 30

Slide 30 text

Exibição #1 A abordagem do Twitter 30

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

Exibição #2 A abordagem do Facebook 32

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

Bem, digamos que voce não trabalha para estas empresas 34

Slide 35

Slide 35 text

momento True Story 35

Slide 36

Slide 36 text

Exibição #3 Revele o oculto 36

Slide 37

Slide 37 text

Contratos Executáveis! 37

Slide 38

Slide 38 text

38 um CLIENTE precisa de uma funcionalidade

Slide 39

Slide 39 text

39 o cliente então escreve uma especificação executável desta funcionalidade

Slide 40

Slide 40 text

40 o cliente então compartilha a spec com o provedor o CLIENTE o PROVEDOR a SPEC

Slide 41

Slide 41 text

41 Ambos discutem a spec até que haja um acordo o CLIENTE o PROVEDOR o CONTRATO

Slide 42

Slide 42 text

O cliente escreve seus testes utilizando o contrato o CLIENTE o PROVEDOR Enquanto o provedor implementa a funcionalidade

Slide 43

Slide 43 text

43 cliente escreve testes em isolamento o CLIENTE o PROVEDOR o Contrato TESTES de aceitação

Slide 44

Slide 44 text

44 contratos são testados contra o provedor o CLIENTE o PROVEDOR o Contrato TESTES de validação

Slide 45

Slide 45 text

o PROVEDOR os CLIENTES os CONTRATOS

Slide 46

Slide 46 text

contratos são uma ferramenta de comunicação 46

Slide 47

Slide 47 text

são executáveis e devem ser compartilhados 47

Slide 48

Slide 48 text

garantindo seus contratos, um serviço pode evoluir livremente 48

Slide 49

Slide 49 text

Sim, isto é um pattern =P Consumer Driven Contracts 49 http://martinfowler.com/articles/consumerDrivenContracts.html

Slide 50

Slide 50 text

e também temos uma gem =D 50 https://github.com/thoughtworks/contracts

Slide 51

Slide 51 text

demo time! 51

Slide 52

Slide 52 text

perguntas? 52

Slide 53

Slide 53 text

obrigado! 53