随着用户对边缘计算、安全合规、区域定制、用云模式等方面的需求不断增加,单一一朵云已经满足不了企业用户的现实诉求。在刚刚结束的 ArchSummit 全球架构师峰会 2023(深圳站)“多云和分布式业务架构实践”解决方案专场上,火山引擎云原生平台负责人沈健就围绕“海量算力下字节跳动的多云实践之路”为主题进行了分享,沈健基于字节跳动大规模云原生落地实践,分析了当前企业云管理难点、痛点,介绍企业从资源多云走向应用多云,获得更敏捷、更弹性、更灵活的全局应用治理能力的过程。
- 3.0x
- 2.5x
- 2.0x
- 1.5x
- 1.25x
- 1.0x
- 0.75x
- 0.5x
采访记者:InfoQ 资深编辑鲁冬雪
采访嘉宾:火山引擎云原生平台负责人沈健
嘉宾简介:2019 年加入字节跳动,曾先后就职于爱立信、EMC 、蚂蚁金服,主要从事泛基础设施软件相关的开发工作,在网络接入、多媒体子系统、大规模服务器应用公共组件、海量主机管理、云存储系统以及离在线混合部署等领域积累了丰富的实战经验。加入字节跳动后,先后领导了服务网格、智能运维、边缘计算、离在线主要存储以及泛 PaaS 等领域的产品研发工作,支撑了如头条、抖音等几十款应用的快速发展。
InfoQ:您觉得当前企业云架构的新发展趋势是怎么样的?关于“多云、混合云、私有云”都可以分享。
沈健:首先,企业的云架构必须紧密结合企业的业务需求和现有架构,不能仅仅从技术角度考虑。目前,企业云架构的核心重点在于长期的可演进性,为了满足企业的安全性、容灾性、合规性以及资产管理等需求,混合云架构已成为主流选择。
其次,混合云本身是一种多云架构的体现。在多云环境下,企业可以选择使用公有云或私有云的组合方式。从长远来看,混合云和多云仍将是未来的主流趋势。
InfoQ:您认为在新趋势的推动下,企业的云战略,包括底层逻辑发生了哪些变化?
沈健:企业的云战略需要和企业的业务发展需求和整体目标对齐。过去,企业上云主要解决资源问题,随着上云,企业开始使用云上的自动化工具和 PaaS 工具,以提高研发效率。然而,随着深度上云,企业逐渐采用云上经过验证的成熟模式,包括生产、管理和营销等。因此,企业云战略的底层逻辑从追求资源转变为追求效率,最终实现对企业整体生产经营数字化的能力提升。
随着越来越多企业上云,先行者已经走得更远,后来者更多是追随者。如果不追随,随着社会生态的变化,企业将脱离社会生态。因此,后来者的选择大多是追赶先行者的能力。由此看出,不同阶段对不同企业上云的底层逻辑也有所不同。
InfoQ:在企业的云架构中,在实现多云策略的落地过程中,企业主要面临着哪些挑战?大家是怎么应对这些挑战的?
沈健:企业多云面临着众多挑战,我在演讲中也提到了字节跳动在实施企业多云过程中遇到的一些技术挑战。从技术层面来看,企业多云实施过程中将面临许多基础设施兼容性方面的挑战。兼容性的挑战对于大多数企业来说并不容易克服。此外,还面临着业务架构方面的挑战,例如业务架构的容灾性和业务规划,这将对企业的多云战略产生一定影响。
从整体来看,许多企业自行解决这些问题存在一定困难,或者说在专业水平上有一定难度。因此,一般建议企业与 IT 服务商和云供应商合作解决这些挑战。在这个过程中,更多地要考虑云供应商的意愿度、服务能力、资质以及实践经验等综合因素。
InfoQ:在云战略的制定和执行过程中,企业应该如何平衡成本、效率、安全和灵活性这些因素?
沈健:首先,这个问题并不能一概而论。对于每家企业来说,上云的动机主要是出于其业务需求。如果企业的业务正处于较为盈利的阶段,那么企业的首要目标应该是追求效率,进一步扩大业务规模才是最有价值的。在这个过程中,需要同时考虑安全问题,因为一旦安全出现问题,可能会对企业的整个经营和生产造成较大的影响。
此外,如果企业的业务效果并不明显,或者面临各种挑战,那么企业可能需要更加关注成本,在考虑未来灵活性的同时兼顾成本问题。
InfoQ:在多云的环境下,云原生应用的部署与管理存在什么样的问题?企业的业务架构又因为这些问题的存在发生了怎样的改变?
沈健:在多云架构下,首要考虑的是业务规划问题,即确定是否需要实施跨多云业务或在不同云平台上部署不同业务的模式。这种决策模式将对业务架构,尤其是数据架构产生重大冲击和影响,尤其是涉及到多云容灾或业务跨云的情况。
对于单一业务跨多云的模式,我们需要更加关注业务子系统之间的相互依赖关系,以及多云层面上可能出现的延迟、容灾和爆炸半径等相关影响。这些因素将对整个生产经营活动的安全性产生重大影响,因此对于这部分架构,我们需要特别注意。
InfoQ:在大规模的生产环境下,企业应该如何确保云架构的稳定性、可靠性以及可扩展性?
沈健:稳定性一直是一个永恒的话题,只有将各个方面的工作都做好,才能确保整体的稳定性。从架构的角度来看,云原生架构是一种非常出色的架构,特别是微服务。因为它将复杂的问题逐步分解为一系列小问题,从而简化了问题,降低了出错的概率。
此外,由于云原生架构可以将问题解耦成一系列小问题进行破解,所以业务在单点层面遇到的扩展性问题,可以通过弹性的方式轻松解决。因此,云原生架构在可扩展性方面非常出色。
关于稳定性和可靠性,其最关键的是快速发现和解决问题的能力。目前基于 Kubernetes 的容器服务具有很强的自我恢复能力,并且具备快速更新的能力。从字节跳动内部的实践来看,我们每天进行 3 万多次的更新。一方面支持产品的快速迭代,另一方面在遇到问题时能够快速规避甚至回滚以解决问题。因此,即使在局部出现一些小问题,从整体角度来看,如果从外部感受,我们遇到的大规模稳定性问题非常少。
InfoQ:可以分享一些字节跳动在实施多云策略过程中的一些经验或者教训吗?字节又是如何应对这些挑战的?
沈健:一开始,字节采用了业务多云的方式,即将不同的业务部署在不同的云平台上。然而,这种方式带来了很多管理上的浪费和资源上的浪费。特别是对于一些重型服务,它们最初是基于物理机和主机的,这种基于主机的模式对主机具有很高的依赖性。因此,一旦进行迁移,由于底层基础设施的变化,换一种云的成本非常高,因此业务并没有强烈的动力去进行迁移。此外,在遇到资源紧张或容灾需求时,改造成本也非常高。因此,后来我们采用了全面的云原生化方法来解决这个问题,这是第一个方面的问题。
第二个方面是,在使用多云的过程中,最初对于一些核心服务或存储服务,它们对于容灾域的感知并不强。为了统一所有服务,我们在分布式云平台和联邦层面上实现了对容灾域的感知。这样,在部署和运维过程中,这些业务能够自然地感知底层可用区带来的变化,并且可以减少对应的影响范围。
InfoQ:在今天演讲中,您提到了字节跳动在云管理方面的挑战和解决方案,您能否跟大家进一步分享这些解决方案是如何帮助字节提高云管理效率的?
沈健:我刚才提到,推广所有基于物理机的业务时,规划变得非常困难。有时候业务也无法准确回答后续需要多少资源容量的问题。在整个技术链的过程中,涉及到多个方面,需要逐层推导。只要有一层出现错误,最终得到的结果可能就不准确。这是在资源规划方面存在的问题。对于推进日常运营活动也会带来很大的挑战。
此外,从运维者的角度来看,为了应对资源短缺或提高资源效率,他们需要进行各种平衡。例如,在一个集群中添加更多的机器,或将机器迁移至另一个集群。这种来回调整本身会导致运维工作量的浪费。同时,由于频繁的迁移和调整,还可能引发更多不必要的故障。字节跳动选择发展分布式云平台,实际上也是因为内部存在一些痛点的积累。
InfoQ:在多云环境中,关于云原生应用的部署和管理您是怎么看的?当前火山引擎有哪些新技术和工具可以帮助企业实现云原生应用的部署和管理?
沈健:从云原生应用的部署管理角度来看,不同业务可以采用独立的管理模式,火山引擎也提供相应的容器服务能力供客户使用。此外,企业想要进行多云对等部署时,通常会使用一些 DevOps 平台。火山引擎还提供类似于持续集成的能力,并且具有相对较高的开放性,可供客户选择。
对于我们内部的实践而言,考虑到多云的灵活性和业务部署前期的不可预测性,我们更倾向于推荐客户使用我们的云原生多云应用平台。该平台有很多的灵活性,能够轻松进行调整。对客户而言,它具有出色的灵活性、操作便捷性和后期运维的可靠性。
InfoQ:在分布式云的环境下,企业是如何优化自己的云原生应用的性能和资源利用率的?
沈健:性能和资源利用率是两个不同的问题。性能主要指应用的运行效率,包括应用本身的延迟和其所能承载的容量。较高的性能通常意味着更少的资源使用。对于云原生应用的性能,由于应用链路较长,我们通常建议用户使用全链路的追踪能力,例如应用性能监控(APM),以便更方便地定位瓶颈所在。对于单个应用,也可以使用一些性能分析工具来确定应用的瓶颈,并通过逐层治理的方式提高性能。
资源利用率则不仅仅依赖于单个应用的提升。一方面,它需要更高的部署密度。在我们内部的实践中,字节跳动的联邦集群模式(即开源的 KubeAdmiral 模式)可以提高约 10%的部署密度,减少碎片化,从而在一定程度上提高资源利用率。
此外,单个应用的在线服务器很难实现高资源利用率。因此,字节跳动采用了混合部署模式,即将 CPU 利用率高的应用与 CPU 利用率低的应用相结合,以实现资源自然分配的提升,这就是所说的混合部署模式。
InfoQ:您觉得在快速变化的业务需求和技术趋势之下,企业如何适应这些变化?为了持续保持竞争力,您觉得他们需要做哪些事情?
沈健:这个问题涉及到企业采用云原生架构的核心问题。首先,企业的竞争力来自于其对外部快速变化的响应能力。云原生架构能够快速响应外部快速变化的需求,因为它能够快速支持架构的更新和变化。
另外,对于复杂架构而言,企业需要拥有专业化的人才。特别是传统的单体应用,需要拥有非常专业化的人才。然而,招聘这样的人才对企业来说可能存在一定的难度。而一旦招聘到这些专业人才,如何快速将他们投入到相应的应用中,以支持企业快速的 IT 变化,也是一个启动成本的考量。
在字节跳动的发展过程中,我们积累了一些经验,即云原生化和服务网格化。通过使用各种开放的中间件技术,我们能够满足具备不同语言技能的员工的需求,使他们能够专注于企业的核心逻辑。这种方法既降低了企业的启动成本,又能够快速应对新的变化。这是字节跳动采用的一些方法。
InfoQ:展望未来,在多云分布式云发展的下一阶段,企业应该如何规划和设计自己的云架构,从而实现更高效、更灵活以及更安全的云服务?
沈健:对于企业而言,有两种选择。一种是采用可演进的架构,逐步将当前的架构调整为符合云的主流架构。另一种是在业务模式或应用系统发生重大变化时,直接使用新的架构来解决问题,采用一次性的迁移方式。这种方式可以降低企业的成本。大型企业通常会选择可演进的架构,因为他们可能有很多历史遗留问题需要解决。在这种情况下,他们对于 IT 咨询和服务提供商的专业水平要求较高。相关实践经验在这方面将起到指导作用。
InfoQ:火山引擎云原生下一步的主攻方向是什么?主要会解决用户的哪些问题?会有哪些创新?
沈健:有几个关键方向需要注意。首先,AI 智能化的发展越来越迅猛,成为未来的主流趋势。因此,在云原生化中,特别是在线 AI 应用的云原生化上,是一个重要的发展方向。其次,分布式云的资源变得越来越零散。如何让用户能够更好地、无感知地使用这种分布式云,并具备智能的调度能力,使其应用能够灵活地适应这一体系,对用户而言也具有很大吸引力。
此外,从云本身的发展角度来看,已经从虚拟机模式逐渐向云原生发展,而下一个阶段则是向更上层的 Serverless 化发展。对于一个可演进的架构来说,这也是我们目前关注的重点。在字节跳动内部,我们已经经历了这样一个可演进的架构,并在不断将其标准化,逐步向外部提供这样的能力。
评论