Webアプリ開発での「tenant_name」と「dev_name」の活用法
Webアプリケーション開発において、「tenant_name(テナント名)」と「dev_name(開発者名)」という用語を聞いたことがあるかもしれません。この2つを適切に利用すると、開発や運用の効率が大幅に向上します。この記事では、具体的な活用例を交えてその意味と使い方を紹介します。
tenant_name と dev_name の違い
まずは、それぞれの意味と使い分けを整理しましょう。
用語 | 意味 | 利用目的 |
---|---|---|
tenant_name | テナント(利用企業・組織)を識別する名前 | 顧客ごとにデータや設定を分ける |
dev_name | 開発者や開発環境を識別する名前 | 開発者ごとに環境を独立させる |
例えば、マルチテナント型のSaaSサービスを開発するとき、tenant_nameを使えば顧客間のデータを明確に分離できます。また、複数の開発者が同時に作業する場合、dev_nameを活用して個々の開発環境を混在させずに済みます。
データベース構築における活用例
データベース名の命名規則
分かりやすい命名規則として以下が推奨されます。
{アプリ名}_{tenant_name}_{dev_name}
例えば、次のような例が考えられます。
- アプリ名:
myapp
- テナント名:
companyX
- 開発者名:
dev
この場合、データベース名は以下のようになります。
myapp_companyX_dev
MySQLでのセットアップ例
CREATE DATABASE myapp_companyX_dev DEFAULT CHARACTER SET utf8mb4;
CREATE USER 'user_companyX'@'%' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON myapp_companyX_dev.* TO 'user_companyX'@'%';
FLUSH PRIVILEGES;
環境変数を使った設定管理
多くの開発プロジェクトでは、環境変数を通じてtenant_nameとdev_nameを管理します。
.envファイルの例
TENANT_NAME=companyX
DEV_NAME=dev
DATABASE_URL=mysql://user_companyX:secure_password@localhost/myapp_companyX_dev
Pythonでこれらを読み取る例を示します。
import os
tenant_name = os.getenv('TENANT_NAME')
dev_name = os.getenv('DEV_NAME')
database_url = os.getenv('DATABASE_URL')
print(f"Tenant: {tenant_name}, Developer: {dev_name}")
print(f"DB URL: {database_url}")
Docker環境での活用法
Dockerを利用すると、tenant_nameとdev_nameを活用した環境構築が簡単に行えます。
docker-compose.ymlの例
version: '3.8'
services:
db:
image: mysql:8
container_name: db_${TENANT_NAME}_${DEV_NAME}
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: myapp_${TENANT_NAME}_${DEV_NAME}
MYSQL_USER: user_${TENANT_NAME}
MYSQL_PASSWORD: secure_password
ports:
- "3306:3306"
volumes:
- db_data_${TENANT_NAME}_${DEV_NAME}:/var/lib/mysql
web:
build: .
container_name: web_${TENANT_NAME}_${DEV_NAME}
environment:
- TENANT_NAME=${TENANT_NAME}
- DEV_NAME=${DEV_NAME}
- DATABASE_URL=mysql://user_${TENANT_NAME}:secure_password@db/myapp_${TENANT_NAME}_${DEV_NAME}
ports:
- "8000:8000"
depends_on:
- db
volumes:
db_data_${TENANT_NAME}_${DEV_NAME}:
まとめ
Webアプリ開発で「tenant_name」と「dev_name」を適切に活用することで、顧客や開発者間の環境を明確に分離できます。これにより、スケーラビリティが高く、管理・運用が容易な開発体制が実現可能になります。