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
Pactの紹介
Search
Daisuke Kameda
April 26, 2016
Programming
0
590
Pactの紹介
2016/4/25 にFiNC社内で行われたMicroservices 勉強会内で使用した、Pactの紹介に関する資料です。デモについては、諸般の事情で概要のみとしています。
Daisuke Kameda
April 26, 2016
Tweet
Share
Other Decks in Programming
See All in Programming
CSC307 Lecture 03
javiergs
PRO
1
490
CSC307 Lecture 04
javiergs
PRO
0
660
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
700
余白を設計しフロントエンド開発を 加速させる
tsukuha
7
2.1k
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
280
MUSUBIXとは
nahisaho
0
130
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
690
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
130
SourceGeneratorのススメ
htkym
0
200
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
230
AtCoder Conference 2025
shindannin
0
1.1k
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
460
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
86
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Raft: Consensus for Rubyists
vanstee
141
7.3k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
430
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
290
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.5k
So, you think you're a good person
axbom
PRO
2
1.9k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
110
Deep Space Network (abreviated)
tonyrice
0
48
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
Transcript
Pact の紹介 ~Microservices のテストに困っているあなたへ~ 2016/04/25 亀田 大輔
自己紹介 • 2014年8月までピクスタ株式会社で勤務 • 2014年9月に転職するも、腰痛のため2ヶ月で退職せざるをえない状況に・・・ • その後、在宅でフリーランスとして働く • 2016年5月、株式会社FiNCに入社(予定)
アジェンダ 1. Microservices のテストにおける課題とPactのメリット 2. Pact の概要 3. デモを交えた紹介
Microservices におけるテストの課題と Pact のメリット
Microservices のテストの難しさ 基本:Modelなどの単体テスト/request specやfeature spec で機能(結合)テスト → 他サービスを呼び出す必要があると、そこはstubを使わざるをえない 「結合させてちゃんと動くのだろうか?」という不安
考えられる対処法1 関連する実際のサービスで結合テスト • 実行に時間がかかりすぎる => デプロイにも時間がかかる • メンテナンスが大変 • サービスを分割したのに、テストで依存関係が発生
考えられる対処法1 関連する実際のサービスで結合テスト • 実行に時間がかかりすぎる => デプロイにも時間がかかる • メンテナンスが大変 • サービスを分割したのに、テストで依存関係が発生
非現実的
考えられる対処法2 モックを使う(例:webmock + vcr) 実際のサービスを使って request/response のモックを作成 →各consumer がテストを実行 •
全 cosumer でテストを実行しないと、変更が問題ないか不明 ◦ デプロイには時間がかかる 可能性が高い • 検証コードや検証用のrequest/response を用意するのは誰の仕事? ◦ テスト作成で各サービス担当チーム間で連携が必要
考えられる対処法2 モックを使う(例:webmock + vcr) 実際のサービスを使って request/response のモックを作成 →各consumer がテストを実行 •
全 cosumer でテストを実行しないと、変更が問題ないか不明 ◦ デプロイには時間がかかる 可能性が高い • 検証コードや検証用のrequest/response を用意するのは誰の仕事? ◦ テスト作成で各サービス担当チーム間で連携が必要 まだサービス間の依存度合いが高い
考えられる対処法3 コンシューマ駆動契約(例:Pact) メリット • テスト自体は各サービスで閉じて実行できる ◦ デプロイまでの手順がシンプル • テスト作成作業の責任が明確 ◦
テストを作成する際のチーム間の連携を抑えられる • (Pactは)対応言語が豊富 ◦ Ruby、JVM(Java、Scala など)、Javascript、Swift などに対応ライブラリが存在
Pact の概要
Pact の概要 Consumer Pact で作成したmock http request http response Provider
Pact ファイル 生成
Pact の概要 Consumer Provider Pactツール (rake タスク) Pact ファイル 状態セットアップ
コード セットアップ http request 再現 http response 入力 比較
デモ
登場サービス チャットサービス アカウントサービス ログインユーザーの 情報を要求 チャット相手の 情報を要求
Pact を使う上で難しそうなところ • どうやってCIに組み込むか ◦ (私は未検証ですが) Pact Broker というのがあります •
pactファイルだけでは Provider 側が状態を再現するのは難しい ◦ 必要なコミュニケーションはとりましょう • デバッグが少ししづらい ◦ まとめてではなく、1つずつテストを作成しましょう
ディスカッション