美国西部时间 5 月 2 日下午 7 点,Twitter 公司在旧金山总部举行了一次技术发布会兼 Meetup。会上,Twitter 计算平台(Twitter Computing Platform)产品与技术负责人 David McLaughlin 正式宣布,Twitter 的基础而设施将从 Mesos 全面转向 Kubernetes。html
Mesos项目发布因而2009年,而Twitter公司则是 Mesos 项目的早期支持者和使用者之一。做为世界上最成功的社交媒体巨头之一,Twitter 公司以其庞大的生产集群规模(万级别节点)而备受关注。在 2011 年,Twitter 公司开始在Mesos 项目的基础上开发了 Aurora 项 以便同时管理其内部的在线和离线业务,逐步成为 Mesos 社区的代言人。git
但是,在持续投入 Mesos 项目近 10 年以后,为何如今的 Twitter 公司又会忽然宣布全面转向 Kubernetes 体系呢?在这个使人瞩目的决定背后, 又是什么样的架构和设计可以支撑 Twitter 的基础设施来一次 360 度的“华丽转身”呢?github
Twitter 公司创始于 2006 年。时至今日,全世界天天都有至少 5 亿条推文产生。在过去十余年飞速成长和海量数据的挑战下,Twitter 的基础设施架构的演进过程,一直以来都是全世界技术公司眼中标杆案例。这其中,像 Mesos 这样优秀的老牌调度框架、 以及像 Aurora 这样启发自 Google Borg 配置管理的编排引擎,可谓功不可没。apache
事实上,在互联网级别的技术场景下,依托顶级工程师和成熟技术自建基础设施,一直以来都是一线非云互联网厂商的架构首选。也正是在这个过程当中,相对成熟而且工做层次较低的 Mesos 项目,收获到了大量的规模级生产环境部署案例。设计模式
不过,随着云计算的普及和 Kubernetes 这样以“云”为核心的容器化基础设施项目的迅速崛起,这种传统的互联网基础技术架构选型方法,正在逐步暴露出不少史无前例的问题。在本次发布会上, David 就以 Twitter 公司当前面临的挑战为例,对这些问题做出了简明扼要的总结:架构
做为不断在快速发展和迭代的互联网公司,高压力和快节奏背景下的企业每每无暇顾及基础设施架构的标准化与兼容性问题。这一样也是 Twitter 公司面临的主要问题之一。因此,在此次转型过程中,“Kubernetes Native”则成为了一个被反复强调的关键词。在发布会上,Twitter 公司公布了选择 Kubernetes Native 方向的诸多评估依据。框架
最终,Twitter 公司用一句话总结了此次评估的结果:运维
“咱们认为,使用 Kubernetes 项目做为 Twitter 公司基础设施向前演进的核心依赖,将会是一个正确的选择”。性能
而在这条演进路径上,Twitter 也公布了多项具体的技术举措,好比:学习
David 表示:“Twitter 公司基础设施的巨大规模一直不是一个秘密,但至少在今天,规模再也不是咱们的首要担忧,咱们能看到像阿里巴巴这样的社区领导者正在将更大规模的 K8s 集群推向了生产环境”。
David McLaughlin 宣布整个迁移计划将从如今开始一直持续到 2020 年。届时,整个 Twitter 的技术栈都会运行在以 Kubernetes 为基础的容器化基础设施之上,而且呈现“内部 K8s 集群 + 公有云 K8s 服务”的多集群组合形态。
David 最后再对 Twitter 的将来进行总结时强调:在 2020 年,Twitter 本身的软件栈会以“一部分运行在自有 K8s 集群,另外一部分运行在 公共云上”的多集群形态进行开发和交付。显然,在思考“如何经过云来让自身的基础设施能力价值最大化,而后让公司专一于更具价值的核心业务”这件事情上,Twitter 已经获得了一个相对清晰而富有远见的答案。更重要的是,这个选择,极可能会使公司与于得以拥抱 Kubernetes 的 Twitter 工程师们实现真正意义上的双赢。
不难看到,Twitter 公司此次走向 Kubernetes Native背后的技术本质,实际上是在最大程度的利用 Kubernetes 项目自己的核心概念与可扩展能力取得规模化定制性需求与社区标准之间的平衡。
这一样也是阿里巴巴正在社区倡导的一条关键途径。从 2018 年开始,阿里巴巴联合了 Google, Facebook,Twitter,LinkedIn,Uber,Netflix,Pinterest 等一大批顶级互联网公司,在美国硅谷开展起了月度 Web-Scale Meetup,以分享自身实际落地实践的方式,为更多互联网场景中的社区“观望者”树立信心。本次发布会上,Twitter 公司也邀请了来自阿里云容器平台团队的工程师李响、张磊、何剑等做为专题演讲嘉宾。同时应邀出席发布会的嘉宾还有 Google 公司 Kubernetes 团队工程技术经理 Jago Macleod 。
发布会上,阿里云容器平台团队也透露了下个月即将开源的、其内部锤炼已久的Kubernetes 高级做业管理集合(Kubernetes Workloads Advanced):Kruise 项目。Kruise 会充分利用 Kubernetes 的“声明式 API” 和“控制器模型”,为用户提供互联网场景下“赖以生存”的容器化应用“原地升级”能力,以及更加精细化的业务发布策略。Twitter、Pinterest 以及 Netflix 等世界级团队,都会加入到这个创新性的“云原生做业管理”项目的合做当中。
除此以外,Kubernetes 自己在规模化与性能提高上的不断演进,也是可以让 Twitter 公司最终从“观望者”变成“实践者”的另外一个技术因素。对此,Google Kubernetes 项目工程技术经理 Jago Macleod 在演讲中专门介绍了 Google 公司与阿里巴巴在这个领域上正在进行的攻关与合做。在最近的一次尝试中,双方的工程师正在一块儿为 K8s 里海量的 WATCH 操做添加“书签(Bookmark)”,这将使得这些 WATCH 操做的创建者在重启以后只须要对“书签”以外的少数历史变化进行追溯。在特定状况下,K8s APIServer 的性能会被提升 40 倍以上。
除了技术和架构演进上的考量以外,此次Twitter 公司向 Kubernetes 的“华丽转身”,还有一个相当重要的非技术因素。
Twitter 公司的快速成长,催生出了其标杆式的基础软件团队,但也反映出了一个不得不引发重视的问题:随着互联网业务的快速发展,公司的基础软件团队很快就开始超过它应有的规模边界,而相应的投入产出比却停滞不前。
因此,正如 David 在一开始提到的那样,过去互联网企业中“自研(In-house)”为主的基础软件开发和架构思路,正在伴随着云计算和云原生理念的普及发生微妙的变化。凭借像 Kubernetes 这样的平台级项目标准,互联网公司已经可以以较小的代价将自身的基础设施向云迁移。更重要的是,因为 Kubernetes 这个标准层的存在,这种“迁移”自己并不会像 Netflix 与 AWS 那样造成根深蒂固的厂商锁定关系,反而会在保留大部分“自研”好处的同时完全发挥出“云”自己的价值和多集群管理的能力。这种变革带来的优点,会在一个互联网公司里的 “AWS 工程师”都变成“K8s 工程师”以后变得尤其凸显。
不难看到,Kubernetes 项目正在以应用为中心,连通“云”、“应用开发者”与“基础软件团队”。这种“高速公路”般的沟通、链接与交付能力,也正是像 Twitter 这样快速迭代的互联网公司思考本身基础设施架构将来演进方向的重要参考。而这种转变,也使得 Twitter 这样一个业务迅速增加的商业组织始终维持一个数十人的基础软件团队成为了现实。
从最先Mesos“代言人”到现在的全面转向“Kubernetes Native”,Twitter的举动再一次佐证了‘Kuberentes已经成为容器编排事实标准’这一断言。更为重要的是,Twitter此次全面拥抱云原生,也有望可以为业界大规模生产级云原生技术落地的提供一个经典学习范本。
阿里巴巴从去年开始在云原生生态中投入了大量技术力量,正在逐步成为Facebook,Twitter,LinkedIn,Uber,Netflix,Pinterest等众多世界级互联网公司眼中规模化云原生技术落地的一位重要引领者。而伴随着云计算的进一步普及,传统的互联网基础技术架构暴露出不少史无前例的问题,以及像Kubernetes这样以“云”为核心的容器化基础设施项目的迅速崛起,都在促使愈来愈多的世界级企业开始思考如何借助“云”以及云原生技术来拥抱开源生态和开放的技术标准,准备迎接一个具有强劲的迭代能力的、面向“云”的数字将来。
做者:张磊 阿里云容器平台高级技术专家,Kubernetes 项目联合维护者。
原文连接
本文为云栖社区原创内容,未经容许不得转载。