标签:xpl 推荐 bug div important UI min attach xmpp
在云计算时代。应用的整个生命周期将在数据中心里度过。这跟传统软件模式极大不同。
云应用实际上意味着:代码 + 配置 + 执行时环境。
Heroku (一家 PaaS 服务提供者。2010 年被 Salesforce 收购)平台创始人 Adam Winggins 提出了推荐的应用十二风格,对我们设计和实现云时代(特别是 PaaS 和 SaaS 上)高效的应用都有非常好的參考意义。
以下结合实践经验进行解读。
One codebase tracked in revision control, many deploys
每一个子系统都用独立代码库管理,使用版本号管理,实现独立的部署。
即拆分系统为多个分布式应用,每一个应用使用自己的代码库进行管理。多个应用之间共享的代码用依赖库的形式提供。
Explicitly declare and isolate dependencies
显式声明依赖。通过环境来严格隔离不同依赖。所依赖的跟所声明的要保持一致。而且声明要包含依赖库的版本号信息。
Store config in the environment
在环境变量中保存配置信息,而避免放在源代码或配置文件里。
Treat backing services as attached resources
后端服务(数据库、消息队列、缓存等)作为可挂载资源来使用,这样系统跟外部依赖尽量松耦合。
Strictly separate build and run stages
区分不同生命周期的执行环境。包含创建(代码编译为执行包)、公布(多个执行包和配置放一起打包,打包是一次性的,每次改动都是新的 release)、执行。各个步骤的任务都非常明白。要相互隔离。比如,绝对不同意在执行时去改代码和配置信息(见过太多project师直接 SSH 到生产环境修 bug 了)。
Execute the app as one or more stateless processes
以一个或多个无状态的进程来执行应用。即尽量实现无状态。不要在进程中保存数据。尽量通过数据库来共享数据。
Export services via port binding
通过port绑定来对外提供服务。
能够是 HTTP、XMPP、Redis 等协议。多个应用之间通过 URL 来使用彼此的服务。
Scale out via the process model
通过进程控制来扩展,即尽量以多进程模型进行扩展。
Maximize robustness with fast startup and graceful shutdown
高速启动(秒级响应)。优雅关闭(收到 SIGTERM 信号后结束正在处理请求,然后退出),并尽量鲁棒(随时 kill。随时 crash 都不应该导致问题)。
Keep development, staging, and production as similar as possible
尽量保持从开发、演练到生产部署环境的相似性。
这点非常不easy,真正要求project师懂研发,还得懂运维。
Treat logs as event streams
将日志当作事件流来进行统一的管理和维护(使用 Logstash 等工具)。
应用仅仅须要将事件写出来,比如到标准输出 stdout,剩下的由採集系统处理。
Run admin/management tasks as one-off processes
将管理(迁移数据库、查看状态等)作为一次性的系统服务来使用。
管理代码跟业务代码要放在一起进行代码管理。
转载请注明:http://blog.csdn.net/yeasy/article/details/40457885。
标签:xpl 推荐 bug div important UI min attach xmpp
原文地址:http://www.cnblogs.com/jzssuanfa/p/6935094.html