2021年11月26日,阿里云用户组(AUG)第3期活动在广州顺利举行。具有丰富的容器、微服务等领域经验的阿里云云原生资深专家李国强,向现场数十家广州企业分享了云原生的趋势方向以及阿里云云原生的能力布局。本文根据作者的演讲整理而成。
大家下午好!非常欢迎大家来到下午的交流场,前面说了,今天主角是在座的每一位,我们做分享其实是希望起到抛砖引玉的作用,在这个议题里我会分享云原生的一些趋势和新方向,希望能引起大家的一些思考。
云原生的定义
云原生的社区定义
Pivotal是第一个提出云原生这个概念的,他当时给云原生的定义就是这四块:DevOps、CI/CD、微服务和Container。从技术来讲,基本上是正确的,但真正把云原生发扬光大,其实是谷歌发起的CNCF基金会。今天CNCF下面已经有超过1000个项目了,我们来看这么多项目到底想帮助用户做什么。
CNCF对于云原生的定义是帮助用户构建可弹性的应用,提到一系列代表性技术:容器服务,网格,微服务,不可变基础设施和声明式API,相信这些技术词大家都听过。
那到底这些技术能干什么呢?下面有一个很好的总结,就是帮助用户构建容错性好、易于管理、便于观测,松耦合的系统,这几个词都很关键,用户在构建应用或者构建系统的时候,基本都会以这个为目标。特别是新型的互联网应用,会面对各种各样的技术挑战和市场挑战,比如大流量的冲击、恶意攻击、快速上线促销活动等。在这些挑战之下,客户都会希望自己的软件或者系统能做到高容错性、易于管理、松耦合便于观测等等。同时这些特性带来的业务价值,就是帮助企业能够频繁地和可预测地进行重大并更。这些合在一起就是今天对于云原生的定义。
因云而生的云原生
那到底是不是用这些技术就是云原生呢?今年在云栖大会的时候对云原生重新进行了一个定义的延展,云原生不仅仅是这些技术,更重要的是云原生技术需要和云计算进行结合,帮助用户构建云原生架构的应用。
在上图可以看到,左边有一系列云原生技术,和云计算相结合的时候,它会产生一系列云原生的产品,包括我们之前讲到的容器服务,K8s作为CNCF的第一个项目,一定是我们今天云原生整个体系的核心。还包括围绕云原生的中间件、数据库、安全,今天都按照云原生的模式去运行,里面用到云原生的技术,帮助用户去构建符合云原生定义的应用和系统。
今天来讲,阿里云上有大量的云原生产品。其实企业在使用以及真正落地到一个场景的时候,要把这些产品形成一个一个的方案,比如说多活方案、AI平台方案、弹性上云、统一调度等等一系列的,在产品之上构建出来的这整个是我们对于云原生从技术到产品到方案的体系。
云原生趋势
云原生开启全云开发时代
有几个趋势和大家分享,大家一定很好奇,今天云原生在行业和企业里面处于什么阶段?如果我今天开始使用云原生,我会是那个吃螃蟹的人,还是今天已经有很多人在用了?
根据有些行业的分析报告,今天容器的使用已经非常广泛了,到现在为止已经有68%的企业在生产环境使用容器了,当然不一定全是核心系统,但是已经有三分之二的企业在生产使用容器,所以容器已经非常成熟了。
80%以上的用户在使用或者计划使用微服务,这也是非常大的趋势,它的使用率比容器还要高,但并不是说所有的业务都需要容器、都需要用微服务,这是一个应用架构选择,只是说这个技术越来越普及。另外是Serverless技术,有25%的开发者将使用Serverless。后面我会简单介绍Serverless,它的成熟度也在不断地提升。
今天我会把几个重要的趋势和大家做一些分享,也是抛个砖,大家可以去思考一下在这些领域有没有和你们当前业务有结合的点。
分布式云成为一种新的趋势
第一,分布式云已经成为一种新的趋势,分布式云已经连续两年成为Gartner十大技术趋势之一。今天越来越多的企业包括厂商在讲分布式云,背后到底是为什么?其实还是业务的变化带来云形态的变化,对技术提出了新的挑战。今天各个云厂商,比如以阿里为例,除了公共云之外,还有本地云、边缘云,包括帮助用户在IDC内部构建私有云的形态,所以云的形态越来越多了。阿里云提出“一云多形态”的新概念,云不仅仅是指公共云,还包括了多种形态。那为什么会出现一云多形态?是因为今天越来越多的业务场景需要这样的多形态。今天在边缘侧视频技术越来越发达,直播业务、VR、AI业务要求数据和算力在边缘侧出现,所以这就推动了边缘云的发展。
第二,随着IDC、公共云的发展,很多企业可能会持有超过一种云,这也是业务诉求,比如企业希望构建多活的高可用架构需要跨多个机房或云,客户线下IDC希望能够充分联合使用公共云的能力,催生了一云多形态出现。但是一云多形态出现之后,也会带来很大的复杂性,这些云之间有一定的异构性,怎么对云上的业务可用性系统进行管理是企业的普遍诉求。比如刚才讲的场景,客户怎么能够在IDC和公共云之间构建一个主备关系或者建立双活体系,假设以前我的业务主要在IDC里面,但是IDC可能会出问题,我能不能在公共云上建一个主备环境。还有一种情况,比如我原来IDC有一个业务,今天可能没办法全部搬到云上,那我可否能弹到云上?
这些都是今天在一云多平台之下结合业务可以考虑到的越来越多的场景。这块也是我们今天讨论的重点,后面会和大家详细探讨。
AI负载云原生化
另外一个非常重要的趋势是AI负载云原生化。为什么AI的负载变得越来越原生化?这里面有几个很重要的原因。整个脉络来讲,先是大数据的出现,之后基于数据深度学习的技术出现,再往后就催生了AI负载与容器以及K8s生态体系的结合。
在大数据领域里面,GPU的使用非常广泛,但传统的调度系统比较弱,K8s渐渐承担越来越重要的AI负载的管理能力。新的计算引擎像Spark、Flink和K8s生态结合得非常好,越来越多的企业就天然的把AI类型负载跑到K8s的生态上面,而K8s的生态在它的促进之下,这块技术发展也非常快。
我们看到一个趋势,今天在阿里云,很多客户增长最快的业务是AI领域,一方面是业务本身的需要,数据积累之后需要做分析,另外技术的发展也是这个趋势。
但同时AI云原生化也有非常多的挑战,比如说GPU如何做池化和共享、调度能力、数据访问效率这些都是把AI放到K8s之后面临的一些挑战,相应的也会有很多解决方案,有些可能是开源,有些是阿里云提供的,帮助用户完成AI在原生化过程中碰到各种各样的问题。
降本增效是所有企业的普遍诉求--FinOps
第三个话题是FinOps,降本增效是所有企业的普遍诉求,就算这个企业在初创期,业务增长非常重要,但是对于IT部门或预算部门来讲,降本增效依然非常重要。
上面画了一个非常简单的原理图,如何降本增效或者理解FinOps理念,有三个很重要的环节:容量成本规划、容量成本可视化和容量成本优化。我相信在座很多企业在两个环节做得会比较多,就是容量规划和优化做得比较多,但是容量成本可视化也是非常关键的。
这里包含了如何通过可观测性的工具非常准确地看到系统的使用率,包括是否有容量优化的冗余。还有一个非常重要的方向,在公共云上,云资源的利用率和费用是否直接以图形化的方式展示出来,这个其实是今天大家在做FinOps领域的一个新方向,成本可视化。能让你看到每个部门集群的利用率,以及和账单的关联关系。这个视图从财务人员和管理者角度来讲都是非常需要的。每个团队从费用角度和使用率角度来看到底是什么情况,再结合费用的趋势分析,对于IT和财务提出有效的成本优化策略非常有帮助。
容量成本优化,在云原生领域有非常多的技术,比如弹性的能力,之前有一个说法,云最重要的一个特点就是弹性,各种各样的弹性,比如弹性伸缩、节点弹性、精细化调度等,这些大家都可以去探讨和思考如何去优化你的成本,前提是你有可视化的能力去看到这些成本。这也是我们今年很多企业交流非常热的话题,就是如何去完成成本的可视化和优化。
云原生核心技术
容器化+微服务=好搭档
现在使用的用户已经非常多了。但是很多企业今天在用微服务的时候会碰到很多问题,容器+微服务是非常好的实践。微服务提供了很多价值,但是它也带来了复杂性,包括链路的复杂性、运维的复杂性、出了问题之后如何快速定位等等一系列的复杂性。
容器从设计之初就是为了跑在线微服务业务而设计的,所以它里面不管是Service的定义,还是高可用能力、调度能力、弹性能力其实都和微服务是一个非常好的搭档。最初K8s兴起的时候,第一波业务类型就是微服务,微服务体系围绕K8s平台,它需要一系列的配套能力。
微服务不是免费的午餐,你用了它,得到业务收益之外,也要为它做很多额外的事情,比如服务、注册、发现和配置中心高可用、服务治理能力,如何保障线下流量的可控,还有网关层的设计、日志监控等,这一系列的东西都是当企业决定把它的微服务跑在容器上时需要去考虑的问题,其实今天在阿里云是有一个完整体系的。大家可以思考一下,今天你在容器上跑微服务的时候哪些是已经考虑并且做到的,哪些是需要加强的。
All on Serverless
最后一个和大家分享的趋势是Serverless。使用Serverless的企业数增速还是非常快的,今天很多人把Serverless等同于函数技术,其实这不完全对,今天的Serverless其实是一种架构理念,不是代表一个产品。
如果我们细化来看,Serverless有多种形态,它有面对函数的Serverless,就大家最常见的,我写一段函数代码就可以跑了。还有一个是面向应用的,有非常多的企业不能接受全新的编程模型,希望已有的应用也能以Serverless的形态运行起来,享受serverless带来的技术红利。
今天除了面向函数的Serverless,还有面向应用、有面向K8s编排、面向容器实例的Serverless,越来越多的企业会选择不同的Serverless类型去做业务,这块大家可以去思考一下,是不是有些业务可以考虑用Serverless去做,带来的好处是弹性成本节约、开发和运维关注点分离,让开发人员只关注开发,底下所有的东西都是一种无服务器的架构帮用户解决掉。
云原生产品家族
最后这张图包含了阿里云云原生产品家族,今天这个场聚焦的是其中几块,一个是容器服务,是整个云原生的底座。还有一块是云原生的应用架构,涵盖了微服务架构,基于消息的异构调用、事件驱动架构、Serverless架构等。最后还有一块是云原生应用的运维,当你的应用架构和系统架构变成云原生之后,它的可观测性、高可用也需要一些对应的能力,包括我们的压测能力,高可用能力等。
最全面的云原生开源贡献
阿里在开源这块的贡献也是非常丰富的,相信在座大部分人都用过我们的开源产品,像Nacos、Spring cloud alibaba、Seata、Sentinel等等都是大家了解的,这些所有的开源都是来自于我们云原生部门。
我就先介绍到这,后面还会有更详细的介绍。谢谢大家!