[レポート] Amazon S3におけるデータレイク構築のベストプラクティス ft. Sweetgreen #STG359 #reinvent

こんにちは!DA事業本部の大高です!現地ラスベガスからお送りします。

本記事はAWS re:Invent 2019のセッションレポートとなります。

概要

Flexibility is key when building and scaling a data lake, and by choosing the right storage architecture you will have agility to quickly experiment and migrate with the latest analytics solutions. In this session, we explore the best practices for building a data lake on Amazon S3 that allows you to leverage an entire array of AWS, open-source, and third-party analytics tools, helping you remain at the cutting edge. We explore use cases for analytics tools, including Amazon EMR and AWS Glue, and query-in-place tools like Amazon Athena, Amazon Redshift Spectrum, Amazon S3 Select, and Amazon Glacier Select.

データレイクを構築およびスケーリングする際には柔軟性が重要であり、適切なストレージアーキテクチャを選択することにより、最新の分析ソリューションを使用して迅速に実証および移行する敏捷性を得られます。このセッションでは、Amazon S3でデータレイクを構築するためのベストプラクティスを探ります。これにより、AWS、オープンソース、サードパーティの分析ツールのすべてを活用して、最先端を行くことできます。 Amazon EMRやAWS Glueなどの分析ツールの使用事例、Amazon Athena、Amazon Redshift Spectrum、Amazon S3 Select、Amazon Glacier Selectなどのインプレースクエリツールについて説明します。

本セッションはリピートセッションの「STG359-R」となります。

スピーカー

スピーカーは以下の方々になります。

  • John Mallory - Principal BDM Storage (Strat), Amazon Web Services
  • Amy Che - Principal Technical Program Manager, S3, Amazon Web Services
  • Gerard Bartolome - Principal Data Platform Engineer, Sweetgreen

動画

導入

まずはAmyさんによるセッションの導入からです。

データレイクとは?

  • データレイクの立ち位置は、図の中にあるような各種デバイスやセンサーデータを格納するもの
  • Amazon S3が最適なサービス

データレイクの基盤としてのAmazon S3

  • 堅牢、継続可能、エクサバイトまでのスケーラビリティ
  • セキュア、準拠、監査可能
  • ハイパフォーマンス
  • ローコストでのストレージと分析
  • 幅広いエコシステム統合

ベストプラクティスの紹介

次に、GerardさんによるSweetgreen社におけるベストプラクティスの紹介です。

Sweetgreen社では以下のようにデータレイクの構築・活用をしているという紹介でした。実例に沿った紹介というのはありがたいですね。

  • データソースは構造化・非構造化データのどちらも利用

  • アクセス制御はIAM Role, Group Policy, MFAを活用

  • ECS, Serverless, EMRを活用したデータ変換

  • 分析やサプライチェーン、予測への活用

ベストプラクティスの紹介

ここからは本格的なベストプラクティス紹介になります。まずは、Johnさんによるデータレイク基盤のベストプラクティスがガッツリと紹介されました。

AWSにおけるデータレイク

スケーラブル、セキュア、コスト最適化されたS3をメインに据えて、図にあるような各種AWSサービスで周りを固めます。

  • 分析、マシンラーニング、提供
  • 管理、セキュリティー
  • データ統合
  • カタログと検索
  • アクセスとユーザインタフェース

データレイク 収集・変換パターン

以下のようなパイプラインアーキテクチャを利用することによって、データガバナンス、管理、効率化が高まります。

スケールに対するデータ管理ベストプラクティス

  • オブジェクトのTaggingをすることで、アクセスコントロール、ライフサイクルポリシーの管理、オブジェクト複製に活用
  • ライフサイクルポリシーの設定を行って、自動化されたポリシードリブンなアーカイブ化
  • バッチオペレーションの最適化によって、シングルリクエストによる数百万〜数億のオブジェクトの管理

正しいデータレイク ストレージクラスの選択

S3には様々なストレージクラスがありますが、用途によって最適なストレージクラスを使い分けます。

すべてのソースからの最適なデータ収集

データによって、「リアルタイム処理」なのか「バッチ処理」なのか「バルク処理」なのかを使い分けます。

イベントドリブン バッチ取り込みパイプライン

以下はイベントドリブンでの取り込みパイプラインの例です。CloudWatch Eventsをトリガーとして、Lambdaを介してパイプライン処理を行います。

リアルタイムデータ統合

以下はリアルタイムデータ統合の例です。Spark on Amazon EMRや各Kinesisサービスを活用して、リアルタイムにデータ統合・解析を行います。

AWS Lake Formation

AWS Lake Formationならテンプレート構成で以下が簡単に始められます。

パフォーマンスベストプラクティス

次に、パフォーマンスに関するベストプラクティスです。

S3におけるスケーリングリクエスト

オブジェクト名にプレフィックスを付けることによる効果もあるが、一般的な分析のユースケースでは不要とのことでした。以下はリクエストレートの自動スケーリングを示すグラフになります。

データレイクパフォーマンスの最適化

  • 最適なオブジェクトサイズとデータフォーマットを利用
  • 適切な場所へのキャッシングとティアリングの最適化

Amazon S3 Select

新機能として、Amazon S3 Selectの範囲クエリは巨大なオブジェクトに大しては、10倍のパフォーマンスまでブーストするそうです。

セキュリティーベストプラクティス

最後にAmyさんからセキュリティーベストプラクティスについてです。

セキュアなデータレイクの構築

以下のポイントを抑えることで、セキュアなデータレイクを構築します。

  • デフォルトでのアクセス拒否
  • データの暗号化
  • 複数データインプットソースをセキュアにする
  • 適切な場所に対してのみ、特別にアクセスを提供
  • 複数のユニークユーザとチームのサポート

おさらい

最後のおさらいです。

  • S3はデータレイクの基盤
  • 統制、データ管理、効率化のため、パイプラインアーキテクチャを活用する
  • 並列アクセスや水平スケーリングによってパフォーマンスを向上させる
  • 全てを暗号化し、特定のアクセス元、アクセス先に絞ることでデータレイクをプライベートにする

まとめ

どれもデータレイク構築の基本的な事項とはなりますが、データレイク構築をこれから行いたい!という方には、非常に参考になるのではないでしょうか?まずはこれらの基本事項をしっかり守ってデータレイクの構築を行うことが大事であると感じました。

それでは、また!