プログラマでありたい

おっさんになっても、プログラマでありつづけたい

『AWSの薄い本Ⅴ データ分析基盤を作ってみよう 〜性能測定編〜』を書きました

技術書典に連続出場するために、AWSの薄い本の新刊を書きました。「AWSの薄い本Ⅲ データ分析基盤を作ってみよう 〜設計編〜」の続きの位置付けで、性能測定をテーマに扱っています


内容

 題名の通り、性能測定をテーマに扱っています。と言っても、CPUやディスクの性能、あるいはデータベースのパフォーマンスといった一番基礎的な部分を避けて、S3・Athena・Glueを対象としています。なぜ、これらのサービスを選んだのか。それは、CPUやディスクといったローレイヤーのサービスだと、AWSが公開しているスペック通りに動きます。一方で、S3やAthenaについて、どういった性能なのか知らないという人が多いようです。
 S3は、オンラインから利用するオブジェクトストレージです。その特性から来る強みと弱みがあります。AWSでデータ分析基盤を作る場合、データレイクはS3を使います。本書で述べていますが、S3は大量の小さなファイルを扱うには向いていません。なぜそうなのか、実際に測定しながら解説します。そして、そのことから導き出されるデータ配置の戦略についての考え方を解説しています。

 実際的な測定以外にも、性能測定の必要性や観点・やり方なども解説しています。AWSを使っていると性能測定した上での設計をすることは少ないかもしれません。しかし、設計に対して根拠をもった説明をするには、重要なことです。

目次

第1章 制約とアーキテクチャの決定1
 1.1 機能要件と非機能要件
  IPの非機能要件グレード
 1.2 アーキテクチャ検討へのアプローチ
  IP非機能要件グレードの性能・拡張性要件
  性能測定をして裏付けをとる

第2章 AWサービスとその特性
 2.1 Amazon Athena
  Athenaの性能特性
  Athenaの料金体系
  Athenaのそのほかの考慮点
 2.2 Amazon Simpl Storage Service (Amazon S3)
  S3の性能特性
  S3の料金体系
  S3のそのほかの考慮点
 2.3 AWS Glue
  Glueの性能特性
  Glueの料金体系
  Glueのそのほかの考慮点

第3章 性能測定の方法
 3.1 性能測定の目的設定
 3.2 性能測定をするうえで、重要なこと
  測定の目的
  測定環境の平準化
  実際の環境に近づける
  複数回の測定
  メトリクスの取得
  外部影響を最小限に
  変更との比較
  分析する
 3.3 測定ツールをどうするか
  ディスク/ファイルシステムの性能測定
  ネットワーク測定
  カスタムツールの開発
  テストツールのまとめ

第4章 サービスごとの性能測定
 4.1 Athenaの性能測定
  Athenaの検証の目的
  Athenaの検証環境
  Athenaの測定結果
 4.2 S3のデータ転送の測定
  S3の検証の目的
  S3の検証環境
  S3の測定結果
 4.3 Glueの性能測定
  Glueの検証の目的
  Glueの検証環境
  Glueの測定結果

第5章 測定結果に対する考察
 5.1 性能測定で判明したこと
  Amazon Athena
  Amazon S3
  AWS Glue
 5.2 結果に対する考察
  今回の検証で確認できたこと
  検証できていないこと
 5.3 データ分析基盤の設計への指針

第6章 まとめ
 あとがき

感想

 最近の自分の仕事では、AWSのサービスの評価をじっくりするような事は、なかなかできません。今回、本を書くためにひたすら性能測定をしていると、昔を思い出して楽しかったです。地道な検証を繰り返していると、今のCPUやディスク・ネットワークなどの基礎的なインフラストラクチャーの発展ぶりや、それを組み合わせたAWSのサービスの凄さを改めて実感できました。
 今回検証できたのは本当にごく一部ですが、この手のは今後ライフワークとして定期的にやっていきたいなと思いました。そのためにも、AWSのクーポン欲しいなぁw

takuros.booth.pm