ArchTechx/Tenancyは、Laravelアプリケーション向けに設計された包括的で柔軟なマルチテナンシーパッケージです。これにより、開発者は既存のアプリケーションに大幅なコード変更を必要とせずにマルチテナントを実装し、1つのLaravelインストール内で複数のテナントを管理する自動でシームレスな方法を提供できます。
パッケージは自動マルチテナンシーアプローチで動作します。つまり、データベース接続、キャッシュ、ファイルシステム、キュー、レディスストアなどのテナント固有の構成を舞台裏で処理します。この自動化により、開発者はシングルテナントアプリをマルチテナントSaaSプラットフォームに変換し、コードベースへの介入を最小限に抑えることができます。
ArchTechx/Tenancyの主要な機能は次のとおりです。
- 自動テナント識別:ホスト名に基づいてテナントを識別し、第2レベルドメインのサポートを含みます。これにより、手動構成なしでテナントのドメインに基づいてルーティングとコンテキストの切り替えが可能になります。
- コードの変更は必要ありません:テナント管理では、特定の特性でモデルを変更したり、キャッシュやストレージなどのLaravelコアクラスをテナント認識バージョンに置き換える必要はありません。これにより、Laravelの慣習を尊重するクリーンな統合が行われます。
- 単一と多糖類のテナントモデルの両方をサポートします。データベースでテナントデータを分離するか、テナントスコープモデルで共有データベースを使用できます。マルチデータベースアプローチの場合、パッケージは、適切なテナントデータベースのモデルを自動的にスコープする特性を提供します。
- イベントベースのアーキテクチャ:パッケージは、作成、初期化、破壊などのテナントライフサイクルアクション中に解雇されるイベントを中心に構築されます。この設計により、開発者はこれらのイベントに接続し、必要に応じて動作をカスタマイズし、非常に拡張可能なシステムを作成できます。
- 他のLaravelパッケージとの統合:ArchTechx/Tenancyは、Laravel Novaを含む他のLaravel Ecosystem Packagesとスムーズに統合され、馴染みのあるツールからテナント固有のリソースを簡単に管理できます。
- テスト可能性:テスト可能性を念頭に置いて設計されています。このパッケージにより、テナント登録フロー、テナントコンテキストの切り替え、テナント固有の操作の徹底的なテストが可能になり、安定した信頼性の高いマルチテナントセットアップが確保されます。
- ユーザーとリソースの共有:パッケージは、ユーザーが複数のテナントに属するシナリオをサポートしています。必要に応じて、テナントデータベース間でデータを同期できるリソース同期機能を備えています。
- ユーザーのなりすまし:ユーザーのなりすましの機能が含まれており、管理ユーザーがデバッグまたはサポートの目的でシステム全体でテナントユーザーになりすまします。
- データベース互換性:MySQL、PostgreSQL、SQLiteなどの複数のデータベースシステムで動作し、PostgreSQLスキーマをサポートし、テナントデータの分離方法の柔軟性を提供します。
- マニュアルモードと自動モード:デフォルトモードはコンテキストを自動的に切り替えますが、パッケージは手動のテナント管理もサポートします。ここでは、開発者がデータベース接続を制御することを好む場合、テナントコンテキストを明示的に指定できます。
- 機能が詰め込まれている:パッケージは、Laravelテナントパッケージの中で最も機能が豊富であると考えられており、ドメイン保護、テナントライフサイクル管理、リソースの分離などの一般的なSAASのニーズをカバーするための幅広いツールをすぐに提供します。
このパッケージは、Laravelコミュニティで高く評価されており、GitHubで4,000を超える星を維持し、さまざまなホスティングプラットフォームで多くの生産アプリケーションで使用されています。それは、定期的なリリースと歓迎の貢献者ベースを備えた積極的な開発中です。
Spatie/Laravel-Multitenancyなどの他のLaravelテナントパッケージとの比較は、ArchTechx/Tenancyがより幅広い自動セットアップ機能と、より柔軟なイベント駆動型アーキテクチャを提供することを示しています。これにより、複雑なテナント要件を期待するプロジェクトや、既存のアプリケーション構造の混乱を最小限に抑えたいプロジェクトに適しています。
通常、インストールでは、Composerを介してパッケージを登録し、構成ファイルを公開し、テナント認識ルートとミドルウェアのセットアップが含まれます。セットアップ後、テナントはプログラムでまたは管理インターフェイスを介して作成でき、パッケージは各リクエスト中にテナント環境を自動的に管理します。
このパッケージは、GitHubやその他のチャネルを介したコミュニティサポートとともに、十分に文書化されたAPIとガイドを提供し、新人と経験豊富なLaravel開発者の両方がアクセスできるようにします。
要約すると、ArchTechx/Tenancyは、Laravel開発者が最小限のコード変更と最大の拡張性を備えたスケーラブルなSaaSアプリケーションを構築するのに役立つように設計された、強力で柔軟で高度に自動化されたマルチテナンシーソリューションです。イベント主導のモデル、マルチ産根サポート、および深いLaravel統合は、マルチテナントのLaravelプロジェクトの主要な選択肢として区別しています。