Slide 1

Slide 1 text

1 日本経済新聞社 情報サービスユニット 大塚恭平 2024年11月7日 Apache Icebergで実現する次世代データガバナンス 日経リスク&コンプライアンスの挑戦

Slide 2

Slide 2 text

2 自己紹介 名前: 大塚恭平 所属: 株式会社 日本経済新聞社 情報サービスユニット 業務内容: 法人向けサービス開発 インフラ構築・運用

Slide 3

Slide 3 text

3 本日の発表内容 当社が開発している法人向けサービスである日経リスク&コンプライアンスにおいて Apache Icebergを活用した事例をご紹介します 1. Apache Iceberg導入の背景 2. Apache Icebergを活用したアーキテクチャ 3. 導入後の効果

Slide 4

Slide 4 text

4 1. Apache Iceberg導入の背景

Slide 5

Slide 5 text

5 日経リスク&コンプライアンスについて 取引先のリスク評価を行うための法人向けサービス 多岐にわたる国内・海外法規制に対応した取引先の コンプライアンスリスクを特定・監視するのは困難 暴力団排除条例、マネーロンダリング規制、経済制裁、輸出管理 規制、海外贈賄規制、など

Slide 6

Slide 6 text

6 日経リスク&コンプライアンスについて 取引先のリスク評価を行うための法人向けサービス 多岐にわたる国内・海外法規制に対応した取引先の コンプライアンスリスクを特定・監視するのは困難 暴力団排除条例、マネーロンダリング規制、経済制裁、輸出管理 規制、海外贈賄規制、など 本サービスを利用することで、様々な法規制・ガイドラインに 準拠できるよう、日々サービス開発に着手

Slide 7

Slide 7 text

7 本発表の開発の発端となったガイドライン ⅳ) 記録の保存 金融機関等が保存する確認記録や取引記録は、自らの顧客管理の状況や結果等を示すものである ほか、当局への必要なデータの提出や、疑わしい取引の届出の要否の判断等にも必須の情報であ る。 マネー・ローンダリング及びテロ資金供与対策に関するガイドライン(金融庁)

Slide 8

Slide 8 text

8 本発表の開発の発端となったガイドライン サービス上でユーザーが取引先をリスク評価した際の操作記録を保管し、 一覧表示する必要が出てきた(AWS CloudTrailのような画面) ⅳ) 記録の保存 金融機関等が保存する確認記録や取引記録は、自らの顧客管理の状況や結果等を示すものである ほか、当局への必要なデータの提出や、疑わしい取引の届出の要否の判断等にも必須の情報であ る。 マネー・ローンダリング及びテロ資金供与対策に関するガイドライン(金融庁)

Slide 9

Slide 9 text

9 サービス上での操作記録を取得 ● 取引先に問題があったときに、以下を確認できる ようにする ○ 誰がいつ・どのように評価したのか ○ ユーザーの操作に不備や不正がなかったか ● 新たに 操作レコード をバックエンドで出力 ● 試算の結果、数億件オーダー/年の操作レコード を扱う必要があることが判明 { “テナントID”: “xxx”, “ユーザーID”: “yyy”, “評価対象”: “企業名”, “イベント名”: “更新”, “項目”: “aaa”, “old値”: “bbb”, “new値”: “ccc”, ... } 操作レコードの例

Slide 10

Slide 10 text

10 システム設計の考慮事項 ● 数億件オーダー/年の操作レコードの取り扱い ● Write Heavy ○ 画面操作の度に操作レコードが書き込まれる ○ ユーザーによる操作履歴の確認は主に有事の際のみ ○ データ反映に多少のラグは許容可能 ● 操作レコードを削除しやすい設計 ○ 解約したテナントに関するデータを削除 ○ GDPR等、法規制に柔軟に対応できる余地 ● サービスのコア機能ではない ○ 運用コストを極力下げたい アプリケーション 利用者 ストレージ 画面操作 操作レコードの書き込み 監査証跡の画面表示 操作レコードの読み込み 通常時 有事

Slide 11

Slide 11 text

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 ◯ ◯ ◯ ◯

Slide 12

Slide 12 text

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の特性が有効

Slide 13

Slide 13 text

13 2. Apache Icebergを活用したアーキテクチャ

Slide 14

Slide 14 text

14 Apache Icebergとは ● Netflix社が2017年に開発 ● 2018年にオープンソース化、Apache Software Foundationに寄贈 ● Open Table Formatのひとつ ○ テーブルをストレージ上(S3など)に構築するためのファイルレイアウトを定義 ○ テーブルを適切に抽象化することで、データウェアハウスが持つような様々な特性を実現 ● Amazon Athena含め、多くのコンピュートエンジンがサポート ● Amazon Web ServicesもApache Icebergにコミット Amazon S3上でデータをテーブルとして運用する技術

Slide 15

Slide 15 text

15 Apache Icebergの特性 ● ACID特性 ○ トランザクションをサポート ● Schema evolution ○ カラム変更(追加・削除・データタイプ 変更・リネーム)、カラム順変更が可能 ● Hidden partitioning ○ パーティション用の追加カラムが不要 ● Partition layout evolution ○ パーティション変更時にテーブル再作成 が不要 ● 行単位のテーブル操作 ○ 特定レコードの更新・削除をサポート ● Time travel ○ 過去の状態に対してクエリ可能 ● Version rollback ○ 特定の状態にロールバック可能

Slide 16

Slide 16 text

16 本機能開発にApache Icebergを導入するメリット ● 低コストなシステム構成の実現 ○ 大量の操作レコードを安価なAmazon S3に保管可能 ○ 本機能の特性上、読み取り頻度は低いため、スキャン費用は軽微 ● Amazon S3上での高度なテーブル操作 ○ 書き込みの最中に読み取りがあっても整合性が取れたデータを読めるため、書き込みの多いワー クロードでも安心 ○ 運用で発生し得る行単位のデータ削除のサポート ● データレイクの活用 ○ データレイクで扱うメリットがある要件に対して、従来のデータレイクでは実現が難しかった ○ サービスのコア機能への負荷を抑制

Slide 17

Slide 17 text

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をサポート

Slide 18

Slide 18 text

18 操作レコードに関するアーキテクチャ AWS Cloud Amazon Athena Amazon ECS (App) Amazon S3 Amazon Kinesis Data Streams AWS Glue Amazon EventBridge AWS Glue 操作レコードの 保存 操作レコードの 取得 操作レコードの メンテナンス AWS Step Functions

Slide 19

Slide 19 text

19 操作レコードの保存 ● ユーザーの画面操作時にアプリで出力した操作レコードを最終的にS3バケットに保存 ● AWS GlueストリーミングジョブでデータをIceberg形式、Parquetファイルに変換 AWS Cloud Amazon Athena Amazon ECS (App) Amazon S3 Amazon Kinesis Data Streams AWS Glue Amazon EventBridge AWS Glue AWS Step Functions

Slide 20

Slide 20 text

20 操作レコードの取得 ● 監査証跡の画面表示時に、Amazon AthenaでS3バケット内の操作レコードをスキャン ● テーブルにパーティションを設定 AWS Cloud Amazon Athena Amazon ECS (App) Amazon S3 Amazon Kinesis Data Streams AWS Glue Amazon EventBridge AWS Glue AWS Step Functions

Slide 21

Slide 21 text

21 パーティションの設定 パーティションを設定することで、スキャン対象のファイルを限定できる ● 効果 ○ クエリパフォーマンスの向上 ○ スキャンコストの軽減 ● 対象フィールド ○ 日付 日付で操作レコードを絞り込める画面をサービス提供するため ○ テナントID テナント間のデータの論理的分離

Slide 22

Slide 22 text

22 Amazon Athenaのクエリ性能に関して ● Amazon Athenaでのクエリは高速 ○ 検証結果:数秒 ○ パーティションを適切に設定し、データをparquet形式で保存しているため ● 監査証跡の画面表示までの数秒は許容 ○ 日々利用する機能ではない

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

24 Small File問題の解消 ストリーミング処理では小粒なS3ファイルを多く作成 定期的に大きな粒度のS3ファイルにまとめることで、以下効果を見込める ○ クエリパフォーマンスの向上 ○ スキャン時のS3のAPI料金の軽減

Slide 25

Slide 25 text

25 必要に応じたデータ削除 ● 削除対象 ○ 解約したテナント ○ 個別ユーザーのデータ GDPR等の法規制にも耐えられる設計 ● 物理削除まで実施 ○ Apache Icebergは基本的には論理削除 ○ AWS Glueで専用のジョブを実行

Slide 26

Slide 26 text

26 3. 導入後の効果

Slide 27

Slide 27 text

27 導入後の効果 ● 目論見通りの効果を得ている ○ 大量の操作レコードを低コストに保存 ○ スキャンもサービス画面で提供するのに支障ない速度で実現 ○ データ削除も安全に実施 ● データレイクの技術をサービス内で活用 ○ サービス内の他の既存の機能に影響を与えていない ● 今のところ安定稼働している

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

29 まとめ

Slide 30

Slide 30 text

30 まとめ ● 法人向けサービスの機能開発にApache Icebergを活用した ● 様々な法規制に柔軟に対応できるアーキテクチャを構築できた ● 大量のデータを扱うシステムを構築する知見を得られた

Slide 31

Slide 31 text

31 We are hiring! ● Tech Blog https://hack.nikkei.com ● エンジニア採用 https://hack.nikkei.com/jobs/

Slide 32

Slide 32 text

32 ご清聴ありがとうございました