📜  30 个因素 (1)

📅  最后修改于: 2023-12-03 15:13:08.147000             🧑  作者: Mango

30个因素

30个因素是一组用于构建现代、可扩展和可维护的应用程序的准则和最佳实践。这些准则由Heroku的联合创始人之一Adam Wiggins提出,并被广泛应用于DevOps领域。下面将逐一介绍这些因素:

1. 代码库

始终将代码存储在版本控制系统中(如Git),并确保所有开发人员都有权限访问。

2. 依赖项

明确定义应用程序所依赖的软件包和库,并对其版本进行管控。可以使用工具如npm、Gem、Packagist等进行管理。

3. 配置

将应用程序所需的所有配置参数(如环境变量)应该与代码分离。应用程序不应该包含硬编码的配置,而应该从环境变量或配置文件中获取。

4. 后端服务

应用程序应使用与之分离的后端服务,如MySQL、Redis等。分离后端服务使得更换和升级服务变得更加容易。

5. 构建、发布、运行

将构建过程与发布过程分离,并使用容器等技术来实现应用程序的部署和运行。

6. 进程

将每个应用程序视为一个独立的进程,使用进程管理工具(如systemd、supervisord等)来管理。

7. 端口绑定

使用端口绑定将应用程序连接到外部网络。

8. 并发

应用程序应该是可水平扩展的,可以通过添加更多进程或节点来实现更高的并发性。

9. 移植性

应用程序应该是可移植的,可以在不同的环境中运行,无论是本地还是在云上。

10. 开发、测试、生产等环境之间的平滑转换

应用程序应该能够在不同环境下无缝运行,从开发到测试和生产环境。

11. 日志

应用程序必须记录所有事件和状态变化,并将其存储在中央位置。使用工具如ELK Stack等可以很好地处理日志。

12. 管理进程

使用管理进程器(如systemd)将应用程序作为服务运行。

13. 互动式shell

应用程序需要提供一个交互式shell,使得管理员、维护人员可以直接与应用程序交互(如Rails命令行等)。

14. 构建透明度

应用程序构建的过程应该是透明的,能够展示所有构建阶段的状态和问题。

15. 容错

应用程序应该能够容错,能够快速恢复。

16. 本地开发

应用程序需要提供一个完整的本地开发环境(如Docker Compose等)。

17. 服务状态

应用程序应该暴露服务状态信息(如URL状态码),以便于监测和故障排查。

18. 现场紧急事故处理

应用程序需要提供实时解决现场问题的方法。

19. 并发

应用程序应该可以处理许多并发的请求。

20. 缓存

应用程序中的重复性操作应该被缓存。

21. 筛选器和授权

应用程序需要提供筛选器和授权规则。

22. 异步

应用程序中可以允许后台任务等异步操作。

23. 公开运维数据

应用程序应该可以公开运维数据。

24. 扩展性

应用程序应该具有可扩展性,以便它可以高效地应对更大的负载。

25. 批处理

应用程序可以批量处理操作。

26. 数据迁移

应用程序需要提供数据导入和导出等功能,以便将数据从一个环境移动到另一个环境。

27. 透明的架构

应用程序的架构必须是透明的。

28. API优先

应用程序的设计应该首先考虑API的使用。

29. 内部管理界面

应用程序需要提供内部管理界面,以便管理员可以轻松地维护应用程序。

30. 转换log

应用程序需要提供转换log功能,以便管理员可以查看应用程序运行状态的历史记录。

总的来说,30个因素是一系列值得参考和实践的开发准则和最佳实践,可以帮助我们构建现代、可扩展和可维护的应用程序。