极客视点
极客时间编辑部
极客时间编辑部
113241 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/03:56
登录|注册

推荐:十二要素APP开发法(上)

讲述:初明明大小:3.62M时长:03:56
随着 Web APP 生态系统的巨变,开发现代复杂的 Web APP 需要兼顾可移植性、可扩展性、部署灵活性以及降低开发成本等多方面目标。日前,开发者哈维·琼斯(Harvey Jones)介绍了一个名为“十二要素 APP 开发法”的流程,这一开发方法为构建分布式 Web APP 和微服务提供了良好的基础,让开发过程变得更顺畅,还可以提高生产效率。具体的十二要素如下:

1. 代码库:用版本控制管理一套代码库,并在此之上进行多次部署

这意味着应该由一个版本控制系统集中地维护和管理项目的所有源代码,这会让开发人员更容易访问代码。虽然代码库只有一套,但部署可以有多个不同的环境。这代表了不同的部署状态,而无论这些状态如何不同,它们都共享相同的代码库。

2. 依赖项:显式声明和隔离依赖项

这个要素的主要意思是,不该假设基于代码库的目标系统已经完全安装了所有依赖项。
我们不推荐将依赖项连同代码库一起上传到线上,因为它可能会产生诸如底层平台依赖项之类的问题。根据 APP 开发所使用的技术栈,通过读取表示依赖项名称和版本的特定文件,使用诸如 npm 、YARN 或类似的包管理器去下载各自系统上的依赖项,这种方法更值得推荐。

3. 配置:在环境中存储配置

配置信息永远不应该存储在代码源文件中。我们肯定不希望像数据库连接信息或其他机密数据这样的敏感信息被公开。此外,我们的配置主要取决于它所处的运行环境。
例如,如果你正在开发一个医院管理系统,该系统在实际投入使用时会有诸如 AWS DYnamo DB 这样的云数据库服务凭证,但在开发过程中你会在本地的 MongoDB 服务器上对这个 APP 进行测试,你会选择一次又一次地更改源代码,还是选择仅仅修改一组配置变量去改变其运行环境,让你的代码运行得完美顺畅呢?
显然,选择后一种方法更加省力。

4. 支持服务:把所有支持性服务都视为附加资源

支持性服务的定义是任何依赖于网络连接才能成功运行的资源。为了方便起见,假设你正在使用 Node.js 和 PostgreSQL 开发一个项目。在开发环境中,你在自己的机器上运行一个本地的 PostgreSQL 服务器。现在,你想通过在另一台服务器上运行这个数据库来进入生产环境,该怎么办呢?
你不应该更改代码,而应该去更改可用配置信息来切换环境。于是,两种环境唯一的区别应该是生产环境的 URL 不同于开发环境的 URL。

5. 构建、发布和运行:严格地隔离开构建和运行阶段

这一要素通过为每个 APP 组划分阶段来隔离各个时期不同的关注重点。它分为构建、发布和运行三个阶段。假设你正在为一家餐厅构建一个管理系统。如果忽略这些阶段而直接开发,则会浪费很多时间去解决本地系统和目标餐厅系统之间的大量问题。

6. 进程:将 APP 作为一个或多个无状态进程来执行

代码库的状态控制部分应该与进程或 APP 的实例进行分离,状态控制部分应该只存在于数据库和共享存储中。
当在云平台上进行多节点部署以实现该 APP 的可扩展性时,这个要素非常有用。数据不会持久地存储在云平台上,因为如果其中任何一个云节点崩溃,数据就会丢失。
以上为“十二要素 APP 开发法”的前六项原则,受限于篇幅,其余六项原则将在下文说明,欢迎持续关注。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
大纲
固定大纲
1. 代码库:用版本控制管理一套代码库,并在此之上进行多次部署
2. 依赖项:显式声明和隔离依赖项
3. 配置:在环境中存储配置
4. 支持服务:把所有支持性服务都视为附加资源
5. 构建、发布和运行:严格地隔离开构建和运行阶段
6. 进程:将 APP 作为一个或多个无状态进程来执行
显示
设置
留言
收藏
68
沉浸
阅读
分享
手机端
快捷键
回顶部