开发者学堂课程【ALPD 云架构师系列-云原生 DevOps36计:工具篇:云效云原生 DevOps 解决方案(一)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/82/detail/1267
工具篇:云效云原生 DevOps 解决方案(一)
内容介绍:
一、云研发时代
二、云研发时代现状及问题
三、云原生持续交付实践
四、云原生持续交付实践解决方案
五、典型场景
六、总结
阿里云云原生 DevOps 解决方案云校联合云原生团队打造的云原生 DevOps 一站式解决方案,帮助各种规模和阶段的企业高质量低成本的享受技术升级带来的研发福利,接下来将带来阿里云云原生 DevOps 的解决方案。
一、云研发时代
现在是云研发的时代,什么叫作云研发时代?其又有哪些特点?首先,在云研发的时代,基础设施要可靠、低成本、高弹性。具体理解为:首先,基础设施的稳定性要高,成本要低,当遇到大诉这样的诉求时,可以很方便的扩缩容。其次,在云研发的时代提供的软件往往不再是包或是光盘,而是服务,其服务要做到稳定、安全和高性能。最后,在云研发的时代,整个软件交付应该是持续、快速、高质量和低风险。
二、云研发时代现状及问题
但是这只是目前美好的时代和愿景,实际情况如何?现状可能是这样:
第一个问题,基础设施的成本会越来越高,很多人创业都会有这样问题,业务规模的增长往往跟不上基础设施成本的增长。可能在刚开始,基本一台服务器就可以扛下整个的业务。但是随着业务的发展,就需要购买服务器,再过一段时间,就需要整个的机房来承载技术设施,而此成本的上升非常的快,远远超过业务规模的增长。
第二个问题,随着业务的发展,发布出现问题,具体出现的问题为:发不了、老出错、时间长。这里关注下面两个真实的应用案例,A 应用近半年只发布了13次,其中7次是 hotfix 发布,发布时长从几分钟到十几个小时都有,发布时常差别较大。B 应用发布的频率高一点,但是发布成功率不到30%,每次发布几乎都超过24个小时,而且有时候连续多天没有发布。
第三个问题,用于新功能开发的时间越来越少,这里根据团队的真实开发情况模拟,发现在项目刚开始时,开发时间几乎占据90%以上的时间,可以开发很多新功能,可是随着产品的引进,随着团队的引进,随着需求规模的引进,用于新功能开发的时间越来越少,到后期维护时间几乎达到90%,仅仅有10%的时间用于新功能的开发。
那有这样的问题,显然还并不在云研发的时代,那应该如何迈向云研发的时代呢?
三、云原生持续交付实践
这里需要基于云原生的持续交付实践。所谓云原生的持续交付实践,有四个需要注意的地方:首先应该基于云原生基础设施,其次需要有一条端到端的持续交付流水线。然后需要建立高效的质量守护。最后需要低成本,高效率的服务治理体系。
1.云原生基础设施:
上个世纪五六十年代产业界发生革命,使集装箱诞生,集装箱是很简单的东西,就是一个标准化的箱子。但是随着集装箱的诞生,所有的运输、装配和物流都基于集装箱的标准去统一设计,其导致了整个的货运成本降低了95%,由此让原本不可能的全球货卖方式变成可能。从而达到了经济全球化,云原生其实正在扮演集装箱及其相关标准的角色。
其特点有两个:首先是不可变。
所有的集装箱质量都相同为不可变因素,而且一旦装箱之后,里面的内容是确定不可变因素,可以消除不一致带来的不确定性,减少不一致的风险,同时减少物质。
另一个是标准化。集装箱标准化,根据集装箱所诞生的各种物流体系也是标准化。这样的好处是可以简化部署,降低整个的环境的维护成本,降低工具链开发和学习成本。
这里提到的集装箱对应云原生上的容器。这里基础设施对应云原生里的 K8S 及上面的云原生 CNCF 的一套标准。
2.端到端的持续交付流水线:
在云研发的时代,要做到基于云原生的持续交付,需要的是从需求开始一直到上线的持续交付流水线,此流水线应该包括代码提交、构建、计算、验证、预发和上线的整个流程。而且这条水线应该满足下面三个要求:
(1)可描述:研发模式的具象化表达、发布流程一致性、最佳实践可快速复制。
(2)可观测:开发以及发布过程可见、发布过程有保障。
(3)自动化:发布过程自动化、流程通过工具落地。
3.高质量的质量守护:
软件的交付的生命周期,从需求开始到软件的上线运行,经历了很多阶段,在每个阶段都有质量的守护问题,刚开始存在需求质量问题,架构质量问题。
开发阶段存在代码质量问题,安全问题。在测试阶段存在稳定性质量问题,数据质量问题,测试质量问题,发动质量问题。到后来还存在整个性能质量和用户质量问题,同时需要一个全面的质量评估。那么基于这样的要求,下面会进行很多的测试的实践:例如自动化测试,稳定性测试,性能测试,安全测试。
为了承载这些测试,需要基础平台及流程支撑。同时为了知道测试实践的效果,需要整个的度量体系。
所以在云研发时代,整个软件交付周期都需要一个质量守护体系来保证,而其体系是端到端的。
4.低成本、高效率的服务治理体系:
在云研发的时代,应用逐渐的往微服务化迁移,可以说微服务是诞生云原生的基础之一,那么在此情况下,微服务的治理就变成了非常紧迫的问题,这也是很多时候阻挠云研发时代迈进的主要问题。在云研发的时代,服务治理体系应该如何呢?
如下图所示,作为开放人员的理想情况下,仅仅需要编写代码,剩下的事情将由云效平台,或者其他平台和服务治理平台来维护。其包括很多方面,例如网关,服务的监控,容量的调整,以及收缩容,出错处理、计费等等。这些都应该由一整套服务治理体系来保证。