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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Marcos Castilho da Costa Matos
June 27, 2013
Programming
7
310
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
340
Micro Testing Pains
marcosccm
1
170
Immortal Ruby
marcosccm
4
670
Ruby Theater
marcosccm
2
160
Cinema Ruby
marcosccm
5
220
Other Decks in Programming
See All in Programming
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
11
6.4k
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
190
SourceGeneratorのマーカー属性問題について
htkym
0
120
Oxlint JS plugins
kazupon
1
1.2k
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
1.3k
15年目のiOSアプリを1から作り直す技術
teakun
0
580
24時間止められないシステムを守る-医療ITにおけるランサムウェア対策の実際
koukimiura
2
180
受け入れテスト駆動開発(ATDD)×AI駆動開発 AI時代のATDDの取り組み方を考える
kztakasaki
2
510
浮動小数の比較について
kishikawakatsumi
0
370
Rails Girls Tokyo 18th GMO Pepabo Sponsor Talk
yutokyokutyo
0
190
エージェント開発初心者の僕がエージェントを作った話と今後やりたいこと
thasu0123
0
230
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
370
Featured
See All Featured
Faster Mobile Websites
deanohume
310
31k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
140
Test your architecture with Archunit
thirion
1
2.2k
We Have a Design System, Now What?
morganepeng
55
8k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
For a Future-Friendly Web
brad_frost
183
10k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.4k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
How Software Deployment tools have changed in the past 20 years
geshan
0
32k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
55k
Thoughts on Productivity
jonyablonski
75
5.1k
Navigating Team Friction
lara
192
16k
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