前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >十二要素App方法论

十二要素App方法论

作者头像
有态度的马甲
发布2020-08-25 17:18:48
7630
发布2020-08-25 17:18:48
举报
文章被收录于专栏:精益码农精益码农

“沉迷于每天造轮子,我也想成为马车上的男人,推荐一篇现代编程方法论:12-Factor App

简介

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

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

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

背景

本文的贡献者参与过数以百计的应用程序的开发和部署,并通过Heroku[1]平台间接见证了数十万应用程序的开发,运作以及扩展的过程。

本文综合了我们关于 SaaS 应用几乎所有的经验和智慧,是开发此类应用的理想实践标准,并特别关注于应用程序如何保持良性成长,开发者之间如何进行有效的代码协作,以及如何避免软件污染[2]

我们的初衷是分享在现代软件开发过程中发现的一些系统性问题,并加深对这些问题的认识。我们提供了讨论这些问题时所需的共享词汇,同时使用相关术语给出一套针对这些问题的广义解决方案。本文格式的灵感来自于 Martin Fowler 的书籍:Patterns of Enterprise Application Architecture,Refactoring 。

读者应该是哪些人?

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

代码语言:javascript
复制
         12-FACTORS

I. 基准代码 一份基准代码,多份部署

II. 依赖 显式声明依赖关系

III. 配置 在环境中存储配置

IV. 后端服务 把后端服务当作附加资源

V. 构建,发布,运行 严格分离构建和运行

VI. 进程 以一个或多个无状态进程运行应用

VII. 端口绑定 通过端口绑定提供服务

VIII. 并发 通过进程模型进行扩展

IX. 易处理 快速启动和优雅终止可最大化健壮性

X. 开发环境与线上环境等价 尽可能的保持开发,预发布,线上环境相同

XI. 日志 把日志当作事件流

XII. 管理进程 后台管理任务当作一次性进程运行

小编旁白

职业生涯,有时为实现一个优雅功能而沾沾窃喜,也常困惑于自己的开发/部署策略是否合理,更多时候与同事为实现思路争的面红耳赤。

  • 是否能用更流畅的代码表达业务?
  • 如何看待应用架构_前后端开发?
  • 这种实现方法是否是最佳实践?
  • 如何减少与QA、PM的撕逼次数?
  • 部署方式是否能更加简练稳定?

今日读到此文,平日的纠结突然有所松动,十二要素方法论 从源代码管理、架构体系、应用形态、开发部署等方面引导团队快速适应并构建优雅、可维护、易扩展的应用,可以认为是互联网开发的金律良言。

其中一些条款与本人一直追求的优雅、流畅、敏捷的开发思路不谋而和(有些条款小编也未参透)。前人栽树后人乘凉,希望[十二要素方法论] 能给更多读者带来豁然开朗的感觉。

参考资料

[1]

Heroku: https://www.heroku.com/

[2]

避免软件污染: http://blog.heroku.com/archives/2011/6/28/the_new_heroku_4_erosion_resistance_explicit_contracts/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 精益码农 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 背景
  • 读者应该是哪些人?
  • 小编旁白
  • 参考资料
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档