Amazon Web Services ブログ
Sansan株式会社、Aurora Serverless v2 の採用で データベースの運用負荷を大幅に削減しつつ サービスレベルの向上も実現
Sansan株式会社(以降 Sansan と記載)は、名刺や企業情報、営業履歴を一元管理して全社で共有できるようにすることで、売上拡大とコスト削減を同時に実現する営業 DX サービス「Sansan」を展開しています。その他にも、インボイス管理サービスとして「Bill One」を展開しており、郵送やメール添付などあらゆる形式の請求書をオンラインで受け取り可能にし、正確なデータ化を通じて請求書業務の DX を促進するサービスとなっています。
Sansan では、Bill One の認証基盤を「Auth0」で実現していましたが、プロダクト原価のコスト増につながっており、認証基盤を独自構築することで、費用削減を狙うプロジェクトが発足しました。認証基盤の構築プロジェクトは、6カ月という短期間で開発を完了しており、AWS 上で実現されたワークロードとなります。この認証基盤では、データベースサービスとして、 Aurora Serverless v2 を使用しています。本ブログでは、Aurora Serverless v2 を導入した効果について、お客様の声をご紹介します。
Aurora Serverless v2 の導入経緯
Sansan ではマネージドな DB が選択肢としてあがることが多く、Sansan の代表的な名刺アプリ「Eight」 では Aurora を使っています。他部署でもAuroraを利用しており、一度 Aurora Serverless v2 が検討の俎上にのぼったことはありましたが、コスト的な観点でプロビジョンドのAurora が選択されました。
今回開発した認証基盤の要件は以下の通りです。
- Bill One のサービスレベルを満たすため、障害時にも業務が継続できる高い可用性
- 深夜の利用は極端に少ないなど、時間帯や曜日で変動要素が大きいワークロード
- ユーザー数の増加や想定外のピーク特性を考慮しつつ、少ないメンバーでも運用できる低い運用負荷
上記の要件を満たすサービスを検討した結果、可用性の高い Aurora PostgreSQL を採用することに決めました。さらに、Aurora Serverless v2を利用することで、トラフィックの需要に合わせてリソースのスケールアップ/ダウンが可能になり、開発者の限られたリソースの中で運用負荷を最低限に抑えられると判断しました。
Aurora Serverless v2 の開発/運用フェーズ上のメリット
少人数の体制でも 6 カ月間という短い期間で開発を完了できました。短い期間で達成できた一つの要因として、Aurora Serverless v2 を採用したことがあります。これにより信頼性/性能設計やテストの工数を大幅に削減でき、実際に負荷テストの段階で大きな性能トラブルもなく予定通り 1 週間 で終えられました。
今までは、Bill One の特性上、月末/月初にサービスへの負荷が集中するため、ピーク時期に備えて事前にデータベースのスケールアップを実施する必要があり、夜間作業が発生していました。今回の認証基盤では、Aurora Serverless v2 を選択したことで夜間作業がゼロになり、本来やるべき改善作業にリソースを集中できています。また、従来のデータベースでは、スケールアップなどの運用作業の際にダウンタイムが発生し、ユーザーへの影響が懸念されていましたが、Aurora Serverless v2ではダウンタイムもなくスケールアップできることが大きなメリットです。
また、日々の監視作業も楽になりました。従来のプロビジョンドだと、ピーク時に想定以上のユーザートラフィックがあった場合に OS リソースが不足していないかなど、重点的に監視する作業が発生していました。Aurora Serverless v2 はトラフィックに応じて柔軟にスケールアップしてくれるため、現状のところ月末/月初にも特に大きなトラブルなく運用できています。また、トラフィックが少なくなるとスケールダウンもしてくれるため、コスト最適化にもつながっています。
Aurora Serverless v2 の運用上の留意点
先ほども述べたように Aurora Serverless v2 は、ほったらかしても大きなトラブルなく稼働してくれますが、最大 ACU を超えないように監視することが重要です。Bill One の認証基盤では、当初最大 ACU を 16 ACU に設定していました。ある月初のタイミングでリソースの使用状況を確認したところ、ユーザー数の増加により、近いうちに上限を超えてしまう兆候が見えたため、最大 ACU を 32 ACU に拡張しました。その際にも再起動が不要なので、ユーザーへの影響なくスケールアップできました。
一方で、処理負荷の高いクエリが実行されると、簡単にスケールアップしてしまい、コスト増加に直結する傾向があります。ユーザー体験の悪化は防げますが、コストが高止まりする懸念があるため、認証基盤の運用でも定期的に Performance Insights を監視し、処理負荷の高いクエリをチューニングしています。
例えば、Row-Level Security を利用しているテーブルをスキャンするクエリで関数インデックスがうまく使われず、フルスキャンが発生してしまうことがありました。インデックスが利用されるようにするため、関数インデックスで使っていた関数を生成列として作成し、そのカラムにインデックスを作成してチューニングを行いました。そのようなチューニングを行うことで、サービスレベルの向上につながり、最大で 87% の ACU 削減(=コスト削減)に成功しました。このように、定期的にパフォーマンス状況を監視し、チューニングを行っていくことで、コストが高止まりしないような運用を継続していこうと考えています。
将来の展望
今回開発した認証基盤は、現在Bill Oneでのみ利用していますが、将来的には他のプロダクトでも利用する可能性があります。さらにBill One自体のユーザー数も年間で約 2 倍の伸びを見せています。よって今後、新規プロダクトがこの認証基盤を利用したり、Bill Oneのユーザー数が急激に増加したりした場合、これまで以上にダウンタイムが許容されなくなることが予想されます。また、予想していないようなアクセスパターンへの対応など、より堅牢なシステムに昇華させていく必要があると考えています。
仮にデータベースにプロビジョンドインスタンスを利用していて、新規プロダクトを追加する場合、システムを増強するためにユーザー調整や運用作業が発生すると考えられるため、無停止で拡張できるのは非常にありがたいです。
また、Bill Oneはサービスをグローバルに展開しています。現在はアジア圏が中心のため夜間帯がオフタイムになり、Aurora Serverless v2 のコストはそこまでシステム原価に影響していませんが、今後アジア圏以外でも利用が拡大すると、「Follow the Sun」にもあるようにオフタイムという概念がなくなる可能性があります。コスト低減の観点で、リザーブドインスタンス(RI)や Savings Plan による割引プランなどがでてくると、24/365 で稼働する他システムでも利用しやすくなると考えています。
ソフトウェアエンジニア |
|
|
著者
- 藤川 貞信(ISV/SaaS Business ソリューションアーキテクト)
- 高橋 佑里子(ISV/SaaS Business ソリューションアーキテクト)
- 内山 義夫(シニアデータベーススペシャリスト)
- 曽根田 隆司(アカウントマネージャー)