Company Bose Corporation Location Framingham, Massachusetts Industry Consumer Electronics

挑战

作为一家以高品质音频设备闻名的公司,[Bose](https://www.bose.com/en_us/index.html) 已经提供了超过五年的联网产品,随着这一需求的增长,基础设施不得不改变以支持它。 “我们需要为开发者提供一种机制,能够快速原型化并部署服务一直到生产环境”,首席云工程师 Josh West 说道。 2016年,公司决定开始从头构建一个平台。其主要目标是:“要领先于各个产品组一到两步,这样我们就永远不会匆忙追赶他们的规模”, 云架构经理 Dylan O'Mahony 说道。

解决方案

从一开始,团队就知道他们想要一个微服务架构。在评估并原型化了几种编排解决方案后, 团队决定为其在 AWS 上运行的规模化 IoT 平台即服务(Platform-as-a-Service)采用 [Kubernetes](https://kubernetes.io/)。该平台还集成了 Prometheus 监控,并于2017年投入生产, 一开始就服务于超过300万的联网产品。自那时以来,Bose 已经采用了多项其他 CNCF 技术,包括 [Fluentd](https://www.fluentd.org/)、[CoreDNS](https://coredns.io/)、[Jaeger](https://www.jaegertracing.io/) 和 [OpenTracing](https://opentracing.io/)。

影响

随着大约 100 名工程师的加入,该平台现在每年支持跨数十个微服务的 30,000 次非生产部署。 2018 年,有超过 1250 次生产部署。仅一个生产集群就包含 1,800 个命名空间和 340 个工作节点。 “我们有一个全新的服务,从概念、编码、部署一直到生产,包括强化、安全测试等,整个过程不到两个半星期”,O'Mahony 说道。

一家以高品质音频设备闻名的公司,[Bose](https://www.bose.com/en_us/index.html) 已经提供了超过五年的联网产品,随着这一需求的增长,基础设施不得不改变以支持它。

“我们需要为开发者提供一种机制,能够快速原型化并部署服务一直到生产环境”,首席云工程师 Josh West 说道, “我们希望提供许多云能力来支持我们的音频设备和体验。”

2016年,公司决定开始从头构建一个物联网平台。其主要目标是:“要领先于各个产品组一到两步, 这样我们就永远不会匆忙追赶他们的规模”,云架构经理 Dylan O'Mahony 说道, “如果他们发布了一款新的联网产品,我们希望已经远远领先于能够处理他们可能带来的任何规模。”

从一开始,团队就知道他们想要一个微服务架构和平台即服务。在评估并原型化了包括 Mesos 和 Docker Swarm 在内的编排解决方案后,团队决定为其运行在 AWS 上的平台采用 [Kubernetes](https://kubernetes.io/)。 当时 Kubernetes 仍处于1.5版本,但该技术已经能够满足团队当前和未来大部分的需求。对于 West 来说, 这意味着存储和网络得到了处理。O'Mahony 强调了 Kubernetes 的可移植性,以防 Bose 决定采用多云策略。

“Bose 是一家着眼于长远的公司,”West 说道, “采用一个快速的现成商业解决方案可能在当时适用,但它无法支持我们向前发展, 而这是我们从 Kubernetes 和 CNCF 得到的。”

团队花费时间选择工具,以使开发者的体验更加轻松。“我们的开发者与由我们的运维团队提供的工具进行交互, 而运维团队在 Kubernetes 上运行他们所有的工具”,O'Mahony 说道,“我们尽量避免将直接的 Kubernetes 访问作为唯一途径。实际上,理想情况下,我们的开发者甚至不需要知道他们在 Kubernetes 上运行。”

该平台从一开始就集成了 [Prometheus](https://prometheus.io/) 监控,并于2017年通过后门方式进入生产环境, 一开始就服务于超过300万的联网产品。“即使我们为设计这个平台的音箱和产品离正式发布还有一段时间, 但我们确实已经在市场上有一些联网音箱”,O'Mahony 说道,“我们基本上开始将这些音箱的某些功能及其配套应用指向这个平台。”

如今,仅 Bose 的一个生产集群就包含 1800 个命名空间/独立服务和 340 个节点。 随着现在约有 100 名工程师加入,该平台基础设施现在每年支持跨数十个微服务的 30,000 次非生产部署。2018 年,进行了超过 1250 次生产部署。与 Bose 之前支持远少次数的部署和服务的部署流程相比, 这是一个惊人的改进。

“我们有一个全新的服务,从概念、编码、部署一直到生产,包括强化、安全测试等,在不到两个半周的时间内完成部署”, O'Mahony 说道。“每个人都思考如何实现自动化,优化流程,尽可能快速地完成任务。当你退后一步, 思考这对于一家拥有50多年历史的音箱公司来说意味着什么时,这真的非常不可思议, 我认为我们使用的工具和建立的基础是其中非常重要的一部分。”

许多这样的技术,如 [Fluentd](https://www.fluentd.org/)、[CoreDNS](https://coredns.io/)、 [Jaeger](https://www.jaegertracing.io/) 和 [OpenTracing](https://opentracing.io/), 均来自 [CNCF 全景图](https://landscape.cncf.io/),West 和 O'Mahony 在 Bose 的云原生旅程中一直依赖于此。 “CNCF 全景图简明地解释了从存储到云提供商再到自动化等各个不同领域正在发生的事情”,West 说道, “这是我们构建云基础设施的购物车。我们可以从不同的过道中进行选择。”

他补充道,“如果不是因为 Kubernetes 和其他 CNCF 项目的免费开源软件及其强大的社区支持, 我们永远不会达到这样的规模,甚至无法按计划推出。”

转向云原生的另一个好处是:“我们甚至吸引了更多的人才加入 Bose,因为我们深入参与到 [CNCF 全景图](http://careers.bose.com)中”,West 说道(是的,他们在招聘), “这使得许多人能够做许多伟大的事情,真正将 Bose 带入了云的未来。”

在即将到来的一年里,团队希望在服务网格和无服务器方面进行工作,并在全球范围内扩展。 “通过多区域部署来降低延迟将是我们的一个重点”,O'Mahony 说道,“为了确保我们在日本、 澳大利亚及其他地区的客户有良好的体验,我们希望在更接近他们的地点拥有存在点。 这在 Bose 是前所未有的。”

这不会阻止他们,因为团队总是追求宏伟的目标。“我们希望达到数十亿的联网产品” ,West 说道, “我们正在进行很多工作,以支持 Bose 更多的业务部门,而不仅仅是目前的消费电子部门。 正是由于云原生领域的工具和功能,我们才能够为所有试图创造一些非常棒的体验的开发者和部门提供如此出色的云平台。”

事实上,鉴于平台已经支持的规模,O'Mahony 认为,“在这种情况下,不做 Kubernetes 而选择其他任何东西,我认为都是愚蠢的。”