Amazon Web Services ブログ
Amazon NeptuneとAmazon DynamoDBを使ったGetirの包括的な不正検知システム構築の経緯
この記事は、Getir のBerkay Berkman、Yağız Yanıkoğlu、Mutlu Polatcan、Mahmut Turan、Umut Cemal Kıraçが共同で執筆したゲストポストです。
Getirは、2015年に10分の食料品配達の提案でラストマイルデリバリーに革命を起こした超高速配達のパイオニアです。Getirの物語はイスタンブールから始まり、2021年に英国、オランダ、ドイツ、フランス、スペイン、イタリア、ポルトガル、米国で事業を開始しました。Getirは創業以来、7つのプロダクトを発表しています。GetirFood、GetirMore、GetirWater、GetirLocals、Getirbitaksi(タクシーサービス)、Getirdrive(レンタカーサービス)、GetirJobs(人材紹介)です。
今回は、Amazon Neptune と Amazon DynamoDB を用いたリアルタイムデータの収集から不正行為の検出、損失防止計算の実行、顧客行動の観察、リスクのある口座の洞察まで、ゲティアがエンドツーエンドの不正検知システムを構築した様子をご紹介します。
Neptuneは、グラフアプリケーションの構築と実行を簡単にする、クラウド用に構築されたフルマネージドデータベースサービスです。Neptuneは、組み込みのセキュリティ、継続的なバックアップ、サーバーレス、および他のAWSサービスとの統合を提供します。
DynamoDBは、あらゆる規模に対応する高速かつ柔軟な非リレーショナルデータベースサービスです。DynamoDBは、分散型データベースの運用とスケーリングの管理負担をAWSにオフロードすることで、ハードウェアのプロビジョニング、設定と構成、スループット容量の計画、レプリケーション、ソフトウェアのパッチ適用、クラスタのスケーリングに悩む必要がありません。
ソリューションの概要
今回のプロジェクトでは、データチームとビジネスチームから5人が一緒に仕事をしました。データチームから3名、業務監査チームから2名の計5名で取り組みました。プロジェクト自体は3ヶ月で完了しましたが、データ分析(継続顧客の検出、ルールセットの決定)にはさらに3ヶ月を要しました。
次の図は、本ソリューションのアーキテクチャを示したものです。
ソリューションの詳細
私たちは、Getirのクライアントからリアルタイムのデータを取得する必要がありました。そのためには、リアルタイムのデータを提供し、このデータが完全に管理された方法で私たちに届くことを保証するサービスが必要でした。Amazon Simple Queue Service(Amazon SQS)を選んだのは、コスト効率がよく、フルマネージドで、FIFO管理ができるためです。例えば、新しいユーザーが作成されると、不正検知の仕組みがより適切に動作するように、ユーザーのさまざまな属性(デバイス情報、住所など)をSQSのキューに投入する必要があります。イベントキューにデータが追加されると(新しい支払い方法の追加など)、サービスはこのキューにリアルタイムでデータを送信します。また、VPCエンドポイントの利用は、当社のネットワークコスト管理の観点からも重要です。
Amazon Elastic Kubernetes Service(Amazon EKS)上で動作する当社のコンシューマーは、SQSメッセージキューからデータを受け取り、Neptuneデータベースへデータを挿入します。Neptuneの高い書き込み容量により、リアルタイムでのデータ挿入が可能です。また、リーダーインスタンスとライターインスタンスが別々になっていることで、書き込みをしながら読み込むことができ、お互いに影響を及ぼさないようになっています。こうして、Neptuneにあるグラフツリーをリアルタイムで更新し続けるのです。
ユーザーが新しい情報や新しい属性でログインすると、コンシューマーはこの新しい情報や属性の詳細をミリ秒単位でNeptuneに書き込み、データグラフツリーに即座に送信しています。
Amazon Neptuneを使用する大きな利点の1つは、Neptune Notebook 機能を使ってグラフデータを視覚化し、分析できることです。この機能により、より直感的な方法でデータを探索し、そこから洞察を引き出すことが容易になります。
Neptuneノートブックでは、Jupyterノートブックを使ってコードを書いたり、グラフデータをリアルタイムで操作できるビジュアライゼーションを作成することができます。これらの機能は、エンティティ間のパターンや関係を特定しようとする場合に特に有効で、データを多角的に探索し、根本的な構造をより深く理解することができます。インタラクティブな可視化機能だけでなく、Neptune Notebookはデータ分析に最適な様々な機能を備えています。例えば、あらかじめ用意されたテンプレートやサンプルコードのスニペットを利用することで、すぐに解析を開始することができます。
リアルタイムデータをデータベースに挿入した後、Calculator APIに送ります。実際のスコア計算は計算機部で行われます。不正サークルのノード間の接続は非常に大きく、計算に時間がかかることがあるため、APIはこれらの計算をタスクキューであるCeleryワーカーに送ります。Celeryワーカーには、タスクを取得するためのキーバリューストレージが必要です。これを実現するために、Amazon ElastiCache for Redis を使用しています。また、Celeryワーカーは、ノード間の接続の性質や密度に応じて行われるさまざまなルールベースの計算の結果として、スコアを割り当てます。ユーザーのリンク属性をもとにNeptune上で行う計算と分析により、ユーザーのデータツリーを抽出することができます。NeptuneがサポートするGremlin(グラフ・トラバーサル言語)を使えば、従来のリレーショナルデータベースで何百行もクエリを書く必要はなく、非常に短時間で、しかも簡単なクエリで目的のデータに到達することができます。データモデリングの面では、1000個以下の頂点を走査するだけでデータに到達できるような構造を設定することが、リアルタイムの作業で最も重要なポイントのひとつです。
これらの割り当てられたユーザースコアは、Amazon DynamoDB に保存されます。DynamoDBは、キャッシュロジックで迅速な回答が必要なシナリオで非常に効率的です。スコアリングは、ユーザーを表す属性に対して確立されたコネクションで行われます。スコアリングにより、不正サークル/データツリーの検出が容易になります。
Amazon Kinesis Data Firehose で Amazon Simple Storage Service (Amazon S3) にログレコードを送信しています。Amazon Athena を使うことで、これらのログを分析することができます。受信メッセージをいつ読んだか、計算にどれくらいの時間がかかったかといった情報は、スコアリング・プロセスの監視や効率化に重要なので、これらのログを残すことは重要です。ピーク時には、レコード処理速度が1分間に20,000レコードにも達することが確認されています。これは、1分あたり約9MBに相当します。デバッグのステップからKPI、損失防止の計算、お客様の行動の観察、リスクのある口座の把握まで、このソリューションでは詳細な分析を行うためのデータを提供しています。
まとめ
Neptuneのおかげで、チーム内でグラフデータベースを簡単かつ効率的に使えるようになり、リアルタイムデータを扱う際の能力も向上しました。DynamoDBは私たちが最初に試したサービスで、期待した通り動作しました。データモデリングの部分では、DynamoDBをキーバリューデータストアとして使うことで、Neptuneのクエリが日に日に遅くなるのを防ぐことができました。Neptuneのスケーリングを最適化し、大幅なコスト削減を実現することができ、経費を削減することができました。具体的には、最適化の継続により、以前のコストのかなりの部分を節約することができました。高トラフィックでのDynamoDBの使用は、その威力を証明し、低コストで簡単に使用できることから、より多くのプロジェクトで優先的に使用されるサービスとなりました。
データ分析、ユーザー認証、詐欺スコアリング、機械学習を組み合わせた多層的なアプローチです。これらの技術を組み合わせて使用することで、不正行為から自社とお客様を95%以上保護することができ、マーケティングにおいてもコスト削減を実現しています。
Neptuneを使った独自の不正検知システム構築の始め方については、Getting Started with Amazon Neptune と Amazon Neptune Resources で詳しく説明されています。
DynamoDBに関するその他のリソースは、Getting Started with Amazon DynamoDB で詳しく説明されています。
本記事は 2023/04/06に投稿された How Getir build a comprehensive fraud detection system using Amazon Neptune and Amazon DynamoDB を翻訳した記事です。翻訳はデータベーススペシャリストソリューションアーキテクトの木村 達也が行いました。
著者について
Berkay Berkmanは、コンピュータ工学のBScを取得し、データサイエンスとエンジニアリングの両方で経験を積んでいます。GetirのData Platform and Engineeringチームにシニアデータエンジニアとして勤務しています。データ問題に取り組み、クラウドネイティブなプラットフォームでソリューションを作ることを楽しんでいます。
Yağız Yanıkoğluは、ソフトウェア開発ライフサイクルで13年以上の経験があります。バックエンドデベロッパーとしてキャリアをスタートさせ、2015年にAWSと出会う。それ以来、彼の主な目標は、安全でスケーラブル、フォールトトレラントでコスト最適化されたクラウドソリューションを作成することです。2020年に超高速食料品配送のパイオニアであるGetirに入社し、現在はシニアデータエンジニアリング&プラットフォームマネージャーとして働いています。彼のチームは、Getirのエンドツーエンドのデータプラットフォームソリューションの設計、実装、保守を担当しています。
Mutlu Polatcanは、Getirのスタッフデータエンジニアで、クラウドネイティブなデータプラットフォームの設計と構築を専門としています。オープンソースプロジェクトとクラウドサービスを組み合わせることに興味を持っています。
Mahmut Turanは、経済学の学士号と法学の法学修士号を取得し、さまざまな技術的・ビジネス的役割を担い、金融サービス業界において、規制側と規制側の両方、Qコマース、テクノロジーで幅広い経験を積んでいます。2年以上、ゲッティア社で内部監査マネージャー(データ&アナリティクス)、監査アナリティクス&不正防止マネージャー、不正分析&損失防止責任者など、さまざまな役割を担ってきました。専門は、内部監査、監査分析、データサイエンス、信用リスク、詐欺リスクです。
Umut Cemal Kıraçは、GetirのFraud Analytics & Prevention Managerです。全社的な不正リスクの管理、およびゲティアの監査・分析機能を担当しています。CIA(公認内部監査人)およびCISA(公認情報システム監査人)の資格も持ちます。専門分野は、ビジネスリスクに対する分析ソリューションの提供です。
Esra Kayabalıは、データウェアハウス、データレイク、ビッグデータ分析、バッチおよびリアルタイムデータストリーミング、データ統合などの分析領域を専門とするAWSのシニアソリューションアーキテクトです。12年間のソフトウェア開発およびアーキテクチャの経験を持つ。クラウド技術の学習と指導に情熱を注いでいます。