我有一个Erlang/OTP应用程序,用于执行一些业务逻辑。它主要是使用Erlang编写的,以实现容错性,因为我可以轻松地重新启动系统中崩溃的组件(高可用性是最重要的要求)。
其每个组件都执行某种特定的“并行”计算。
作为一个工作周期的结果,该应用程序会生成一个值列表。让我们称这个Erlang/OTP应用程序为“后端”。
这个Erlang/OTP应用程序还将使用PostgreSQL服务器将结果存储在持久性存储中,并存储其计算所需的其他元信息(尚未实现)。
接下来,我需要为这个Erlang/OTP应用程序添加一个前端 - 一个简单的基于Web的解决方案,它可以为Web用户提供服务:接受他/她的计算请求,要求后端进行计算,并向用户返回后端的结果。
没有可扩展性要求,我认为每天的最大用户数不超过1000人。
因此,我目前的任务是为我的后端Erlang/OTP应用程序实现一个通用的前端(通用意味着我有一个典型的用例:访问网站,注册,登录,使用应用程序,在漂亮的ajax式网页上获取结果,注销)。
在一方面,我知道代码重用可以节省很多时间:例如,使用Ruby on Rails可以免费获得用户身份验证、密码存储、ajax接口等很多其他东西。
另一方面,我不知道如何设计一个包含Erlang/OTP + PostgreSQL数据库服务器后端和Web框架(RoR、Django等)前端的应用程序。
我有很多问题:Erlang/OTP和Web框架应该使用同一个PostgreSQL数据库来共享结果吗?从Web框架向Erlang/OTP应用程序发送计算请求并将其返回的最佳方法是什么?我如何监控PostgreSQL服务器 - 它没有被OTP的容错性所覆盖?
总的来说,我有几个异构软件组件,我想从它们中建立一个工作系统("主要"组件是Erlang/OTP应用程序)。
作为一个工作周期的结果,该应用程序会生成一个值列表。让我们称这个Erlang/OTP应用程序为“后端”。
这个Erlang/OTP应用程序还将使用PostgreSQL服务器将结果存储在持久性存储中,并存储其计算所需的其他元信息(尚未实现)。
接下来,我需要为这个Erlang/OTP应用程序添加一个前端 - 一个简单的基于Web的解决方案,它可以为Web用户提供服务:接受他/她的计算请求,要求后端进行计算,并向用户返回后端的结果。
没有可扩展性要求,我认为每天的最大用户数不超过1000人。
因此,我目前的任务是为我的后端Erlang/OTP应用程序实现一个通用的前端(通用意味着我有一个典型的用例:访问网站,注册,登录,使用应用程序,在漂亮的ajax式网页上获取结果,注销)。
在一方面,我知道代码重用可以节省很多时间:例如,使用Ruby on Rails可以免费获得用户身份验证、密码存储、ajax接口等很多其他东西。
另一方面,我不知道如何设计一个包含Erlang/OTP + PostgreSQL数据库服务器后端和Web框架(RoR、Django等)前端的应用程序。
我有很多问题:Erlang/OTP和Web框架应该使用同一个PostgreSQL数据库来共享结果吗?从Web框架向Erlang/OTP应用程序发送计算请求并将其返回的最佳方法是什么?我如何监控PostgreSQL服务器 - 它没有被OTP的容错性所覆盖?
总的来说,我有几个异构软件组件,我想从它们中建立一个工作系统("主要"组件是Erlang/OTP应用程序)。
我应该从哪里开始这个任务?你能给我一些建议或提示,应该阅读哪些资源吗?
P.S. 我尝试阅读了this并跟随链接,但并没有理解太多。
更新:我知道Chicago Boss和其他Erlang Web框架存在,但我怀疑它们是否有像Ruby on Rails、Django或任何基于PHP的MVC框架那样成熟的环境、充满活力的社区以及不同插件和库的巨大可变性。对吧?
更新2:也许我需要更深入地阐述这一点:我还需要前端尽可能易于维护。使用Erlang意味着我可能会面临找到正确的开发人员来维护它的问题;而使用RoR,Django等则意味着我可以轻松找到维护前端和扩展其功能的劳动力。