2012-02-16 74 views
4

我即將開始一個項目,我希望有一天會需要擴展能力。對我而言,關鍵問題是:我現在是否應該投入精力設計這種可能性,還是應該在我到達那裏時穿過那座橋?何時設計可擴展性?

我知道這些事情是如何發生的:每個人都認爲他們的項目可能會擴展,但大多數項目從未這樣做。

是否有一套最佳實踐,可讓您在稍後階段更輕鬆地進行縮放,而不會在可能永遠不需要的東西上投入太多?

顯然我沒有可擴展網站的經驗。目前我傾向於Scala/Play!/Akka。從我可以從Akka網站收集到的信息,它非常適合這種類型的項目(因爲它提供了一個工具集,允許在一臺機器上開發並擴展到任意數量的機器)。

該項目是面向消費者的網站,涉及一些用戶交互(評論,消息,投票等)。不過,主要焦點是編輯。它不是Facebook :)

沒有經驗的任何這些技術(我的經驗主要來自PHP,AS3,Objective-C),我現在可能有點太多了。但是我不會馬上去看它。我知道我需要獲得一些使用Scala和Play的經驗!第一。

任何意見非常感謝。

+0

既然你是Scala的新手,你會想要重寫(或者說做「重大重構」)你的項目的任何部分。我會盡力堅持立即的要求。我認爲這個一般建議,而不是專門針對你的問題。 – ziggystar 2012-02-16 09:23:30

回答

4

從簡單地設計你的模型開始,爲它建立單元測試,然後在其上設置你的表示層。只要你的模型是明智的,它將很容易擴展播放到任何數量的機器。如果您在JPA支持中進行構建,則可以隨時處理要使用哪個數據庫的問題。

你的盤子上有更大的東西暫時。所以只要確保你的設計是一致的和合理的,那麼縮放就不會成爲問題。

2

通過使用像Play這樣的無狀態網絡框架,您已經領先一步!當你需要擴展時,它不會妨礙你的發展。正如ExxKA所說,保持您的模型清潔和明智。這將有助於保持複雜性的優勢。

當你需要重構你的代碼 - 甚至重寫它的重要部分時,不要認爲它是失敗的。這是一個正在成長的項目中的一個自然部分,就像一條蛇剝落它的皮膚。

在編寫項目的過程中,你不可避免地會學到一些東西,所以現在不要試圖預測它們。