Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
300
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
330
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
愛される翻訳の秘訣
kishikawakatsumi
3
340
脳の「省エネモード」をデバッグする ~System 1(直感)と System 2(論理)の切り替え~
panda728
PRO
0
120
Basic Architectures
denyspoltorak
0
120
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
AIエンジニアリングのご紹介 / Introduction to AI Engineering
rkaga
8
3.3k
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
260
実はマルチモーダルだった。ブラウザの組み込みAI🧠でWebの未来を感じてみよう #jsfes #gemini
n0bisuke2
3
1.3k
PC-6001でPSG曲を鳴らすまでを全部NetBSD上の Makefile に押し込んでみた / osc2025hiroshima
tsutsui
0
170
안드로이드 9년차 개발자, 프론트엔드 주니어로 커리어 리셋하기
maryang
1
130
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
290
AIコーディングエージェント(NotebookLM)
kondai24
0
230
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
230
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
21k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
65
35k
Context Engineering - Making Every Token Count
addyosmani
9
550
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
73
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
280
Applied NLP in the Age of Generative AI
inesmontani
PRO
3
2k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
51
43k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
120
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
75
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
0
130
Heart Work Chapter 1 - Part 1
lfama
PRO
3
35k
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