SmartBear Pactflow 導入事例: M1 Finance

Image

会社概要 M1 Finance は、個人投資家が長期的な資産運用を健全に行えるように支援する
オールインワンの資産管理プラットフォームです。
本社 アメリカ イリノイ州シカゴ
業界 パーソナル ファイナンス、モバイル アプリ
Web サイト https://www.m1finance.com/
PactFlow 導入時期 2021 年 3 月

概要

M1 Finance (M1) はシカゴを拠点とする個人向け金融アプリで、自動化された投資、借入、銀行商品を 100 万人以上の米国人に提供しています。2015 年に設立された M1 Finance は、2021 年 7 月時点で評価額 14.5 億米ドル、運用資産 50 億米ドルを達成し、驚異的な成長を遂げているフィンテック企業です1

2021 年 2 月に入社したテスト エンジニアリング責任者の Bedford West 氏は、同社の急成長に不可欠なテストの規律に健全な厳密さをもたらしました。

M1 Finance は、仮定を検証するため限定的なテストを実施するグリーンフィールド アプローチからスタートし、現在ではより徹底した統合テスト、エンドツーエンド テスト、単体テスト、およびコントラクト テストからなる一貫した戦略を採用しています。West 氏は、社内のエンジニアリング チームと製品チームが、開発とデプロイのプロセスに自信を持てるようになったことが最大の成功であると考えています。

ビジネス ニーズ

2015 年に設立された M1 Finance は、100 万人以上の米国人に金融の自由を与える超成長フィンテック企業です。2021 年 7 月時点で、評価額は 14 億 5000 万米ドル、運用資産は 50 億米ドルに達しており1、短期間での多数の新機能の追加を含むさらなる成長を目指しています。

この新しく重要な役職に就いたとき、West 氏は短期間で成果を上げることができると確信していました。急速にスケールアップした多くの企業と同様に、同社のテスト カバレッジには改善の余地がありました。そこで、West 氏が最初に取り組んだことは、総合的な自動化戦略を考案して実装することでした。

West 氏の説明によれば、M1 Finance は中央の GraphQL API ゲートウェイを介して、製品チームとエンジニアリング チームという 2 つの異なるチームが製品開発を行っています。製品チームは消費者向けアプリケーションを担当し、エンジニアリング チームによって提供されるサービスに依存しています。

プラットフォーム バックエンドには、堅牢で信頼できる単体テスト、自動テスト、統合テストの組み合わせが導入されており、独自のテスト アプローチで運用されていました。バックエンドに Scala を使用した彼らの技術スタックは、安全な方法で構築するのに役立っています。

フロントエンド API ゲートウェイ上では、単体テストに加えて、統合テストとエンドツーエンド テストがまばらに使用されていました。エンジニアリング チームは、TypeScript を使用して安全性を高めることを検討しました。これは GraphQL で強力な API 接続を開発するのに役立ちますが、コントラクト テストで得られるような強力なテスト自動化セットがありませんでした。

プラットフォームを成長させるという野心的なビジョンを持っている M1 Finance には、各チームが自信を持って必要なスピードで前進できるよう、より優れたテスト カバレッジが必要なことは明らかでした。

マイクロサービスのスケーリングで課題に直面

多くのスケールアップと同様に、M1 Finance も急速に成長した結果、各チームが急拡大し、エンジニアリング チームで検討する前に、製品の iOS および Android アプリ、API ゲートウェイ、Web アプリケーションなどの新しいテクノロジが導入されるようになりました。そして、エンジニアリング チームが新しいサービスや機能をテストするため、帯域幅を借りることが増えました。

3 つの主な課題:

  1. エンジニアリング チームと製品チーム間のコミュニケーションとコラボレーション
  2. 各チーム内のコミュニケーションとコラボレーション
  3. 時間のかかる手作業のテスト プロセス

開発時間の約 1/3 は、Postman などのアドホック ツールを使用した手動 API テストに費やされました。チーム間の障壁を考えると、コントラクト テストが役立つ可能性があることはすぐに理解できました。

コントラクト テストの導入

コントラクト テストがテスト自動化戦略にとって不可欠であることは明らかでした。

West 氏は、コントラクト テストに精通していましたが、最初にコントラクト テストを実装したのは、M1 Finance で同僚のテスト アーキテクトである Ion Pinzari 氏とペアを組んだときでした。彼らは 2 段階のアプローチに従って M1 Finance への適合性を判断し、価値を実証しました。

第 1 段階: オープンソースの Pact Broker を使用したプロトタイプの作成

まず最初に、プロトタイプを作成しました。West 氏と Pinzari 氏は、セルフホスト型のオープンソースの Pact Broker をローカルで使用しました。これはプロトタイプでは問題ありませんが、すべてのチームで Pact を使用し、CI/CD インフラに統合する場合、一元化されたインフラとして実行する方法が必要であることにすぐに気付きました。

第 2 段階: Pactflow を使用した最適な実装方法の評価

West 氏は Pactflow の存在を知っており、セルフホスト型の Pact Broker よりも優れた機能を提供していることを認識していました。初期のプロトタイプでは、セルフ ホスティングや CI/CD パイプラインのオーバーヘッドなど、いくつかの課題がありました。展開を拡大するには、オープンソース版で開発して保守するか、追加のメリットを得るため有償版を購入するかを検討する必要がありました。

他のチーム メンバーを簡単に CI/CD パイプラインに追加できるように、Pactflow の Starter Plan を利用してみることになりました。そして、チームへのデモが成功したことで、自信を持ってコントラクト テストに Pactflow を採用することになりました。

概念実証を行うことで、セルフホスト型の Pact Broker を構築してサポートするよりも、Pactflow を利用するほうがはるかに簡単だと気づきました。

概念実証から主要な利害関係者の参加まで、このプロセスには 6 カ月弱を要しました。2021 年 7 月時点では 17 のサービスが稼働しており、その数は増え続けています。

信頼できるドキュメントとサポートにより、Pact Slack ワークスペースの存在を知らなかったにもかかわらず、最初のプロトタイプは短期間で作成できました。

Image
M1 Finance のマイクロサービス アーキテクチャのネットワーク図 (2021 年 8 月 20 日に Pactflow で生成)

チームへの展開

コントラクト テストは、複雑なマイクロサービスや API 環境内でテストを行う一般的な方法ですが、導入にはチームの考え方とプロセスの変化を必要とします。

プロトタイプの作成は、コントラクト テストの価値を実証するだけでなく、Pactflow を使用することが M1 Finance にとってコントラクト テストを適用する最良の手段であることを実証する重要なステップとなりました。

製品の API/フロントエンドの担当者は、Pactflow によるコントラクト テストのメリットをすぐに理解していました。

他のチーム メンバーからは、コントラクト テストが Swagger (OpenAPI 仕様) とどのように異なるのか、なぜエンドツーエンドの統合テストにもっと注目しないかなどの質問が寄せられました。

コントラクト テストのケースは単純で、非効率で保守費用がかさむテストを大量に生成するよりも、Pactflow を使ったコントラクト テストのほうが時間を節約でき、より高い信頼性が得られます。

コントラクト テストの導入による素晴らしい成果

Pactflow を使用したコントラクト テストは現在も M1 Finance で利用されており、多くのチームに精神的な自由を与えています。エンジニアリング チームや製品チームは、潜在的な問題について事前に心配したり、システム全体を最優先に考える必要がなく、問題が発生した場合はコントラクト テストで検出できるため、目の前のタスクに集中できます。

West 氏は、同社がコントラクト テストの導入によって短期間で達成した成果を示す 2 つの例を共有してくれました。

例 1: 投資を管理するための主要なバックエンド機能のリリース

West 氏は、この機能の開発チームから、サービスをオフにしても他に影響しないことを確認する自動テストについて相談を受けました。

当時エンドツーエンドの UI テストは採用されていなかったため、これはコントラクト テストの良い例となりました。Pact で使いやすいユニット レベルのコントラクト テストを迅速に作成しました。そして、Pactflow と組み合わせることで、チームはサービスのステータスを制御および可視化し、開発プロセスで簡単に検証できるようになり、全体を通して必要なチェックポイントが減りました。

West 氏は、より信頼性が高く、迅速な方法で前進できることは、大きな成果であると語っています。

例 2: Owner’s Reward クレジット カードの導入

M1 Finance が発行する Owner’s Reward クレジット カードの導入では、バックエンドで外部ベンダーとの複雑な統合が必要になりました。Pactflow を使用したコントラクト テストにより、チームは仮定が正しいかどうかを検証することができました。


Pactflow 製品に関するお問い合わせは、こちら


この資料は、Pactflow の Web サイトで公開されている「How hypergrowth FinTech, M1 Finance rapidly rolled out contract testing with Pactflow.」の日本語参考訳です。

1 https://www.finextra.com/newsarticle/38459/m1-finance-raises-150m

タイトルとURLをコピーしました