Presto/Trinoを活用した分散データソース連携によるデータ分析基盤の効率化とコスト削減事例
導入部:分散するデータソースとデータ分析の課題
多くの企業において、データは様々な場所に分散しています。基幹システムのリレーショナルデータベース、データウェアハウス、ログデータが保存されたオブジェクトストレージ、SaaSアプリケーションのデータストアなど、その形式も場所も多岐にわたります。これらの分散したデータを分析やレポート作成のために利用しようとすると、多くの場合、複雑なETL(Extract Transform Load)処理やデータマートの構築が必要となります。これはデータエンジニアリングチームにとって大きな運用負荷となり、データ活用のリードタイム長期化やコスト増加の原因となります。
本記事では、このような課題を抱えていたあるITサービス企業が、OSSであるPresto(現在はTrinoとして開発継続)を導入することで、分散データソースからのデータ連携を効率化し、データ分析基盤全体のコスト削減とパフォーマンス向上を実現した具体的な事例をご紹介します。
導入前の状況:複雑なデータランドスケープと増大するコスト
この企業では、長年のシステム開発を経て、オンプレミスのDWH、クラウド上のRDB、S3に蓄積された大量のログファイルなど、複数の異なるデータストアが存在していました。データ分析を行うには、各データソースからデータを抽出し、整形し、DWHや別途構築した分析用RDBにロードする必要がありました。
このデータ連携プロセスは、以下の課題を抱えていました。
- 複雑なETLパイプライン: 各データソースのスキーマ変更に対応するためのETL処理のメンテナンス負荷が高い。
- データ鮮度の課題: バッチ処理に依存するため、リアルタイムに近いデータ分析が難しい場合がある。
- コスト増加: ETL処理を実行するためのインフラコスト、データウェアハウスの容量コスト、特定のデータ連携ミドルウェアのライセンスコストが増加傾向にあった。
- データ活用の遅延: データ分析者が複数のデータソースにアクセスするために、データエンジニアリングチームへの依頼や、個別のアクセス権限設定が必要となり、分析着手までのリードタイムが長い。
- 属人化: ETL処理やデータマート構築の知識が特定の担当者に偏りやすい。
技術部門責任者層は、増大するデータ関連コストと、データに基づいた迅速な意思決定が阻害されている状況を問題視しており、抜本的なデータ分析基盤の見直しを検討していました。
導入の意思決定とPresto/Trinoの選定
こうした課題解決のため、企業は複数の選択肢を検討しました。新たなDWHへの統合、商用データ連携ツールの導入、そしてOSSを活用したデータ仮想化アプローチです。複数のデータソースに物理的にデータを集約するのではなく、仮想的に統合されたビューを提供する「データ仮想化」技術に着目しました。
その中でOSSのPresto(当時)が有力候補として浮上しました。選定の主な理由は以下の点でした。
- 分散クエリ処理能力: 複数のデータソースに跨るクエリを効率的に実行できるアーキテクチャ。
- 豊富なコネクタ: 様々なデータソース(RDB、NoSQL、ファイルストレージ、データウェアハウスなど)に対応するコネクタが豊富に用意されている。
- 標準SQLインターフェース: データ分析者が使い慣れた標準SQLでアクセスできるため、学習コストが低い。
- 成熟度とコミュニティ: 大規模な商用環境での利用実績があり、活発なコミュニティによるサポートが期待できる。
- ライセンス: OSSであるため、データ量やユーザー数に依存しないライセンスコストの削減が見込める。
意思決定プロセスでは、まずPoC(Proof of Concept)を実施しました。既存の主要なデータソース(オンプレDWH、クラウドRDB、S3)に対してPrestoからクエリを実行し、パフォーマンスや安定性を評価しました。特に、複雑な結合クエリや大量データに対するレスポンス時間を計測しました。懸念点としては、OSSであるが故のエンタープライズサポート体制の確保や、大規模運用におけるチューニングノウハウの蓄積が挙げられましたが、これについてはコミュニティサポートに加え、必要に応じて外部ベンダーの技術支援も活用する方針を固めました。技術部門責任者としては、ライセンスコスト削減という直接的な効果に加え、データ活用の民主化によるビジネス部門の生産性向上という定性的な効果も重視し、導入を後押ししました。
具体的な導入・活用:仮想統合データレイクの構築
導入プロジェクトでは、Presto(以降、Trinoを含む概念として記述します)をクラスター構成でデプロイし、既存のデータソースへのコネクタを設定しました。概念的には、各データソースがTrinoにとっての「データレイクの一部」として機能するような、仮想的な統合データレイク環境を構築したと言えます。
アーキテクチャとしては、クエリの受付と最適化を行うTrinoコーディネーターと、実際にデータソースからデータを読み込み処理を行うTrinoワーカーのクラスターを構築しました。各ワーカーが必要に応じて適切なコネクタ(例:PostgreSQLコネクタ、Hiveコネクタ(S3上のデータを外部テーブルとして扱う)、SQL Serverコネクタなど)を通じて、オンプレDWH、クラウドRDB、S3上のデータにアクセスする構成です。
データ分析者やBIツールからは、このTrinoクラスターに対して標準SQLでクエリを発行します。Trinoはクエリを受け取ると、最適な実行計画を立案し、必要に応じて各データソースからデータをフェッチして結合処理などを実行し、結果を返します。この際、可能な限りデータソース側での処理(プッシュダウン)を行い、データ転送量を削減するような最適化も行われます。
このアプローチにより、物理的なデータ移動や複製を最小限に抑えつつ、複数のデータソースに跨る複雑なデータ分析が可能になりました。BIツールからの接続先もTrinoのエンドポイント一つに集約され、管理がシンプルになりました。
導入によって得られた成果:コスト削減と分析効率の劇的な向上
Trinoの導入によって、計画していた効率化とコスト削減を具体的に達成することができました。
- コスト削減:
- ETL/ELT処理コストの削減: 多くの分析シナリオにおいて、事前にデータを特定の場所に集約する必要がなくなり、ETLバッチ処理の量が削減されました。これにより、ETL処理に利用していたクラウドインフラのコストを年間約20%削減することができました。
- 商用データ連携ミドルウェアのライセンスコスト削減: 一部のデータ連携機能に依存していた商用ミドルウェアの利用範囲を縮小し、ライセンス費用を年間数百万円単位で削減しました。
- データウェアハウス容量コストの抑制: 分析用データマートの新規構築や拡張を一部見送ることが可能になり、DWHの容量コスト増加を抑制できました。
- 効率向上:
- データ分析リードタイムの短縮: データ分析者は、データエンジニアリングチームに依頼することなく、Trinoを通じて直接多様なデータソースにアクセスし、必要なデータを取得できるようになりました。これにより、特定のレポート作成にかかる時間が、従来の数日から数時間レベルに短縮されました。
- ETL開発・運用工数の削減: 複雑なデータ連携シナリオの一部をTrinoのクエリで代替することで、ETLパイプラインの開発・メンテナンス工数を約30%削減することができました。
- データ鮮度の向上: 常に最新のデータソースに対してクエリを実行するため、分析に利用できるデータの鮮度が向上しました。
定性的な成果としては、データ活用のハードルが下がり、ビジネス部門からのデータ分析リクエストに対する応答性が向上したこと、データに基づいた意思決定をより迅速に行えるようになったことが挙げられます。これは、単なるITコストの削減に留まらず、ビジネス全体の競争力強化に寄与する重要な成果でした。
直面した課題と克服:パフォーマンスチューニングと運用ノウハウ
導入・運用の中で、いくつかの課題にも直面しました。
- パフォーマンスチューニング: Trinoは分散クエリエンジンであり、そのパフォーマンスはクラスター構成、コネクタ設定、データソース側の性能、そしてクエリの内容に大きく依存します。特に大量データに対する複雑なクエリでは、初期設定のままでは期待するパフォーマンスが出ない場合がありました。これに対しては、Trinoのクエリ実行ログやモニタリングツール(Prometheus, Grafanaなど)を活用し、クエリ実行計画の分析、ワーカーノード数の調整、メモリ割り当ての最適化、データソース側のインデックス見直しといったチューニングを繰り返し行うことで性能を改善しました。
- 運用ノウハウの蓄積: OSSであるため、商用製品のような手厚いベンダーサポートは期待できません。障害発生時の切り分けや、バージョンアップ対応など、運用に関するノウハウを社内で蓄積する必要がありました。これについては、社内エンジニアによる定期的な技術共有会や、外部の専門家を招いたトレーニング、必要に応じた有償サポートの活用を組み合わせることで対応しました。
- セキュリティ管理: Trinoは多様なデータソースへのゲートウェイとなるため、認証・認可の設定が重要です。ユーザー認証(LDAP/Active Directory連携など)や、どのユーザーがどのデータソース/テーブルにアクセスできるかの認可設定を適切に行う必要がありました。これについては、Trinoのセキュリティ機能を活用するとともに、既存の認証認可基盤(Keycloakなど)との連携を検討し、一元的な管理を目指しました。
これらの課題に対し、継続的な運用改善活動と、OSSコミュニティや外部リソースを賢く活用することで、Trinoを安定的に運用し、期待する成果を維持・拡大することが可能となりました。
まとめと今後の展望:データ仮想化による柔軟なデータ戦略
本事例は、Presto/TrinoのようなOSSのデータ仮想化技術を活用することで、分散したデータソースからのデータ連携を効率化し、データ分析基盤のコスト削減とパフォーマンス向上を実現できることを示しています。物理的なデータ集約に依存しないこのアプローチは、特にデータソースが多様化し、クラウドとオンプレミスが混在する現在のIT環境において、データ活用を加速するための有効な手段となり得ます。
この事例から得られる教訓は、以下の点に集約されます。
- 課題の明確化: 増大するデータ関連コストやデータ活用のボトルネックといった、具体的なビジネス・技術的課題を明確にすることが、OSS導入の強力な動機となります。
- 技術選定の合理性: OSSの特性(ライセンス、コミュニティ、技術的な適合性)を理解し、自社の課題解決に最も適した技術を選択することが重要です。
- PoCによる検証: 導入前に小規模でも良いのでPoCを実施し、実環境に近いデータで性能や実現可能性を検証することが、リスク低減につながります。
- 運用体制とノウハウ: OSSの導入は、技術選定だけでなく、導入後の運用体制構築や必要なノウハウ習得計画とセットで考える必要があります。外部リソースの活用も視野に入れるべきです。
- 成果の可視化: コスト削減額や効率向上率といった定量的な成果に加え、データ活用スピード向上などの定性的な成果も可視化することで、組織全体の理解と協力が得やすくなります。
この企業では、今後も新たなデータソース(例:他のSaaSデータ、IoTデータなど)との連携をTrinoを通じて行うことで、データ分析基盤の柔軟性を維持しつつ、データ活用の範囲を拡大していくことを計画しています。OSSを活用したデータ仮想化は、将来の変化にも対応しやすい、スケーラブルでコスト効率の良いデータ戦略の基盤となり得ます。