CloudNative Days Tokyo 2019実行委員会とOpenStack Days Tokyo 2019実行委員会が主催するイベントが7月22~23日、都内で開催された。会期2日目の基調講演では、金融サービスを手掛けるSBペイメントサービスやワイジェイFXがシステム内製化の取り組みを紹介した。そこでは“クラウドネイティブの本当の意味”も語られた。
Kubernetesか、PaaSか
SBペイメントサービスは決済代行やカード事業を手掛ける。基調講演ではシニアアーキテクトの鈴木順也氏が、決済システムの内製化への取り組みを説明した。
同社での内製化は、鈴木氏が参画した2016年頃にスタートした。当時はほとんどのサービス開発を外部のベンダーに任せ、コードを書く自社のエンジニアは皆無。開発環境も全く整備されていなかったという。担当者は鈴木氏だけだった。
このため、まずは手作業が主体でミスの発生も多かったシステム運用の効率化に着手した。オープンソースのJavaプラットフォーム向けアプリケーションフレームワークであるSpring BootやウェブアプリケーションテストツールのSeleniumなどを利用して運用支援ツールを内製で開発し、GitHub EnterpriseやSlack、Confluence、Jiraといった開発に必要な環境も整備した。
運用面では、サービスの状況を迅速に把握したり、共有したりしにくいことが課題だったという。ElasticsearchやKibana、Logstashを用いてサービス監視のダッシュボートを作成、運用状況の可視化を図り、監視の品質を向上させた。ここから古いアーキテクチャーや高コストな開発リソース、困難なシステム監視といったさらなる課題が浮上したという。

SBペイメントサービス シニアアーキテクトの鈴木順也氏
担当チームは鈴木氏を含め4人となり、2017年から開発プロジェクトの支援に乗り出す。Spring Bootをベースとするアーキテクチャーを採用し、継続的なインテグレーション(CI)を回せる環境づくりを進める。ここまでが、決済システムの内製化の“準備”段階だった。
決済システムの主な役割は、EC企業など加盟店と銀行などの決済機関をつなぐAPIを提供することにあるという。2019年5月時点で加盟店は約11万1700店舗で、2018年の取引実績は2兆9453億円に上る。対応する決済手段は40種類以上にもなる。先述のように、ほぼ全てのサービス開発を外部に依存していたため、スピード感のある開発や継続的な改善、容易な監視などが難しく、これらの課題を解決すべく2018年に内製化に踏み出した。
内製化においては、コンテナー管理のKubernetesか、PaaS基盤かの採用を検討し、最終的にPaaS基盤のPivotal Cloud Foundry(PCF)を選択した。その理由は、プラットフォームのメリットだったという。
「エンジニアの立場ではKubernetesを使ってみたかったが、学習コストの高さやメンテナンスの難しさ、システム構築に要する時間、少人数での運用の難しさが懸念された。本当の目的は、コードに専念でき、すぐに実行できる環境を実現することにあった。決済サービスに必要なセキュリティなども考慮し、PCFやPivotal Application Service(PAS)を選択した」(鈴木氏)
鈴木氏によれば、PCFやPASの採用はエンタープライズへの導入実績に加え、Spring Bootとの親和性や、「Buildpack」という仕組みで開発者がDockerfileを作成しなくてもソースコードからコンテナーイメージが作成され、「cf push」のコマンドですぐにリリースできる利便性が大きな決め手になった。この段階で鈴木氏のチームは6人体制となり、開発側が4人、運用側が2人の責任分界も明確化にできたという。
新しいシステムでは、PCF上にマイクロサービスでアプリケーションを配置し、APIゲートウェイで決済機関ごとのビジネスロジックを実装している各種サービスへのルーティングを行う。サービスシステム間にはサーキットブレーカーのHystrixを導入し、万一あるサービスで障害が発生しても、他のサービスに影響が拡大しないようにする監視と障害対策を講じた。
開発から本番環境へのリリースまでのCI/CD(継続的なデリバリー)のパイプラインも整備し、サービスのダウンタイムなしでのリリースを可能にしたほか、監視では30種類のダッシュボードを用いたメトリックス、アクセスなどのログ、サービス利用状況のモニタリングを行うようにして、金融サービスに求められる水準の耐障害性や品質も確保している。
鈴木氏は、この取り組みを通じて、外部リソースに依存した体制では難しいプラットフォームの構築や運用が可能になり、少人数でも自社が求めるサービス開発や安定運用に集中できるようになったという。今後もクラウドネイティブなシステムを目指しつつ、加盟店や決済機関、利用者に高い品質のサービスを提供していきたいと述べた。