我有一个创业公司正在考虑构建Java后端和Rails前端。 Java后端将负责为数据库创建缓存层并提供其他附加服务。 Rails前端主要用于创建Web应用和监控工具。
有哪些创业公司正在使用这种设置? 在开发速度,部署,可扩展性和集成方面有哪些需要注意的地方?
(对我有帮助的是个人经验或非正式案例研究。我想将回答关注于替代品,如Grails或JRuby除非它是方程式的重要组成部分)
谢谢!
我有一个创业公司正在考虑构建Java后端和Rails前端。 Java后端将负责为数据库创建缓存层并提供其他附加服务。 Rails前端主要用于创建Web应用和监控工具。
有哪些创业公司正在使用这种设置? 在开发速度,部署,可扩展性和集成方面有哪些需要注意的地方?
(对我有帮助的是个人经验或非正式案例研究。我想将回答关注于替代品,如Grails或JRuby除非它是方程式的重要组成部分)
谢谢!
我从未进行过Rails开发,但以下是我的想法。为什么不使用Grails呢?我做过相当数量的Grails开发,它非常适合快速原型开发。它还提供了所有Java、Spring和Hibernate的强大功能。不必处理两种不同技术之间的通信,您可以利用Grails在后台使用Spring和Hibernate处理缓存以及任何其他这些技术支持的要求的事实。如果您有Java开发人员,那么Grails应该很容易上手。Grails插件库运作良好。所有插件都存储在一个中央位置,易于获取,但是质量取决于插件作者。您还需要记住,由于Grails使用Groovy,它在语法上类似于Java并且在JVM上运行,因此很容易使用现有的Java代码,包括可用的Java库。虽然我不能确定,但我认为有很多库可供Java和Grails使用,而Ruby语言和Rails可用的库可能会更少。我无法为您提供资源使用情况建议,但我的问题是:有多少人具有设计使用Java作为后端的Rails系统的经验,以及与此相关的所有陷阱?您可能会发现,在两种技术之间出现通信故障时,没有人能熟练地进行调试。
我曾在一个项目中使用过类似的组合,但我使用的是Python而不是RoR。我认为两者之间没有太大的区别。
一般来说,在这种编程中并没有什么特别的。你必须关心两件最重要的事情:
第一点是关于系统各部分之间确切功能分解的问题。由于不理解哪些工作必须由Java完成,哪些工作必须由Python完成,我们遇到了一些麻烦。总的来说,你必须将所有相互关联的函数绑定在一起,而远离的东西必须在很少的地方连接。我猜你知道良好模块化的规则,但在组合不同语言的情况下,这必须更加周密考虑。你也可以考虑创建几个不同的Java服务(例如一个用于数据库缓存,另一个用于其他所有内容),以便能够自由组合它们甚至在以后的项目中使用。
第二个问题是关于部件之间的通信。我可以看到两种通信方式:通过数据库和通过纯网络协议。前者需要一些网络通信,因此我们使用了纯网络协议,没有其他连接部件的方式。据说Twitter.com使用Java后端和Rails作为其Web界面。以下是一些资源:
http://www.radicalbehavior.com/5-question-interview-with-twitter-developer-alex-payne/
http://blog.adsdevshop.com/2008/05/02/twitter-is-not-abandoning-rails/
http://twitter.com/#!/ev/status/801530348
更具体地说,他们在后端使用Scala(它编译成Java字节码):http://www.artima.com/scalazine/articles/twitter_on_scala.html
我认为这种方法没有任何问题。但是,您将支持两个不同的平台/虚拟机。我曾经看到过这种情况导致组织内专业知识的一种分裂。最终你会花费很多钱来拥有两套专业知识。
如果担心专业知识的分割问题,我建议使用JRuby或Rails。它现在非常成熟,并且比Ruby 1.8.x上的Rails运行得更好。