【AWS Dev Day Tokyo 2018】Amazon Pay + DynamoDBで社内カフェテリアのレジ待ち行列をなくしたお話

10/29 – 11/2の4日間にかけて東京・目黒の新AWSオフィスにおいてアプリケーション開発者のためのテクノロジカンファレンス「AWS Dev Day Tokyo 2018」が開催されています。本日(11/1)はマシンラーニングとデータベースに特化したプログラム構成で、「Amazon SageMaker」「Amazon DynamoDB」といったテクノロジを活用したユースケースが数多く紹介されています。ここでは午前中に行われたアマゾンジャパン Amazon Pay事業本部 インテグレーションマネージャー(ソリューションアーキテクト) 吉村周造氏によるセッション「DynamoDBとAmazon Payで実現するキャッシュレス社会」の概要を紹介します。

ここ目黒の新オフィスにある社員専用のカフェテリアでは、社員は食事の代金をAmazon Payで支払います。以前はごくふつうのレジで精算が行われていましたが、ランチの混雑時には当然ながら長蛇の列となり、カフェテリアチームにとって大きな悩みのタネとなっていました。そこで彼らが相談したのが、吉村氏らが所属するAmazon Payのチームです。ここでの課題は

  • レジのアップデート時期が決まっていたので、開発期間に余裕がない(2カ月)→少ない工数でスピーディに作らなくてはいけない
  • かけられるコストはほとんどない
  • 社員全員が使えるシンプルなアーキテクチャ

といったもので、2カ月という短い期間で使える実装に仕上げるには必然的に”ミニマムスタート”となります。ここでAmazon Payチームが選んだ技術がマネージドサービスのNoSQLサービス「Amazon DynamoDB」でした。DynaomoDBのメリットとして吉村氏は

  • スケールに応じたパフォーマンス
  • フルマネージド型
  • 大企業で使用可能

といった点を挙げ、すでにIoTやサーバレスでのユースケースが数多くあることも採用の理由だとしています。また、サーバレスアーキテクチャであるLambdaからのアクセスが速いこともDynamoDBの魅力のひとつといえます。

本アーキテクチャの概要は以下のようになります。

 

社員のIDと、その社員のAmazon Pay定期支払いID(Auto Pay)を紐づけし、紐づけ情報をDynamoDBに格納する。レジで社員がバッジをかざすとLambdaを経由して、社員IDとAuto Payの照合後にAmazon PayのAPIがコールされ、請求処理が行われる。Lambdaの呼び出し時にはバックエンドでCloud Frontが連携している

ここで注目したいのは、社員バッジ(事前に社員IDをAmazon PayのIDとひもづけている)をレジにピッとかざした段階では請求処理が完了していないという点です。請求処理は非同期に実施されるため、リアルタイムでの処理とはなりません。もちろん、技術的にリアルタイム処理は可能ですが、今回のビジネス上の課題は「レジ待ち行列を解消する」ということであるため、食べている間に請求処理が完了するくらいのタイミングでも十分です。2カ月という短い期間でのミニマムスタートのプロジェクトであれば、何よりも最大のビジネス上の課題の解決を最優先し、ブラッシュアップはその後に行う – 使われているテクノロジはもちろんのこと、プロジェクトのアプローチにもAWS/Amazonらしさが凝縮されたお手本のようなユースケースではないかと思います。