对上述五类代码(即应用、应用服务、基础设施、策略和监控)的简要描述如下:

  • 应用程序代码和应用服务代码:前者包含一组特定业务事务的数据和应用逻辑,而后者包含所有服务的代码,如网络连接、负载均衡和网络弹性。
  • 基础设施即代码(IaC):用于提供和配置基础设施资源的代码,它以可重复和一致的方式承载 应用程序的部署 。这种代码是用一种声明性语言编写的,当执行时,为正在部署的应用程序提供和配置基础设施。这种类型的代码就像在应用程序的微服务中发现的任何其他代码,只是它提供的是基础设施服务(例如,配置服务器)而不是事务服务(例如,在线零售应用程序的支付处理)。
  • 策略即代码:描述了许多策略,包括安全策略,作为 可执行模块 。一个例子是授权策略,它的代码包含了策略(如允许、拒绝等)和适用领域(如 RESTAPI 的方法,GET、PUT 等,路径等动词或工件)这段代码可以用特殊用途的策略语言(如 Rego)或常规应用中使用的语言(如 Go)编写。这段代码可能与 IaC 的配置代码有一些重合。然而,对于实施与特定于应用领域的关键安全服务相关的策略,需要一个单独的策略作为代码,驻留在参考平台的策略执行点(PEP)中。
  • 可观测性即代码:推断系统内部状态的能力,并对系统内何时以及更重要的是为何发生错误提供可操作的洞察力。它是一种全栈式的可观测性,包括监测和分析,并对应用程序和承载它们的系统的整体性能提供关键的洞察力。在参考平台的背景下,可观测性即代码是指在代理中创建机构的那部分代码,并为从微服务应用中收集三种类型的数据(即日志、跟踪和遥测)创建功能 。这类代码还向外部工具提供或传输数据(例如,日志聚合工具,它聚合来自单个微服务的日志数据,为瓶颈服务提供跟踪数据分析,从遥测数据生成反映应用健康状况的指标等)。以下描述了对作为代码的可观测性所实现的三种功能:
  1. 日志捕获详细的错误信息,以及用于故障排除的调试日志和堆栈跟踪。
  2. 追踪应用程序的请求,因为它们通过多个微服务来完成一项事务,以确定分布式或基于微服务的生态系统中的问题或性能瓶颈。
  3. 监测,或称度量,收集遥测从应用程序和服务中收集数据。

每种代码类型都有相关的 CI/CD 管道,并在第 4.2 到 4.5 节中进行了描述。应用服务代码、基础设施即代码、策略即代码和可观测性即代码类型之间可能存在重叠。

托管这五种代码类型的参考平台的组成成分是:

  1. 业务功能组件(由几个微服务模块组成,每个模块通常作为一个容器实现),体现了应用逻辑(例如,与数据交互,执行事务等),从而形成应用代码。
  2. 基础设施组件(包含计算机、网络和存储资源),其成员可以使用基础设施即代码进行配置。
  3. 服务网格组件(通过控制面模块和服务代理的组合实现),提供应用服务,执行策略(例如,认证和授权),并包含应用服务代码和策略作为代码。
  4. 监测组件(参与确定表明应用程序健康状况的参数的模块),执行功能(例如,日志聚合、生成指标、生成仪表板的显示等)并包含作为代码的可观测性。

策略和可观测性代码类型在服务网格中的分布情况如下:

  • 代理组件(入口、sidecar 和出口)。这些组件容纳了与会话建立、路由、认证和授权功能有关的编码策略。
  • 服务网格的控制平面。这里面有一些代码,用于转发来自服务的遥测信息,并由代理发送至专门的监控工具,认证证书的生成和维护,更新代理机构中的策略,监控服务协调平台中的整体配置,以生成新的代理,并删除与停用的微服务相关的过时代理。
  • 外部模块。这些内部模块在应用和企业层面执行专门的功能(例如,如集中授权或权利服务器、集中记录器、通过仪表板监测 / 提醒服务器状态等),并建立一个全面的应用状态视图。这些模块由来自代理或控制平面的代码调用。