Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Apache Icebergで実現する次世代データガバナンス:日経リスク&コンプライアンスの挑...

Apache Icebergで実現する次世代データガバナンス:日経リスク&コンプライアンスの挑戦/data-management

2024/11/07開催、「データガバナンス事例祭り」で情報サービスユニットの大塚さんが発表しました。

https://pages.awscloud.com/eib-analytics-241107-reg.html

More Decks by 日本経済新聞社 エンジニア採用事務局

Other Decks in Technology

Transcript

  1. 9 サービス上での操作記録を取得 • 取引先に問題があったときに、以下を確認できる ようにする ◦ 誰がいつ・どのように評価したのか ◦ ユーザーの操作に不備や不正がなかったか •

    新たに 操作レコード をバックエンドで出力 • 試算の結果、数億件オーダー/年の操作レコード を扱う必要があることが判明 { “テナントID”: “xxx”, “ユーザーID”: “yyy”, “評価対象”: “企業名”, “イベント名”: “更新”, “項目”: “aaa”, “old値”: “bbb”, “new値”: “ccc”, ... } 操作レコードの例
  2. 10 システム設計の考慮事項 • 数億件オーダー/年の操作レコードの取り扱い • Write Heavy ◦ 画面操作の度に操作レコードが書き込まれる ◦

    ユーザーによる操作履歴の確認は主に有事の際のみ ◦ データ反映に多少のラグは許容可能 • 操作レコードを削除しやすい設計 ◦ 解約したテナントに関するデータを削除 ◦ GDPR等、法規制に柔軟に対応できる余地 • サービスのコア機能ではない ◦ 運用コストを極力下げたい アプリケーション 利用者 ストレージ 画面操作 操作レコードの書き込み 監査証跡の画面表示 操作レコードの読み込み 通常時 有事
  3. 11 検討したアーキテクチャ一覧 アーキテクチャ案 Write Heavy レコード単位の削除 運用負荷 コスト Amazon RDS

    ◯ ◯ △ △ Amazon DynamoDB ◯ △ ◯ △ Amazon OpenSearch Service ◯ ◯ △ △ Amazon Data Firehose + Amazon S3 + Amazon Athena ◯ × ◯ ◯ Amazon Kinesis Data Streams + AWS Glue + Amazon S3 (Apache Iceberg) + Amazon Athena ◯ ◯ ◯ ◯
  4. 12 検討したアーキテクチャ一覧 アーキテクチャ案 Write Heavy レコード単位の削除 運用負荷 コスト Amazon RDS

    ◯ ◯ △ △ Amazon DynamoDB ◯ △ ◯ △ Amazon OpenSearch Service ◯ ◯ △ △ Amazon Data Firehose + Amazon S3 + Amazon Athena ◯ × ◯ ◯ Amazon Kinesis Data Streams + AWS Glue + Amazon S3 (Apache Iceberg) + Amazon Athena ◯ ◯ ◯ ◯ 操作レコードのシステム要件にApache Icebergの特性が有効
  5. 14 Apache Icebergとは • Netflix社が2017年に開発 • 2018年にオープンソース化、Apache Software Foundationに寄贈 •

    Open Table Formatのひとつ ◦ テーブルをストレージ上(S3など)に構築するためのファイルレイアウトを定義 ◦ テーブルを適切に抽象化することで、データウェアハウスが持つような様々な特性を実現 • Amazon Athena含め、多くのコンピュートエンジンがサポート • Amazon Web ServicesもApache Icebergにコミット Amazon S3上でデータをテーブルとして運用する技術
  6. 15 Apache Icebergの特性 • ACID特性 ◦ トランザクションをサポート • Schema evolution

    ◦ カラム変更(追加・削除・データタイプ 変更・リネーム)、カラム順変更が可能 • Hidden partitioning ◦ パーティション用の追加カラムが不要 • Partition layout evolution ◦ パーティション変更時にテーブル再作成 が不要 • 行単位のテーブル操作 ◦ 特定レコードの更新・削除をサポート • Time travel ◦ 過去の状態に対してクエリ可能 • Version rollback ◦ 特定の状態にロールバック可能
  7. 16 本機能開発にApache Icebergを導入するメリット • 低コストなシステム構成の実現 ◦ 大量の操作レコードを安価なAmazon S3に保管可能 ◦ 本機能の特性上、読み取り頻度は低いため、スキャン費用は軽微

    • Amazon S3上での高度なテーブル操作 ◦ 書き込みの最中に読み取りがあっても整合性が取れたデータを読めるため、書き込みの多いワー クロードでも安心 ◦ 運用で発生し得る行単位のデータ削除のサポート • データレイクの活用 ◦ データレイクで扱うメリットがある要件に対して、従来のデータレイクでは実現が難しかった ◦ サービスのコア機能への負荷を抑制
  8. 17 Apache IcebergをサポートしているAWSサービス Apache Icebergはあくまでテーブルフォーマットのため、専用のAWSサービスはない • AWS Glue ◦ AWS

    Glue Data Catalog を Iceberg Catalog として利用可能 ◦ テーブルメンテナンスをマネージドにサポート ◦ Apache Spark が Apache Iceberg をサポート ◦ バッチ処理に加え、ストリーミング処理にも対応 • Amazon Athena ◦ Apache Icebergをネイティブサポート その他にも Amazon Redshift / Amazon EMR / Amazon Data Firehose がApache Icebergをサポート
  9. 18 操作レコードに関するアーキテクチャ AWS Cloud Amazon Athena Amazon ECS (App) Amazon

    S3 Amazon Kinesis Data Streams AWS Glue Amazon EventBridge AWS Glue 操作レコードの 保存 操作レコードの 取得 操作レコードの メンテナンス AWS Step Functions
  10. 21 パーティションの設定 パーティションを設定することで、スキャン対象のファイルを限定できる • 効果 ◦ クエリパフォーマンスの向上 ◦ スキャンコストの軽減 •

    対象フィールド ◦ 日付 日付で操作レコードを絞り込める画面をサービス提供するため ◦ テナントID テナント間のデータの論理的分離
  11. 23 操作レコードのメンテナンス Amazon EventBridgeでメンテナンスジョブを定期実行 • Small File問題の解消 • 必要に応じたデータ削除 AWS

    Cloud Amazon Athena Amazon ECS (App) Amazon S3 Amazon Kinesis Data Streams AWS Glue Amazon EventBridge AWS Glue AWS Step Functions
  12. 25 必要に応じたデータ削除 • 削除対象 ◦ 解約したテナント ◦ 個別ユーザーのデータ GDPR等の法規制にも耐えられる設計 •

    物理削除まで実施 ◦ Apache Icebergは基本的には論理削除 ◦ AWS Glueで専用のジョブを実行
  13. 27 導入後の効果 • 目論見通りの効果を得ている ◦ 大量の操作レコードを低コストに保存 ◦ スキャンもサービス画面で提供するのに支障ない速度で実現 ◦ データ削除も安全に実施

    • データレイクの技術をサービス内で活用 ◦ サービス内の他の既存の機能に影響を与えていない • 今のところ安定稼働している
  14. 28 今後の展望 • Apache Icebergのエコシステムの進化に追従 ◦ Amazon Data Firehose が

    Apache Iceberg に対応 ▪ Amazon Kinesis Data Streams + AWS Glue 部分をAmazon Data Firehoseに置き換えられる ▪ よりシンプルかつ低コストなアーキテクチャが可能 ◦ メンテナンスジョブの一部を AWS Glue Data Catalog に置き換え • 当社の他の法人向けサービスへのアーキテクチャの横展開