プログラマでありたい

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

データ分析基盤の薄い本を書きました

 AWSの薄い本のシリーズとして、データ分析基盤の薄い本を書きました。2021年6月19日に開催された第5回技術書同人誌博覧会で頒布も行っており、Boothでの販売もはじまっております。

f:id:dkfj:20210624002918p:plain

内容

 前2作は、IAMとアカウントセキュリティという同一テーマを題材としておりました。今回は、少し趣向を変えてデータ分析基盤の設計の考え方をテーマとしております。また前2作は、ともに100ページ超えと技術同人誌としては少し分量が多かったのですが、今回は50ページくらいに抑えております。そのページ数なので網羅的には書けないので、設計の考え方に絞っています。また、設計のすべての要素を挙げるというより、自分がデータ分析基盤を作る上で何を考えているのか、ポイントを絞って書いています。今まで少し気負って書いていたのですが、今回は好きなように書かせて頂きました。お陰で執筆時間は、おそらく過去最小です。

構成

 構成としては7章構成ですが、最後の7章はとってつけたまとめなので実質的には6章構成です。1章のデータ分析の隆盛という能書きから始まって、2章のデータ分析基盤の全体像と構成要素と入っていきます。そして3章で、一番伝えたかったデータレイクとDWHの分離、データレイクの階層構造について解説しています。後は、データ分析基盤を設計する上で避けては通れない個人情報の扱いと、ETL処理、そしてアクセス制御について、それぞれ4〜6章で書いています。

 設計編ということで、具体的なサービスの設定方法については一切書いていません。またAWSのサービスとマッピングしているものの、それぞれのサービスの記述も最小限なので、Google CloudやAzureを使う人たちにも参考になるのではと思います。AWSの薄い本ではなく、単なるデータ分析基盤の設計本として出そうかと思っていたくらいです。しかし、勝手知ったるAWSとマッピングさせながら書いた方が書きやすいので、AWSの薄い本としました。

次回作

 もともと3作目は、AWS Organizationsまわりを書くと宣言していたものの、ちょっと寄り道してデータ分析本を書くことになりました。Organizationsは必ず片付けたいテーマなので、機会をみて完成させます。また自分の中でETLの実装部分について深堀りしたいというのがあるので、そちらも手を付ける予定です。データ分析基盤の実装編とすると色々書かないといけないので、ETL編くらいとして書こうかなという算段です。一方で、それでもGlueについて書くと、なかなか大作にならざるを得ないと戦々恐々としています。
 今回、50ページくらいに抑えたことで、良いペースで書けました。気分的にも楽だったので、100ページ以下のもちょくちょく書いていこうかなと思います。昔話とかうんちく話も書いてみるのも面白そうですね。

技書博について

 最初の頒布を行った技書博については、参加者としても出展者としても初参加でした。緊急事態宣言下ということもあり、参加者を大幅に絞られた中での開催でした。会場は参加者より出展者とスタッフの方が多いんじゃないかというくらいだったのですが、それはそれで良かったです。ブースに来ていただいた方々とゆっくり話せましたし、他のブースを巡って少し挨拶をすることができました。これくらいの密度のイベントもいいなぁという感想です。主催者やスタッフの方々、ありがとうございました。

まとめというか感想

 最近、忙しくて何をやっているか解らない状態でした。仕事とプライベートとも忙しく、かつ複数の本の企画が進んでいて、一つ一つが何も進んでいないというオーバーコミット状態です。そんな中で、一つの成果として薄い本を出せたのは、自分の中でも達成感がありました。いろいろ残っているものも、まとめて進めていくぞというやる気が出てきたので頑張ってみます。

booth.pm

目次

はじめに
 本書の目的
 対象読者
 本書で得られること
 本書で得られないこと
 お問い合わせ先
 免責事項

第1章 データ分析基盤が必要とされる理由
 1.1 加速するデータ活用
 1.2 ビッグデータとデータ活用
 1.3 データ分析とクラウド
 1.4 データ分析の⺠主化

第2章 データ分析基盤の全体像と構成要素
 2.1 データ分析基盤の定義と全体像
  2.1.1 データレイク
  2.1.2 ETL
  2.1.3 DWH
 2.2 データの内部構造による分類
  2.2.1 構造化データ/半構造化データ/非構造化データ
  2.2.2 構造化に伴う情報の切り捨て
 2.3 データレイク
  2.3.1 データレイクとは?
  2.3.2 AWSにおけるデータレイクサービス
 2.4 DWH
  2.4.1 DWH とは?
  2.4.2 AWSにおけるDWHサービス
 2.5 ETL(Extract/Transform/Load)
  2.5.1 ETLとは?
  2.5.2 AWSにおけるETL

第3章 データレイクと DWH のアーキテクチャ
 3.1 よくあるデータ分析基盤の課題
  3.1.1 DWHだけで運用していて自由度が低い
  3.1.2 必要最低限のデータのみ蓄積され、他の分析ができない
  3.1.3 個人情報の取り扱い方針の問題で使いにくい
  3.1.4 分析を変更するたびに、外部ベンダーに依頼する必要がある
 3.2 データレイクとDWHを分離する
 3.3 データレイクの3層構造
  3.3.1 RAWデータレイク
  3.3.2 中間データレイク
  3.3.3 構造化データレイク
 3.4 データレイクを3層構造にすることのメリット
  3.4.1 RAW データが残っているので、観点が変わっても分析し直せる
  3.4.2 中間データレイクがあると、様々な結合が容易にできる
  3.4.3 構造化データレイクに対して、直接クエリーで検索できる

第4章 個人情報と加工方法と保持戦略について
 4.1 個人情報とパーソナルデータの定義について
  4.1.1 個人情報
  4.1.2 パーソナルデータ
 4.2 個人情報の加工について
  4.2.1 匿名加工情報
  4.2.2 匿名加工の方法
  4.2.3 仮名加工情報
 4.3 データ分析基盤における個人情報の扱い
  4.3.1 個人情報の取り扱い戦略
  4.3.2 ノーガード戦略
  4.3.3 全部入り戦略
  4.3.4 全部なし戦略
  4.3.5 分離パターン戦略
 4.4 項目加工のパターンについて
 4.5 まとめ

第5章 データ加工について
 5.1 ETL処理のパターン
  5.1.1 ETL
  5.1.2 ELT
  5.1.3 データプレパレーションツール
 5.2 ELTの実装
  5.2.1 UPSERTとは?
  5.2.2 Athena における Upsert 的な機能の実装方法
 5.3 GUIによるデータ加工について
  5.3.1 データプレパレーションツール
  5.3.2 加工とデータの所在について
  5.3.3 データ加工の場所
  5.3.4 データの連携方法
  5.3.5 どのパターンが良いか?
  5.3.6 クラウド事業者が提供するデータプレパレーションツール
 5.4 データ加工のまとめ

第6章 アクセス制御
 6.1 アクセス制御の種類
 6.2 権限ベースのアクセス制御
  6.2.1 原則的に人に対して S3 へのアクセス権限を与えない
  6.2.2 バケットレベルのアクセス制限を IAM で制御すべきか?
  6.2.3 サービスやプログラムへの権限付与
 6.3 リソースベースのアクセス制御
  6.3.1 経路の限定
  6.3.2 サービスの限定
  6.3.3 SSEKMSによる暗号化を検討する
 6.4 テーブルで分離or列レベル

第7章 まとめ

あとがき
 著者紹介
 既刊一覧