読者です 読者をやめる 読者になる 読者になる

SavePoint の動き方 (テナント編)

皆さん。こんにちは。MUGENUP の osada です。

5月14日(木) に SavePoint(セーブポイント) という新サービスをリリースしました。

www.savept.com

MUGENUP がクラウドソーシングで培った進行管理プロセス、そしてその集大成である Workstation を リプレースし、どなたでも使えるように SaaS として提供したプロジェクト管理ツールです。

今回は、SavePoint が導入しているマルチテナントについて解説します。

SavePoint はビルディングに似ています。

SavePoint は、savept.com というドメインで運用しています。 しかし実際には、mugenup.savept.com のようなURLでアクセスすることになります。 これは実際にはどうなっているのでしょうか?

f:id:mgnup:20150520011956p:plain

図は、SavePoint の構造をビルに例えたものです。

キーワードは、「フロア、入構証、エレベータ」の3つです。

まず SavePoint ビルがあります。 そこにはフロアがありますが、これがそれぞれのサブドメイン(mugenupの部分)になります *1

次に、ユーザーごとに、入構証が発行されます。 これは、メールアドレスとパスワードで構成され、 1メールアドレスごとに、1つ 発行されます。 これを使って 「SavePoint ビルに入る = ログインする」ことができるようになります。

しかしこれだけでは、フロアに入ることが出来ません。 ビルには入れたけど、エレベータが止まらないのです。

フロアに入るには、その入構証にフロアに入る許可を付与する必要があります。 そうすることで、エレベータがそのフロアに止まることになります。 (許可がないフロアには止まりません = アクセスできません)

逆に言うと、フロア許可証があれば、再度ログインし直す必要がありません。 一つの入構証で、自由にフロアを行き来することができます。

フロア許可証には2段階のレベルあります。

フロア許可証があるので、フロアに降りることはできるようになりました。 しかし今度は、部屋(= プロジェクト・案件)に入ることが出来ません。

部屋ごとにセキュリティがあるため、今度は部屋の許可を貰う必要があります。 この許可は、2種類の人からもらうことができます。

一人は、部屋の管理者(=案件管理者: 詳細は次回に解説します)。

もう一人は、フロア管理者 です。

フロア許可証には、通常レベルとは別に、 全てをコントロールできる管理者権限(Level A)を付与することができます。

これを持つ人が、フロア管理者です。 登録サイトから登録したユーザーは、フロア管理者となります。 *2

このレベルでは、全ての部屋(案件)に自由にアクセスしたり、 フロア管理室(後述)に入ることができるようになります。

ログインはできたけど、何もアクセスできない、というときは、 まだ部屋に入れてもらっていない、ということかもしれません。

フロア管理室でできること

部屋の外側のフロア全体に関わることはフロア管理者しか行うことができません。 例えば、

  • 入フロア許可の登録・剥奪
  • 新しい部屋(案件)の追加・部屋の削除
  • 他の誰かをフロア管理者にすること

などです。

データベースの解説

さて、概念を説明したところで、技術の話に移行します。

SaaS のサービスの場合、マルチテナント、というキーワードが出てきます。 しかし今回は、テナントではなく、フロアという例を出しました。 なぜかというと、「ビル入構証」という概念を伝えたかったからです。

純粋にテナント構造にすると、ユーザーはテナントごとに入構証を持ち歩かなければなりません。 首から3枚も4枚もカードをぶら下げて歩くのは、大変です。

よって SavePoint では、ユーザーのみ、テナントごとのデータベースから切り離して管理しています。

クライアントからサーバにアクセスがあると、Rack ミドルウエアの中で、 リクエストからサブドメインを判別し、データベースが切り替わります。 データベース単位で切り替わるため、他のテナントのデータが混ざることはありません。

しかし、ユーザーテーブルのみ、どのテナントからアクセスしても、 必ず一つのデータベースを見に行くようになっています。

これにより、セキュリティを高めながら、利便性を保つことができるようになっています。

まとめ

  • SavePoint はビルディング構造に似ています
  • 入構証の他に、フロア許可証があります
  • ユーザーは異なるフロアにシームレスに移動することができます。

SavePoint は、「発注者の管理を楽にしよう」 ということを追求して作っているサービスです。

ところが、MUGENUP 自体は、発注元からお仕事をいただく制作側の立場です。

もしSavePoint を100社がご導入いただいて、MUGENUPにお仕事を頂く場合、 通常のサービスでは、一人ごとに100アカウント作ることになるかもしれません。

しかし SavePoint なら何社になっても1人1アカウントです

このように、制作側にとっても使いやすいサービス を目指せるのは、 ドッグフーディングができる弊社の強みだと考えています。

発注者にも、受注者にも使いやすいサービス、を目指して、開発を続けています。

是非お使いください。

募集

弊社は、一緒に SavePoint を作ってくれるエンジニアを募集中です。 無限流開発、ご一緒しませんか?

recruit.mugenup.com

*1:登録サイトではスペースIDと呼んでいます

*2:それ以外で登録したユーザーは、通常レベルです