「ecforce」のシンプルなアーキテクチャ、見えてきた課題とは
SUPER STUDIOの設立は2014年。メインプロダクトである「ecforce」は、2017年のプロダクトローンチからしばらく、ECショップを開設する顧客をサポートするためのカートシステムを展開してきた。
このカートシステムを中核に据えながらも、直近では「コマースDX」の実現に向け、マーケティングや販売チャネルの強化、アジャイルなデータ活用を可能にする統合プラットフォームとしてプロダクトを進化させている。そう語るのは、同社 プロダクトエンジニアリング本部/SREグループ グループマネージャを務める田幸久志氏だ。
Web上の自動接客システムやEFO(入力フォーム最適化)、パーソナライズ機能など、従来のEC運営で必要とされてきたアプリケーションはもちろん、実店舗とのデータ連携や店舗予約・顧客管理が可能なプロダクトなどに加えて、データ活用関連のソリューションにも注力。複数のチャネルを跨いだデータの可視化・分析を可能にする「ecforce bi」や、顧客セグメントごとにパーソナライズされたCRM施策を打てる「ecforce ma」などのプロダクトも提供を開始したという。
こうしたecforceの進化を支えているのは、シンプルなアーキテクチャだ。Webサーバーとバッチサーバーが根幹を担い、それぞれがデータベースにアクセスする構成を採用。Amazon EC2インスタンスはWebサーバー約1,000台、バッチサーバー約450台の計1,500台ほどが稼働している。
データベースは、Amazon RDS for MySQLとAmazon Aurora MySQLを併用し、1,400以上のショップの情報を350以上のデータベースクラスタで管理しているという。田幸氏によると、ecforceはショップごとにデータベース・インスタンスが割り当てられる、いわゆる「マルチインスタンス」と、1つのデータベース・インスタンスに複数のショップが紐づいている「シングルインスタンス/マルチデータベース」を併用する形で運用されている。
MySQLを利用しているため、レコード単位での分離を実現する“ローレベル・セキュリティ(Row Level Security)”機能が担保されておらず、使い方としても想定されていない「シングルインスタンス/シングルデータベース」の構成は適さないともいう。一般的にマルチテナントのデータベースアーキテクチャは、下図のように大別できる。いずれもリレーショナルデータベースの特性から、自由な拡張は難しい。
そのため、ecforceはショップごとに論理データベースを分けている状況だ。ecforceはサービスの特性上ショップごとに使い方が異なるため、ショップごとにデータベースの使い方も変わる。たとえば、データベースのレスポンスが悪くなった際に、インデックスによって解決しようとすることは一般的な対策の1つだが、「すべてのショップに適用した際、こちらのショップはレスポンスが速くなる一方、別のショップではむしろ遅くなることがあり得ます。そのため、データベースをショップごとに分離しておくことも我々にとっては必要です」と田幸氏。さらにリソースの増加やデータベース・インスタンス管理の煩雑化といった課題も生じているという。
データベース・インスタンスは300以上存在し、メンテナンスや障害対応に手間がかかるだけでなく、データベースのスケールアップ時にはサービス停止も必要となる。加えて、データ活用を進めていく際にはショップ単位ではなく、ecforce全体で横断的なデータ分析を実現したい。とはいえ、すべてのデータベース・インスタンスにリクエストを投げ、集計することは現実的でないだろう。
つまり、ダウンタイムなしでのスケールアップやコスト削減、横断的なデータ活用に取り組みたいと考えても、現状のアーキテクチャが機能実装を阻んでしまっているような状況だ。