見出し画像

データ分析基盤の作り方

こんにちは、DATAFLUCTのPlatformチームです。

「データを商いに」(datascience for everybusiness.)をvisionとして掲げるDATAFLUCTでは、膨大かつ多種多様なデータを日々取り扱っています。

Platformチームでは、データレイクを活用したプラットフォームの構築・運用を担当し、主にデータの収集、蓄積、分析基盤の構築、データの提供までを行っております。

データを扱うプラットフォームは、主に下図の階層から構築されており、今回の記事では、このプラットフォームの中で、データレイクに貯まったデータからアルゴリズムを構築するために重要となる、データ分析基盤について紹介していきます。

スクリーンショット 2020-06-18 21.22.47

データレイクの概要については既知のものとした内容となりますので、データレイクについてあまり良く知らない、という方はこちらの記事から御覧ください。

とはいえ、一言でデータ分析基盤といっても、世の中には様々な手段やツール、サービスが存在しており、これを使えばよし!というような決まったソリューションがあるわけではありません。

ですので本記事では、データ分析基盤とは何か、データ分析基盤を構築する時にどのようなことを気をつければいいか、といった内容を中心に、DATAFLUCTでの実例を交えて紹介していきます。

データ分析基盤とは

まず最初に、データ分析基盤とは、その名の通り、「データを分析するための(共通)基盤」のことを指します。

近年、「ビッグデータ」などのキーワードの流行に伴い、データを集めて分析するということの重要性は理解されつつあり、また、様々な企業で実際にデータを活用して成果を上げたという事例も多く存在するのではないかと思います。

データ分析基盤がなくともデータ分析を行い一定の成果を上げることは可能です。

ただ、データ分析の規模が段々とスケールアップするにつれて、以下のような課題が出てくることが考えられます。

チーム毎にデータが独自の進化を遂げており、他チームからはデータの実態を把握できなくなってしまっている

複数のチームで同じような集計処理を走らせてしまっている

複数のチームが保持するデータを組み合わせようとしても、データの定義が違うため、容易に組み合わせることができない

そもそも、複数のデータが別々の場所に存在するため、組み合わせようとするだけで手間がかかる

これらの課題を解決するために役立つのが、データ分析基盤です。

具体的には、データレイクを使用して、データを一元管理しつつ、データを「分析しやすい」状態に保つことがデータ分析基盤の役割と言えます。

また、データレイクを使用することで、上記課題の解決に加えて、運用コストの低下も見込めます。

例えば、ストレージのキャパシティを気にする必要がなくなったり、利用用途に応じたデータフォーマットの変換やETL処理を行うのが容易であったり、ビジネスニーズの変化や新しい分析サービスの出現などに伴う移行が容易であったりと、様々な面でデータレイクを使用した一元管理によるメリットが存在します。

データを取得してから分析するまで

では、データ分析基盤とはどういうものかという概要が分かったところで、もう少し詳細に、データ分析基盤として必要な機能を見ていきましょう。

データ分析の流れ

スクリーンショット 2020-06-18 21.24.18

データ分析基盤では、データを収集してから分析・可視化された状態になるまで、上記のような過程が必要となります。

以下、各過程の説明とともに、設計・構築にかかる期間やデータ追加時にかかる期間の目安を記載していきます。

※ 日数に関しましては、環境やデータの種類、求められる性能によって大幅に変わるので、あくまで目安としてください。

データ収集

まず最初はデータの収集です。

オンプレミス環境からのデータ移行であったり、クローリングにより収集されたデータであったり、IoTなどのリアルタイムなデータであったり、様々なデータを収集してデータレイクに集約する必要があります。

ですので、様々な環境からデータ移行を行う際にセキュリティを担保するための設計や、新しく必要とされるデータが追加された際に、素早く柔軟に対応するためのCI/CD環境の整備などの工夫が必要とされます。

【日数目安】
設計・構築:1ヶ月〜
データ追加:1週間〜1ヶ月

ETL

ETLとは、Extract :抽出、Transform :変換/加工、Load:書き出し/格納、の頭文字を取った略語で、データ統合時のプロセスを表しています。

具体的には、JSONのような半構造化データを構造化データに変換したり、データを抽出する際に最適なフォーマットに変換したりなど、データレイクに投入された「生データ」の形から、分析しやすいデータに変換することを表します。

前項でも述べたように、収集された「生データ」には様々な形式が混合された状態で存在しているため、そのままでデータを扱おうとすると、データ抽出プロセスにおける効率性や、コストにも影響があります。

ですので、ETL過程においてデータの形を整えたり、フォーマットを最適化することが重要となります。

また、ETLはデータが収集されてから使用可能な状態にするためのプロセスとも言えるので、運用の手間やデータを扱えるまでのリードタイムを出来る限り減らすよう、データレイクにデータが投入され次第自動でETLが行えるような仕組みを作るなどの工夫が大事です。

【日数目安】
設計・構築:2週間〜1ヶ月程度
データ追加:1週間程度

メタデータ管理

メタデータとは、データの目録のようなもので、どのようなデータがどこに存在しているのか、というのを表したデータになります。

データレイクに存在するデータ量は莫大なものとなるため、メタデータが管理されていないと、目的のデータにたどり着くまでに一苦労となってしまいます。

そこで、データカタログを作成し、メタデータをしっかり管理することで、ユーザーがデータを探す時に迷子にならないようにします。

スクリーンショット 2020-06-18 21.25.50

データカタログの作成には、データ自体の説明なども含まれるため、どうしても人が介入しなければならない箇所が存在しますが、データの型などを自動で検知するような仕組みを作ることで、出来る限り人の作業は減らすことができます。

データカタログについては、こちらの記事で詳細に説明されているので、よければ御覧ください。

【日数目安】
設計・構築:1ヶ月〜
データ追加:数日

データ抽出

ETLにより抽出しやすい形に整理され、メタデータによって管理されたデータは分析の際に必要な部分だけ抽出されます。

抽出方法としては、SQLが一般的かと思いますが、BIツールなどを利用すると、明示的にSQLを記述しなくても、直感的なUIでデータを抽出しそのまま可視化することができたりします。

クラウド環境では、データレイクのサービスに対応するBIのサービスを利用することで、簡単に可視化などを行うことができます。

いずれのデータ抽出手段を用意するべきかは、利用するユーザーによるため、どのようにデータが使われるかを事前に把握しそれに合わせて環境を用意した上で、必要に応じてデータ抽出の手段を増やすなどの対応ができるとよいです。

【日数目安】
設計・構築:1ヶ月〜
データ追加:数日

分析・可視化

抽出されたデータは、機械学習を用いた分析で複雑なアルゴリズムを構築したり、可視化により知見を得るために利用されます。

データの利用方法は多岐に渡ると思いますので、データ分析基盤を構築する際には、どのようなユースケースがあるかを先に定義してから、その用途に合わせた基盤を構築する必要があります。

DATAFLUCTでは、機械学習を利用したソリューションの提供を行っております。
よろしければ、ご相談ください。

【日数目安】
BIツールを利用した可視化:数日〜数週間
機械学習によるアルゴリズム構築:数週間〜数ヶ月

データ分析基盤の構築 / DATAFLUCT事例

ここからは、実際にDATAFLUCTでの実例に沿いながら、データ分析基盤を構築する際に考えるべきことを述べていきたいと思います。

DATAFLUCTでは現在、データサイエンスを用いた様々なサービスを展開していますが、データ分析基盤を構築する以前は例に漏れず、サービス毎に各々データを管理し使い方もそれぞれ別となっている状態でした。

そこで、課題を解決すべくデータ分析基盤の構築プロジェクトが立ち上がりました。

1. ユーザーのデータ利用用途を調査する

データ分析基盤を作成するにあたり、一番重要となってくるのは、「使われること」です。
たとえどれだけコストをかけて、どれだけ最先端で素晴らしい基盤を作ったとしても、使われなければ何の意味もありません。
ですので、できる限りユーザーの使いやすい形にすることが大事です。

同様の理由で現在のデータ利用の方式から移行しやすいことも重要です。
現状維持バイアスにより、今やっている作業より効率がよくなるということよりも、慣れている環境での作業を好んでしまうということも、往々にしてあり得ることだと思います。

そこでまず最初に、ユーザーは現在どのようなデータをどのようなツールを使ってどのように利用しているか、の調査を行う必要があります。

DATAFLUCTでは、データ分析基盤のユーザーとしては、第一に社内のデータサイエンティストを想定しているため、ヒアリング/アンケートによる調査を行ったところ、データ活用には基本的にAWSを利用し、その中でもAmazon SageMakerを利用した機械学習アルゴリズムの構築がメインであることが分かりました。

2. アーキテクチャの選定

次に、調査結果を鑑みてアーキテクチャを選定します。

オンプレミス環境でデータ分析基盤全体を構築することも不可能ではありませんが、以下の理由のため、クラウドでフルマネージドなサービスを利用することをオススメします。

クラウドを利用すると、分析環境の中で一番中心ととなるデータレイク部分のストレージのキャパシティを気にする必要がなくなる

「使われる」ための継続的フィードバックや改善がしやすい

新しい分析サービスが出てきた際に移行しやすい

サーバーレスなどのフルマネージドなサービスを利用することで、低レイヤーの運用をクラウドに任せることができる

DATAFLUCTでは、元々データサイエンティストが利用していたこともあり、相性のよいAWSを利用して、初期段階としての基盤を構築することを決めました。

具体的には以下のサービスを使用することにしました。

スクリーンショット 2020-06-18 21.30.47

現在は、AWSでの基盤をベースに、GCPやAzureなどと幅広く活用できるようなマルチクラウド構成への展開も進めています。

3. データ基盤運用ルールの考案

アーキテクチャを選定したからといって、ただそれに則れば上手くいくかと言うとそうではありません。

ユーザーが使いやすく、かつ、安心して使えるようにするためには、運用にあたりルールを考案する必要があります。

運用のルールとは、例えば、以下のようなものがあります。

データアクセスの権限管理
データのライフサイクルの設定
命名規則の設定

その他にも、クラウドの利用自体のルールを決める必要もあるかもしれません。

また、データ異常値やデータ量/データ利用状況などを把握するためのモニタリングなども、データ基盤を運用していく上で重要です。

これらのルールが無ければ分析基盤を作れない、というわけではありませんが、明確にルール化しておくことで、後々の運用コストの削減に繋がります。

とはいえ、あくまで利用者が使いやすい状態であることが大前提なので、利用者側がこれらのルールを意識することなく使えるようにすることが大事です。

4. 分析基盤の利用推進とフィードバック

無事ルールも定まり構築が完了したら、後は実際にどんどん利用してもらいましょう。

最初に述べたように、どれだけ考えて、どれだけコストや時間をかけて作成したデータ分析基盤であっても、利用されなければ全く意味のないものとなってしまいます。

そうならないために、必要であれば実際に可視化や分析を行うハンズオンを行ったり、各チームの中でまず一人メインユーザーを定めて、その人に利用促進に協力してもらったりすることも大事です。

DATAFLUCTでは、データ分析基盤へのアクセスログを分析し、重点的に使用していただいているユーザーを洗い出し、重点的にフィードバックをいただくようにしています。

実際に利用してもらい、直接ユーザーからフィードバックをいただくことで、改善し、ユーザーを増やし、データの質と量を高め、データ活用の成果に繋がるということを意識して運用していきましょう。

おわりに

いかがでしたか?

データ分析基盤について、細かい技術の話というよりは、基盤を作る際の思想であったり、基盤を作るプロジェクトを動かす際の注意点といったところを中心に解説させていただきました。

DATAFLUCTでは、上記で紹介した分析基盤を利用しながら、様々なデータサイエンスのソリューションを提供しております。

ご興味がある方は是非お問い合わせいただければと思います。