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