Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Pactの紹介

 Pactの紹介

2016/4/25 にFiNC社内で行われたMicroservices 勉強会内で使用した、Pactの紹介に関する資料です。デモについては、諸般の事情で概要のみとしています。

Daisuke Kameda

April 26, 2016
Tweet

Other Decks in Programming

Transcript

  1. 考えられる対処法2   モックを使う(例:webmock + vcr) 実際のサービスを使って request/response のモックを作成  →各consumer がテストを実行 •

    全 cosumer でテストを実行しないと、変更が問題ないか不明 ◦ デプロイには時間がかかる 可能性が高い • 検証コードや検証用のrequest/response を用意するのは誰の仕事? ◦ テスト作成で各サービス担当チーム間で連携が必要
  2. 考えられる対処法2   モックを使う(例:webmock + vcr) 実際のサービスを使って request/response のモックを作成  →各consumer がテストを実行 •

    全 cosumer でテストを実行しないと、変更が問題ないか不明 ◦ デプロイには時間がかかる 可能性が高い • 検証コードや検証用のrequest/response を用意するのは誰の仕事? ◦ テスト作成で各サービス担当チーム間で連携が必要 まだサービス間の依存度合いが高い
  3. 考えられる対処法3   コンシューマ駆動契約(例:Pact) メリット • テスト自体は各サービスで閉じて実行できる ◦ デプロイまでの手順がシンプル • テスト作成作業の責任が明確 ◦

    テストを作成する際のチーム間の連携を抑えられる • (Pactは)対応言語が豊富 ◦ Ruby、JVM(Java、Scala など)、Javascript、Swift などに対応ライブラリが存在
  4. Pact の概要 Consumer Provider Pactツール (rake タスク) Pact ファイル 状態セットアップ

    コード セットアップ http request 再現 http response 入力 比較
  5. Pact を使う上で難しそうなところ • どうやってCIに組み込むか ◦ (私は未検証ですが) Pact Broker というのがあります •

    pactファイルだけでは Provider 側が状態を再現するのは難しい ◦ 必要なコミュニケーションはとりましょう • デバッグが少ししづらい ◦ まとめてではなく、1つずつテストを作成しましょう