正文字数:7544 阅读时长:11分钟
随着云基础设施服务以及边缘计算技术的发展,Cloud Native,即云原生,架构理念和研发也越来越普及。从传统软件架构,到云原生软件架构的转变,还需要经历一段时间才能逐渐走向成熟。今天的分享,我们邀请到了华为云直播的段亮老师,从经验和教训的角度,详细介绍华为云视频在Cloud Native的转型实践中遇到的问题、挑战以及解决之道。
作者 / 段亮
整理 / LiveVideoStack
大家好,很高兴能有机会和大家去分享华为在云视频Cloud Native(云原生)实践过程中的一些经验。
我的分享主要分为三个部分:前两个部分和大家一起回顾关于Cloud Native本身具有哪些的特征以及架构;第三部分是我重点想和大家分享的,即我们的云视频业务在探索和实践Cloud Native的过程当中具体是怎么做的,以及遇到了哪些问题,希望本次分享能够对想要或者正在使用云原生的小伙伴带来帮助。
1
Cloud Native的前世今生
1.1 业界对Cloud Native的描述
我们先来回顾一下,在2010年,Paul(Paul Fremantle)提出了云原生的概念,起初只提出了关于弹性、分布式、多租户等基本特征;随着实践和发展,Adrian(Adrian Cockcroft,2013)和Matt(Matt Stine,2015)相继对关键特征进行完善,逐渐提出了反脆弱性、DevOps、持续交付等更新的认识。这就是Cloud Native最初的发展。
从团队来看,CNCF提出了Cloud Native的特征和目标,Gartner也同样做出了重要的规范。
1.2 对云原生的定义和要求
华为公司早在2016、17年,就开始通过内部发文的方式,统一云原生定义并规范语言,便于各部分和业务之间对齐语言,包括(微)服务化、弹性伸缩、分布式等,同时对这些关键特征的定义和范围,也都做了非常详细的规范。
1.3 Cloud Native定义及关键特征
整个云原生,我们认为应该分成三大部分。基于康威定律,组织决定其所成就的业务。对实践云原生而言,组织的变化最能使我们感同身受,尤其是对每一个人的能力要求发生了非常明显的变化。例如,对研发人员不再像以前传统模式下的要求,即实现需求就可以;现在,从前端需求讨论,到需求分析,再到开发、参与测试、参与灰度的过程,最后到上线以及在线上运行的情况,包括监控、告警等,都需要端到端的关注。所以,对研发团队人员技能的要求提高了。
今天,我重点和大家分享的是关于云原生的架构和工程方面。各个公司根据不同的业务,都会涉及到这两个方面,所以更有参考价值。架构方面的核心是微服务架构,其后还有弹性伸缩和分布式等特征;工程能力有DevOps、持续交付、灰度上线等。最终的目标是让云应用能够快速高效地部署和规模化,以及实现整个服务的高可用性。这是云原生的整体概略,下面我将围绕架构和工程两个方面和大家展开分享。
2
Cloud Native的基本特征和架构
2.1 微服务架构的定义及优势
云原生的架构,最核心的部分是微服务架构。微服务的首要特征是高内聚、功能单一,最好的状态是一个微服务只做一件事情,并且各微服务之间通过进程隔离、独立代码库等,使得每个微服务都可以单独测试、部署和升级。这样