SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

「EuroSTAR 2018」レポート

ビッグデータ、マイクロサービスにおけるテストの変化とは【EuroSTAR 2018】

「EuroSTAR 2018」レポート 第2回

100を超えるマイクロサービスをテストする

 次にご紹介するのは、CloudBees社のIsa Vilacides氏による「Testing In The Hundred Microservices World: When The Pyramid Becomes An Hourglass」です。モノリシックなシステムがマイクロサービス化されていく中で、氏が学んだことが紹介されていました(執筆担当:藤原大)。

 モノリシックなシステムと、マイクロサービスのような分散型システムにおけるエンドツーエンドテストを比較してみましょう。モノリシックだとテストは遅く、信用性も低く、メンテンナンスやデバッグも難しいですが、システムが大きく1つなのはシンプルです。

 一方で、マイクロサービスの場合、モノリシックとほとんど同じ悩みを持ちますが、たくさんのサービスが存在する分、複雑になりがちです。

 ユニットテストやインテグレーションテストを見てみましょう。こちらは大きく違いが見えます。

  • モノリシックだとテストは速く、マイクロサービスだとそれほど速くならない
  • モノリシックだと信頼性は高いが、マイクロサービスだとそれほど高くならない
  • メンテナンスやデバッグはどちらも同じぐらい簡単
  • テスト自体は開発環境などにおける仮想的なテストとなるが、マイクロサービスの場合、モックを用意するなどの対応が必要

 こうやって比べてみると、改めてマイクロサービスのテストのしにくさが見えてきます。

 このため、PACT(Consumer-Driven Contract testingを実現するためのツール)などを活用しながら、それぞれのマイクロサービスの独立性を高め、すばやいフィードバックを実現していく必要があります。

 さらに、時代とともにアーキテクチャが大きく変わっていくため、テストピラミッド(テストを作っていくためのコンセプトの一つ)も再考が必要だと氏は語ります。

 まず氏が考えたのは本番でのテストです。このセッションの説明では、

  • 開発環境でのテスト
  • 内部からのみアクセスできる本番環境でのテスト
  • 本番環境でのテスト

と環境を分け、それぞれで問題が起きたときにすぐに戻せるようにデプロイプロセスを設計します。そのための技術としては、

  • 機能を有効/無効にするためのスイッチ(Feature flags)
  • 機能を徐々に公開していく仕組み(Canary rollouts)
  • 開発者やその関係者が日常的にアプリやサービスを利用する(Dogfooding)

が有効です。その結果、テストピラミッドは以下のような形になっていくと考えられます。

 まったく別のセッションでも「本番におけるテスト」が議論されていました。本番でのテストという概念は、新しいものではありませんが、マイクロサービスやDevOpsといった時代背景の影響なのか、再注目されているように感じます。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
「EuroSTAR 2018」レポート 連載記事一覧

もっと読む

この記事の著者

EuroSTAR 2018レポートチーム(ユーロスター2018レポートチーム)

岡本 明 アクセンチュア株式会社 テクノロジーコンサルティング本部 シニアマネージャー 千葉真弓 アクセンチュア株式会社 テクノロジーコンサルティング本部 シニアマネージャー 藤原 史和 楽天株式会社 サービス品質保証グループ マネージャー 米山 允章 株式会社メルカリ QAエンジニア 藤原...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/11226 2018/12/03 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー