はじめに
本記事は any Advent Calendar #2 「マルチテナントSaaSにおけるエンジニアリング大全」 Day20 の記事です。 弊社anyのアドベントカレンダーをひとつ丸ごと占有して、ひとりアドベントカレンダーとして、筆者の「マルチテナントSaaSのエンジニアリング」への経験をすべてアウトプットしていくカレンダーです。
今回はDevOps観点でマルチテナント特有の運用業務について、Qastの事例を中心に紹介していきたいと思います🍵
DevOpsとマルチテナント
DevOpsとは開発と運用をシームレスに紐づけるために必要なプロセスのことを指します。言葉そのものは抽象的でマルチテナントSaaSの領域においても、答えのない領域ではないでしょうか。AWS環境における、マルチテナントSaaSにおけるDevOpsについては、AWS re:Invent 2023においてのセッションがオススメです。
Qastにおけるツールといえば、下記のようなものを利用しています。基本的にはGitHub、Terraform、JIRAなど標準的なツールを選定していますが、この記事では特別な工夫をしているツールについて、いくつかの事例とともに紹介します。
テナント管理の社内画面
Day 7のテナントのオンボーディングでも紹介しましたが、社内向けの管理ツールが存在しています。これにより各テナントの情報を参照、また機能を有効化/無効化することが可能になっています。実際にオペレーション観点では開発者が作業する場でもあり、ビジネスサイド側の人たちがプラン変更などを単独で実行できるようになっています🎉
| 顧客情報の管理 | 機能の有効化/無効化 |
|---|---|
![]() |
![]() |
社内運用ツールによる効率化
多くの企業では、社内のプロダクト特有の運用スクリプトなどは用意されているのではないでしょうか。Qastでは社内の運用ツールをStreamlitを用いて、いくつかの定型業務を自動化しています。
社内運用ツールとしてStreamlitを選定した理由は、以下の通りです。
- One Shotのスクリプトにおいては、Pythonの取り回しが楽である
- UIはほしいが、リッチなフレームワークで開発することは 可能な限り避けたい
またデータベースへの参照として、Redashを運用ツールとして稼働させています。
RedashはもともとBIツールの側面が強く、その用途でも利用していますが、下記のようなメリットがあります。
- 高頻度で利用するクエリに対して、社内データベースの直接的な参照を避けるため
- 調査タスクにおいてもテナントまたぎが発生するため、Pythonスクリプトを実行できる環境を用意するため
このようにマルチテナントにおいて発生する諸問題を社内ツールで肩代わりできるようにしています。
さいごに
Qast開発におけるDevOpsにおける開発ツールについて紹介してきました。マルチテナントにおいてはデータ分離戦略などが複合的なため、社内ツールを構築することで、運用を楽にできるのでぜひ参考にしてみてください🍵





