云应用成功的12-Factors原则

嘿,开发者!你是否关心如何使用最佳的方式将你的程序应用到云上?如果是这样,你应该根据 12-Factors 原则设计应用。12-Factors 原则是一种建立软件即服务(SaaS)的方法。今天,我将介绍这个上月我在 Red Hat 峰会上向一个小组提出的12-Factors 原则。

每个把应用程序迁移到云中的开发人员都将会面临与他们的数据中心、日常惯于使用或本地所不同的环境,这正是他们应该考虑 12-Factors 原则的理由。 Heroku 是一家云计算供应商,他们为大多数客户遇到的问题找到了一个通用的解决方案,并决定将这些[1]解决方案总结为一种方法发布(即 12-Factors 原则)。这种方法包含的12个因素旨在解决与在云中运行的应用程序相关的问题。仅仅记忆这12个因素并没有多少意义,对每一点之所以重要的原因的理解才是这篇文章或许能带给读者的收获。

  1. 基准代码 - 使用版本控制工具,一份基准代码对应多个部署。
  2. 依赖关系 - 使用包管理器,并且不要在代码库中提交依赖包。
  3. 配置 - 将配置存储在环境变量中,需要(针对不同部署环境)重新打包你的应用程序意味着错误的设计。
  4. 备份服务 - 一份 12-Factors 应用[2]部署应能够在不更改代码的情况下从本地MySQL数据库切换到第三方托管的数据库(如Amazon RDS)。
  5. 构建,发布,运行 - 12-Factors 应用应严格分离构建,发布和运行阶段。每个发布版本要始终有唯一的版本ID,并且应允许回滚。
  6. 进程 - 以一个或多个无状态进程形式运行应用。12-Factors 应用的进程应当是无状态,无共享的。
  7. 端口绑定 - 通过端口绑定提供服务,12-Factors 应用是完全独立、自我加载(不依赖网络服务器)的。
  8. 并发性 - 通过进程模型扩展系统。每个进程都应该能够单独进行扩展,无状态特性将使得服务扩展易于实现。
  9. 易处置性 - 通过快速启动和优雅终止最大化稳健性(鲁棒性),我们可以通过容器来实现这一点。
  10. 开发/生产环境等价 - 尽可能保持相似的开发、预发布和生产环境,12-Factors 应用通过缩小开发与生产环境差异实现持续部署的设计目标。
  11. 日志 - 将日志视为事件流,12-Factors 应用本身从不考虑管理(routing)或存储自己的输出流。
  12. 管理进程 - 将管理/管理任务作为一次性进程运行。

12-Factors 原则很难通过简单的技术或语言来描述,但是容器(Containers)微服务(Microservices),和CI/CD流水线这些关注DevOps的工具满足了这一原则。您可以在这里访问关于 12-Factors 原则的更多信息。

[1] 原文如此

[2] 即根据 12-Factors 原则设计的应用程序

本文的版权归 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

看我如何综合利用3个安全问题成功劫持Flickr账户获得7千美元漏洞赏金

Flickr( flickr.com)为雅虎Yahoo旗下图片和视频分享平台,提供免费及付费数位照片视频储存、分享和线上社交应用服务。本文中作者通过身份认证参数...

20470
来自专栏腾讯云商业智能分析团队的专栏

创建数据集模块常见设置

创建数据集的主要功能是从数据库查询出所需的数据,从而进行数据分析。在创建数据集处,可以对数据进行一些简单的处理,如数据级别的权限设置,字段信息修改,字段管理等。

18810
来自专栏Albert陈凯

Hadoop离线数据分析平台实战——510订单数据展示Hadoop离线数据分析平台实战——510订单数据展示

Hadoop离线数据分析平台实战——510订单数据展示 项目进度 模块名称 完成情况 1. 程序后台框架搭建 完成 2. 用户基本信息展示 完...

30460
来自专栏小二的折腾日记

大型网站架构技术-架构模式

将系统再横向维度上切成几个部分,每个部分负责一部分相对单一的职责。就好比平时一份工作比较多的时候,团队中大家各自负责自己擅长的那一部分。大型网站中一般分为三层:

18040
来自专栏杨建荣的学习笔记

循序渐进调优ddl的案例 (79天)

在平时的工作中,可能需要导入一些数据,有些表可能比较大,对于constraint的操作可能会耗费大量的时间,今天简单做了一些相关的测试,也提出了一些相关的优化方...

29580
来自专栏蓝天

成功的 Web 应用系统性能测试

基于Web服务器的应用系统由于提供浏览器界面而无须安装,大大降低了系统部署和升级成本,得以普遍应用。目前,很多企业的核心业务系统均是Web应用,但当Web应用的...

22740
来自专栏草根专栏

Python数据分析(二): Numpy技巧 (4/4)

numpy、pandas、matplotlib(+seaborn)是python数据分析/机器学习的基本工具。 numpy的内容特别丰富,我这里只能介绍一下比较...

32790
来自专栏企鹅号快讯

周集:好用的工具和网站

上次提到的软件下载的页面已经写完了,接下来就是往页面中丰富内容,我会放一些自己用过的比较好用的软件工具,下载地址,有官方网站的我会放上官方网站的地址,没有的话,...

23290
来自专栏Rainbond开源「容器云平台」

云帮每周更新日志(2017.01.02~2017.01.15)

17840
来自专栏洞链

如何理解分布式与集群,二者区别是什么?

分布式是指不同的业务分布在不同的地方,集群指的是将几台服务器集中在一起,实现同一业务。 白话理解的话,比如公司项目上线初期(举例电子商务网站)

16130

扫码关注云+社区

领取腾讯云代金券