16、跨平台应用自动化与平台采用指南

跨平台应用自动化与平台采用指南

1. API 边界分析

端到端应用自动化之旅结束后,我们的微前端示例及其依赖的数据库已正常运行。接下来探讨 XR/claim API 边界划分的原因。

端到端自动化分为四个阶段,可忽略第一阶段(准备 Crossplane 控制平面)。将其余阶段用四个 XR/claim API 分为三个阶段,原因如下:
| API 类型 | 原因 |
| ---- | ---- |
| 集群 XR/claim | 集群设置不仅与产品 A 相关,现代工作负载多部署在 Kubernetes 中,组织未来会有很多此类活动。构建单独 API 可实现复用和集中策略管理,且集群设置是一次性活动,对后续应用工作负载部署有跨领域影响。 |
| 入职 API | GitLab 项目入职的 XR/claim 作为单独 API 开发。无需为每个环境(生产、预发布、开发)都进行仓库和 CI 管道的入职操作,所以将 XGitProjectAPI/GitProject API 分开。 |
| 应用 API | 此步骤用于入职应用基础设施依赖和 CI 设置,每个环境只需进行一次。因此将 XWebApplication/WebApplication 作为单独 API。数据库供应有内部嵌套 API,将其分开是因为数据库供应有组织范围的策略。数据库 API 无 claim,仅作为嵌套 API 使用。 |

提示 :入职 API 创建的仓库 URL 和访问令牌是应用 API 设置 CI 所必需的。入职 API 是一次性活动,应用 API 在每个环境中使用。若每个环境使用不同的 Crossplane,自动共享凭证可能有挑战。可考虑使用外部密钥库同步入职 API 的仓库详细信息,其他 Crossplane 环境可使用 External Secrets(https://external-secrets.io/v0.5.3/)同步这些 Secrets。

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(集群 XR/claim):::process --> B(入职 API):::process
    B --> C(应用 API):::process
    C --> D(数据库嵌套 API):::process
2. 为何需要将基础设施平台作为产品

有三个关键原因需要平台团队开发 Crossplane API:
- 认知负载 :组织会使用大量云资源和外部服务,配置这些资源和服务的属性多达数万条。若产品团队自行掌握这些知识,会专注于技术复杂性而非产品特性开发。需要专业团队将这种认知能力引入组织,将此工作抽象为平台团队管理的共享服务是合理的。
- 策略管理 :基础设施和外部服务的使用策略来自安全、合规、产品和架构团队。需要集中团队在资源供应和使用时跟踪、整合和编码这些策略。若将资源自动化作为单个产品团队的一部分,很难保证策略的执行和更新。
- 复用投资回报 :组织内许多工具、架构模式和基础设施设置模式相似,这些共性会转化为基础设施参考架构的复用。结合认知负载和策略管理优势,复用的投资回报经济优势明显。

3. 理解客户需求

基础设施平台团队意味着外部交付依赖,这是敏捷产品开发团队常避免的。产品团队常对平台团队提供的内容不满,存在交付时间线、积压耦合和合同薄弱等问题。平台团队应具备以下品质以满足产品团队的交付期望:
- 产品开发实践
- 快速启动 :平台使用要快速简单。Crossplane 作为基于 API 的平台解决了部分问题,但还需提供快速启动指南、示例代码仓库、支持系统和详细 API 文档。将快速启动能力作为关键指标,通过产品和平台团队的持续反馈循环不断改进。
- 实践社区 :建立包含平台和产品团队参与者的社区。产品团队的应用操作员可自然参与,他们能为平台 API 开发带来实际需求反馈。运行社区要有指标和激励措施,可用于共同创作、知识传递、双向反馈和加速采用。
- 可组合 API :技术平台常限制创新,平台应具备一组细粒度的 XR,在此基础上可快速组合产品团队所需的 claim 配方。建议采用两层 API,第一层包含组织集中策略的细粒度 XR,第二层是配方层,包含产品级策略和需求。可有一组组织内复用的基本配方,同时为社区创新新配方留空间。部分组织设置可能需要 Goldilocks 治理,避免新配方过多。

  • 自助服务 :自助服务是构建平台的关键。类似云提供商,用户可通过控制台和 API 按权限管理资源。Crossplane 作为基于 API 的资源组合平台解决了部分问题,但要仔细定义产品团队将使用的 XR/claim API 的范围和粒度。这取决于组织规模、团队边界、开发人员/平台团队的技术成熟度等。首次定义完美边界较难,需通过测量自助服务指标迭代改进。除 API 边界,还需关注快速启动指南、技术支持系统和社区建设。
graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(快速启动):::process --> B(实践社区):::process
    B --> C(可组合 API):::process
    C --> D(自助服务):::process
  • 协作式积压管理 :单个集中的平台团队服务多个内部团队时,需管理积压工作以满足各方需求。可采取以下方法减轻风险:
    • 积压优先级排序 :在优先级排序会议中,用时间关键性、错过机会和短期/长期商业价值等指标对每个积压项评分,并记录评分原因以提高透明度。所有有积压项的产品团队应积极参与,可使用评分滑块避免产品团队过度提高评分。
    • 期望管理 :将产品团队视为最终客户,为他们设定何时能期望得到什么的预期。使用 Scrum of Scrums 或其他敏捷框架定期提供更新,包括进度和交付日期,对延迟交付保持开放透明。
    • 社区和治理 :借鉴 Kubernetes 和 Crossplane 等开源项目的做法,通过建立强大社区提高交付速度。社区开发活动由核心贡献者组成的技术指导小组管理。产品团队的应用操作员可参与社区,有紧迫需求的产品团队可分配应用操作员共同创作产品。
4. 平台产品生命周期与团队交互

Crossplane API 开发可能经历多个阶段,每个阶段有不同的参与模式和开发者能力要求:
| 阶段 | 交互模式 | 开发者能力 | 特点与目标 |
| ---- | ---- | ---- | ---- |
| 概念验证和 alpha 阶段 | 协作 | 快速创新者 | 产品和平台团队密切合作,不要求 API 可扩展或可靠,旨在尽快实验可行性和价值。 |
| beta 阶段 | 从协作向自助服务过渡 | 快速创新者与能带来稳定性/可靠性的人员结合 | 继续协作工作,产品团队可通过自助服务门户请求访问新 API 并开始使用。平台团队与产品团队紧密合作完善自助服务门户和 API,目标是为组织使用做好准备。 |
| 通用可用性阶段 | 完全自助服务 | API 稳定可靠 | API 可供组织内任何人使用。 |
| 弃用和移除阶段 | 促进式交互 | 快速创新者 | 平台团队帮助产品团队摆脱对弃用 API 的使用。 |

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(概念验证和 alpha 阶段):::process --> B(beta 阶段):::process
    B --> C(通用可用性阶段):::process
    C --> D(弃用和移除阶段):::process
5. OAM 角色

OAM 规范提出了部署和管理云原生应用的三个角色:
- 应用开发者 :专注于应用开发,全力开发直接为客户增加价值的功能。
- 应用操作员 :减轻应用开发者在云原生生态系统中配置应用的复杂性,使应用开发团队能更快进行功能开发,间接为最终用户做出贡献。
- 基础设施操作员 :减轻组织内配置云、其他基础设施和服务的复杂性,使应用操作员能专注于应用的配置和操作。

通过重叠 OAM 角色和本章所学的其他概念,可构建如下平台团队及其生态系统结构:

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    A(组织 x):::process --> B(产品 1):::process
    A --> C(产品 2):::process
    B --> D(Scrum 团队 1):::process
    B --> E(Scrum 团队 2):::process
    C --> F(Scrum 团队 3):::process
    C --> G(Scrum 团队 4):::process
    D --> H(应用开发者):::process
    D --> I(应用操作员):::process
    D --> J(基础设施操作员):::process
    E --> H
    E --> I
    E --> J
    F --> H
    F --> I
    F --> J
    G --> H
    G --> I
    G --> J

这种结构展示了组织如何根据不同角色和团队分工,有效地进行云原生应用的开发、部署和管理,有助于提高开发效率、降低复杂性,并更好地满足客户需求。

分布式微服务企业级系统是一个基于Spring、SpringMVC、MyBatis和Dubbo等技术的分布式敏捷开发系统架构。该系统采用微服务架构和模块化设计,提供整套公共微服务模块,包括集中权限管理(支持单点登录)、内容管理、支付中心、用户管理(支持第三方登录)、微信平台、存储系统、配置中心、日志分析、任务和通知等功能。系统支持服务治理、监控和追踪,确保高可用性和可扩展性,适用于中小型企业的J2EE企业级开发解决方案。 该系统使用Java作为主要编程语言,结合Spring框架实现依赖注入和事务管理,SpringMVC处理Web请求,MyBatis进行数据持久化操作,Dubbo实现分布式服务调用。架构模式包括微服务架构、分布式系统架构和模块化架构,设计模式应用了单例模式、工厂模式和观察者模式,以提高代码复用性和系统稳定性。 应用场景广泛,可用于企业信息化管理、电子商务平台、社交应用开发等领域,帮助开发者快速构建高效、安全的分布式系统。本资源包含完整的源码和详细论文,适合计算机科学或软件工程专业的毕业设计参考,提供实践案例和技术文档,助力学生和开发者深入理解微服务架构和分布式系统实现。 【版权说明】源码来源于网络,遵循原项目开源协议。付费内容为本人原创论文,包含技术分析和实现思路。仅供学习交流使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值