- Published on
SaaSをAWSで今作るなら。3パターン検討してメリデメを整理する。
- Authors
- Name
- yuku_tas
- @yuku_tas
概要
SaaSのWebサービスを今AWSで作るならどのようなパターンが考えられるか、まとめてみました
要件を箇条書きするとこんな感じ。僕はPHPエンジニアなのでPHPの利用も前提としています。
プロトタイプからPMFを目指す段階のサービス(まだデータの蓄積はないか、ないに等しい)
マルチテナント構成(プログラムのバグに起因する情報漏洩は防ぐ)
そのため、
行レベルロック(RLS)できるPostgreSQLのようなRDBMSか、アプリケーションレイヤでのテナント構成は
必須
とする
いつでもスケールアップできる構成にする
案1. AWS LightSailを最小構成でスタートし適宜拡張する。
AWS版VPSサービス。もとはM&Aして買収した会社のサービスだったらしい。AWSのアカウントを持っていれば開設が超気軽な上、
金額も安く、EC2と同じOS(インスタンスイメージ)を使えるので、旧来のシステムに慣れていれば楽。
長所:
安い 月間3.5ドル、無料枠を使えばもっと安く運用開始できる
旧来のEC2 (Amazon Linux2) を使えるので慣れている人なら脳死でサーバ構築できる
EC2自体は長期にわたって運用されているのでトラブルに当たった時のシューティングがしやすい
最近
結構いいプラン
も出てきてる
短所:
WebとDBで負荷が分離できない。どちらかがボトルネックになってサービス停止しうる。
今時コンテナで管理しない構成はどうなのか (
Lightsailでもコンテナデプロイはできる
らしいがあまり採用例を聞かない)
案2. AWS Beanstalkを使ってホスティングする
AWS版herokuみたいなサービス。これが登場するまでちょっとしたサービスでもVPCを作って、セキュリティグループを作って、IPの設定を、、と
色々大変だったが、アプリエンジニアでもかなり楽にインフラ構築できるようになった。
長所:
phpのzipを直デプロイする方法から、dockerをAWS ECS経由でデプロイする方法まで柔軟にデプロイできる
オートスケーリングしてくれるので楽。時間帯によるスケーリングの指定もできるようなのでSaaSの要件に適している
最小構成でWebとDBを分離できる気軽な方法かも。
短所:
コストが読みにくい。運用してみてチューニングするのに対応できる予算が十分にあるケース向け(大抵そうだと思うが。)
RDSはWEBサーバと違ってオートスケーリングしないので事前にスパイクに予防措置を取る必要あり=コスト高傾向
案3. AWS SaaS Boostを使う
2021年に登場した新しいソリューション。
gitレポジトリ
からcloneしてきて利用するスタイル。
サイロモデル
でのSaaS向けDBパーティションに対応しているようで、専用の管理画面で顧客管理できるのがストロングポイント
が参考になる
長所:
オンボーディング(各社の新規登録時のDB構築)や課金の管理がかなり簡単になる
サイロモデル
では、ある会社の負荷増に他の会社は一切影響を受けない
セキュリティ面でも案1/2にくらべより強固なので、このサービスに乗るだけで回避できるので長い目で見るとコスト減になる可能性がある。
利用するDBは色々選択できる。RDS Aurora/ MySQL/PostgreSQLだけでなく、DynamoDBまで選べるみたい
Stripeがビルドインされており
課金の導入がかなり楽
(に見える)
クラスメソッド様でcloud9に載せた構成が紹介
されており、管理ツールについては
比較的簡単に評価できそう
短所:
2021年に登場した技術でこなれていない。実際にGoogle検索しても採用事例が少なそうだ。
テナントごとのスケールアップができないという弱点があるらしく、顧客の中に極端に大きな会社がいたりすると自由が利きにくい。
(
NRIデジタル様の事例
)
その場合、OSSの先述gitレポジトリのコードを変更する必要があり、将来にわたって懸念点になりうる。
直ぐにはやめることはないと思いますが、将来AWSがサポートやめたらどうする?
試してみないとコスト感が掴めない
結論
調査の中でふと見かけた、
AWS SaaS Boostがとても魅力的に見えました
が、現状では残念ながら、まだ評価の域をでないのかもしれないと個人的には思いました。
採用には二の足を踏むのもやむなしかなと。
SaaSのデータパーティション戦略は、特に初期段階は要件により大きく変動するので、なかなかベストプラクティスと呼べるものはないと思います。
サービスのユースケースに合わせてそのチームなりに工夫していくしかないのかなと思いました。
工夫に際しては、AWSが2016年11月に編纂したこちらの
SaaS Storage Storategies (SaaSストレージストラテジー)
が教科書になりうると思います。
ただ、ビジネスのステージがもし変わると後で「なんでこの構成にしたんだ?」と
言われやすいところかなと。
そうなったら、それはそれで幸せなことだ
とは思いますけれどね。