作者 | 杨丽
受访人 | 张鑫
雷锋网按:企业对技术路径的选择从来不存在唯一性。当下数字化势头强劲的浪潮下,云原生成为技术的流行方向,虚拟化、容器、微服务组合在一起,面向企业业务提供足够灵活的云服务,会成为下一个普世化的技术栈道。
由尝试容器部署开始,字节跳动的云原生实践在近些年走得越来越快。
2016年6月,字节跳动启用Kubernetes技术栈,开始对业务进行大规模容器化改造,2017、2018年进入阶段性上量阶段,到2018年这一年部署的容器单集群已经达到了上万个节点。
如今,字节跳动已经有超过95%的应用实现了云原生化,从最开始的面向容器部署,过渡到面向服务的阶段,不仅用上了容器编排工具,更是在这之上建立了比较完善的微服务治理体系。2020年,火山引擎作为字节跳动旗下的企业级技术服务平台,正式将云原生的能力开放了出来。
除了没有太多的历史包袱,让这家年轻的企业可以轻装上阵,无需关注替换带来的成本外,更多地还有对技术趋势的判断力和投入,很早就拥抱了云的方式。因而,字节跳动的很多业务一开始就根深蒂固长在了云上,在接下来设计新的业务系统时,也会充分考虑利用云的弹性能力。生于云、长于云,这成为企业可以借鉴的最直白、却又最具有普世化特征的云原生实践路子。
在与雷锋网的访谈中,火山引擎副总经理张鑫阐释了他对云原生容器技术的趋势判断、引入这项技术的面临的难点与挑战,以及字节跳动自身过去五年的云原生实践路径。
“从技术曲线上讲,虚拟化差不多经历了十年的发展历程,如今到了商业化的稳定期。同样,容器+K8s从2014年谷歌开源出来到如今,预计未来三年也会达到一个巅峰期。”
但当前Kubernetes因其涉及的维度广泛,包括微服务架构理念、网络、存储等各个层级,导致无论是产品服务商还是企业实践者,都在这个过程中存在不小的技术挑战。
张鑫作为火山引擎云原生应用服务的负责人,也是国内容器产业的早期研究和实践者。以下将呈现这次访谈的完整总结。
初识云原生的四个方向
尽管在技术战略层面,云原生被各大互联网企业列为主要发展方向,但云原生和容器是两个相关,却不能划等号的概念。
一开始,外界可能会比较具象、容易理解的是容器本身,是对资源、应用的一种标准化封装。但拥有容器化部署,可能只意味着企业有了云原生的基础设施,并不意味着实现了云原生应用。从容器到云原生的进化,还是会有比较大的差异。
从云原生核心技术角度判断,云原生进入成熟期应存在东南西北四个方向上的演化:
先看南向,面向新一代的云原生基础架构。基础设施即代码(IaC)作为最近一段时间的流行技术趋势,目的是为了让IT基础设施变得更加高效、敏捷,通过可配置的方式,将基础设施更快地进行部署,进一步提升整体架构的性能、敏捷性。国内云厂商也推出了很多类似的产品或技术方案。
再看东西向。有两个趋势:一是更多的应用、中间件,包括大数据平台、数据库、数仓、AI平台等新兴业务负载都可以实现云原生化,甚至是Serverless化;二是能够通过云原生更好地实现企业内数据孤岛的打通、系统的连接,包括API服务、API治理、API网关。
然后是北向。这个方向上涌现了一批面向敏捷开发的新兴产品,如低代码、无代码工具,还有面向开发测试场景,面向工业互联网等行业场景,以及面向业务场景的BPM等,能够基于云原生微服务技术,构建面向应用开发的aPaaS。
从技术曲线上讲,虚拟化差不多经历了十年的发展历程,如今到了商业化的稳定期。同样,容器(2013年Docker公司公布技术标准)+Kubernetes(2014年谷歌开源项目)到如今,预计未来三年也会达到一个巅峰期。从产业数字化发展的现状来看,现在各行各业都在如火如荼地进行建设,行业数字化在加速,理论上是一个非常好的窗口期。
中国信通院的一份云原生用户调查报告显示,容器化改造依旧是主流趋势,将容器技术投入核心业务生产的受访用户同比增长2.48%。调研机构Gartner公布的数据显示,到2022年,75%的全球企业将在生产中使用云原生的容器化应用。
但这中间同样存在巨大的鸿沟,也就是上述东西南北向的技术产品,如何能跟前端业务需求密切连接起来。这是需要包括供应商在内的企业,在未来三年快速去落地的事情。
最优先级任务
那么,火山引擎首先会在这四个层面落地哪些事情?
“我们更多在做的是南北向的事情。即向下修炼内功,向上为开发者提供服务。南向是我们认为最关键的内功,任何一个云上应用、系统,最终还是要回归到稳定性、可靠性等问题,这是我们一定要做且目前也做得非常好的事情。”张鑫指出。
首先,字节跳动业务自身就面临着如何在大规模数据量和业务量的情况下,仍然保持足够良好的性能的问题。字节跳动构建有一个非常庞大的数据中心,容纳了近百万台服务器。在云原生基础设施层面,包括将计算、网络、存储上如何更好地与容器技术结合上,团队已经做了很多技术创新。
其次,云原生应用最终还是要提供给开发者使用,如何让开发更快、更简单,这是团队追求的一个重要优先级。
但当前企业对容器的实践也可以具体拆分为三个阶段:
第一阶段,面向容器编排管理,用户直接跟容器Kubernetes打交道;
第二阶段,开始进一步提升,用户从面向容器变成了面向一个个服务,于是就有了各类微服务框架的治理,这时用户就不需要关注容器配置、管理等问题,而是要考虑整个业务架构如何拆分,应该有哪些微服务组件,不同组件之间如何互联互通等问题;
第三阶段,即Serverless阶段,这时用户无需关心整体业务架构如何设计,只需要关注最前端的业务逻辑如何能够快速表达,这也就要求厂商需要将业务背后的中台和后台相关组件进行提前预置。
值得一提的是,字节跳动本身存在一个中台的组织形态,它对内会支持很多的业务线进行构建,可以看到很多的应用或功能,其实是基于Serverless的方式进行构建的。
目前来看,多数企业仍处于面向容器、面向服务的第一二阶段,而在产品层面,字节跳动已经开始着力于向第三阶段发力。
一股新兴势力
站在客户层面,不同类型的客户对引入云原生容器服务是会比较明显的差异的。
其中,互联网行业成为云原生采用率占比最高的行业。首先,互联网企业对云原生的应用深度和广度都非常大,也愿意为高ROI技术买单。
尤其是头部的互联网企业,其资源能力极强,且业务形态非常复杂,往往会选择开源深度定制+自研的方式进行技术实践,原因在于其业务体量足够大,能够通过哪怕1%的性能提升而带来比较高的ROI。
相比之下,很多腰部的互联网企业可能很难为了提升1%的性能或成本,而投入大量的研发团队。字节跳动最近的一项调研也发现,将互联网行业客户群体进一步拆分,其中像在线游戏等垂直行业,其云原生的采用率占比已经超过80%。
对于传统行业而言,近些年来因其数字化转型的业务驱动影响,使得他们对新技术的拥抱越来越高。
如金融、零售电商、工业互联网、生信医疗、智慧政府等行业,因其数字业务创新的驱动,有了越来越多互联网相关业务。从团队最近一段时间的服务观察,这些行业对新技术的拥抱也越来越高。
举个例子,在生信医疗领域,随着蛋白质测序、基因分析等业务持续涌现,以及医疗基础数字化建设的推进,企业需要越来越多的算力,构建更加敏捷的应用系统。此外,生信医疗行业本身也在着力打造一个基础科研平台,以打通医院、高校在科研方面存在重复造轮子的数据孤岛问题。
企业需要追求新技术吗?
外界有言,谷歌早在2003年就已经对自身实现了容器化应用,而其后多年一直作为秘密武器秘而不宣。依靠这项技术,仅在运维成本方面每年就能节约一半的费用,这无疑大大提升了企业自身的竞争优势。
曾就职于这家企业的张鑫,目睹过谷歌每天20亿个容器计算集群在跑。
在他看来,对于企业而言,不会单纯将追求尝试新技术为目的,尝试新技术,仍然需要业务驱动。因此从业务角度进行划分的话,首先就要看企业是不是有足够多的敏态业务,然后基于此进一步衡量使用新技术进行改造的ROI。
容器技术在更多有状态应用场景中的延伸,导致IT基础层架构相应地也在持续优化,比如对存储、数据库的能力要求,对开发运维环境带来的复杂度问题,以及对大规模计算存在的短板。
从应用角度来看,无状态应用、有状态应用、稳态应用等等,不同应用进行云原生化的ROI、难易程度是有差异的。
首先,无状态的应用,最适合进行第一批云原生化的改造。
其次,有状态应用往往可能是集群化的应用,包括中间件、数据库、Elasticsearch等业务场景。想要解决这部分场景问题需要一定的技术壁垒,但一旦将有状态应用实现云原生化之后,其实会有比较好的回报。
容器环境下,有状态应用经常会遇到的一个问题是,如何做数据的持久化,这对企业存储的要求发生了改变,如选择何种存储系统,是否可以满足分布式存储性能?数据能否跟上层的应用编排结合起来?业务调度时,是否需要考虑数据的亲和性?
再往后,分布式存储本身还依赖于强大的网络体系,这就要求容器本身需要自带有相应的解决方案。如何基于RDMA做高性能传输,是否能直接在硬件层面,如基于智能网卡做硬件卸载……等等这些技术难点。
但换个角度看,这些问题也为很多云原生容器厂商提供了很大的空间。因为这些能力并不是在开源的技术体系内就能够解决,这也是火山引擎希望发力的领域。
第三类就是传统应用或稳态应用。
对于这类应用而言,首先迁移就会有一定的难度,它们可能是一些商业套装软件,可能跑在非x86架构上;其次,如果将这类应用构建完后,未必会产生很多的回报,可能不需要解决高弹性等性能问题,也不需要敏捷迭代,甚至都不建议花很多的精力和风险来换取回报。
云原生时代的新机遇
云原生,还将影响各家云厂商对于标准的理解和共识。
一是要形成标准。否则不同厂商之间都有一套封闭系统,彼此间将很难进行兼容,且厂商自身也很难做大,企业自身也会面临越来越多的技术孤岛。
其二,云原生会推动标准的形成。此前容器Docker之所以流行,是因为它定义了一套从应用打包、封装、运行的一套管理标准,Kubernetes也是建立了一套对容器如何进行编排的一套标准。虽然未来还会有越来越多的技术如Serverless、aPaaS、低代码等,但容器+Kubernetes其实已经解决了很多这些根本性的标准化问题。
“这个状态是比较乐观的。”张鑫最后指出。
据雷锋网观察,对开放理解的差异,因不同标准组织涉及的商业利益的平衡策略而不同。当下这个市场,竞争局面依然掌握在国际化云厂商的规模经济效益中,如何在技术层面有所突破?在赢家通吃的市场中,一起做开放标准,一起开发开源软件,以抵消市场领导者的优势地位或许才有出路。
(雷锋网)