PythonとDjangoを使用してSaaS(Software as a Service)アプリケーションを作成できるいくつかの記事/アプリケーションを教えてください。
今のところ、私が理解していない一般的なトピックは次のとおりです。
私は以下を使用します:
必須ではありませんが、長期的には次のことが役立ちます。
最後に、持ってよかった
あなたがそれについてどうやって行くかの非常に基本的な、基本的な例。
特定のビジネスケースを解決するように設計されたシンプルなアプリがあるとします。たとえば、オフィスの部屋の予約を処理するアプリを作成したとします。
このアプリをサービスに「変換」するには、アプリケーションのユーザー固有の部分のほとんどがパラメトリックになるように構成する必要があります( 「テンプレート化」-より優れたWordがないため)。
これは、フロントエンドが変換される方法です。アプリのロゴ、見出し、ティーザー、配色を保持する変数を作成できます。各ユーザーがインスタンスをカスタマイズできるようにします。
これまでのところ、アプリはフロントエンドでそれ自体をカスタマイズすることができます。フェーズ1で設計されたのと同じデータベースをまだ使用しています。
ここで、特定のユーザーに関連するフィールドのみを表示するという問題が発生します。これは、データベースのパラメーター化になります。したがって、各行を特定のユーザーに属するものとして識別する列を追加できます。次に、ログインしたユーザーに基づいてレコードをフィルタリングするビューまたはストアドプロシージャを作成します。
これで、アプリケーションを「レンタル」できるようになりました。ユーザーに基づいてインスタンスをカスタマイズできるためです。
その後、アプリケーションの規模、タイプ、および目的のカスタマイズに応じて、ここから大きくなります。各ユーザーがストアドプロシージャとビューの組み合わせではなく、専用のデータベースを持っていると、アプリケーションのパフォーマンスが向上すると判断する場合があります。
一部のユーザータイプ(または「パッケージ」)では、実行中のアプリケーションの専用インスタンスが必要であると判断する場合があります。したがって、「プレミアム」または「ウルトラ」ユーザーの場合は、独自の専用システムを実行する必要があります。
アプリケーションが大量のストレージを必要とする場合は、ストレージに対して個別に課金することを決定する場合があります。
肝心なのは、使用する言語とは何の関係もありません。アーキテクチャと設計の問題です。
Software as a Serviceは単なるマーケティングワードであり、技術的にはインターネット経由でアクセス可能なサーバーと同じです。したがって、質問3は意味がありません。それは私たちに質問1と2を残します。
この文脈での「アプリ」とはどういう意味ですか?あなたのウェブアプリケーション(PythonとDjangoで構築された)は複数のDjangoアプリ(ウェブアプリケーションを構成するコンポーネント)を持つことができますが、それはあなたが意味することではないと思います。Python/ Djangoでウェブサイトを構築し、ログインしているユーザー(クライアント)に応じてさまざまなカスタマイズオプションを設定できます。たとえば、プレミアムクライアントではいくつかの詳細オプションを有効にできますが、それでも同じコードベースの一部です。それだけです。一部のオプション(ボタン/コントロールなど)が特定のクライアントに表示されない
Djangoには、ユーザー管理、権限、グループ用のツールがたくさんあります。各ユーザー(各クライアント)に異なるアクセス許可を与えることができ、これらのアクセス許可によってユーザーが実行できる操作が決まります。データベースアクセスは、Webアプリケーションで管理する必要があります。たとえば、コードは(ログインしているクライアントに応じて)Webページに表示する必要がある情報を決定し、そのコードはデータベースから情報を取得します。目的の規模に応じて、情報の取得に使用するデータベースを指定することもできます。
ブログ投稿 Djangoを使用してマルチテナントSAASWebアプリケーションを作成する方法の提案を説明しています。ここでのマルチテナンシーとは、ユーザーが登録するときにサブドメインを持つことを意味します。要点をまとめると:
current_tenant = request.tenant
を実行するだけでテナントオブジェクトを取得できます*.abc.com
を使用したCPanel内