0.背景
应用程序的15个要素是开发人员为构建云原生应用程序而定义的一种方法。其主要原则如下:
- 使用声明性格式实现设置自动化,从而最大限度地减少新开发人员加入项目的时间和成本;
- 与底层操作系统有清晰的契约,在执行环境之间提供最大的可移植性;
- 适合部署在现代云平台上;
- 最大限度地减少开发和生产之间的差异,实现持续部署,实现最大灵活性;
- 无需对工具、架构或开发实践进行重大更改即可进行扩展;
该方法论的15个要素分别是:
- 代码库– 一个代码库在修订控制中跟踪,多次部署
- API优先
- 依赖关系- 明确声明和隔离依赖关系
- 配置– 在环境中存储配置
- 支持服务– 将支持服务视为附加资源
- 构建、发布、运行——严格分离构建和运行阶段
- 进程– 将应用程序作为一个或多个无状态进程执行
- 端口绑定– 通过端口绑定导出服务
- 并发性——通过进程模型进行扩展
- 可处理性——通过快速启动和正常关闭最大程度地提高稳健性
- 开发/生产一致性——尽可能保持开发、准备和生产环境的相似性
- 日志——将日志视为事件流
- 管理流程– 将管理/管理任务作为一次性流程运行
- 远程控制
- 身份验证与授权
1.代码库
云原生应用程序必须始终由在版本控制系统中跟踪的单个代码库组成。代码库是一个源代码存储库或一组共享公共根的存储库,用于生成任意数量的不可变版本。应用程序和代码库之间应该是 1:1 的关系,但代码库和应用程序部署之间应该是一对多的关系。这个单一代码库有助于支持开发团队之间的协作,并有助于实现应用程序的正确版本控制。
此代码库可以是 Git 存储库(包括 GitHub、GitHub Enterprise、GitLab 等)。我们的演示应用程序存储在托管在 GitHub 上的 Git 存储库中。Git 是一种修订控制工具,允许多人同时开发项目并确保所有代码都是安全的。或者,您可以使用其他工具,如 BitBucket、SourceForge、特定于云的源存储库等。
2.API优先
注:这些方法中的某些因素不一定映射到云施加的特定物理要求,而是更多地与构建云原生应用程序时的人们和组织的习惯有关。
在为云开发企业应用程序时,该应用程序通常会成为服务生态系统的参与者。但如果应用程序内的 API 定义不明确,则可能导致该生态系统内的集成失败。此因素正是旨在帮助缓解这种情况。
增加这一因素有助于正式将 API 视为开发过程的一流产物。API 优先方法涉及开发一致且可重复使用的 API,使团队能够根据彼此的公共合同开展工作,而不会干扰内部开发流程。通过利用 API 优先方法并明确规划客户端应用程序和服务将使用的各种 API,每个 API 都可以非常清晰地设计为尽可能有效,并且可以轻松模拟。这可以实现与利益相关者的更好协作,并使开发人员和架构师能够在投入过多资金支持给定 API 之前测试或审查他们的方向/计划。每个 API 的清晰设计流程还可以为每个 API 创建更有效的文档。提供精心设计、全面且易于遵循的文档对于确保开发人员拥有良好的 API 体验至关重要。
API 描述语言有助于建立 API 行为规范。API 描述语言是领域特定语言,适合描述 API。它们是直观的语言,API 开发人员、API 设计人员和 API 架构师可以轻松编写、阅读和理解。与编程语言或 API 实现语言相比,API 描述语言使用更高级别的抽象和声明式范式,这意味着它们可用于帮助表达“是什么”而不是“如何”——它们可以帮助定义可能的响应的数据结构(什么),而不是描述如何计算响应。在 API 的初始设计阶段,这对于模拟 API 和收集利益相关者的反馈特别有用。API 描述语言的示例包括 OpenAPI、Swagger 和 RAML。
为了在应用程序源代码中清晰地定义 API,可以使用 API 规范中的标准模型。API 规范可以广泛地了解 API 的行为方式以及特定 API 与其他 API 的链接方式。它解释了 API 的运行方式以及使用时预期的结果。API 规