支持云的编程并帮助选择一个好的框架

时间:2010-03-20 18:13:41

标签: ruby-on-rails django zend-framework codeigniter symfony1

我如何编写支持云的应用程序?例如利用部署在云上的应用程序。它与运行的应用程序或vps /专用服务器相同吗?如果没有,那么有什么区别?有任何设计变更吗?如果我要将应用程序迁移到云感知,我需要采取哪些程序?

此外,我即将实现一个Web应用程序的想法,它需要安全性,性能,缓存等功能,更重要的是免费。我一直在比较一些框架,发现django具有最少的RAM / CPU使用率并且在prefork +线程模式下运行良好,但我也读过基于django的站点停止响应大量连接。我见过/知道的其他框架是Zend,CakePHP,Lithium / Cake3,CodeIgnitor,Symfony,Ruby on Rails ....

所以我也会留下你的意见,根据我的需要建议一个好的免费框架。

最后感谢你阅读这篇文章;)

3 个答案:

答案 0 :(得分:3)

我感觉到了一个矩阵时刻......“云是什么?云在我们身边,是你的计划的监狱......”(什么?常见问题解答说带来你的幽默......)

好认真的,云是什么?这取决于实现,但通常的功能包括可扩展的计算资源和每小时的收费,存储区域等。所以是的,它有点像你的VPS /普通服务器上的开发。

据我了解,Google App Engine可让您根据需要进行消费。后端资源管理由Google完成并向您收取费用,您需要为使用的内容付费。我相信甚至有一个免费的门槛。

亚马逊EC2公开了一个API,它实际上允许您添加虚拟机实例(有人纠正我,如果我错了)预先配置它们,部署您的Web应用程序的另一个实例,如果您愿意,可以在私有IP范围之间进行通信(slicehost绝对允许这样做)。因此,EC2可以让你像前端的巨型负载均衡器一样,将工作转移到后端的大量虚拟机上,或者公开公开所有这些,随你挑选。我不确定具体细节,因为我没有构建系统,但这就是我理解它的方式。

我有一种感觉(但我最不了解Azure),在Azure上,资源管理是由Microsoft根据您的应用程序使用的内容自动完成的。

因此,总而言之,根据您选择的特定云,云是不同的。 EC2似乎公开了一个用于管理资源的API,GAE和Azure似乎是根据您的使用在后台增长和缩小的环境。

注意:我知道GAE中存在某些限制,尤其是Java。在一分钟之内,我将在另一个帖子中进行编辑,其中某人对我的一篇帖子做了很好的评论。

按照承诺

修改,请参阅此主题:Cloud Agnostic Architecture?

至于框架的选择,就我而言,它并不重要。如果您计划部署到其中一个平台,则可能需要检查框架/语言可用性。我个人刚刚开始使用Django并且喜欢它,不久前学过python,所以,在我完全不偏不倚的意见中,使用Django。其他开发人员可能会根据他们的偏好推荐其他东西。你知道什么?你最舒服的是什么?你最喜欢什么?我会顺其自然。我选择Django纯粹是因为我不是PHP的忠实粉丝,我喜欢Python,当我最初使用它时,我对框架很满意。

编辑:那么如何编写支持云的代码?您可以通过适合其中一种体系结构的方式设计软件。再次,请参阅与云无关的线程,以便就如何做到这一点进行一些非常好的讨论。例如,您可以与GAE上的某些服务进行对话。他们使用GAE(示例)并不重要,您使用松散耦合的想法。从本质上讲,这只是网络服务理念的一步。

此外,我忘记提到的云的另一个特点是为您提供CDN的想法 - 一些云实施可能会在全球范围内移动您的数据以提高服务效率,或者仅仅因为它就是他们所在的地方得到了空间。如果这是一个问题,请不要使用云。

答案 1 :(得分:2)

我无法回答你的问题 - 我在这些项目中没有经验 - 但我可以告诉你一件事...... CakePHP和CodeIgniter都是为PHP4设计的 - 换句话说:对于非常古老的技术。而且似乎没有什么会改变他们的情况。 Symfony(尤其是2.0版仍处于重度测试阶段)值得考虑,但正如我在一开始所说的那样 - 我不能用我自己的经验来支持它。

答案 2 :(得分:0)

为设计云部署的应用程序,主要考虑可恢复性。如果您的服务器被终止,您可能会丢失所有数据。如果您在Amazon上部署,我建议将您需要的所有数据保存到Elastic Block Storage(EBS)设备上。这将是用户生成的内容/文件,数据库文件和日志等数据。我还在5天轮换时使用EBS快照,以便自行备份。也就是说,我在AWS上安装了一台云服务器超过一年没有任何问题。

至于框架,我现在正在尝试Grails,我很享受它。构建在语法上类似于Rails但在JVM上运行。这意味着您可以利用所有Java优势,例如线程,并发性以及构建Web应用程序的所有优秀库。