基础设施|终于有人把云原生讲明白了( 四 )
云原生应用通常包含多个子功能组件,DevOps可以大大简化云原生应用从开发到交付的过程,实现真正的价值交付。
5. 不可变基础设施
在应用开发测试到上线的过程中,应用通常需要被频繁部署到开发环境、测试环境和生产环境中,在传统的可变架构时代,通常需要系统管理员保证所有环境的一致性,而随着时间的推移,这种靠人工维护的环境一致性很难维持,环境的不一致又会导致应用越来越容易出错。这种由人工维护、经常被更改的环境就是我们常说的“可变基础设施”。
与可变基础设施相对应的是不可变基础设施,是指一个基础设施环境被创建以后不接受任何方式的更新和修改。这个基础设施也可以作为模板来扩展更多的基础设施。
如果需要对基础设施做更新迭代,那么应该先修改这些基础设施的公共配置部分,构建新的基础设施,将旧的替换下线。简而言之,不可变基础设施架构是通过整体替换而不是部分修改来创建和变更的。
不可变基础设施的优势在于能保持多套基础设施的一致性和可靠性,而且基础设施的创建和部署过程也是可预测的。在云原生结构中,借助Kubernetes和容器技术,云原生不可变基础设施提供了一个全新的方式来实现应用交付。云原生不可变基础设施具有以下优势。能提升应用交付效率:基于不可变基础设施的应用交付,可以由代码或编排模板来设定,这样就可以使用Git等控制工具来管理应用和维护环境。基础设施环境一致性能保证应用在开发测试环境、预发布环境和线上生产环境的运行表现一致,不会频繁出现开发测试时运行正常、发布后出现故障的情况。能快速、可靠地水平扩展:基于不可变基础设施的配置模板,我们可以快速创建与已有基础设施环境一致的新基础设施环境。能保证基础设施的快速更新和回滚:基于同一套基础设施模板,若某一环境被修改,则可以快速进行回滚和恢复,若需对所有环境进行更新升级,则只需更新基础设施模板并创建新环境,将旧环境一一替换。
6. 声明式API
声明式设计是一种软件设计理念:我们负责描述一个事物想要达到的目标状态并将其提交给工具,由工具内部去处理如何实现目标状态。
与声明式设计相对应的是过程式设计。在过程式设计中,我们需要描述为了让事物达到目标状态的一系列操作,这一系列的操作只有都被正确执行,才会达到我们期望的最终状态。
在声明式API中,我们需要向系统声明我们期望的状态,系统会不断地向该状态驱动。在Kubernetes中,声明式API指的就是集群期望的运行状态,如果有任何与期望状态不一致的情况,Kubernetes就会根据声明做出对应的合适的操作。使用声明式API的好处可以总结为以下两点。
声明式API能够使系统更加健壮,当系统中的组件出现故障时,组件只需要查看API服务器中存储的声明状态,就可以确定接下来需要执行的操作。
声明式API能够减少开发和运维人员的工作量,极大地提升工作效率。
关于作者:郝树伟,毕业于北京大学,阿里云容器服务技术专家,曾就职于IBM。阿里云容器服务云原生分布式云团队核心成员,专注于云原生多云和混合云多集群统一管理和调度、混合集群、应用交付和迁移等云原生技术的研究。
本文摘编自《多云和混合云:云原生多集群和应用管理》,经出版方授权发布。
延伸阅读《多云和混合云》
- 有人觉得中暑就是热出来的,吃一些退烧药就好了,这种做法 蚂蚁庄园今日答案6月28日
- iqoo|iQOO Z6x终于量产,6000mAh大电池、天玑8100+独显齐上阵
- 微信更新正式版!“清理缓存”功能变强,小程序终于能分享到朋友圈
- 土星环比恐龙还要年轻?这些宇宙冷知识很少有人知道
- 为什么现在很少有人提及“克隆技术”了?“克隆技术”有何缺点?
- 为什么同学群里,很少有人说话,大部分人都选择沉默或者屏蔽?
- 三星|没有人会在意你用的是索尼A9二代还是一代,靠作品说话
- 拼多多|拼多多网页版终于上线,最大短板补足了吗?
- 微信|终于!微信可以分组了!
- 苹果|128GB版iPhone跌至3799元,观望者终于等到了,机会很少有
