简介

如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS)。12-Factor(12 原则,或 12 要素)为构建如下的 SaaS 应用提供了方法论:

  • 使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入这个项目
  • 和操作系统之间尽可能的划清界限,在各个系统中提供最大的可移植性
  • 适合部署在现代的云计算平台,从而在服务器和系统管理方面节省资源
  • 可以在工具、架构和开发流程不发生明显变化的前提下实现扩展

这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序。

背景

12-Factor,是由 Heroku 创始人 Adam Wiggins 首次提出并开源,并由众多经验丰富的开发者共同完善,这综合了他们关于 SaaS 应用几乎所有的经验和智慧,是开发此类应用的理想实践标准,并特别关注于应用程序如何保持良性成长,开发者之间如何进行有效的代码协作,以及如何避免软件污染(software erosion)

面向群体

  • 任何 SaaS 应用的开发人员
  • 部署和管理此类应用的运维工程师

软件污染 - software erosion

  • 几个星期前自己写的代码,现在已经看不懂了
  • 写这份代码的人离职了
  • 遗留系统,要加新功能
  • 操作系统更新了
  • 内存不够用了,必须迁移
  • 等等

软件侵蚀是"软件随时间的缓慢恶化,最终导致它变得有故障[或]不可用",而且重要的是,"软件实际上并没有衰败,而是缺乏更新,到它所在的不断变化的环境

公司拥有大量现有软件系统,这些系统不能幸免于软件侵蚀和老化,因为随着时间的推移,维护不受控制

降低或消除对抗软件侵蚀的成本对于小型应用或原生应用以及大型生产应用都极具价值

参考:

  • 12原则中文网
  • https://blog.heroku.com/the_new_heroku_4_erosion_resistance_explicit_contracts
  • https://segmentfault.com/a/1190000002428730

SaaS应用12原则:简介相关推荐

  1. SaaS应用12原则

    SaaS应用12原则 1.What 1.1 什么是 "12 Factor App" ? 1.2 "12 Factor App" 分别是什么? 2.Why 3.H ...

  2. 敏捷开发流程之Scrum:3个角色、5个会议、12原则

    本文主要从Scrum的定义和目的.敏捷宣言.Scrum中的人员角色.Scrum开发流程.敏捷的12原则等几方面帮助大家理解Scrum敏捷开发的全过程. 一.Scrum的定义和目的 Scrum是一个用于 ...

  3. AutoSAR系列讲解(实践篇)12.1-Diagnostics简介

    AutoSAR系列讲解(实践篇)12.1-Diagnostics简介 Diagnostics简介 一.UDS协议 1.Service Identifier(SID) 2.协议规范 3.举个例子 二.A ...

  4. SAAS产品设计原则及产品架构特点

    什么是 SaaS ? Saas软件模式让软件变得和水.电.气一样只需每月缴纳固定的费用即可享受服务. SaaS(software as aservice),软件即服务,是一种软件交付和销售方式-订阅许 ...

  5. 敏捷软件开发 12 原则

    作为 <现代软件工程> 的一个作业,  我要求同学们把 英文的敏捷开发原则 翻译成中文并解释. 大部分同学都提供了持续重构, 不断提高的版本. 技术翻译专家余晟老师也对其中较难翻译的三条原 ...

  6. Saas 应用12个架构规范

    引言 如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS).12-Factor 为构建如下的 SaaS 应用提供了方法论: 使用标准化流程自动配置,从而使新的开发者花费 ...

  7. 设计模式的主要设计原则简介

    1.单一职责原则(SRP) "单一职责模式"按照字面理解就是,一个类的功能要"单一"或者专一,不能武断地把很多相关或者不相关的功能强制写进一个类里去,它的准确解 ...

  8. 面向对象设计的六大原则简介

    实际上都是互补的,也就是说一些原则需要利用另一些原则来实现自己. 6大原则如下: 1)单一职责原则,一个合理的类,应该仅有一个引起它变化的原因,即单一职责,就是设计的这个类功能应该只有一个; 优点:消 ...

  9. SpringCloud升级之路2020.0.x版-12.UnderTow 简介与内部原理

    本系列代码地址:https://github.com/HashZhang/spring-cloud-scaffold/tree/master/spring-cloud-iiford 在我们的项目中,我 ...

最新文章

  1. 在Unity3D中连接WCF服务端
  2. ORM映射框架总结--数据操作(五)
  3. STC单片机自动下载调试器设计
  4. mybatis中(Oracle)关于insert时主键自动加1的使用方法
  5. “CoreCLR is now Open Source”阅读笔记
  6. 电脑打印机共享,打印机共享
  7. B端会员模块的思考与设计
  8. ymodem协议c语言,STC单片机ISP-Demo-使用Y-Modem协议源码与库函数分享
  9. 通过一个实际例子理解Angular rxjs Observable的异步行为
  10. webgl 着色器_如何使用AI,AR和WebGL着色器来帮助视障人士
  11. Github项目汇总
  12. c#的IList,IEnumerable和IEnumerator
  13. 华为笔试题 字符串解压缩(C语言解法)
  14. ElasticJob‐Lite:作业监听器
  15. 用CSS制造出光泽一闪而过的图片效果
  16. oracle裁员原因_如何评价甲骨文(ORACLE)中国区裁员?
  17. 2021李宏毅作业hw3 --食物分类。对比出来的80准确率。
  18. Q绑查询HTML源码
  19. Ubuntu rhythombox 乱码解决
  20. You-get 批量下载

热门文章

  1. DSPACE的道路报错问题
  2. 计算机刚过国家线能调剂到哪些学校,本科985刚过国家线好调剂吗?
  3. 计算机英语统考试卷分析,考试英语试卷分析
  4. EFAK - Kafka可视化管理工具
  5. 23种设计模式——知识要点
  6. 有道js逆向(webpack,调用crypto库实现)【超级详细】
  7. 【Vue】Vue 中如何点击跳转页面
  8. 知识图谱第3享:数据生命周期
  9. wamp服务器的配置和angularjs中get…
  10. 基于simulink的路面附着系数估计模型, 滑转率零斜率法