2012-02-16 72 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所说,保持您的模型清洁和明智。这将有助于保持复杂性的优势。

当你需要重构你的代码 - 甚至重写它的重要部分时,不要认为它是失败的。这是一个正在成长的项目中的一个自然部分,就像一条蛇剥落它的皮肤。

在编写项目的过程中,你不可避免地会学到一些东西,所以现在不要试图预测它们。