云计算应用程序的几点设计准则

  • 晁晓娟

2009 年 11 月 17 日

话题:架构云计算DevOps

不论是在 Google App Engine 还是 Engine Yard 创建新的应用程序,或是移植现有程序到其他平台上,如何设计一个好的运行在运计算平台之上的应用程序都值得我们认真思考。

如何让云平台应用程序更好的架构而提升价值? InfoWorld 在最近的云计算的应用程序设计参考一文中提出了以下几点:

1. 尽量使用三层架构 。通过云计算平台,你可以把应用程序的不同组件,数据库,商业逻辑,用户界面等放在不同的平台提供商那里,每层之间相互独立,当然你也可以都放到一个平台上,但最主要的是你可以根据不同的云平台的特点分别地部署以最大化的提高性能降低成本。

因程序,因平台制宜,比如有的云平台数据库服务又便宜又稳定,而有的云平台应用层负载均衡做得好,那你完全可以分开部署获得最优的方案。

2. 架构之间要松散耦合。如果你使用了三层架构, 你要尽量减少它们之间的偶合和依赖,这样也能使你的架构更加敏捷,进一步给提高性能和降低成本提供了空间和可行性。

想象如果你的数据库读写数据的代码嵌入在应用层或表示层,你根本就没太可能去分开部署数据库,应用和 Web 服务器。

3. 别忘了组件间的通信。分布式应用程序间的组件通信是必不可少的。对于一个组件频繁互相调用的“健谈”程序,如果在同一个或专门定制平台上部署运行是比较容易的,但是对于不同的云平台,这样的程序如果分层分别部署的话,很容易导致延迟。

Web 应用程序的延迟除了会导致各种功能上,性能上的问题之外,用户体验的降低是一个不可接受的方面。所以设计架构的时候要确保程序内部的组件通信的性能,比如使用类似于消息队列的异步通信机制。

4. 避免平台特有的特不论是在 Google App Engine 还是 Engine Yard 创建新的应用程序,或是移植现有程序到其他平台上,如何设计一个好的运行在运计算平台之上的应用程序都值得我们认真思考。

尽管你把应用程序部署在云平台上,但你并不希望过度依赖或被特定云平台厂商控制,对吧?

也许你会说这些是老生常谈,但是如果你能够用它们来指导你的云计算平台应用程序架构,将会使它们更有价值。

的确三层架构是非常适合云平台的,特别是在厂商不断推出新的云平台的情况下,你就会像以前变换着选数据库或 Web 服务器那样不断的想尝试新的云平台。

所以别让你的应用程序太耦合,太依赖,太云平台相关,否则换个云平台,你原先的程序和架构可能就一钱不值。

架构云计算DevOps