この記事について
社内のデータベースや基幹システム(以下データソース)には、分析して活用する事で、既存ビジネスのパフォーマンス向上や、新たなサービスの創造につながるデータが散逸している可能性があります。
それらのデータを目的に合わせて再構成し、データ・ドリブンに意思決定をしていく為には、様々なデータソースから上がってくるデータを情報資産として蓄積・活用するための データウェアハウス(以下DWH) が必要となります。
この記事では Google Cloud Platform(以下GCP) の各種サービスを活用して、既存ビジネスに貢献する為の「データ収集・分析基盤」のアーキテクチャ構築する方法を解説します。
完成イメージ
まずは完成イメージの説明です。
バッチ・ストリーム両対応で安全性とスケールを担保した BigQuery 中心の DWH アーキテクチャです。バッチ・ストリームの両方に対応しており、用途に応じて接続するデータソースを追加していける仕組みになっています。
A. クローズドネットワークとGCPネットワークの接続
社内ネットワークやデータセンターなど、クローズドネットワークに存在するデータソースに安全にアクセスする為、 Google Cloud Interconnect または Cloud VPN を使って、GCPネットワークと社内ネットワークを接続します。
B. データのバッチ取得
対象のデータソースから必要なデータを取得する為、大量データの転送に適したオープンソースのミドルウェア「embulk」を実行するサーバー群です。
複数人での運用を考慮し embulk は Dockerコンテナ化。Kubernetes Engine に構築したクラスタ上で実行します。Dockerfile はGithubで管理され、リポジトリへのプッシュを検知すると Container Registry の Build Trigger によって自動的に Cloud Build がコンテナを作成。Kubernetes Engine にデプロイします。
冪等性を担保する為、取得したデータは全て Cloud Storage に蓄積します。
C. Amazon S3からのデータ取得
既に Amazon Web Service(以下AWS) で何らかのシステムを構築している場合は Cloud Storage のネイティブ機能で提供されている「Cloud Storage Transfer」を使って、定期的に S3 から Cloud Storage にデータを転送する事が可能です。
D. データ取得イベントの検出
「2. embulk」や「3. Cloud Storage Transfer」により Cloud Storage にデータが保存された時、そのイベントを Cloud functions が検知し Cloud Dataflow が自動的に実行されます。
E. ストリームデータの取得
IoTデバイス や POSレジ Webサーバー のアクセスログなど、リアルタイムに発生するストリームデータを素早く収集して分析したい場合は Cloud Pub/Sub を利用します。
Cloud IoT Core や Compute Engine 等から取得したデータは一時的に Cloud Pub/Sub に保存され Cloud Dataflow に引き渡されます。
Cloud Pub/Sub はシンプルなAPIが公開されており POSレジ や 店舗のセンサー など、独自システムからのリアルタイムデータの収集も用意に実現する事が可能です。
F. データの加工・BigQueryへインサート
システムに溜まっている生のデータ(以下RAWデータ)は往々にして重複やノイズが混ざっています。それらのRAWデータを分析に適した形式に変換する為、 Cloud Dataflow に集約し、適切に加工した上で BigQuery に保存します。
大量のデータを加工する為には多くのマシンリソースを必要としますが Cloud Dataflow を利用する事でデータサイズに応じたサーバーが自動的に選択され、短時間でのデータ変換が可能になります。
G. データの活用
BigQueryに蓄積したデータは Google Data studio や tableau 等の様々なBIツール、 BigQuery ML や Tensor Flow 等の機械学習ライブラリを利用して活用することが可能です。
具体的な活用方法については、この記事の範囲外なので、ここでは解説はしません。
次のステップ
- VPCの作成
- Cloud VPNの設定
- Kubernetes Engineにembulkコンテナをデプロイ
- Cloud Storage のファイル検出用 Cloud Functions の設定
- Cloud Dataflow の設定
※この記事は作成途中です。反応が良ければ続きを書こうかなと思っています。 2018/12/30