Monday, October 27, 2014

云计算时代应用设计十二要素

云计算时代应用设计十二要素

  • 什么样的软件才是可用性和可维护性好的软件?
  • 什么样的代码才能避免后续开发的上手障碍?
  • 什么样的实行才能稳定的运行在分布式的环境中?
Heroku (一家 PaaS 服务提供者,2010 年被 Salesforce 收购)平台创始人 Adam Winggins 提出了推荐的应用十二风格,对我们设计和实现云时代(特别是 PaaS 和 SaaS 上)高效的应用都有很好的参考意义。

代码

每个子系统都用一个代码库管理,使用版本管理,实现独立的部署。

依赖

显式声明依赖,通过环境来严格隔离不同依赖。

配置

在环境变量中保存配置信息,而避免放在源码或配置文件中。

后端服务

后端服务作为可挂载资源来使用,这样系统跟外部依赖尽量松耦合。

生命周期

区分不同声明周期的运行环境,包括创建、发布、部署,各个步骤要相互隔离。

进程

以一个或多个无状态的进程来运行应用,即尽量实现无状态,不要在进程中保存数据。

端口

通过端口绑定来对外提供服务。

并发

通过进程控制来扩展,即以多进程模型进行扩展。

可丢弃性

快速启动,优雅关闭,并尽量鲁棒(随时 kill,随时 crash)。

开发与生产环境的差异性

尽量保持从开发到生产部署环境的相似性。

日志

将日志当作事件流来进行统一的管理和维护(使用 Logstash 等工具)。

管理

将管理作为一次性的系统服务来使用。

No comments:

Post a Comment