「スケーリング」という概念をシステム開発時に適用
「アプリケーションやサービスをリリースして、利用者が増えていったとき、サーバの台数を増やすなどのスケーリング作業を行う。これによってアプリケーションとサービスの単位時間当たりの価値が効率化されていく。同じようにスケーリングという概念をシステム開発時に適用するとしたら、どのようにすればよいのか。これは難しい質問だと思う」という問いかけから、星川氏のセッションは始まった。
星川氏は2014年にアクセンチュアに新卒で入社し、以来、カスタム開発で利用するアプリケーションアーキテクチャの開発及びメンテナンスに従事している。
システムはスケールアウトもしくはスケールアップすることで対応できるユーザ数を増やし、効率よくサービスを提供することができる。一方、システム開発において単位時間における開発のアウトプットを増やし、効率よく開発する方法はいくつか考えられる。開発者の数を増やしたり、システムを細かく分割したりするアプローチが一例だ。だがこれらのいずれにおいても「そうそううまくはいかない」と星川氏は語る。では開発効率を上げるアーキテクチャはどのようにすればよいのか。星川氏が携わった「みんなの銀行」プロジェクトは、10人から250人規模のプロジェクトにスケーリングし、高い効率で開発を実現したという。
「みんなの銀行」開発プロジェクトが立ち上がったのは、2018年10月。ちょうどFinTechという言葉が流行っていた時期でもある。「ヨーロッパ中心に勃興したチャレンジャーバンクと渡り合える銀行を作りたい」、そんな思いから、今あるIT技術でゼロから銀行を作ることになったという。
チャレンジャーバンクと競争できる銀行を作るため、アーキテクチャはどうあるべきか。これはプロジェクト立ち上げ時から考えていたという。
求められる要素の第一はクラウドネイティブであること。2018年でもクラウドは一般化していたので、「オンプレミス前提はあり得ないと思った」と星川氏。第二にアジリティのある開発が可能なこと。既存の銀行の基幹システムは変更するのが難しい状況になっている。「マーケットの反応を見ながらアジリティのある開発ができなければならないと思った」と星川氏。第三は堅牢かつセキュアであることだ。「この3つの条件を満たし、スケールする銀行を作ることが最初の検討事項だった」(星川氏)
これらの要素を持っている既存のパッケージやソリューションをいろいろ探したが、近しいものはあっても決め手に欠けていた。そのため、「フルスクラッチで基幹システムを開発するという判断が下った」と星川氏は説明を続ける。
この要件を満たすべく開発されたのが基幹システム実行アーキテクチャ「MAINRI」である。MAINRIはマイクロサービスアーキテクチャを採用し、将来的に必ず分割できるアーキテクチャで構成されている。また同アーキテクチャは早期からGCPを活用していくことが決まった。GKEを使ったコンテナのオーケストレーションで、開発言語はGo、通信インタフェースはgRPCを採用しているところが、「技術的に面白いところ」と星川氏は胸を張る。
それ以外も、GCPのサービスであるDataflowの実行フレームワークに、Apache Beamも採用しているバッチアーキテクチャを採用。それによりスケーリングが可能で、かつ高速に作れるようなアーキテクチャを目指すことにしたという。