見出し画像

UPSIDERが独自開発・運用する安全性と決済体験を両立する決済プラットフォームの技術的チャレンジとその面白さ #UPSIDER春のTech祭り

私たち、株式会社UPSIDERは、挑戦者を応援する法人カード「UPSIDER」、および請求書カード払いサービス「支払い.com」などを提供しています。

そんな当社の特徴のひとつが、創業当時から独自で決済プラットフォームを開発・運用していることです。

今回注目したのは、UPSIDERの決済基盤を支えるプロセッサーチーム*。

プロセッサーチームは、「挑戦者を支える世界的な金融プラットフォームを創る」をミッションに、誰もが使いやすく、安心して使える独自の金融プラットフォームの開発・運用を任務としています。日々開発を通じて不正利用などのセキュリティに関する対策にも積極的に取り組んでいるのはもちろん、ユーザー体験の向上させるための開発にも積極的に取り組んでいます。

今回は、UPSIDERの決済プラットフォームの立ち上げメンバーであり、カード事業部のリードエンジニアであるRyoya(関野 涼也 @sekino_pii 以下 Ryoya)と、カードのプロセッサーチームのエンジニア、Ryutaro(小林 龍太郎 @Ryuk236 以下、Ryutaro)、そしてCX(Customer Experience、以下、CX)チームのHazuki(堀 葉月  以下Hazuki)にインタビューしました。

聞き手は、当社 VPoE を務める Yusuke Izumi(泉  雄介 @yizumi 以下 Yusuke)です。


スピーカー紹介

ーー まずはみなさんの自己紹介をお願いします。これまでのキャリアや、UPSIDERへの入社動機、UPSIDERで今取り組んでいるお仕事など簡単に教えてください!

Hazuki: CX(Customer Experience、以下、CX)チーム、カスタマーサポートのHazuki です。新卒から複数の会社で営業やカスタマーサポートとしてキャリアを積み、主にトラブルシューティング業務など、ユーザーと直接対峙し、問い合わせに対応し課題を解決する業務に従事しておりました。過去にはSaaS、Web広告、D2C業界を経験しましたが、金融業界に参画したのはUPSIDERが初めてです。

UPSIDERに入社してからは、法人カード「UPSIDER」のカスタマーサポートとして、法人カード「UPSIDER」を有効に活用していただくための支援を行ってきました。

その後、社内で「カードの不正利用対策」のプロジェクトが動き出したタイミングで、プロジェクトを主導しているCXチームにアサインされ、現在はプロセッサーチーム*と共に、カードの不正利用の対策を行っています。

*プロセッサーチームとは
プロセッサーチームとは、カードブランド(VISAなど)と通信を行い、クレジットカードの発行・決済処理を実現するプラットフォームの開発・運用を担当するチームのこと。

Ryoya: こんにちは!Ryoyaです。キャリアを簡単に話すと、新卒で日本IBMに入社しエンジニアとして、メガバンクのシステム開発などを担当しました。3年ほど在籍した後、2019年にUPSIDERに入社しました。

入社した当初は、UPSIDERとしてプロダクトをまだ持っていない状態だったため、初めのプロダクトとなる法人カード「UPSIDER」の決済システムの立ち上げを0から行いました。 2023年の秋からはカード事業部のリードエンジニアになり、引き続き決済システムの運用管理を行いつつ、現在はエンジニアの採用業務と、カードの不正利用の対策に力を入れています。

Ryutaro: プロセッサーチームのRyutaroです。 キャリアとしては、新卒で60以上の幅広い事業を展開するメガベンチャー、DMM.comにエンジニアとして入社しました。プラットフォーム事業本部に配属され、主にプラットフォームの決済基盤の開発・運用業務を担っていました。入社当初から4年ほど、決済システムの加盟店(以下、マーチャント)側のシステム開発に携わり、エンジニアとしての基礎を学んだ後、2023年にUPSIDERに入社しました。
UPSIDERでは、初めはエンジニアチームの中でも電子帳簿保存法対応のための開発を行い、その後カードのプロセッシングを担うプロセッサーチームに異動しました。現在はイシュアー*の立場で決済プラットフォームの開発に携わっています。

*イシュアーとは
イシュアーとはクレジットカードを発行する会社のこと。

独自プロセッシング基盤の強みと面白さ

ーー UPSIDERでは、決済プラットフォームを、独自で開発・運用しているそうですね。そのプロセッシング基盤について、特徴や独自開発・運用していることの強み、独自ならではの技術的な面白さ・大変さを教えてください。

Ryoya: UPSIDERは「挑戦者を支える世界的な金融プラットフォームを創る」ことをミッションとして掲げているため、立ち上げの時点から事業の拡張性を見据えて、独自で安定した開発環境を作りあげなければなりませんでした。ここは技術的に面白い部分でもありますし、工夫をこらした部分でもあります。実際に、立ち上げの時期から5年ほど経ちますが、社内で独自開発した決済システムは、細かい変更はあるものの、大幅な仕様変更はほとんどありません。

また、UPSIDERは、プロセッシングベンダーを利用せずにVISAの生のメッセージを取り扱っているため、貴重な決済データから分析ができるという強みもあります。決済のデータって、宝の山なんですよね。その宝の山のようなデータを分析することで、新しく「こんな機能が追加できるのでは」という仮説が出てくることも多々あります。細かい決済のデータを見て、構想を練り、泥臭くクエリをかいて仮説を検証しています。不正利用の対策の面でも、VISAの生の決済データは非常に重要な役割を果たしています。

ーー 開発当初から、言語やアーキテクチャの技術選定を工夫されていたと伺いましたが、実際にどのような開発環境を選択されたのか、その背景も含めて伺えますか?

Ryoya: 開発の言語はGo言語を、アーキテクチャはMicroservicesを使っています。

独自の決済システムを開発する際に大切なことは、言語の技術選定にしてもアーキテクチャにしても、「長期的に安定しやすいかどうか」です。スタートアップは開発においてもスピードを求められることが多く、初期のプロダクトのリリースにおいては100点満点でなくとも、とにかくリリース時期が優先されることもあります。しかし、決済のシステムは他のシステムと異なり、最初のリリースの時点から高度な安定性や品質が求められます。

そうした基準の中で、立ち上げ当初に選んだ言語がGo言語でした。可読性が高く、メンテナンスがしやすい。さらに型があるため安定性も高く、チーム開発に適しているというGo言語の強みに目をつけたんです。パフォーマンスが優れていたり、細かいところで品質を高く作りやすいような仕組みがあり、決済システムを構築するにあたり一番適しているのではないかと思ったんです。

また、アーキテクチャにMicroservicesを採用した背景としては、コンポーネントを分けやすく、プロダクトが大きくなってきた際に、細かく業務を分けチームで分担して開発を進めることができるためでした。実際にUPSIDERでも機能を細かいコンポーネントに分けて、分担するかたちをとっています。もしもどこかで一箇所におかしなところがありエラーが起きた際も、影響範囲を限定できるため、対障害性が高いことが大きなメリットですね。

一般的にMicroservices は、最初期のフェーズのスタートアップの中では珍しいチョイスだとされています。なぜならMicroservicesは、初期構築のコストが高い上にドラスティックな変更が必要になった際の改修コストも高い傾向にあるため、これからプロダクトを世に送り出す不確実度の高いフェーズで採用すると、プロダクトローンチ後に大きな変更が度々発生して初期構築したものが無駄になったり、変更に大きな工数を取られるリスクが高いからです。

また、ユーザー数の少ないフェーズでは、万が一障害が起きても実影響が少なく、耐障害性などのメリットも大きくないという面もあります。

しかし決済システムに関しては、新しい機能開発などの追加は見込まれるものの、基礎的な枠組みはブランドが規定した決済の仕様に縛られるため、既存のものを枠組みごとドラスティックに変更する必要に迫られる頻度は少ないと見込みました。初期フェーズであっても決済システムについては高い安定性を追求すべきという考えから、Microservicesの採用を決めました。

ーー Ryutaroさんは前職から決済システムの開発を経験していましたね。UPSIDERに入ってみて、驚いたことや衝撃だったことはありましたか?

Ryutaro: UPSIDERでは、金融業界の中ではかなりモダンな、新しい技術を使っているなと感じました。前職の頃は、10年以上前に作られたシステムをそのまま使い続けているようなケースもあったため、自分は今まで、メインの開発言語やインフラはGo言語やMicroservicesではなく、そうした新しい技術のキャッチアップから始まりました。ただ、Go言語は学習コストがかかりすぎないメジャーな言語ですし、Microservicesもインフラ環境が整っており、キャッチアップ自体はそこまで難しくありませんでした。

初めはVISA特有のシステムの仕様を理解することが難しかったですね。その分、エンジニアとしての学びが大きく、挑戦しがいのある経験となりました。

ーー 挑戦しがいのある経験だった、とのことですが、RyutaroさんがスタートアップであるUPSIDERに入社してみて、総じて面白いと感じたこと、やりがいを感じたことについて教えてください。

Ryutaro: UPSIDERに入社してみて、決済の細かな仕様を把握するのは難しいこともありますが、実装はシンプルにできるものが多いです。それゆえに、いかに品質を高めつつ、開発のスピードを保てるかという、エンジニアとしての美徳といいますか、開発の醍醐味とも言える領域に注力できているなと感じています。即時性を大切にしつつ、技術選定などひとつひとつの選択において、ビジネスとして意味のある選択を迫られているという良いプレッシャーがあり、非常にやりがいを感じます。

ーー 独自の決済プラットフォームの強みや、技術的な面白さ、大変さはよくわかりました。そんな、挑戦者がいつも安心して安全に使える決済プラットフォームを開発・運用するために意識していることはありますか?

Ryoya: 意識している点は何点かあるのですが、まず1点目は、テストに力を入れています。プロセッサーのシステムのコードは、ユニットテストのカバレッジにおいて100%を目標にしておいています。もちろん、ユニットテストでカバーできない部分もあり、使い捨てのスクリプトを使うこともあるのですが、そうした「明確にテストコードを書かなくていい」という理由がない限り、テストでカバーするようにしています。

また、データの整合性に関しては、「やり直しがきく。最終的に整合性がとれる。」ということを重要視しています。データやお金の計算を扱うため、データが整合することが非常に重要です。しかし、どうしてもシステムの処理が途中でこけてしまうこともあります。そのため、常に100%の整合性を求めるよりも、途中でこけたときにやり直しがきくようなAPIの環境作りを意識しています。VISAからの電文は何種類かあるのですが、最終的に確定したお金の動きは、加盟店が最後に送ってくるクリアリング*に集約されるんです。そのため、途中でおかしな電文が飛んできても、最終的なお金の流れをクリアリング*に収束させることで、金額がおかしくならないようにしています。

Ryutaro: また、オーソリ*の開発においてはスピードを特に重視して開発しています。オーソリでは「10秒ルール」と呼ばれる規定がありまして、決済のデータをVISAに10秒以内に送付しなければいけないんです。そのため、オーソリの処理において、無駄なブロッキングがないか、並行処理ができているか、という部分は常に意識しています。

*クリアリングとは
カードを利用して商品・サービスの購入が完了した(もしくは完了することが確定した)際に、加盟店からイシュアーに対して取引情報を送信する処理のこと。イシュアーは受け取った取引情報を確認し、加盟店に支払いを行います。

*オーソリとは
オーソリゼーションの略語で、カード利用者が商品やサービスを購入する際に、イシュアーがその取引を承認するかどうかを決める処理のこと。イシュアーは、利用者のカードが有効か、利用限度額内かどうかなどを確認して、承認可否を決めます。承認されれば、カード利用者は購入処理を進めることができます。

ビジネスサイドから見るUPSIDERの開発の特長

ーー エンジニアたちがそんな想いで開発・運用してくれているプロセッシング基盤について、ビジネスサイドではどのようにお感じですか?ユーザーからのうれしいフィードバックなどあれば、ぜひ教えてください。

Hazuki: UPSIDERのエンジニアたちは、ユーザー体験を非常に重視していて、ユーザビリティを損なわないことを大切にされていると日々の会話から感じます。保守を固めるとどうしてもユーザー体験が二の次になってしまいがちですが、UPSIDERのエンジニアチームは、違います。

また、運用においてもユーザーのことを非常によく見てくれているなと感じますね。

一度、ユーザーの方がフィッシング詐欺の被害にあってしまうという事件が起きたのですが、プロセッサーチームのRyutaroさんがいち早く気づいてくれたんです。ユーザー本人ですら見落としてしまうような決済でも、普段からデータを見続けているRyutaroさんだからこそ気づけたんだと思います。おかげで被害を未然に防ぐことができました。あの時は本当にびっくりしましたし、感動しましたね。

ーー 最近、クレジットカードの不正利用問題が社会で大きく取り上げられています。UPSIDERでは、圧倒的に低い不正利用率(0.0005%)を実現していますが、不正利用に対して、エンジニアはどのような対策をおこなっていいますか?

Ryoya: 不正利用の対策はさまざまな形で取り組んでいます。データの監視はもちろん、疑いのあるデータを自動で抽出する仕組みをとっています。明らかに怪しいものは抽出し、判断がつきにくいグレーなデータは通知・アラート機能を備え、必要に応じて前後の取引を確認し判断するなどの対応を行っています。

一方で、ユーザーの利便性の考慮も欠かせません。不正決済への対策に監視の目を光らせることは、時にユーザーの体験と衝突することがあります。セキュリティとUXのトレードオフと言われることもありますが、私たちは何よりもユーザー体験を高めることが、最終的な不正利用の締め付けにつながると考えています。ベースのユーザー体験が悪い上に、セキュリティを強化すると、かなり粗悪なUXになってしまいます。そうならないためにも、常に質の高いユーザー体験を追求しておくことが重要だと考えています。

また、不正利用は次々と新しいトレンドが生まれています。そのため、防げなかった過去の不正利用をケースごとに一つ一つ分析し、再発防止策を考案し実行しています。

ーー 決済システムのセキュリティに関しては、対策にいくつかのレイヤーがあるように感じているのですが、それぞれのレイヤーごとの対策について、簡単に解説していただけますか?

Ryoya: そうですね、セキュリティのレイヤーは大きく3つに分かれています。
1つ目が社外のシステム、2つ目が社内のシステム、3つ目がユーザー側で対策できるシステムですね。

1つ目の社外のシステムに関しては、VISAが提供しているVISAリスクマネージャーというシステムを使っており、不正利用が起きやすい加盟店やカードなどを監視し、ルールベースでアラートをあげてくれる仕組みです。不正利用の新しいトレンドに対する対策を即時に反映してくれます。そこに自社で条件をつけ加えたり、チューニングしたりして活用しています。

2つ目は社内のシステムです。社内でもシステムを構築することで、不正利用のトレンドを理解しやすくなりますし、不正利用の発生確率を下げることができます。法人カード「UPSIDER」のユーザーは法人です。そのため、正常利用の傾向がつかみやすく、正常利用では使われないであろうリスクの高い加盟店との決済に関して、アラートを飛ばすようにしています。

3つ目がユーザー側で対策できるシステムです。法人カード「UPSIDER」では、カードの利用制限の機能があり、一取引あたりの取引金額や使える国、加盟店、用途などさまざまなカテゴリーで利用制限が設定できるようになっています。また、カードを落としてしまった際も、UPSIDERに連絡を入れなくても、ユーザー側でスマホからボタンひとつでカードを止められる仕様になっています。また、カードが見つかった際の復旧も、ボタンひとつでできます。こうした機能を活用していただき、最後はユーザー側からも不正利用の発生を防げるような仕組みを整えています。

ーー 自社プラットフォームを運営していて、カードの管理機能、スマホアプリ、チャットとの連携機能をもっているUPSIDERだからこそできるような不正利用対策機能をリリースしましたね。どのような機能で、どのような顧客ベネフィットがあるか、そしてその技術的な面白さ、ぶっちゃけ大変だったところをおしえてください。

Ryutaro: 今回リリースした不正利用対策機能は、不正利用が発生してしまった際に、いち早くユーザーに気づいてもらうためにはどうしたらいいか、ということを突き詰めて開発した機能なんです。元々、不正利用の疑いが出た際は、メールやSlackでアラート通知を行う仕組みをとっていたのですが、今回さらに、不正利用の疑いが晴れるまで、一時的に決済機能をロックする仕組みをリリースしました。

Ryoya: 技術的側面で難しかったところは、複数のクライアントにまたがって提供することになるため、誰がどのクライアントに対し、どのような役割を担うのかを割り振ることが難しかったです。また、それでいてスピーディにリリースするために、チーム同士が上手く連携するための仕組みづくりに一定の工夫が必要でしたね。

ーー そのような大掛かりな機能は、開発チームがただリリースすれば終わりではなく、顧客へ影響等を想定した事前準備など、ユーザーと相対するチームの協力も欠かせないと思います。CXチームとして、顧客体験向上のためにどのような準備をしましたか?また、リリース後の顧客の反応はいかがですか?

Hazuki: 今回リリースされた不正利用対策の機能は、非常にニーズの高い機能でした。一般的に、従来の不正利用対策として一度カードを凍結した場合、利用再開までに時間がかかるというデメリットがありました。まさにそういった課題を解決する機能だと思います。

ただ、新機能のリリースの時期が年末かつ長期休暇の前ということもあったため、CXチームと開発チームで、いつ開始をするのか、どのような決済はブロックするのか、しないのか、という部分について慎重に議論しました。例えば、広告費の決済カードは数分でも決済を止めると被害が大きくなってしまうためブロックをしないと決めたり、物販を行う企業は高額決済が連日続くこともあるため前月で同じ履歴があったら止めない、などのルールを一緒に作り上げました。

ーー 相手のコンテキストの解像度が高くないとできない意思決定ですね。リリース後のユーザーからの反応はいかがでしたか?

Hazuki: 出張先など出先で不正利用に気づいた際に、スマホですぐにブロックが確認できること、そして解除できることは大きなメリットではないでしょうか。不正利用はいかに早く気がつけるかが重要です。その点、UPSIDERの不正利用対策では、ブロックが発動してから各媒体から一斉に通知がくるため、ユーザーが通知に気がつき、カスタマーサポートに連絡をくださるまでの時間が本当に早いです。

相互に寄り添い、リスペクトし合う組織

ーー みなさんのお話を聞いていると、エンジニアチームとビジネスチームが信頼しあって、非常に連携ができているなと感じます。普段はどのようにコミュニケーションをとりあっているのですか?

Hazuki: コミュニケーションに関しては、プロセッサーチームから話し合いをセッティングしてくださる頻度が多く、こちらに歩みよってくれる姿勢をひしひしと感じます。自分がわからないことがあると「じゃあ、その点については別で時間を取って議論しましょう」と時間をとって丁寧に説明してくださるので、ミーティングの機会が増え、解像度が高まります。普段の会話でも、小さな懸念などを拾ってくださり、色々な解決策を提案してくださることも多いので非常に助かっていますね。前職では、エンジニアチームと会話することはほぼなく、自分からエンジニアの方に何かを提案をするような機会もなかったため、とても新鮮です。

Ryutaro: 私も前職では直接ビジネスサイドの方とお話しする機会がなかったのですが、UPSIDERでは直接コミュニケーションをとって議論ができるため、スピード感をもってプロジェクトを進めることができます。また、踏み込んだ話もしやすく、エンジニアとしても非常にやりやすい環境だと感じています。

Ryoya: 先ほどHazukiさんは「エンジニアチームのみなさんが歩み寄ってくれている」と話していましたが、自分はUPSIDERのビジネスチームの方々こそ、エンジニア側に歩み寄ってくれることが多いと感じています。どうしてもビジネスチームの方々が技術的にキャッチアップするのが難しい事象でも、ユーザーのために説明しなければならない場面が多々あります。ビジネスチームの皆さんがキャッチアップのために情報収集を徹底的にしてくれるお陰で、自分たちもできる限り協力し、一緒にユーザーの課題を解決していきたいと心から思えます。コミュニケーションをとる機会が多いこと、お互いにリスペクトして歩み寄っていることが、スピード感をもったスムーズな連携の秘訣だと思います。


ーー 今後、挑戦者が、いつでも、安心して、安全に決済できるプラットフォームとして、安全さと体験の良さを両立させながら成長していくために、どのような技術的なチャレンジを計画していますか?また、それを実現していくために、どんな仲間にUPSIDERに来てほしいですか?

Ryoya: 不正利用を精度高く検知し、防止するシステムを、引き続き開発していきたいと思います。現在も社内で不正利用のトレンドを把握し、検知やブロックはしていますが、まだ人間の泥臭い判断や分析による判断も残っているため、よりMLベースで精度高くしたり、分析基盤を整えて行きたいですね。

また、不正な決済を正確にとらえるのはもちろん、ユーザーの正常な利用を止めないという部分でも、まだまだ精度が高められると考えています。ユーザーの体験を高めていくためにできることは無限にあるので、ひとつひとつ取り組んで行きたいですね。
一例ですが、データ分析基盤にデータを集約させ、MLのモデルで分析する対象を決め、そしてモデルを組みインプットを整えて分析をしたり、などですね。
他には不正利用の特徴や傾向など分析をし、計算し終わったものを決済システムに戻し、判定するプロジェクトを組み、そこにバリデーションに加えていく、といったことも実現したいです。


ーー 今後のエンジニアチームとしての開発の展望を伺いましたが、プロセッサーチームにおいてはどのような方がマッチすると思いますか?

Ryutaro: ここまで話してきた通り、複雑な不正利用に関する開発を、現実世界の課題とも戦いつつ、ユーザー体験を改善していかなければなりません。ただ、こうした複雑な領域を扱いつつ、トレードオフすべきことを見極めて理想のユーザー体験を突き詰める開発こそ、バックエンドの醍醐味ともいえる面白さがあると思います。こうした複雑なものを面白いと思える、複雑なことをシンプルに解決しようと取り組める方にきてもらえたら楽しいんじゃないかなと思います。

Ryoya: UPSIDERでは実際にかなり複雑なドメインを扱っていますが、そもそも、そのような複雑な決済ドメインを扱える機会はそうそうないため、貴重な経験が積める場所だと思います。そういった環境に挑戦してみたい、といった強い思いを持っている方はフィットすると思います。

Ryutaro: 技術、スキル面においては、もちろん金融のバックグラウンドは生かせると思いますが、金融に関わってない方でも活躍できる環境です。どちらかというと現実世界の理不尽さや複雑な事象に対し、好奇心をもって取り組める方は楽しめるのではないでしょうか。また、不正利用などは世の中の歴史的背景も深く関係しており、そこを紐解いていくことで見える社会情勢などもあります。金融システムから見るさまざまな社会情勢に興味をもてると楽しいのではないでしょうか。

ーー 高い障壁や複雑な事象をさばくという意味では、ソーシャルゲームなどのToC の経験も活かせそうですよね。

Ryutaro: そうですね。そういったご経験もUPSIDERの中で活きる部分は大いにあると思います。

ーー ビジネスサイドから見た、UPSIDER のエンジニアならではのキャラクターや傾向など感じる部分はありますか?

Hazuki: 本当に社内外の人に対して、思いやりがある方が多いです。ホスピタリティと顧客思考が高く、ユーザーの課題解決を最優先に動いてくれます。また、問題が発生した時に、迅速に、かつビジネス側の人間にも優しい言葉で噛み砕いて説明してくれます。プロフェッショナルで技術があって、それでいてビジネスサイドにもオープンなコミュニケーションをしてくださる方が多いです。引き続き、そういった方々と一緒に世界的な金融プラットフォームを創り上げていければ嬉しいです!

ーー ありがとうございます。本日はみなさん、インタビューにご協力いただきありがとうございました!

独自の決済プラットフォームを使って新たな金融の未来を作ることに興味がでてきた方、ぜひお話ししましょう!🗣️
今回のインタビューメンバーであるRyota、Ryutaro、Hazuki、もしくはUPSIDERのメンバーがお話しさせていただきます!

次回予告

次回は3月27日(水)11時に「AIを駆使してUPSIDERのチャット体験をよくしていく挑戦」について、エンジニアリングマネージャーのMikiがお伝えしている記事を配信します。✍️

AI技術の進化により、プロダクトとユーザーの間のインターフェースのあり方も変わってきたことを実感されている方も多いのではないでしょうか。業務システムでやっていることをチャットとAIで作りなおすとどんなチャレンジが待っているのか?をセキララに執筆しています、お楽しみに!


この記事が参加している募集

仕事について話そう

この記事が気に入ったらサポートをしてみませんか?