Squadbase

Docker

Dockerを用いたデプロイ方法について学びます。

SquadbaseはDockerを用いたデプロイをサポートしています。 Dockerはアプリケーションとその依存関係をパッケージ化することで、異なる環境でも同じように動作することを保証し、ローカル環境と本番環境の差異を最小化します。

SquadbaseはDockerを用いたアプリケーションのデリバリーにおいて、以下のような機能・運用を実現します。

  • セキュアなクラウド環境へのデプロイ
  • 組み込みのユーザー認証
  • ユーザーアナリティクス
  • ログモニタリング
  • ユーザーからのフィードバック収集

公式でサポートされていないフレームワークで構築したアプリやOSレベルのパッケージインストールしたアプリをSquadbaseにデプロイする際にもDockerは利用可能です。

Dockerfileを作成する

Dockerfileを作成して、あなたのアプリをパッケージ化します。Squadbaseでは、ビルドしたDockerイメージを用いてアプリをデプロイします。

デプロイ先の環境は、squadbase.ymlで指定するproviderによって異なります。

  • AWS: AWS Lambdaをベースにした実行環境
  • GCP: GCP CloudRunをベースにした実行環境

例として、公式サポートのフレームワークで使用しているDockerfileは以下の通りです。

Github連携を用いてデプロイする

squadbase.ymlを作成する

プロジェクトのコードベースのルートに squadbase.yml を作成します。例えばStreamlitアプリでDockerを用いてデプロイする場合には、以下のようになります。

app.py
Dockerfile
pyproject.toml
squadbase.yml

例として、最もシンプルな squadbase.yml の内容は以下の通りです。

# squadbase.yml
version: '1'

build:
  context: .

squadbase.ymlのカスタマイズについては、こちら をご覧ください。

GithubリポジトリをSquadbaseにインポートする

Squadbaseのダッシュボードのホーム画面から、Githubリポジトリをインポートします。インポートが完了すると、自動的にデプロイが開始されます。

プッシュしてデプロイ

アプリに変更を加えて、Githubリポジトリにプッシュしてデプロイします。プッシュが完了すると、自動的に新しいバージョンのデプロイが開始されます。

Squadbaseの機能を利用する

Squadbaseはデプロイメントだけでなく、組織向けアプリの開発・運用に便利な機能を提供しています。

ユーザー認証とメンバー管理

Squadbaseにデプロイされたアプリに、Squadbase上のチームメンバーがアクセスすると自動的にユーザー認証が行われます。アプリの公開設定がパブリックでない場合、この認証を通過したユーザーのみがアプリにアクセスできます。また、アプリへのアクセスを持つユーザーには、「プロジェクトロール」という設定値を与えることができます。

REST APIを用いて、プロジェクトロールを含むユーザー情報にアクセスすることができ、アプリの挙動をユーザーのロールに応じてカスタマイズすることができます。

Squadbaseのユーザー情報を取得するには、以下のように実装してください。

import requests

def get_user_info_from_cookie(cookie):
  subdomain = "your-subdomain"

  # Construct the URL for the POST request
  url = f"https://{subdomain}.squadbase.app/_sqcore/auth"
  token = cookie.get("__Host-squadbase-session")
  headers = {
      "Authorization": f"Bearer {token}"
  }
  response = requests.post(url, headers=headers)
  if response.status_code == 200:
      return response.json()
  else:
      return {"error": "Failed to retrieve user information"}

cookie = {"__Host-squadbase-session": "your-auth-token"}
user_info = get_user_info_from_cookie(cookie)
print(user_info)

JavaScriptの場合は、@squadbase/serverをインストールして簡単に取得することができます。

import { createServerClient } from "@squadbase/server";

const client = createServerClient({
  projectId: "your-project-id",
  cookieOptions: {
    getCookie: () => {
      // Implement your cookie retrieval logic here
      // This should return the session cookie string
    },
    // You can set mock user data for local development
    // mockUser: {
    //   username: "test-user",
    //   email: "test@example.com",
    //   firstName: "Test",
    //   lastName: "User",
    //   iconUrl: null,
    //   roles: ["user"],
    // },
  },
});

// Get the current authenticated user
const user = await client.getUser();
console.log(user);
// {
//   username: string,
//   email: string,
//   firstName: string,
//   lastName: string,
//   iconUrl: string | null,
//   roles: string[]
// }

ユーザーアナリティクス

Squadbaseは、ユーザーのアクセスログを収集し、ユーザーアナリティクスを提供します。SquadbaseにデプロイしたDockerアプリを、チームメンバーがどのくらい利用しているのかを把握することができます。

Squadbaseの組み込みのユーザーアナリティクスを利用するために、コードを追加する必要はありません。Dockerアプリをデプロイし、ダッシュボードからすぐにアナリティクスを確認することができます。

User Analytics

ログモニタリング

Squadbaseは、デプロイされたアプリのログを収集し、ログモニタリングを提供します。ログモニタリングを利用することで、アプリのデプロイやデプロイのバージョンごとのログを確認することができます。

Log Monitoring

フィードバック

Squadbase上にデプロイされたアプリには、自動でフィードバック用のコメントボックスが追加されます。チームメンバーはこのコメントボックスから、アプリのフィードバックを送信することができます。

Feedback