云原生架构转型:从小处着手与铺平道路
在当今数字化的浪潮中,越来越多的组织决定向云原生架构转型,以利用云技术的优势,提升应用的灵活性、可扩展性和创新能力。然而,转型过程并非一帆风顺,会面临诸多挑战。本文将介绍两种有效的策略:“从小处着手”(Start Small)和“铺平道路”(Pave the Road),帮助组织顺利实现云原生架构的转型。
1. 从小处着手(Start Small)
当组织决定向云原生架构转型时,可能面临着不同团队技术水平参差不齐、缺乏云应用开发经验等问题。在这种情况下,从小处着手是一个明智的选择。
1.1 具体做法
- 开发新功能并部署到云端 :编写一些新的功能作为应用程序,并将其部署到云端。
- 重构或重新托管现有小应用 :对现有的小型应用进行重构或重新托管,然后在云端运行。
- 从现有系统中提取组件 :从当前系统(通常是单体应用)中提取一些现有的组件或服务,并将它们部署到云端。
例如,在一个金融系统的迁移和现代化改造项目中,团队从小处着手,将一个相对解耦的组件从单体应用中移出,并将其实现为微服务。同时,公司还开始使用微服务架构创建新的逻辑,并将这些微服务部署到云端。
1.2 为何要从小处着手
- 降低学习成本 :在云端取得成功之前,需要学习大量的知识,包括云提供商的工具、API、账户管理规则等。从小型、功能相对较少的应用开始,可以降低团队的认知负担。
- 适应企业流程变化 :将应用迁移到云端需要改变企业的流程,如验证、审计、部署和安全等方面的实践。从小处着手可以让团队有足够的时间和精力来适应这些变化。
- 团队角色调整 :向云端迁移会对运营和安全团队等带来较大的角色变化,团队需要时间来适应。例如,数据库管理员可能需要适应新的数据库工具和限制。
1.3 优缺点分析
- 优点 :组织不会承担大规模技术变革带来的高成本和高风险,还能从早期项目中学习经验,为未来的微服务项目提供借鉴。此外,还能更快地获得一些好处,如新的技术和小的改进。
- 缺点 :采用新架构的过程可能会更长,需要长期维护旧系统和新的云解决方案,增加了总体拥有成本(TCO)。而且,由于是逐步推进,需要更长的时间才能充分获得新架构的全部好处。
2. 铺平道路(Pave the Road)
当组织决定向云端迁移并采用微服务等架构风格时,希望给予团队足够的自主权,但又不希望团队重复犯错。此时,“铺平道路”的策略就显得尤为重要。
2.1 具体做法
- 搭建基础设施 :建立一个良好的DevOps环境,包括自动化的构建、测试、部署和监控流程。通常还需要创建一个容器化环境,并在其中部署一个示例应用程序。
-
提供开发支持
:
- 创建示例和模板 :为开发人员提供编写云应用的简单示例、模板和脚本,包括构建微服务的示例。
- 建立标准DevOps实践 :如持续交付,构建通用的DevOps管道元素,包括工具集成、标准部署选项等。
-
解决平台级问题
:
- 构建共享容器基础设施 :减少团队自行构建容器编排器基础设施的高开销。
- 集中管理公共云账户 :降低公共云的总体成本,同时保持云的自助服务特性。
- 标准化自动化 :如VM和服务供应的自动化,创建通用的VM镜像或容器基础镜像。
- 建立和维护通用运营工具 :用于可观测性、监控和调试,实现系统的端到端可观测性。
-
开展架构任务
:
- 创建和记录参考架构 :为云采用提供详细的实现描述,包括常见模式、后端服务的首选选择等。
- 开发或购买工具 :从更高级别的规范或通过向导式用户体验生成系统的核心部分。
以下是一个简单的流程图,展示了“铺平道路”的主要步骤:
graph LR
A[搭建基础设施] --> B[提供开发支持]
B --> C[解决平台级问题]
C --> D[开展架构任务]
2.2 优缺点分析
- 优点 :为开发云应用创造了更简单的路径,新团队或人员可以通过学习先驱团队创建的示例、文档和模板,更快地推出他们的第一个云应用。
- 缺点 :需要花费大量的时间和精力来构建软件、流程、模板和文档等,有些任务可能具有一定的难度,如构建新的领域特定语言(DSL)。此外,还可能存在维护问题,初始项目需要较高的前期投资,回报周期较长。
3. 两种策略的关系
“从小处着手”和“铺平道路”这两种策略是相辅相成的。一个初始的小项目可以作为试点项目,揭示云开发中需要采用的各种新技术和工具。通过抽象试点项目的共同特征,可以为后续项目“铺平道路”。
在向微服务架构转型时,结合这两种策略可以更好地实现转型目标。例如,在“铺平道路”的过程中,可以采用蓝绿部署和金丝雀部署等部署策略来构建高质量的交付管道。
总结
向云原生架构转型是一个复杂的过程,需要组织谨慎规划和逐步推进。“从小处着手”和“铺平道路”这两种策略可以帮助组织降低转型风险,提高转型成功率。通过从小规模的项目开始,积累经验和知识,同时为团队提供必要的支持和基础设施,组织可以顺利地实现云原生架构的转型,获得云技术带来的各种优势。
以下是一个表格,总结了两种策略的主要特点:
| 策略 | 做法 | 优点 | 缺点 |
| — | — | — | — |
| 从小处着手 | 开发新功能、重构小应用、提取组件并部署到云端 | 降低成本和风险,快速获得好处,积累经验 | 采用过程长,维护成本高,获得全部好处时间长 |
| 铺平道路 | 搭建基础设施、提供开发支持、解决平台级问题、开展架构任务 | 为开发云应用创造简单路径,新团队可快速上手 | 构建成本高,存在维护问题,前期投资大 |
云原生架构转型:从小处着手与铺平道路
4. 避免“铺平道路”的反模式
在实施“铺平道路”策略时,需要避免一种常见的反模式——“Build it and they will come”。这种反模式表现为团队构建了不被需求的基础设施、自动化工具或技术,原因可能是选择了开发团队不需要的技术,或者工作进度与开发团队不匹配。
为了避免这种反模式,应该依靠开发团队来“探索道路”,通常只在开发团队已经开辟出路径的地方进行“铺路”。也就是说,要根据开发团队的实际需求和实践来确定“铺平道路”的方向和内容。
5. 数据处理的重新思考
在向云原生架构转型时,还需要重新思考应用程序处理持久化数据的方式。传统的单体应用通常采用集中式数据库方法,而分布式架构中则典型地使用数据去中心化。
例如,可能需要使用Saga模式来替代单体应用中原来的单连接事务。Saga模式是一种用于处理分布式事务的模式,它将一个大的事务分解为一系列的子事务,每个子事务都可以独立执行和补偿。
以下是一个简单的列表,展示了数据处理方式转变的要点:
-
数据去中心化
:将数据分散存储在不同的服务中,提高系统的可扩展性和容错性。
-
使用Saga模式
:处理分布式事务,确保数据的一致性。
-
调整数据访问策略
:根据微服务的特点,优化数据访问方式。
6. 实际案例分析
6.1 金融系统案例
在一个金融系统的迁移和现代化改造项目中,公司决定向云原生架构转型,采用微服务架构。项目开始时,公司采取了“从小处着手”的策略,将一个相对解耦的组件从单体应用中移出,并实现为微服务部署到云端。同时,公司还开始使用微服务架构创建新的逻辑,并将这些微服务部署到云端。
在这个过程中,公司也进行了“铺平道路”的工作。他们构建了一个质量交付管道,作为团队通用的CI/CD管道,定义了自动化的构建、测试和部署流程。此外,他们还创建了简单的示例、模板和脚本,帮助开发人员编写和部署微服务。
通过这些措施,公司成功地实现了系统的迁移和现代化改造,能够更频繁地发布新功能,提高了业务的灵活性和响应速度。
以下是这个案例的流程图:
graph LR
A[从小处着手:提取组件为微服务] --> B[创建新微服务逻辑]
B --> C[铺平道路:构建CI/CD管道]
C --> D[提供开发示例和模板]
D --> E[成功迁移和现代化改造]
6.2 IBM CIO案例
IBM CIO办公室为了推动大规模迁移到基于容器的混合云环境,采用了“铺平道路”的策略。他们面临的问题是,各个团队之前各自构建自己的CI/CD管道,导致管道多样性大,缺乏一致性,并且在安全检查和记录保存方面存在问题。
为了解决这些问题,团队引入了基于Tekton的新的通用CI/CD管道。这个管道执行了一系列固定步骤,包括常见的构建方法、测试工具和部署步骤,并将所有测试和扫描结果记录到一个公共数据库中。
通过采用这个通用管道,团队减少了开发工作量,提高了安全性,同时自动管理了应用程序向新的共享混合云环境的部署。超过2000个应用程序成功迁移到了新环境。
以下是这个案例的主要步骤列表:
1. 分析现有CI/CD管道的问题,包括多样性大、安全检查和记录保存不足。
2. 引入基于Tekton的新通用CI/CD管道。
3. 定义管道的固定步骤,包括构建、测试和部署。
4. 将测试和扫描结果记录到公共数据库。
5. 推广新管道,实现应用程序的迁移和部署。
7. 总结与建议
云原生架构转型是一个长期而复杂的过程,“从小处着手”和“铺平道路”是两种非常有效的策略。通过从小规模的项目开始,可以降低转型的风险,让团队逐步适应新的技术和架构。同时,通过“铺平道路”,可以为团队提供必要的支持和基础设施,提高开发效率和质量。
在实施这两种策略时,需要注意以下几点:
-
结合实际情况
:根据组织的具体情况和需求,选择合适的策略和方法。
-
避免反模式
:在“铺平道路”时,要根据开发团队的实际需求进行,避免构建不被需要的基础设施和工具。
-
关注数据处理
:重新思考应用程序处理持久化数据的方式,适应分布式架构的特点。
-
持续学习和改进
:云原生技术不断发展,组织需要持续学习和改进,以保持竞争力。
通过合理运用“从小处着手”和“铺平道路”的策略,组织可以顺利地实现云原生架构的转型,提升业务的灵活性、可扩展性和创新能力。
以下是一个表格,总结了实施策略的要点:
| 策略 | 实施要点 | 注意事项 |
| — | — | — |
| 从小处着手 | 开发新功能、重构小应用、提取组件部署到云端 | 控制规模和进度,积累经验 |
| 铺平道路 | 搭建基础设施、提供开发支持、解决平台级问题、开展架构任务 | 根据开发团队需求,避免反模式 |
超级会员免费看
1万+

被折叠的 条评论
为什么被折叠?



