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
レガシーな Android アプリのリアーキテクチャ戦略
oidy
1
170
プロジェクト新規参入者のリードタイム短縮の観点から見る、品質の高いコードとアーキテクチャを保つメリット
d_endo
1
990
gopls を改造したら開発生産性が高まった
satorunooshie
8
230
外部システム連携先が10を超えるシステムでのアーキテクチャ設計・実装事例
kiwasaki
1
200
/←このスケジュール表に立ち向かう フロントエンド開発戦略 / A front-end development strategy to tackle a single-slash schedule.
nrslib
1
590
Vaporモードを大規模サービスに最速導入して学びを共有する
kazukishimamoto
4
4.3k
Pinia Colada が実現するスマートな非同期処理
naokihaba
2
130
OpenTelemetryでRailsのパフォーマンス分析を始めてみよう(KoR2024)
ymtdzzz
4
1.4k
弊社の「意識チョット低いアーキテクチャ」10選
texmeijin
4
22k
CSC305 Lecture 13
javiergs
PRO
0
120
破壊せよ!データ破壊駆動で考えるドメインモデリング / data-destroy-driven
minodriven
15
3.9k
色々なIaCツールを実際に触って比較してみる
iriikeita
0
230
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
65
4.4k
Become a Pro
speakerdeck
PRO
24
5k
The Invisible Side of Design
smashingmag
297
50k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
228
52k
Gamification - CAS2011
davidbonilla
80
5k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Typedesign – Prime Four
hannesfritz
39
2.4k
The Art of Programming - Codeland 2020
erikaheidi
51
13k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
355
29k
GraphQLとの向き合い方2022年版
quramy
43
13k
For a Future-Friendly Web
brad_frost
175
9.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
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