yutatanaka.tokyo logo

yutatanaka.tokyo

Published on

SaaSをAWSで今作るなら。3パターン検討してメリデメを整理する。

Authors

概要

SaaSのWebサービスを今AWSで作るならどのようなパターンが考えられるか、まとめてみました


要件を箇条書きするとこんな感じ。僕はPHPエンジニアなのでPHPの利用も前提としています。

  • プロトタイプからPMFを目指す段階のサービス(まだデータの蓄積はないか、ないに等しい)

  • マルチテナント構成(プログラムのバグに起因する情報漏洩は防ぐ)


    そのため、

    行レベルロック(RLS)できるPostgreSQLのようなRDBMSか、アプリケーションレイヤでのテナント構成は


    必須

    とする

  • いつでもスケールアップできる構成にする

案1. AWS LightSailを最小構成でスタートし適宜拡張する。

https://aws.amazon.com/jp/lightsail/

AWS版VPSサービス。もとはM&Aして買収した会社のサービスだったらしい。AWSのアカウントを持っていれば開設が超気軽な上、


金額も安く、EC2と同じOS(インスタンスイメージ)を使えるので、旧来のシステムに慣れていれば楽。

長所:

  • 安い 月間3.5ドル、無料枠を使えばもっと安く運用開始できる

  • 旧来のEC2 (Amazon Linux2) を使えるので慣れている人なら脳死でサーバ構築できる

  • EC2自体は長期にわたって運用されているのでトラブルに当たった時のシューティングがしやすい

  • 最近

    結構いいプラン

    も出てきてる

短所:

  • WebとDBで負荷が分離できない。どちらかがボトルネックになってサービス停止しうる。

  • 今時コンテナで管理しない構成はどうなのか (

    Lightsailでもコンテナデプロイはできる

    らしいがあまり採用例を聞かない)

案2. AWS Beanstalkを使ってホスティングする

https://aws.amazon.com/jp/elasticbeanstalk/

AWS版herokuみたいなサービス。これが登場するまでちょっとしたサービスでもVPCを作って、セキュリティグループを作って、IPの設定を、、と


色々大変だったが、アプリエンジニアでもかなり楽にインフラ構築できるようになった。

長所:

  • phpのzipを直デプロイする方法から、dockerをAWS ECS経由でデプロイする方法まで柔軟にデプロイできる

  • オートスケーリングしてくれるので楽。時間帯によるスケーリングの指定もできるようなのでSaaSの要件に適している

  • 最小構成でWebとDBを分離できる気軽な方法かも。

短所:

  • コストが読みにくい。運用してみてチューニングするのに対応できる予算が十分にあるケース向け(大抵そうだと思うが。)

  • RDSはWEBサーバと違ってオートスケーリングしないので事前にスパイクに予防措置を取る必要あり=コスト高傾向


案3. AWS SaaS Boostを使う

https://aws.amazon.com/jp/partners/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ストレージストラテジー)

が教科書になりうると思います。



ただ、ビジネスのステージがもし変わると後で「なんでこの構成にしたんだ?」と


言われやすいところかなと。

そうなったら、それはそれで幸せなことだ

とは思いますけれどね。