2012-03-29 71 views
16

您可以通過一些文章/應用程序向我提供建議,這些文章/應用程序允許您使用Python和Django創建SaaS(軟件即服務)應用程序。如何使用Python和Django創建SaaS應用程序

眼下的一般性議題,我不明白是:

  1. 你有一個爲所有客戶或工作申請每個客戶端一個應用
  2. 你如何管理數據庫訪問權限或不同的DB爲每個客戶端
  3. 是否有任何允許您將一個應用程序轉換爲SaaS的
+3

它如果你在4年後發佈你自己的反饋意見,這將會非常有趣。如果你繼續在這個項目上工作。謝謝。 – 2016-04-21 10:31:38

+2

@imanis_tn好,4年後很多東西發生了,但這裏是重要的一部分。 我在一個名爲Get A Newsletter的SaaS應用程序上工作。我們使用Django REST框架來構建我們的API,但沒有使用任何特殊的東西。每個用戶沒有子域,內部計費系統,我們手動處理每個對象的權限。 實際上,當我加入上述項目時,系統已經啓動並運行,並且我們剛剛開始創建REST Api,因此我們主要受現有代碼庫限制,但結果非常好。 – 2016-04-22 06:52:33

回答

31
  1. 一個項目,這將使維護更容易。我使用django-ikari中的中間件處理主機解析。
  2. 你沒有。見#1
  3. 我使用下面的:

  4. 雖然不是必要的,下面將在長期內幫助:

    • django-hunger:內測註冊等
    • Django的華夫:功能翻轉
    • django-classy-tags:漂亮,簡單,整潔的模板標籤創作
    • django-merchant:抽象支付網關框架
    • Django的原型:高配車型快速檢測
    • Django的梅林:更好的多步的形式(嚮導)
  5. 最後,很高興有

+2

如果你在3 + 4周圍有一個可配置的Cms /框架,我會爲此付錢。 – 2013-07-10 22:27:06

+0

你爲什麼喜歡django-userprofiles? – 2014-08-01 13:29:32

+0

P.s.其中一些是GPL(例如Ikari,Billing)。我不知道這是否使事情複雜化。 – 2014-08-01 13:36:12

5

軟件即服務只是一種營銷手段詞,它在技術上沒有什麼不同來自可通過互聯網訪問的服務器。所以問題3沒有意義。這讓我們留下了問題1和問題2:

  1. 在這種情況下,'app'是什麼意思?您的Web應用程序(使用Python和Django構建)可以具有多個Django應用程序(構成Web應用程序的組件),但我認爲這不是您的意思。您可以使用Python/Django構建網站,並根據哪個用戶(客戶端)登錄有各種自定義選項。例如,高級客戶端可以啓用多個高級選項,但它仍然是同一代碼庫的一部分。這只是某些選項(按鈕/控件等)不顯示某些客戶端

  2. Django有大量用於用戶管理,權限和組的工具。您可以爲每個用戶(每個客戶端)授予不同的權限,這些權限決定他們可以執行的操作。數據庫訪問應該由您的Web應用程序管理。例如,代碼確定需要在網頁上顯示哪些信息(取決於哪個客戶端登錄),並且該代碼從數據庫中檢索信息。根據您要達到的規模,您還可以指定應使用哪個數據庫從中檢索信息。

+0

當然,問題3是有意義的(至少目前它讀取的內容) - 轉換「一個應用程序」可能意味着一個Windows GUI應用程序,一個unix命令行應用程序或任何數量的東西。 – 2017-01-03 19:38:02

6

一個非常基本的例子,你將如何去做。

假設您有一個旨在解決特定商業案例的簡單應用程序。例如,您創建了一個應用程序來處理您辦公室的房間預訂。

「轉換」這個程序爲服務您必須配置它使得大多數應用程序的用戶特定的零件是參數(它們可以「模板化」 - 由於缺乏更好的詞)。

這是如何轉換前端。您可以創建變量來保存應用程序的徽標,標題,預告片和配色方案;允許每個用戶定製他們的實例。

到目前爲止,您的應用程序能夠在前端自行定製。它仍在使用第一階段設計的相同數據庫。

現在只顯示那些與特定用戶相關的字段。這將參數化數據庫。所以你可能會添加一個標識每一行屬於特定用戶的列;然後創建基於登錄用戶篩選記錄的視圖或存儲過程。

現在應用程序可以「租」出來;因爲您可以根據用戶自定義實例。

然後它會從這裏變得更大 - 取決於您的應用程序的規模,類型和預期的定製。當每個用戶擁有自己的專用數據庫而不是存儲過程+視圖組合時,您可能會認爲您的應用程序性能更好。

您可能會決定對於某些用戶類型(或「包」),您需要運行應用程序的專用實例。因此,對於「高級」或「超」用戶,您希望擁有自己的專用系統。

如果您的應用程序需要大量存儲 - 您可能會決定單獨收取存儲費用。

底線是它與所使用的語言無關。它更多的是架構和設計問題。

0

我有一個blog post描述我如何去ab的建議使用Django製作多租戶SAAS Web應用程序。這裏的多租戶意味着當用戶註冊時,他們有他們的子域。回顧:

  • 所有租戶共享一個數據庫,但每個都有自己的模式。想象一下,你有網站abc.com,有人註冊了XYZ租戶,讓他們通過xyz.abc.com訪問他們的網頁,然後將租戶XYZ你有一個包含所有表從而封裝一個獨立的模式數據僅與xyz租戶有關。還有其他的方法,比如有一個數據庫和一個模式,或者甚至有獨立的數據庫。但是模式方法是最好的折衷方案。 django-tenants圖書館的文檔包含更詳細的信息,如果你有興趣
  • 使用django-tenants庫來抽象與租戶的工作。當有人訪問xyz.abc.com,你需要知道XYZ是租客,您應該使用XYZ架構。 django-tenants圖書館爲你這樣做,所以在每個請求上,你只需要做current_tenant = request.tenant
  • 你需要區分共享表和租戶特定的表。例如,具有訂單列表的表格是租戶特定的。每個租戶可能都有自己的數據庫,其中包含所有訂單。此表應該位於xyz架構內。同時,您將擁有一些核心Django表,如用戶。數據可以共享,例如,禁止兩個用戶使用同一封電子郵件註冊。
  • 你需要配置你的DNS趕上一個通配符表達* .abc.com,以便您可以用*.abc.com鏈接到你的服務器的IP地址添加您的cPanel內的一個記錄
相關問題