@hihihiroroのLog

ダラダラと。本ブログは、個人の意見であり、所属会社とは関係がありません。

「DXを成功させる データベース構築の勘所」を読んだ

データ基盤の設計パターンが紹介されていたクラウドでデータ活用! データ基盤の設計パターンの続きにあたるらしいので読んでみた。

以前に読んだ際の感想はこちら。

hihihiroro.hatenablog.com

前書では設計パターンが紹介され、本書ではデータベースサービスの説明が細かく書かれている。
本書の目次はこちら。

第1章 DXの要、変わるデータ基盤
 1-1 変わるDB構築の考え方
 1-2 DXのためのDBクラウド移行
 1-3 クラウドDBサービス
第2章 実践、データ基盤構築
 2-1 Amazon Aurora
 2-2 Azure SQL Database Hyperscale
 2-3 Amazon Redshift
 2-4 Azure Synapse Analytics
 2-5 Google BigQuery
 2-6 Oracle Autonomous Data Warehouse Cloud
第3章 NoSQL データベース
 3-1 NoSQLデータベースの種類
 3-2 Amazon DynamoDB
 3-3 Azure Cosmos DB

本書では2章以降で具体的なデータベースサービスが紹介されている。紹介されているクラウドとしてはAmazon Web ServicesMicrosoft Azure、Google Cloud、Oracle Cloud Infrastructure から代表的なRDBやデータ分析に使いやすいDWH、それ以外にもNoSQL データベースについても紹介されている。それぞれのサービスの違いについても本当に軽くだが書いてある。
クラウドのデータベースは使いやすいが、目的に合わせて選ぶことが一番大事なんだと思う。そこの情報を得る最初としては読みやすい本なのではないかと思った。ただでさえ最近はサービスがたくさんあるので。。。

第1章ではデータ基盤はクラウドで作ることが良いことの説明がされている。
初期構築ではなくすでにあるデータ基盤を移行する説明もされている。オンプレからクラウドに移行する「リフト」、最適化サービスへの移行である「シフト」が説明されている。これらの用語は他の本でも見かけるので一般用語なのだろう。覚えておこ。

まとめ

  • 触ったことのないサービスについて学ぶことができて面白かった
  • 現在自分たちが使っているサービスが最適なんだっけかと見直しを行おうと思った
  • 現状のサービスをもっと良くしていくための情報を探そうと思った

「基礎から学ぶ Terraform」を読んだ

本屋にふらったと立ち寄ったら売っていたので、Terraform の基本の勉強しなおそうと思って買った。 

CHAPTER 01 Terraform の概要
CHAPTER 02 小さく始めるTerraform (チュートリアル)
CHAPTER 03 Terraform のコマンド
CHAPTER 04 Terraform の構成要素
CHAPTER 05 Monitoring as A Code (Datadog)
CHAPTER 06 Terraform Cloud
CHAPTER 07 Tips

Terraform とIaC の説明から始まっている。
本書ではAWS のリソースをいじることが説明されているのでCHAPTER 2 以降はAWS のプロバイダを使っての説明がされている。CHAPTER 5 ではモニタリングをTerraform で管理するためDatadog のプロバイダについて説明されていた。
CHAPTER 3ではTerraform のコマンドについて説明がされている。使ったことのないコマンドも記載されていたので試してみることができた。

CHAPTER 2 とCHAPTER 4 ではAWS のリソースを作成しながらTerraform の要素について順番に説明している。それ以外ではtfstate の保存方法についてなども記載されており実際に使用する際に気をつけるべきことが紹介されている。
CHAPTER 6 ではTerraform Cloud を利用している例が紹介されている。Terraform Cloud を利用してEC2 を構築するまでが紹介されている。アカウントを作成し、tfstate の管理やワークフロー、設定についても説明がされている。少しだけ触ったことがあるが自分で管理するものが少なくなるのでたしかに使いやすかった。

CHAPTER 7 ではtfenv やdirenv を利用してのバージョン管理について紹介されている。バージョンアップを試すことがよくあるのでバージョンを変えて試すことができるのはとても助かる。また、パスワードやクレデンシャルの管理についても説明されている。
しかし、このあたりは実行基盤によって正解が変わるものだと思うので知識として学んでおくのが良いのだろう。自分たちの環境にあわせたやり方を考えれるようになっておくのが大事だと思う。

まとめ

  • Terraform についての説明がまとめられている
  • モニタリングもコード化しておくのは良いのだろうなと思った
  • AWS についての本は多いけどGCP での参考例が載っている本は少ないな

「GCPの教科書Ⅲ【Cloud AIプロダクト編】」を読んだ

続きが出ていたので読んでみた。
Google Cloud の基本的なサービスをまとめた1冊目、コンテナ機能についてまとめられた2冊目に続いてAI プロダクトについてまとめられた3冊目となっている。
本書の目次は以下。

第1章 GCP のAI について
第2章 機械学習 API
第3章 AutoML 概要
第4章 AutoML (視覚系)
第5章 AutoML (言語系)
第6章 AutoML (テーブルデータ・Edge)
第7章 BigQuery ML
第8章 AI Platform (Part 1) 〜準備・基礎編
第9章 AI Platform (Part 2) 〜パイプライン活用編

今回はGoogle Cloud で用意されている各AI プロダクトについての説明がされている。
Google Cloud におけるAI プロダクトとして大きく3つが紹介されている。

  1. AI ビルディングブロック(機械学習API / AutoML)
  2. BigQuery ML
  3. AI Platform

用意された仕組みを使って機械学習を行うプロダクト、一から自前で構築することもできるプロダクトなどが紹介されている。その時々で使いやすいプロダクトを選ぶことができるのはとても良いなと思っている。データを集めて使いやすく提供することを目指してやっているが集めるだけではなくデータを使いやすくするためのことを考えなきゃいけないなと思っていたので、どんなプロダクトがあるのかと値段や簡単な使い方について説明されているので勉強になった。

それぞれのAPI の使い方や使いみち、似ているプロダクトについての比較、使い分けについても少しだけだが書かれていた。使ってみたこと無いものが多かったので実際に試してみることができたので楽しかった。これらの中でうまくユーザに使いやすく提供できるものがないか今後も試していってみたいと思う。

まとめ

  • Google Cloud のAI プロダクトについて勉強できた
  • API をそれぞれ試すことができたので楽しかった
  • これらのプロダクトをうまくまとめれると面白そうだな

「エンタープライズのためのGoogle Cloud クラウドを活用したシステムの構築と運用」を読んだ

仕事ではGoogle Cloud を使うことが多々ある。
本屋で見かけたので興味が出たので読むことにした。

目次は以下。

CHAPTER 1 Google Cloud の概要
CHAPTER 2 アカウント設計
CHAPTER 3 セキュリティ設計
CHAPTER 4 ネットワーク設計
CHAPTER 5 プロダクト設計
CHAPTER 6 監視・運用設計
CHAPTER 7 移行設計
CHAPTER 8 Google Cloud を用いたエンタープライズシステム (クラウド移行プロジェクトの例)

プロダクトについて説明されている本がたくさんある中、本書はエンタープライズでの利用を想定した際に必要となる設計要素が説明されている。こういった問題を解決するのはどのプロダクトが良いとかの書き方ではなかった。Google Cloud を使ってサービスを運営していくために、必要な設計について考慮すべきことが記載されていてとてもおもしろかった。
普段プロダクトについての勉強をすることはあるが動かすときに権限がどうとか、アカウント管理どうするかなど気になることがあるがそのあたりについてはあまり書かれてないことが多い。その際に調べることが多くあったのだが本書ではエンタープライズ環境でGoogle Cloud を使う際に気をつけるべき設計の話が細かく書かれている。アカウントやネットワークなど自分で設計をしなければいけなくなった際にするべきこと、気にすべきことがアカウント、ネットワークなどについて章分けをして解説されている。

CHAPTER1 では、クラウドの説明とGoogle Cloud のプロダクト紹介がされている。

CHAPTER2 は、Google Cloud のリソース管理および権限管理を中心としてのアカウント設計のポイントについて書かれている。請求周りにも書かれており勉強になる。自分で使う限りではロールや権限については考えることが多いが、組織や請求については考えることが少なかったので読んでいて理解が深まった。ベストプラクティスも書かれており今後自分で設計することがあったら参考にしようと思った。

CHAPTER3 のセキュリティ設計ではオンプレミスで守られているセキュリティをGoogle Cloud で実践するためのGoogle から出ているホワイトペーパーの紹介が多数されている。ファイアーウォールやパケット解析の仕方、鍵管理や暗号化など普通に必要な機能を実装するためのプロダクトや方法がそれぞれ紹介されている。こちらも自分で1から設計したことない範囲なので気になる分野であった。VPC Service Controls が勉強会などで紹介されることが増えていると思っていたので気になっていたので詳しく解説されていて良かった。このあたりは複数プロジェクトなどで実装する際にまた色々載ってないことで嵌りそうだなと思う。
監査ログを取得はしているがうまく使えていないなと思っていたので、うまく活用したいと思う。アクセスだけではなくどれだけ自分たちのシステムが利用されているかもうまく出したいし、ログの種類や出ている内容についてはちゃんとドキュメントを読み込もうと思う。

CHAPTER 4 は本書でも1番ページが割かれている章になっている。クラウドを利用する上でネットワークはよくはまるポイントの一つとなることが多い。そのたびにネットワークの勉強をしなければと思いながらも手が出せずにいる。ここではVPC の設計方法が書かれており、作られたVPC への他VPC やオンプレミスからの接続方法についての説明がされている。このあたりのどのネットワークを使って通信しているかなどはわからないことが多かったので面白かった。また、ユースケースやベストプラクティスも紹介されているため自分の環境がどうなっているのか再度確認してみようと思った。

CHAPTER 5のプロダクト紹介ではコンピューティングとストレージ/データベースのプロダクトについてスケーラビリティ、可用性やバックアップセキュリティなどの観点から紹介がされている。同じようなプロダクトでも設計思想が違うため利用目的に合わせたプロダクトを選べるようにならないとなと思った。使ったことのないものはあまり無いが長期使っているものは少ないので比べるときの観点として今後も参照したい。

CHAPTER 6 で紹介されている監視・運用設計はやりたいことだった。ここで使われているプロダクトを利用はしているけどちゃんと使いこなしているかと言われると考えることがある。何か問題が起きた際に調べることなどはできるが、安定稼働しているかやサービスレベルを決めての確認などはできていない。監視・運用がされていることによってサービスの成長に必要なものが洗い出せるのだと思う。ここをないがしろにしている訳にはいかないので、本書の設計思想通りできていない部分に関しては改善を加えていこうと思う。

CHAPTER7 とCHAPTER8 ではリフト&シフト、リフト&最適化、改良、再構築の4つの移行パターンが紹介されている。またサーバ、ストレージ、データベースなどの移行方法についても説明がされている。それらの中から自分のシステムにあう移行パターンと方法を選べるようになってサービス影響を出すことなくクラウド移行する設計ができるようになりたいと思った。

まとめ

  • Google Cloud の設計要素についての説明が読めて面白かった
  • プロダクトの説明ではなくサービス運営に必要な設計について書かれているのは他の本とは違うなと思った
  • 自分のプロダクトで思想とずれていたりできていないことを洗い出して修正してみようと思った

「モノリスからマイクロサービスへ」を読んだ

今更だが気になっていたので読んでみることにした。

目次は以下。

1章 必要十分なマイクロサービス
2章 移行を計画する
3章 モノリスを分割する
4章 データベースを分割する
5章 成長の痛み
6章 終わりに
付録A パターン一覧

最初からマイクロサービスを作るのも難しいが、古から動いているモノリスのサービスをマイクルサービス化するのもとても難しい。本書ではマイクロサービス化するために必要な移行について書かれている内容となっていた。具体例が書かれてるので読みやすい内容だった。

1章ではマイクロサービスの概要が説明されている。ここではマイクロサービスがどのようなものかの説明だけではなく、なぜマイクロサービスが必要になるのかについての考え方についても記載されている。マイクロサービスにすることでの問題点についても記載されていた。この章でマイクロサービスの歴史の学び直し、マイクロサービスのメリット、デメリットについて学べた。

2章ではマイクロサービス移行を考えるガイドラインが示されている。ここではマイクロサービス化することが適切な選択かを判断する際の重要な3つの質問が載っている。

  • 達成したいことは何か?
  • マイクロサービスの他に代替案はなかったか?
  • どうすれば移行がうまくいってるか分かるだろうか?

マイクロサービスを選択する、マイクロサービスが悪い結果になってしまうことについても説明されている。そのなかでもサービスのドメインが不明瞭な時や、もっともな理由が無いときはマイクロサービス化をするべきではないというのは納得感があった。マイクロサービス化をすすめるにしても、分解しやすいことだけをもって選ぶのではなく分解による利益についても考えるべきと紹介されている。マイクロサービス化する際にも何を目的とするかを考えながらする必要があると思った。

3章と4章ではサービスの分割、データベースの分割について使えるパターンが説明されている。古いサービスと新しいサービスを共存させつつ置き換えていくパターンや抽象化によるパターンなど新しい実装を試して駄目だったら切り戻すパターンの紹介や、古いサービスと新しいサービスを同時に実行するパターンも紹介されている。
また、データベースの分割についてもいくつかのパターンが説明されている。紹介されていたのは、データベースを分割せずに工夫するパターンとデータベースを分割するパターンだった。トランザクションが絡む部分の修正はマイクロサービス化に関係なく難しいのだから、マイクロサービス化も含めればそれは難しくなるだろうと思った。
本書で紹介されているパターンは付録A パターン一覧でざっと紹介されている。マイクロサービス移行をする際に使える手法をパターンとしてまとめられているので何度も読み直したいと思っている。

5章ではマイクロサービスが引き起こす可能性のある問題がいくつか紹介されている。それぞれの問題に対して、いつ起きるか、解決するためにはなにがあるかが紹介されている。個々の考え方を元に他の問題についても考えていけると良いと思った。

普段はデータ基盤についての仕事をしているが、最近はデータについてもモノリスなデータ置き場から分散したデータ置き場への変更が起きているように思える。その際にはアプリケーションと同じ問題が起きるのだろう。データに関しても最近はアプリケーションと同様にテストの話なども出ているし、早めに分散化についても勉強をしておこうと思う。

まとめ

  • マイクロサービス化を目指すときの指針を学べた
  • マイクロサービス化する際の方法をパターンとして学べた
  • ドメイン駆動という言葉から逃げ続けていたがそろそろ向き合う頃かもしれない

「実践的データ基盤への処方箋」を読んだ

輪読会に参加して発表をしてきた。ようやくそれ以降の内容も読み終えることができたのでブログにしてみた。
輪読会に参加した内容はこちらに書いている。

hihihiroro.hatenablog.com

本書の目次は以下。
1章ではデータ生成から活用までの流れが説明されている。データが出来上がるところから、データを貯める場所をどう整備するか、貯めたデータを使うための役割やサービスレベルについての説明がされていてる。
2章では生成されたデータをデータ基盤へ集めるための技術的な話がされている。複数のデータ収集元からデータを収集する方法が具体的に説明されておりとてもよくまとまっている。
3章はデータ基盤を活用するための組織や人材についての説明がされている。それ以外にも、セキュリティや権限管理、データサイクルなどデータ取り扱いについて注意するべきことが書かれている。

第1章 データ活用のためのデータ整備
 1-1 データの一連の流れを把握し、入り口から出口までを書き出す
 1-2 データの品質は生成元のデータソースで担保する
 1-3 データが生じる現場を把握して業務改善につなげる
 1-4 データソースの整備ではマスタ・共通ID・履歴の3つを担保する
 1-5 データレイク層の一箇所にデータのソースのコピーを集約する
 1-6 データウェアハウス層では分析用DBを使って共通指標を管理する
 1-7 共通指標は本当に必要とされるものを用意する
 1-8 特定用途に利用するデータマートはユースケースを想定してつくる
 1-9 ユースケースを優先的に検討しツールの整備を逆算する
 1-10 データの調査コストを減らすためにメタデータを活用する
 1-11 サービスレベルを設定・計測して改善サイクルにつなげる
 1-12 データ基盤の品質を支えるデータスチュワードの役割を設ける
第2章 データ基盤システムのつくり方
 2-1 一般的なデータ基盤の全体像と分散処理の必要性を理解する
 2-2 データソースごとに収集方法が違うこと、その難しさを理解する
 2-3 ファイルを収集する場合は最適なデータフォーマットを選択する
 2-4 APIのデータ収集では有効期限や回数制限に気をつける
 2-5 SQLを利用したデータベース収集ではデータベースへの負荷を意識する
 2-6 データベースの負荷を考慮したデータ収集では、エクスポートやダンプファイル活用を視野に入れる
 2-7 更新ログ経由のデータベース収集はデータベースの負荷を最小限にしてリアルタイムに収集できる
 2-8 各データベースの収集の特徴と置かれた状況を理解して使い分ける
 2-9 ログ収集はエージェントのキャパシティに注意
 2-10 端末データの収集は難易度が高いためできるだけ製品を利用し無理なら自作する
 2-11 ETL製品を選ぶポイントは利用するコネクタの機能性とデバッグのしやすさ
 2-12 データレイクでは収集したデータをなくさないようにする
 2-13 データウェアハウスには抽出や集計に特化した分析用DBを採用する
 2-14 分析用DBはクラウド上で使い勝手が良い製品を選ぶ
 2-15 列指向圧縮をりかいして分析用DBが苦手な処理をさせないように気をつける
 2-16 処理の量や開発人数が増えてきたらワークフローエンジンの導入を検討する
 2-17 ワークフローエンジンは「専用」か「相乗り」かをまず考える
第3章 データ基盤を支える組織
 3-1 アセスメントによって組織の現状を客観的に把握する
 3-1 組織の状況に合わせて組織構造を採用する
 3-1 データ組織の成功に必要な要因を理解する
 3-2 データ組織を構成する職種と採用戦略の基本を押さえる
 3-3 データ活用とセキュリティはトレードオフの関係にあることを理解する
 3-4 組織の利益となるデータのセキュリティポリシーとそのセキュリティ基準を決める
 3-5 適切な権限設定とリスク管理方法を定める
 3-6 データ利用や権限管理などの運用ルールをドキュメント化する
 3-7 担当、見直しサイクル、判断基準を決めてデータやツールの棚卸しを定期的に行う
 3-8 不正アクセスに備えてデータ保護や匿名加工技術を適用する
 3-9 監査では評価方法を理解して客観性を担保する

1章ではまずデータ生成からデータが利用されるユースケースまで順番に説明されている。データ基盤としてよく説明されるデータレイク層、データウェアハウス層、データマート層の3層構造についての説明がある。また、データ生成元のデータ品質によって活用にどれだけ影響があるかという話がされている。データをどこに貯めておくかというのは運用していると確かに気になることではある。うまく設計できてないとDWH の移行などの際にデータの移動を大量に行わなくなってしまうことなどもあるし、他のアプリケーションから使いにくいものになってしまう。
また最近よく見かけるようになったデータスチュワードの役割の説明、そしてデータスチュワードの必要性や課題などについて説明されている。データ基盤に限らず基盤は使ってもらわないことには価値が出せない。そのために活用の推進を行っていく役割はとても必要だろうなと思う。

2章ではファイル、API、データベース、ログや端末からの情報など複数のデータソースから収集する方法が説明されている。技術に関してはデータエンジニアをやっているとよく知っている内容になっているが体系的にまとまっているので復習するにはとても良かった。また、他の人と話す際にはこちらでまとまっている内容を見せることで簡単に説明できると思った。
後半のETLツール、分析DB、ワークフローエンジンなどを選ぶ基準についての話は読んでいて面白かった。クラウドをまずは選ぶやデバッグしやすいものを選ぶというのも納得感がある。そしてエンジニアが少ない組織についても書かれていた。その他にも分析DBのメリット・デメリットも説明されている。このあたりを知っていることによって考えれる幅は増えるだろうなと思っているので勉強になった。
また、連携方式にしろツールにしろパターンはいくつかあると思うが、絶対の正解はないのだろう。本書で紹介されている知識を身に着けておくことによって適材適所なものが選べるようになる可能性があると思う。その場にあわせて選べるように知識は身につけておきたいと思った。

最後の章ではデータ活用のための組織について書かれている。データ活用熟成度のアセスメントとして以下の5つのレベルが紹介されている。

  1. レベル1 : データ活用の初期段階で、属人的にデータが活用されている
  2. レベル2 : データ活用プロセスに最低限の統制がとられ、再現可能である
  3. レベル3 : データ活用における基準を設け、それが守られている
  4. レベル4 : プロセスを数値化し、モニタリング・管理できている
  5. レベル5 : プロセス改善のゴールを数値化し、それを向けた数値化に取り組んでいる

ここに書かれているようにレベルをどんどん上げれるようにしていきたい。まずは今の自分達がどこのレベルにいるかを知るように使いたいと思う。今の状態がわからないと次に目指すものもわからないので、現状の組織がどこまでできているかをまずは調べてみようと思う。

また、データ組織に必要な要因として以下の10個が紹介されている。

  1. 幹部からの支援
  2. 明確なビジョン
  3. 前向きに取り組むべきチェンジマネジメント
  4. リーダーシップ統制
  5. コミュニケーション
  6. ステークホルダーの関与
  7. オリエンテーションとトレーニン
  8. 導入状況の評価
  9. 基本理念の遵守
  10. 革命ではなく進化

これらについて説明がされているので必要なものがなければ今からでも取り入れなければなと思った。必要なものはたくさんあるのでまずは1個ずつ手に入れていくことを考えようと思った。

人材の確保や役割の説明、データ自体やデータ基盤のライフサイクルについては自分でも考えなければいけないなと思っている。最近データ人材が集まっているSlack に入っているが参加人数がどんどん増えている。あれだけ人がいるのならばどうにかうまく採用を行いたい。
それに、使われていないデータがいつまでも残っていると間違った分析を行うことになったり、無駄なロジックをたくさんのものに適用するなど運用も増え続けることになってしまう。使われなくなったデータも基盤もきれいにしていきたいと思う。

まとめ

  • ふむふむなるほどねと納得する内容ばかりだった
  • データ基盤に関する知識が体系的にまとまっていたので復習になった
  • 用語、アーキテクチャ、考え方をチームメンバで本書をもとに揃えてみたいと思った

「実践的データ基盤への処方箋」の輪読会に参加した

データ基盤の活用についてまとまっている本の輪読会があることを見つけた。
どうせ読むんだしせっかくだから発表をしてみようと思って参加してきた。本についての感想はこのあと全部読んだら書こうと思う。

僕は2-5 〜 2-8 が担当でした。担当内容は以下。

2-5 SQL を利用したデータベース収集ではデータベースへの負荷を意識する
2-6 データベースの負荷を考慮したデータ収集では、エクスポートやダンプファイル活用を視野に入れる
2-7 更新ログ経由のデータベース収集はデータベースの負荷を最小限にしてリアルタイムに収集できる
2-8 各データベース収集の特徴と置かれた状況を把握して使い分ける

データソースのデータベースからデータ基盤へデータを連携する方法についての部分が担当でした。
実際に発表で使ったスライドは以下。

speakerdeck.com

普段行っている仕事との関わりもあり、素直にそうだよなと思いながら読んでまとめることができた。
触ったことのない更新ログなどについては試してみたいと思ってはいるが今の所チャンスには恵まれていない。
発表したあとに実際聞いている人の現場ではどうなのかやどういったツールを使っているか、試してみたことの共有、失敗談などを聞けてとても面白かった。

発表した場所は datatech-jp というコミュニティになる。
datatech-jp は418名もいる*1、データエンジニアリングやデータ活用の知見を共有できたり、今回みたいな輪読会を行ったりしていてとても活発に活動されているコミュニティである。
困っていることを相談できるし、雑談もできるしとても楽しい場所で作っていただいた方々に感謝しています。
気になる方は以下から参加できると思うのでぜひ入ると良いと思います。

join.slack.com

発表をしようと思うと真面目に内容を勉強するし、頭の中も整理されるので良かった。
また機会があったら参加してみようと思った。

*1:2022/02/03 23:20 現在