ソフトバンク、Yahoo! JAPAN、そして Paytmの3社が協力して 設立した PayPay は、今では日本で最も利用されている QR コード決済サービスです。このような成功をもたらしたのは、極めて優れたスケール、スピード、信頼性を独自の方法で実現できたことが力になったと考えています。具体的にご説明します。
- スケール:PayPay は現在、日本の人口の約 4 分の 1 に当たる 3,000 万人以上(2020年6月時点)の登録ユーザーがいます。PayPayのコアとなる OLTP トランザクションデータベースの 1 つでは、決済処理に使用されるキーテーブルの 1 つに 60 億行以上が存在します。
- スピード:最初の製品は開発開始からわずか 3 カ月でユーザーへの提供を開始できました。その後 2 年間で PayPay は 100 回以上のアップデートを繰り返しています。PayPay は、Kubernetes クラスタにデプロイされた約 200 種類のマイクロサービスによって稼働しています。
- 信頼性:PayPay のアプリは、Android と iOS の両方のアプリストアで 4.5 以上のユーザー評価を受けています。最も高い品質が要求され、1 秒のダウンタイムであっても許容されない環境でアプリを稼働させる必要があります。
極めて優れたスケール、スピード、信頼性を同時に実現するクリエイティブなソリューションを可能にした重要な要因は、PayPayの特長である多様な文化を背景に持つチームと、それぞれの文化がもたらした最高クラスのツールと手法です。
PayPayのエンジニアリング文化の特徴と、これらの特色をどのようにして融合させ、優れたパフォーマンスを発揮し、目標を達成するエンジニアリング組織を構築できたかを以下に説明します。この記事ではPayPayのほんのいくつかの文化しか取り上げることはできませんが、他の多くの文化が PayPay の成功に寄与していることをここで改めてお伝えしたいと思います。最後に、当社が開発した新しいデプロイメントプロセスである実際のソリューション例について紹介しますが、この例から、多様な文化のチームがどのように協力して開発を進めたかを見て取ることができると思います。

日本チーム
日本のエンジニアリング文化の特徴は、品質を重視し、強い当事者意識と説明責任を有していることです。これらの特徴が、PayPay ユーザーから信頼される決済サービスの骨子を形成しています。
日本のインターネット企業は、他の日本企業の多くに密接に関係している”改善”(継続的改善)の文化に由来する非常に高い品質基準を持っています。たとえば、日本以外の国のインターネットサービスでは、システムのダウンタイムが 1~2 分程度であって、システムが自動的に回復するのであれば、全く問題視されないばかりか、誇れることかもしれません。しかし、厳格な品質基準があるため、PayPayはこれまでとは全く異なる方法で業務を行い、ミスを絶対に出さないようにしながらも高速なデリバリを実現するための改革が必要となりました。
PayPay が実績のある企業へと成熟していくためには、エラーのない製品とサービスによって、ユーザーの信頼を獲得していく必要があります。当社では、PayPay を現金と同じレベルで利用しやすく、信頼できるシステムにしたいと考えています。日本では品質と継続的な改善を重視して今後も取り組んでいきます。
インドチーム
PayPay が設立されたとき、当初の課題は迅速に決済サービスをローンチすることでした。「PayPay」開発は、創業パートナーの一社として、インド最大のモバイルウォレット企業である Paytm がコアコンセプト、価値提案、製品アーキテクチャを協力してくれました。インドのエンジニアリング文化は、最重要のタスクにエネルギーと労力を集中させて、ユーザーに価値と製品を迅速に提供することを重視しています。このマインドセットによって、3 か月という短期間で製品をローンチでき、大きな成功を収めることが可能になったのです。この成果重視の姿勢は、価値の高い新しい機能をユーザーに提供するために役立っています。また、インドのエンジニアリング文化は、成功への過程で、小さなミスを許容すること重視しています。ユーザーが総合的にプラスの価値を得ている限り、迅速に進み続けます。
日本のエンジニアリング文化と相反すると思われる方もいるかもしれませんが、実はこれは問題ではありません。ダイバーシティ(多様性)の力と、さまざまな優先課題がある中で意識的にトレードオフをしていくことが、本当の成功の原動力になるのです。
カナダチーム
Paytm Canadaにもパートナーとして協力してもらっています。 多くのアーキテクトや私のようなエンジニアが、システムのアーキテクチャ設計と初期実装において重要な役割を果たしてきました。PayPay は、技術主導型であり、論理的かつ科学的な方法でプロジェクトを推進し、可能な限り自動化するというカナダ/北米のエンジニアリング文化の特徴から、今なお、大きな恩恵を受けています。
これらのエンジニアは、先進的なソフトウェア開発、インフラストラクチャプロセス、ツール、方法論の多くを PayPay にもたらしました。たとえば、当社のプラットフォームは完全に Kubernetes ベースになっており、使い始めた初日からほぼ完全に自動化された CI/CD パイプラインを採用しています。振り返ってみると、この設計上の決定が、200 近いマイクロサービスを小規模な人的リソースで管理することを可能にしたのです。このチームはまた、Datadog のようなクラス最高のツールも導入しており、当社の環境を監視し、エラーをプロアクティブに検出して問題が顕在化する前に防止し、迅速に修正できるようにしています。
エンジニアリングチームを拡大する場合、詳細な技術スキルよりも、基本的なスキル(アルゴリズム、データ構造、コーディングや問題解決スキル、そして企業文化への適応性)を重視したカナダ発の基準を採用しています。これらは、PayPay が今後成長するために、最も有能で柔軟性のあるエンジニアを採用する上で効果的であることが証明されています。
その他にも中国のAlipayにおけるキャンペーンシステムや、決済トランザクションの処理方法、ノウハウについて学ぶなど、世界各国の決済サービスを参考にさまざまな解決方法でPayPayのサービス開発を行っています。

ソリューションの例:非常に高い信頼性をもたらし、大規模かつ迅速なリリースを実現する新しいデプロイメントプロセス
これまでに説明したエンジニアリング文化が連携することにより、クリエイティブなソリューションを創出する方法の一例をご紹介します。最近、信頼性、スピード、および拡張性に関する目標を同時に満たすために有用な革新的な新しいデプロイメントプロセスを導入しました。
カナリアリリースのデプロイ手法では、一部ユーザーのみが利用できるように変更がリリースされ、すべてのユーザーにデプロイする前に集中的に監視されます。ただし、従来型のカナリアリリースは、品質面、ユーザーの期待など日本ならではの環境や考え方では機能しません。
このデプロイメントの課題に対処するために、「カナリアプロダクション」と呼ばれる完全に別の本番環境を作成しました。この環境では、ステートレスコンポーネント(別のKubernetesクラスタなど)は本番環境とは別になっていますが、同じステートフルコンポーネント(データベース、サードパーティ API など)を本番環境と共有します。つまり、実際の決済トランザクションを処理できるのです。この方法で重要な点は、PayPay の従業員アカウントだけがカナリアプロダクションにアクセスできることです。従業員が PayPayを使用してトランザクションを実行する場合にはいつでも、ロードバランサーがこれらのトランザクションをカナリアプロダクションにルーティングします。
すべての新しいデプロイメントは、最終的に本番環境にプッシュされる前に、負荷試験環境にプッシュされます。デプロイメントが、カナリアプロダクションにある場合、数百の自動化テストを実行し、異常検出のような自動アルゴリズムアラートなどを使用して、Datadog でその環境を綿密に監視します。また、この新しい環境を使用して実際に決済した PayPay の従業員からフィードバックを得ることもできます。何か問題があった場合には、自動的にロールバックする仕組みがあります。さらに、依存関係の問題を回避するために、200 のマイクロサービスのうち、一度に 1 つのサービスのみにデプロイできる自動化された仕組みがあります。また、重要な点ですが、このプロセス全体は、複数の可動部分が連携して動作するように、Github Actions を使用して完全に自動化されています。
カナリアプロダクションソリューションによって、最高のエンジニアリング文化が1つになり、厳格な品質基準を満たしながら、新しい機能を頻繁にデプロイして、顧客に価値を迅速に提供できるのです。また、先進的なツールとプロセスを備えた非常に柔軟で自動化された拡張性の高いインフラストラクチャが、この実現に役立っています。

まとめ
多様な文化を有する PayPay のエンジニアリングチームは、PayPayの誇りであり、多様な視点が革新的なソリューションと素晴らしいビジネスの成果につながっています。当社では、常にスピード、スケール、そして信頼性の既存の制限を打ち破ることができるエンジニアを探しています。
著者について

Shilei Long 氏は PayPay の製品エンジニアリング部門のシニアマネージャー兼アーキテクトです。Shilei 氏は、毎日何百万ものトランザクションを処理する複雑なシステムの全体的な設計、実装、および運用を管理しています。Shilei 氏は、Paytm Canada でのリーダーとしての経験があり、Amazon および Oracle でのエンジニアリング経験を含め、10 年以上のソフトウェア開発の実績があります。
参考資料
PayPay と PayPay が活用しているツールの詳細については、次のリンクをご覧ください。