Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Evoluindo Ecossistemas com Consumer Driven Cont...
Search
Marcos Castilho da Costa Matos
June 27, 2013
Programming
7
290
Evoluindo Ecossistemas com Consumer Driven Contracts
Palestra dada no Agile Brazil 2013 em conjunto com Thiago Colucci sobre Consumer Driven Contracts
Marcos Castilho da Costa Matos
June 27, 2013
Tweet
Share
More Decks by Marcos Castilho da Costa Matos
See All by Marcos Castilho da Costa Matos
Micro Problemas!
marcosccm
8
270
Micro Testing Pains
marcosccm
1
160
Immortal Ruby
marcosccm
4
630
Ruby Theater
marcosccm
2
140
Cinema Ruby
marcosccm
5
210
Other Decks in Programming
See All in Programming
Kotlin 2.0が与えるAndroid開発の進化
masayukisuda
1
410
Debugging: All you need to know (for simultaneous interpreting)
jmatsu
2
800
『ドメイン駆動設計をはじめよう』中核の業務領域
masuda220
PRO
5
1k
REXML改善のその後
naitoh
0
190
React + TextAliveでカッコいいLyric Applicatioinを作ろう!!
tosuri13
0
400
watsonx.ai Dojo #2 生成AIを使ったアプリ開発入門編
oniak3ibm
PRO
0
180
大公開!iOS開発の悩みトップ5 〜iOSDC Japan 2024〜
ryunakayama
0
190
Increased Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
380
Why Prism?
kddnewton
4
1.7k
僕が思い描くTypeScriptの未来を勝手に先取りする
yukukotani
9
2.4k
Ebitengineの1vs1ゲーム WebRTCの活用
ponyo877
0
380
KSPの導入・移行を前向きに検討しよう!
shxun6934
PRO
0
280
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
190
16k
A Tale of Four Properties
chriscoyier
155
22k
Speed Design
sergeychernyshev
22
430
Become a Pro
speakerdeck
PRO
22
4.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
28
1.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
278
13k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
246
1.3M
What the flash - Photography Introduction
edds
67
11k
Building Applications with DynamoDB
mza
90
6k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
0
120
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
43
2k
It's Worth the Effort
3n
182
27k
Transcript
Evoluindo Ecossistemas com Contratos 1
aos envolvidos... 2
Marcos Matos Thiago Colucci doravante denonimados de OS PALESTRANTES 3
desenvolvedores na ThoughtWorks doravante denonimada de A EMPRESA 4
Imaginem manter uma aplicação de 1 000 000 linhas de
código 5
Ninguém mais faz isso hoje em dia, certo? (eu espero
que seja certo) 6
nós criamos REST SOAP RPCs 7 (blarg!) (meus olhooooos)
Técnicas para separar um sistema em vários componentes 8
doravante denominados Micro Serviços 9
Micro Serviço Uma base de código pequena com uma funcionalidade
bem definida (the Unix Way) 10
nós movemos de... 11
12 grandes aplicações monolíticas
para 13
14 diversos micro serviços
Que podem evoluir independentemente 15
Assim acabamos com a complexidade em nossos sistemas! 16
None
Na verdade o que fazemos é mover esta complexidade 18
Princípio da Conservação de Energia A quantidade total de complexidade
de um sistema computacional permanece constante 19 Complexidade Vários caras espertos
Uma arquitetura de micro serviços levanta diversas perguntas 20
como por exemplo o paradoxo dos contratos 21
Contrato Promessa de como se dá a interação com um
serviço. (Uma API + Boa fé) 22
23 /usuarios/:email um ENDPOINT { nome: “marcos”, idade: 27 }
uma RESPOSTA exemplo de um contrato
24 um serviço expõe sua funcionalidade
25 vários clientes começam a depender do contrato
26 não se sabe como alterações afetam os clientes
Serviços desacoplados se tornam acoplados novamente! 27
pior! este acoplamento é totalmente Oculto! 28
como lidar com isso? 29
Exibição #1 A abordagem do Twitter 30
None
Exibição #2 A abordagem do Facebook 32
None
Bem, digamos que voce não trabalha para estas empresas 34
momento True Story 35
Exibição #3 Revele o oculto 36
Contratos Executáveis! 37
38 um CLIENTE precisa de uma funcionalidade
39 o cliente então escreve uma especificação executável desta funcionalidade
40 o cliente então compartilha a spec com o provedor
o CLIENTE o PROVEDOR a SPEC
41 Ambos discutem a spec até que haja um acordo
o CLIENTE o PROVEDOR o CONTRATO
O cliente escreve seus testes utilizando o contrato o CLIENTE
o PROVEDOR Enquanto o provedor implementa a funcionalidade
43 cliente escreve testes em isolamento o CLIENTE o PROVEDOR
o Contrato TESTES de aceitação
44 contratos são testados contra o provedor o CLIENTE o
PROVEDOR o Contrato TESTES de validação
o PROVEDOR os CLIENTES os CONTRATOS
contratos são uma ferramenta de comunicação 46
são executáveis e devem ser compartilhados 47
garantindo seus contratos, um serviço pode evoluir livremente 48
Sim, isto é um pattern =P Consumer Driven Contracts 49
http://martinfowler.com/articles/consumerDrivenContracts.html
e também temos uma gem =D 50 https://github.com/thoughtworks/contracts
demo time! 51
perguntas? 52
obrigado! 53