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
Rethinking API Platform Filters
vinceamstoutz
0
450
脱 雰囲気実装!AgentCoreを良い感じにWEBアプリケーションに組み込むために
takuyay0ne
3
390
コーディングルールの鮮度を保ちたい / keep-fresh-go-internal-conventions
handlename
0
230
AIコードレビューの導入・運用と AI駆動開発における「AI4QA」の取り組みについて
hagevvashi
0
550
20260228_JAWS_Beginner_Kansai
takuyay0ne
5
620
飯MCP
yusukebe
0
330
AI時代のシステム設計:ドメインモデルで変更しやすさを守る設計戦略
masuda220
PRO
6
1.1k
AWS×クラウドネイティブソフトウェア設計 / AWS x Cloud-Native Software Design
nrslib
16
3.4k
安いハードウェアでVulkan
fadis
1
780
CS教育のDX AIによる育成の効率化
niftycorp
PRO
0
160
Geminiをパートナーに神社DXシステムを個人開発した話(いなめぐDX 開発振り返り)
fujiba
0
100
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
7
3.1k
Featured
See All Featured
The browser strikes back
jonoalderson
0
840
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Code Review Best Practice
trishagee
74
20k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
How GitHub (no longer) Works
holman
316
150k
Mind Mapping
helmedeiros
PRO
1
130
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
330
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つずつテストを作成しましょう
ディスカッション