如何重新构建用于创建移动应用程序的门户

时间:2014-02-27 11:54:54

标签: python django angularjs heroku architecture

目前,我正在开发一个向最终用户公开的门户网站。该门户使用Python 2.7,Django 1.6和MySQL开发。

现在我们希望将此门户网站公开为移动应用程序。但是当前的设计不支持,因为模板,视图和数据库彼此紧密耦合。所以我们决定重新构建整个门户网站。经过一些研究后,我发现了以下内容:

  1. 客户端:AngularJS用于所有客户端操作,如show data和使用ajax获取数据。
  2. 服务器端:暴露给AngularJS的Rest API。可以使用Tastypie或Django Rest Framework(尚未确定)开发此Rest API。 Rest API将通过Django公开。
  3. 我几乎没有问题:

    1. 你们对建筑的看法是什么?这是一个好的或坏的设计?如何改进?
    2. 在架构中添加以上图层后,门户网站的性能会下降吗?
    3. 在上述架构中,是否应使用2台服务器来运行此服务器(如客户端和服务API的其他服务器)或一台服务器就足够了。目前Heroku用于部署。
    4. 目前门户网站每天点击量达到10K,预计6个月内每天可达10万次。如果需要,将很乐意提供更多信息。

2 个答案:

答案 0 :(得分:0)

如果我有机会构建您提到的门户网站,而不是我真的很想设计我已经解释过的架构here

答案 1 :(得分:0)

  

你们对建筑的看法是什么?

这是一个常见的面向服务的架构,其中包含分离的客户端。您只需在后端使用REST端点,任何客户端都可以使用这些端点。

您还应该考虑:

  1. 您需要 RESTful 服务(RESTful ==无状态,您会在服务器上存储任何吗?)
  2. 将来如何扩展服务? (这是合法的事情,因为你已经意识到巨大的流量增加并假设有2台服务器)
  3.   

    如何改进?

    使用scala代替python:)

      

    在架构中添加上层后,门户网站的性能是否会下降?

    取决于。

    它将获得一些性能损失(任何额外的abtract图层都有税),但很可能你不会注意到它。但是,你应该使用一些压力测试来衡量

      

    在上面的架构中,是否应该使用2个服务器来运行它(比如一个用于客户端,另一个用于服务API)或一个服务器就足够了。目前Heroku用于部署。

    嗯,像往常一样,取决于

    这取决于您现在拥有的使用情况以及可用资源。 如果您对新设计是否会比旧设计表现更好感兴趣吗? - 有许多参数。

    恢复

    对于具有不同客户端的系统,这是一个很好的整体方法。

    它会允许你:

    1. 从后端开发完全解耦移动应用和前端开发。 (可能是不同的独立团队,可外包
    2. 标准化您的API图层(因为所有客户端将使用相同的端点)
    3. 让您的服务可扩展更轻松(这包括静态资产的单独网络服务器等等。)