NoSQL と DB プロキシがマルチスレッドモードでシステムの詳細をかなり使用していたため、コードはさまざまな条件の管理で複雑になりました。Go は複雑さを処理するためのチャネルとルーチンを提供しているため、要件を満たすようにコードを構造化することができました。
Go で構築された新しいコードインフラストラクチャ
PayPal は、金融サービスを民主化し、人々と企業がグローバル経済に参加し、繁栄できるようにするために作成されました。この取り組みの中心となるのは、PayPal の決済プラットフォームであり、独自のテクノロジーとサードパーティのテクノロジーを組み合わせて、世界中の数百万のマーチャントと消費者間のトランザクションを効率的かつ安全に促進します。決済プラットフォームが大規模になり、複雑になるにつれて、PayPal はシステムを最新化し、新しいアプリケーションの市場投入までの時間を短縮しようとしました。
ソフトウェアのデプロイが拡大するにつれて、容易に拡張できるクリーンで効率的なコードを生成する Go の価値が、PayPal の目標をサポートするのに適した言語となりました。
決済処理プラットフォームの中心となるのは、PayPal が C++ で開発した独自の NoSQL データベースです。しかし、コードの複雑さが、開発者のプラットフォームを進化させる能力を大幅に低下させていました。Go のシンプルなコードレイアウト、ゴルーチン (軽量な実行スレッド)、およびチャネル (同時実行ゴルーチンを接続するパイプとして機能) により、Go は NoSQL 開発チームがプラットフォームを簡素化および最新化するための自然な選択となりました。
概念実証として、開発チームは 6 か月間 Go を学習し、Go で NoSQL システムをゼロから再実装しました。その間、Go を PayPal でより広く実装する方法に関する洞察も提供しました。現在、クラスターの 30% が新しい NoSQL データベースを使用するように移行されています。
Go を使用して規模に合わせて簡素化
PayPal のプラットフォームがより複雑になるにつれて、Go は、大規模なソフトウェアの作成と実行の複雑さを容易に簡素化する方法を提供します。この言語は、PayPal に優れたライブラリと高速ツール、さらに同時実行、ガベージコレクション、および型安全性を提供します。
Go を使用することで、PayPal は、C++ および Java 開発のノイズから解放することにより、開発者がコードを見て戦略的に考える時間を増やすことができます。
この新しく書き直された NoSQL システムの成功後、PayPal 内のより多くのプラットフォームチームとコンテンツチームが Go の採用を開始しました。ナタラジャンの現在のチームは、PayPal のビルド、テスト、およびリリースパイプラインを担当しており、すべて Go で構築されています。同社には大規模なビルドおよびテストファームがあり、これは社内の開発者向けのサービスとしてのビルド (およびサービスとしてのテスト) をサポートするために Go インフラストラクチャを使用して完全に管理されています。
Go で PayPal システムを最新化
PayPal が必要とする分散コンピューティング機能により、Go はシステムを更新するための適切な言語でした。PayPal は、同時実行と並列処理が可能で、高性能かつ移植性の高いコンパイル済みで、モジュール式で構成可能なオープンソースアーキテクチャのメリットを開発者にもたらすプログラミングが必要でした。Go は、PayPal がシステムを最新化するのに役立つすべてを提供しました。
セキュリティとサポートは PayPal での重要な事項であり、この言語のクリーンさとモジュール性がこれらの目標を達成するのに役立つため、同社の運用パイプラインは Go によってますます支配されています。Go の PayPal への導入は、開発者にとって創造性のプラットフォームを生み出し、PayPal の世界中の市場向けにシンプルで効率的で信頼性の高いソフトウェアを大規模に作成することを可能にします。
PayPal が Go を使用してソフトウェア定義ネットワーク (SDN) インフラストラクチャを最新化し続けるにつれて、より保守しやすいコードに加えて、パフォーマンスのメリットも見られています。たとえば、Go は現在、ルーター、ロードバランサー、およびますます多くの本番システムを動かしています。
「Go コードを実行する厳密に管理された環境では、よりクリーンで保守しやすいコードで CPU が約 10% 削減されました。」
Go は開発者の生産性を向上させる
グローバルな事業として、PayPal は開発チームが 2 種類の規模の管理に効果的である必要があります。1 つは、多数のサーバー (クラウドサービスなど) とやり取りする同時実行システムなどの本番規模です。もう 1 つは、特に連携して多くのプログラマによって開発された大規模なコードベース (オープンソース開発など) などの開発規模です。
PayPal は Go を活用してこれらの規模の問題に対処します。同社の開発者は、インタープリター型の動的型付け言語のプログラミングの容易さと、静的型付けコンパイル言語の効率と安全性を組み合わせる Go の機能の恩恵を受けています。PayPal がシステムを最新化するにつれて、ネットワーク化されたマルチコアコンピューティングのサポートが重要になります。Go はそのようなサポートを提供するだけでなく、迅速に提供します。単一のコンピューターで大規模な実行可能ファイルをコンパイルするのにかかる時間は最大数秒です。
現在、PayPal には 100 人以上の Go 開発者がおり、将来 Go を採用することを選択する開発者は、同社ですでに本番環境に実装されている多くの成功事例のおかげで、言語の承認が容易になります。
最も重要なのは、PayPal の開発者が Go によって生産性を向上させていることです。Go の同時実行メカニズムにより、PayPal のマルチコアおよびネットワーク接続されたマシンを最大限に活用するプログラムを簡単に作成できるようになりました。Go を使用する開発者は、マシンコードに迅速にコンパイルされるという事実と、アプリがガベージコレクションの利便性と実行時リフレクションの能力を得るという事実からも恩恵を受けます。
PayPal の市場投入までの時間を短縮
現在 PayPal で一流の言語は Java と Node であり、Go は主にインフラストラクチャ言語として使用されています。Go が特定のアプリケーションで Node.js に取って代わることはないかもしれませんが、ナタラジャンは Go を PayPal で一流の言語にすることを目指しています。
彼の努力により、PayPal は、新製品の市場投入までの時間を短縮するために、Google Kubernetes Engine (GKE) への移行も評価しています。GKE は、コンテナ化されたアプリケーションをデプロイするためのマネージド型の本番対応環境であり、開発者の生産性、自動化された運用、オープンソースの柔軟性に関する Google の最新のイノベーションをもたらします。
PayPal にとって、GKE にデプロイすることで、PayPal がアプリケーションとサービスをデプロイ、更新、管理することが容易になるため、迅速な開発と反復が可能になります。さらに、PayPal は、GKE でサポートされる特殊なハードウェアアクセラレータの恩恵を受ける機械学習、汎用 GPU、ハイパフォーマンスコンピューティング、およびその他のワークロードを実行するのが容易になります。
PayPal にとって最も重要なことは、Go 開発と GKE の組み合わせにより、Kubernetes の自動スケーリングによりサービスに対するユーザーの需要の増加に対応できるようになり、最も重要なときにサービスを利用できるようにし、静かな期間にはスケールバックしてコストを節約できるため、需要に簡単に対応できることです。
企業が Go を使い始めるには
PayPal の事例は、他に類を見ません。他の多くの大企業が、Go が信頼性の高いソフトウェアをより迅速に提供するのにどのように役立つかを発見しています。世界中で 100 万人以上の開発者が Go を使用しており、銀行業や商業、ゲームやメディア、テクノロジー、その他の業界にまたがっており、American Express、Mercado Libre、Capital One、Dropbox、IBM、Monzo、New York Times、Salesforce、Square、Target、Twitch、Uber、そしてもちろん Google など、多様な企業で使用されています。
Go が PayPal で行っているように、信頼性の高いスケーラブルなソフトウェアを企業が構築するのにどのように役立つかについて詳しくは、今すぐ go.dev にアクセスしてください。
PayPal について
ソフトウェアのデプロイが拡大するにつれて、容易に拡張できるクリーンで効率的なコードを生成する Go の価値が、PayPal の目標をサポートするのに適した言語となりました。