LoginSignup
0
0

More than 5 years have passed since last update.

ベンチマーク報告のテンプレート

Posted at

コミュ障の僕に「なぜ僕の説明は伝わらないのか」を教えてくれた書籍『ソフトウェアシステムアーキテクチャ構築の原理 第2版』の内容が、ベンチマーク報告にも適用できそうなことに気づきました。

本に記載されているような観点にそって記載していくことで「漏れなく分かりやすい記載」になると考え、ベンチマークレポートのテンプレートを考えてみました。


テンプレート:

はじめに、検証概要

..

検証環境

(『ソフトウェアシステムアーキテクチャ構築の原理 第2版』における配置ビュー、情報ビュー、開発ビューのようなものを記載します)

リージョン、マシンスペック、構成

例:

  • Athena

    • オレゴン
  • Redshift

    • オレゴン
    • dc2.large
    • ノード数 (1ノード, 2ノード, 4ノード, ..)
  • Spark

    • オレゴン
    • c4.xlarge
    • コアノード数 (1ノード, 2ノード, 4ノード, ..)、マスターノード数:1

データフォーマット

例: 検証では下記のようなフォーマットのログのダミーデータを使用。データサイズは1レコードあたり xx バイト。

log_record
{
  "id": "0dbe3c-db77-5984-b5ba-c964ae7a",
  "time": 1490123456789,
  ...
}

データのバリエーション

例:

  • 入力データのサイズ(1時間分, 2時間分, 4時間分, ..)
  • 入力データ形式: JSON, Parquet, CSV, ..
  • 圧縮の有無: gz, snappy, ..
  • sort key / dist keyの工夫

データのフロー、ライフサイクル

ベンチマーク対象のサービスがどのようにデータを取り扱うかを記載。

例:

  • Athenaを使う場合

    • S3からJSON/Parquet/... のデータを読み込み、SELECT結果をS3に書き出す。
    • 現在の出力はCSVのみのようで、自作ツールなどでParquetフォーマットへは変換が必要。
  • Redshiftを使う場合

    • Spectrum層により、S3上のParquetファイル等を外部テーブルとして扱える。
      • Spectrum層がS3からデータを読む場合は、事前にAthenaなどでテーブルを定義しておく必要がある(Hiveメタストアを共有)。
      • JSONテキストファイルの読み込みはまだのようで、Spectrum経由で読めるようにParquet形式に変換するツールが必要。
    • SELECT結果を保持する場合はRedshiftローカルのテーブルとして保持。
      • 不要になったデータはUNLOADによりS3上にCSV/TSVで書き出し。
  • Sparkを使う場合

    • S3から JSON/Parquet/.. のデータを読み込み、SELECT結果をメモリ上に保持。各種フォーマットでS3への書き出しも容易。
    • JSONの読み込みやParquetへの変換、Parquetでの書き出し、JOIN等がすべてSparkのジョブとして定義できるため開発が容易。

内部動作の補足

(『ソフトウェアシステムアーキテクチャ構築の原理 第2版』の機能ビュー、並行性ビューなども絡めて記載)

補足があれば。

パフォーマンスとスケーラビリティの比較

レイテンシー測定

例: 下記クエリで検証。

JOINクエリ
SELECT .. ;

SELECT/JOIN/Aggregate処理をログのデータサイズを変えて測定。
10回の試行の中央値を記載。timeコマンドでコマンド実行開始から終了までを測定。

データサイズ 実行時間(1ノード) 実行時間(nノード)
1 時間分 xx 秒 yy 秒
2 時間分 xx 秒 yy 秒
4 時間分 xx 秒 yy 秒

可用性とレジリエンスの比較

各種サービスの可用性(ダウンタイム)、コールドからの起動やクラスタ作り直しにかかる時間について記載。

例:

  • Athena
    • フルマネージドのためダウンタイムなし、起動・環境再構築にかかる時間なし。
  • Redshift
    • 定期メンテあり。クラスターの作り直し時などはデータの再ロード(+データ処理の再実行)など必要。
  • Spark
    • フルマネージドでなくマスターノードが単一障害点の懸念あり。ただクラスタ内部にはデータを持たないため作り直しは容易。

運用の観点で比較

障害復旧・アラート、データ量の増加等にどのような手順で対応するかを記載。

発展性の比較

要件変更に対してどのくらい柔軟か、SQLの豊富さ、海外対応しやすさ(通貨、時差など)など

例:

  • Athenaはお手軽だがインタラクティブシェルでの分析用のイメージ
  • Redshiftは複雑な分析が得意そうなイメージ
  • Sparkはスキーマレスのままいろいろなデータをあつかいやすそう

セキュリティの比較

..

コストの比較

(『ソフトウェアシステムアーキテクチャ構築の原理 第2版』では取り扱ってないがクラウド時代のベンチマークでは必要そう)

例えば1ヶ月あたりいくらになるかを記載(どのサービスを何時間実行した場合の計算なのか)。
請求画面に表示された額で答え合わせすると安心。

Athena

例: データの読み込み課金のため、読み込み量が多くなると料金も上がる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0