SaaSus Platformの機能検証#SaaS開発#AWSサービス

AWS

2024.7.30

Topics

はじめに 

SaaS化をサポートするプラットフォームを調査しながら、Anti-Pattern Inc様のSaaSus Platformに関わる機会があり、該当サービスをテストした過程や感想などを簡単に記載してみます。

SaaSus Platform
SaaSus Platformは、SaaS構築に必要な機能とノウハウが詰まった「SaaSの開発から運用まで」の支援を可能とするツールです。SaaS開発・運用に十分な経験がない場合でも、将来発生するリスクを抑えながらSaaSビジネスを始められます。

今回検証した項目

  • テナント・ユーザ管理機能
  • ログイン画面作成機能
  • 料金プラン機能
  • Amazon EventBridge連携機能

個人的な使用評価

※事前作業

・SaaSus Platformに登録

SaaSus PlatformはAWS Marketplaceでも提供していますが、検証が目的なので有償プランを利用せず、下の画像にあるフリープランを提供しているSaaSus Platformのウェブページに入り「新規登録」を行います。新規登録には支払い方法などの登録は不要で、すぐに使用可能なステータスになります。

料金プラン設定後にSaaSus Platformにログインすると、最初に以下のように2つのコンソール環境が確認できます。1つは「SaaS開発コンソール(SaaS Development Console)」で、もう1つは「SaaS運営コンソール(SaaS Operations Console)」です。2段階のみ設定すればSaaSを構築できるという強いアピールだと感じました。ウェブにて紹介している各コンソールの機能をみると「SaaS開発コンソール」はSaaS製品の開発を支援するツールで、様々な作業を行うことができ、ログイン周りの設定や、APIログ確認なども可能で、「SaaS開発コンソール」はSaaSサービスの運営をサポートするツールで、ユーザ管理や、行動履歴の確認などを行えます。ちなみに、運営に必要な統計やレポート生成に必要な情報も、このコンソールから取得できそうです。

 

①マルチテナントSaaSを前提にしたテナント管理機能、ユーザ管理機能

下記イメージのように「SaaS開発環境」にてユーザーとテナントの属性、そしてユーザーの環境と役割を定義します。これによりマルチテナント環境をより簡単に構成することが可能です。「SaaS運用環境」に移して「SaaS開発環境」の設定に付け合わせるテナントとユーザーを作成すると下記イメージのようになります。

※テナント

※ユーザー

生成したテナントとユーザーをSDK(PHP(Laravel)、TypeScript(Node.js)、Java、Go、Python)かAPIを介してコールして使用するだけです。以下は、API(https://api.saasus.io/v1/auth/tenants/all/users)でユーザー情報を確認した結果の一部です。階層化がよくできているため使用しやすく感じました。ちなみに、フリープランでも、5つのテナント、5人のユーザーまで登録が可能です。

{
  "users": [
    {
      "attributes": {
        "username": "tena2-1"
      },
      "email": "tena2-1@nhn-techorus.com",
      "envs": [
        {
          "display_name": "実利用環境",
          "id": 3,
          "name": "prod",
          "roles": [
            {
              "display_name": "一般利用者",
              "role_name": "user"
            }
          ]
        }
      ],
      "id": "85aad5d3-fc59-48f9-90e8-307f9ef18a07",
      "tenant_id": "a3b189e9-8ba1-4d7b-9a20-204f79293d73",
      "tenant_name": "tenant2"
    },
    {
      "attributes": {
        "username": "tena2"
      },
      "email": "tena2@nhn-techorus.com",
      "envs": [
        {
          "display_name": "実利用環境",
          "id": 3,
          "name": "prod",
          "roles": [
            {
              "display_name": "一般利用者",
              "role_name": "user"
            }
          ]
        }
      ],
    ..............................

②ログイン画面作成機能

コンソールにてログイン画面を作成することも可能です。今回は検証のため、このログイン画面を利用して実装していきたいと思います。もちろん自身でログイン画面を実装し、ログイン機能のみ利用することも可能です。

②-1. ドメイン連動
必須ではありませんが、すべてのサイトの基本であるドメインを通じた経路移動を確認するために、下記イメージのように作業を進行します。
「SaaS開発コンソール」-「ドメイン」からドメインの登録が必要です。私はドメインを持っていないため、AWS Route53からドメインを作成しました。そして、
AWS Route53でホストゾーンを作成し、作成したドメインをSaaSus Platformコンソールに登録すると、しばらくして自動的にCNAMEレコードが発行されます。発行されたCNAMEレコードをAWS Route53のホストゾーンに登録すると、短時間で下記イメージの左側部分に「以下の DNS 情報が検証され、正常に動作中です」という文章とともに緑のチェックマークが表示されすぐにドメイン利用が可能になります。

 

②-2. ログイン画面設定

上記のドメイン連携作業完了後、「SaaS開発コンソール」-「認証詳細設定」に移動すると、下記のようにログイン画面に移動するURLが生成されたことが確認でき、

その下の部分を見ると、簡単に下記イメージのようにサービス名やアイコン、利用規約などが設定できるコンソールが用意されています。私も簡単にサービス名を「techo」にして、公開イメージでアイコンを作ってみました。

簡単な設定を終えてログインURLをクリックすると、下記のようにログインページが自動的に生成されたことが確認できます。(Google IDPの追加も可能と思われます。(API Docs参照))

ちなみに、APIで認証情報(https://api.saasus.io/v1/auth/basic-info)を以下のようにcallback url(https://api.saasus.io/v1/auth/auth-info)で取得することも可能なため、オリジナルのログイン画面を作成することも可能だと思います。

{
  "certificate_dns_record": {
    "name": "_7b913b1123960472258c16a0fb119fab.auth.saas-techo.com.",
    "type": "CNAME",
    "value": "_4811e62dd2c761f3fd8bf3f2bb3cf17e.sdgjtdhdhz.acm-validations.aws."
  },
  "cloud_front_dns_record": {
    "name": "auth.saas-techo.com.",
    "type": "CNAME",
    "value": "d2ff0sd0mv2aai.cloudfront.net."
  },
      ..............................
{
  "callback_url": "https://saas-techo.com/callback"
}

      ..............................

②-2. ログインのプロセス

②-1のログイン画面にて①で作成したユーザーを用いてログインを行います。(チュートリアル-Laravelを参照)

②-2のログインのプロセスに記載されている通り、ログインユーザー情報が問題なければJWT tokenを取得して下記のイメージの取得したJWTをローカルストレージに保存します。

下記のイメージの様にローカルストレージにあるJWT tokenのpayloadをみると、認証に必要とするclaimの内容が確認できます。

下記は問題なくログインができユーザー情報を取得して表示した結果です。

③料金プラン機能

「SaaS開発コンソール」に入り、メニュー項目の下部を見ると、次の画像のように「料金プラン」項目を確認することができます。
結果的に料金プランを設定するためは 「SaaS開発コンソール」に入って下記のイメージの項目を設定すればOKです。

メーター単位設定:  計測単位に設定するメーター単位を定義

計測単位設定: 料金のベースとなる最小の計測単位を設定

機能メニュー設定: 計測単位を複数まとめて、1つの機能として定義

料金プランを設定

※下記は上記の料金設定に基づいて「SaaS 運営コンソール」にてテナント別に料金プランを適用した例です。

上記を基に、1ヶ月のテナント別の利用費用を計算する際は、下記のように今月の利用メータリングを求めた後に、テナント別に料金プランを適用すれば良いと思います。

■当月のメータリングユニットカウントを取得API : https://api.saasus.io/v1/pricing/metering/tenants/{tenant_id}/units/{metering_unit_name}/thismonth→パースパラメーターとしてtenant_id(「SaaS運営コンソール-「テナント管理」にて確認可能)、metering_unit_nameを利用(「SaaS開発コンソール」-「メーター単位設定」にて定義)

5fd431f3-c477-4c41-86b5-6727373d57b8: tenant1のtenant_id
saasmeter :  メーター単位(UserCounts)例)tenant1の1ヶ月発生費用 : 1000ユーザーがtenant1のBasicプランを利用:1000 ユーザーx 1000円

ちなみに、下の画像のように「SaaS開発コンソール」-「計測単位設定」で料金のベースとなる最小の計測単位を設定することで、単に購読型モデルだけではなく従量制モデルでも料金プランを作成することができます。さらに、Stripeと連携設定可能な「税率設定」の機能も非常に魅力的です。

※計測単位設定

・固定ユニット : 基本料金などの月額固定料金の単位
・使用量ユニット: ユーザ数課金などの1単位あたりごとに料金が発生する単位
・段階ユニット: 携帯電話の段階的パケット料金のように利用量の段階ごとに一定の料金の単位
・段階的使用量ユニット: ボリュームディスカウントのように利用量に応じて1単位あたりの料金が変化していく単位

 

④イベント連携

SaaSus Platformは、 Amazon EventBridge と統合されています。 SaaSus Platformで起こった各種イベントをパートナーイベントソースとして、 SaaS 側 AWS アカウントの Amazon EventBridge に送信することができます。これを活用することにより、 SaaSus Platformと連携したイベント駆動のアーキテクチャを採用し SaaS を構築することができます。

上記のように現在使用中のAWSアカウントとリージョンを入力すると、 パートナーイベントパスが作成されます。該当AWSアカウントにログインした後に、Amazon EventBridgeのパートナーイベントソースのコンソールを開き、パートナーイベントソースが作成されていることが下記のイメージで確認できます。上記のように連動が完了した後に「テスト送信」ボタンを押すと、

下記のようにイベントが正常に届き、CloudWatch Logsにイベントの内容が記録されます。ちなみに、24/7/5 テストの時点でテストイベントが発生したことを確認できます。

 

まとめ

SaaSus PlatformはSaaSを構築するために必要なコントロールプレーン(認証、課金、モニタリングなど)の機能を実装可能なSDKやAPIとして提供することで、ある程度PHPやJava、Pythonなどのプログラミングが可能であれば、インターフェースのカスタマイズも無理なくできると思います。また、SaaSus Platform Public Roadmapを確認すると、今後もどんどん改善していくと考えられますので、引き続き期待していきたいと思います。

テックブログ新着情報のほか、AWSやGoogle Cloudに関するお役立ち情報を配信中!

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら