数据驱动 x 敏捷开发,字节是如何践行这两大技术理念的( 五 )


首先在最底层 , 是一套完整的云原生基础设施 。 通过统一的底层去提供新一代的高性能计算存储和网络的解决方案 , 这其实是保证业务稳定和敏捷的基石 。
在云原生基础之上是服务平台层 , 它要解决的是业务开发中的一些通用平台和服务能力的抽象 。 这里面包含了高性能的微服务框架、基于服务网格的微服务治理能力 , 以及Serverless、边缘计算平台的能力 。 服务平台构建就是为了让开发人员更敏捷、专注地开发业务逻辑 , 而能更少地考虑资源、平台、服务间通信和治理 。
在平台层之上是整个研发体系的构建 。 这一层我们是希望通过各种各样的工具、流程机制和组织 , 能够去帮字节跳动灵活地支撑全部业务线的快速开发和开发管理工作 。
这中间三层设施的两边是重要的云原生安全体系和SRE服务支撑体系 。
第一个是云原生安全的体系 。 那么相比传统的安全体系 , 它要做到不同层次的延伸 , 一个是左延 , 不仅关注运行时的安全 , 我们也需要和DevOps的流程结合在一起 , 去关注应用整个生命周期的安全 。 第二个就是下延 , 不仅只关注到容器的安全 , 还要关注到主机的安全 。
第二个就是SRE体系 , 它来支撑整个业务高速发展过程中的稳定性 。
因为时间有限 , 我挑了两个比较有意思的话题来进一步的分享 。 一个是微服务 , 一个是移动开发 。 一方面比较有代表性 , 另一方面这两者覆盖了大部分业务研发的场景 。
服务器端——微服务、服务治理与DevOps
数据驱动 x 敏捷开发,字节是如何践行这两大技术理念的
文章图片

首先来看微服务 。 我们可以用四个点来形容字节跳动微服务的现状:
规模庞大且增长迅速 。 刚才介绍过字节跳动现在的微服务数是8万 , 但在2018年 , 整个微服务数大概只有7000到8000 , 所以三年其实翻了近10倍 , 并且还在不断的增长 。 在这个过程中 , 我们自然遇到了非常多的挑战 。
在线微服务超过90%都运行在容器里 。 对于业务线 , 是看不到资源的 , 看到的只是PaaS、容器 。 这带来很多便利性 , 有利于新技术的核心功能推广 , 但同时也有很多挑战 , 尤其是调度复杂性这方面 。
技术体系以Golang语言为主 。 根据最新的调查统计 , 字节跳动内部Golang是主要语言 , 超过55%的服务都采用了Golang , 排名第二的语言是NodeJS , 然后是其他的语言 。
Service Mesh的全面落地和应用 。 字节跳动是国内最早在生产环节大规模使用Service Mesh的公司之一 。
大家可以发现整个字节跳动在微服务的使用上是非常快的 , 甚至可以说是比较激进的 。 这背后 , 是因为在字节跳动 , 速度和效率是我们研发要解决的Top1问题 。 每天新应用和新用户增长都非常快 , 研发必须要解决好产能问题 。 这也是我们激进地采取微服务架构的原因 。 但这么大的规模下 , 做这么快的迭代 , 自然会对稳定性、信任带来非常大的冲击 。
数据驱动 x 敏捷开发,字节是如何践行这两大技术理念的
文章图片

为了应对这些困难和矛盾 , 我们在端到端落地微服务架构时 , 针对性地做了各项优化:
首先是语言层面 ,Golang是主力使用的语言 , 因此在Golang层面做了很多框架层面的优化 , 比如RPC框架、HTTP框架 。 这些框架我们已经通过开源的方式回馈到社区——9月初 , 字节跳动开源CloudWeGo , 帮助更多开发者搭建云原生微服务架构 。
第二则是针对海量服务的治理 , 我们基于 ServiceMesh的概念构建了自己的服务网格体系 , 将服务治理的能力固化到字节内部平台上 , 一方面帮助我们多元多服务的兼容问题 , 另一方面通过Golang稳定的框架和以Mesh治理为基础的理念 , 我们实现了全局 流量的治理、单元化和体系化的整体建设 。

特别声明:本站内容均来自网友提供或互联网,仅供参考,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。