SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2020】セッションレポート (AD)

ミクシィの新決済サービス「6gram」が”真のサーバーレス”になったワケ【デブサミ2020】

【13-D-3】サーバーレスなPCI DSS対応クレジットカード決済基盤システムを運用しながら、みんなでわいわいDIYの精神で、新しいモバイル決済サービス6gramを作っている話

  • X ポスト
  • このエントリーをはてなブックマークに追加

6gramへの道のり

 6gramの開発にあたり、田岡氏たちは必要な機能を整理した。まずはプリペイドカードの発行だが、これはカード番号やトークン、残高を管理するイシュア基盤が必要になる。また、銀行やATMからの入金やポイント利用などのチャージ機能、Apple PayやGoogle Payとの連携およびモバイル決済機能も考えることになる。

 「モバイル決済については、TSP(トークンサービスプロバイダー)と連携することで解決するにしても、コンテナをサポートするなどの要件を満たすパッケージが見当たらなかった」(田岡氏)

 なぜないのか。

 「決済基盤は30年以上も前からあるためかシステム自体が古く、コンテナのサポートなんてもっての外だった。また、Read Onlyで動くようにしたため、デーモンを起動してPIDを書こうとしても処理されない。諸々検討した結果、最初に頑張って低コスト運用に向いたシステムをDIYで開発することにした」。みんなで楽しくワイワイDIYするのがベストという決断だった。

 気を付けたのは、レイヤリングだ。今後特殊な対応が必要になって変更を加えたいとき、コンポーネントをごそっと入れ替えたり間に挟んだりできるような設計を意識したと田岡氏は話す。例えば入金機能では、決済処理と残高処理を別要素に分解し、ネット通信と専用線での特殊プロトコルによる通信を見極めて抽象化。特殊プロトコル通信では専用の変換アプリを開発、コンテナとの間にかませて、Amazon SQS(Simple Queue Service)でキューイングする形にした。

レイヤリングの例
レイヤリングの例

 続いて、イシュア基盤の開発だ。構築方法は3通りあると田岡氏。1つは、イシュア基盤をすべて構築する方法。2つめは、モバイル決済だけ移譲する方法。3つめは、残高だけ管理する方法だ。

 「モバイル決済だけTSPにカード情報を同期する形で移譲し、トークン決済にしてしまえば、カード情報を保持しなくて済み、モバイル決済周りのシステム開発はいらなくなる。オーソリシステム(信用照会システム)も通常のカード決済システムとあまり変わらないので、開発も大変ではない。ただ、決済のたびにTSPへ問い合わせすることになるが、通常のカード決済よりも平均で500ミリ秒ほど遅いことを観測している」(田岡氏)

 一方の、残高だけ管理する方法では、オーソリシステムを借りて同期やAPIコールで送金処理する。この方法であれば、PCI DSS対応が必要な部分をかなり切り離せるため、運用もかなり簡素化できる。

 いろいろ検討した結果、田岡氏たちは1つめの方法をとることにした。開発言語はElixir(一部DynamoDB Streamsを経由したNodeJSや解析環境でPythonなどを使用)。インフラは、AWSで固めた。データベースはAmazon DynamoDB、処理はAWS Fargate、監視はAmazon CloudWatchやRollbarを使用している。

 ここまでで、「5グラム」の実装が完了した。あとは、カードの複数枚発行やグループウォレット機能などの、残り「1グラム」を実装することだ。残高には複数のカードを紐付けられるようにして、必要に応じて切り替えられるようにした。グループウォレットについては、ユーザーごとにグループ用カードを作成し、それを共同残高に紐付ける。

 「すべて開発したことで、カードの同期や残高の数などに制限が生まれず、かなり自由度の高い”プラス1グラム”が構築できた。監査なしでも安全なシステムが保たれるような組織作りができたと思う」(田岡氏)

複数カード発行やグループウォレット機能などを実装
複数カード発行やグループウォレット機能などを実装

 また、ルールや仕組み、設計、開発まですべてやったことで、さまざまなメリットを享受できたと田岡氏は言う。チームビルディングやチーム力の底上げは、その一つだ。DIYで楽しく取り組む先に、これまでとは違う世界が待っているのかもしれない。

お問い合わせ

 株式会社ミクシィ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
【デブサミ2020】セッションレポート 連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/12080 2020/04/13 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング