CNCF案例研究:VSCO

栏目: 编程工具 · 发布时间: 5年前

内容简介:公司:VSCO地点:加州奥克兰

VSCO:移动应用如何通过云原生节省70%的EC2账单

CNCF案例研究:VSCO

公司:VSCO

地点:加州奥克兰

行业:照片移动应用程序

挑战

在2015年从Rackspace迁移到AWS之后,除了运行 PHP 单体应用外,VSCO开始构建Node.js和 Go 微服务。该团队使用 Docker 将微服务容器化,但“它们都是在每个服务专用的EC2实例的独立组中。”机器学习团队工程经理Melinda Lu说。社区团队高级软件工程师Naveen Gattu补充:“这产生了大量浪费的资源。我们开始寻找一种在AWS EC2实例中整合,并提高效率的方法。”

解决方法

团队开始探索编排系统,并在决定采用Kubernetes之前查看了包括Mesos和Swarm在内的几种解决方案。VSCO也在他们的云原生堆栈中使用gRPC和Envoy。

影响

在之前,部署需要“大量的手动调整,我们编写的内部脚本,以及由于我们不同的EC2实例,操作必须从始至终照顾整个事情。”高级软件工程师Brendan Ryan说。“我们并没有真正有条理进行测试的故事,可重复使用的容器或以标准化的方式构建。”现在有更快的上线流程。之前,首次部署的时间是两天的动手设置,现在是两个小时。通过持续集成、容器化和Kubernetes,速度显着提高。典型服务从代码完成到生产部署到基础设施的时间从一到两周减少到两到四个小时。Gattu补充:“在工时来说,这是一个人比较起在同时需要开发者和DevOps。”在生产中单个部署的时间减少了80%,部署的数量也增加了,从每年1200到每年3200。实际上也节省了成本:凭借Kubernetes,VSCO的EC2效率提高了2倍至20倍,具体取决于服务,使公司的EC2账单总体节省约70%。Ryan指出,该公司能够从管理一个大型单体应用程序到50多个微服务,使用“或多或少同等规模的开发团队。我们之所以能够做到这一点,是因为我们对 工具 的信任度更高和灵活性更高,因此我们不需要聘请DevOps工程师来调整每项服务。”随着Kubernetes、gRPC和Envoy到位,VSCO的中断时间减少了88%,这主要是由于消除了JSON模式错误和特定于服务的基础设施配置错误,以及加快修复停机的速度。

“看到我们的工程师通过结合大量的Kubernetes基元来提出创造性的解决方案,让我一直留下了非常深刻的印象。将Kubernetes构造作为服务暴露给我们的工程师,而不是暴露高阶构造对我们来说效果很好。它可以让你熟悉这项技术,并用它做更多有趣的事情。” - Melinda Lu,VSCO机器学习团队工程经理

作为移动摄影应用程序,VSCO于2011年诞生于云端。最初,“我们使用Rackspace并使用PHP单体应用程序与 MySQL 数据库通信,使用FTP部署,没有容器化,没有编排。”软件工程师Brendan Ryan说,“当时足够了。”

在VSCO于2015年迁至AWS并且其用户群超过3000万大关之后,该团队很快意识到现有设置将不够用。开发者开始构建一些Node和Go微服务,团队尝试用Docker进行容器化。但是“它们都是在每个服务专用的EC2实例的不同组中。”机器学习团队工程经理Melinda Lu说。社区团队高级软件工程师Naveen Gattu补充说:“这产生了大量浪费的资源。我们开始寻找一种在EC2实例中整合并提高效率的方法。”

通过一个包括易用性和实现、支持级别以及是否是开源的清单,团队在决定使用Kubernetes之前评估了一些调度解决方案,包括Mesos和Swarm。“Kubernetes似乎拥有最强大的开源社区。”Lu说。此外,“我们已经开始标准化大量的Google堆栈,Go作为编写语言,gRPC用于我们在数据中心内部服务之间的几乎所有通信。所以我们似乎很自然地选择了Kubernetes。”

“Kubernetes似乎拥有最强大的开源社区,而且,我们已经开始标准化很多Google堆栈,Go作为编写语言,gRPC用于我们在数据中心内部服务之间的几乎所有通信。所以我们似乎很自然地选择了Kubernetes。” - Melinda Lu,VSCO机器学习团队工程经理

当时,生态系统中很少有托管的Kubernetes产品和较少的工具,因此团队建立了自己的集群,并为其特定的部署需求构建了一些自定义组件,例如自动入口控制器和灰度部署的政策构造。“我们已经开始拆除单体了,所以我们一个接一个地搬东西,从相当小的低风险服务开始。”Lu说。“每一项新服务都部署在那里。”第一项服务于2016年底迁移,一年后,整个堆栈的80%在Kubernetes上跑,包括其余的单体。

带来的影响很大。在过去,部署需要“大量的手动调整,我们编写的内部脚本,以及由于我们不同的EC2实例,操作必须从始至终照顾整个事情。”Ryan说。“我们并没有真正有条理进行测试的故事,可重复使用的容器或以标准化的方式构建。”现在有更快的上线流程。之前,首次部署的时间是两天的动手设置时间,现在是两个小时。

通过持续集成、容器化和Kubernetes,速度显着提高。典型服务从代码完成到生产部署到基础设施的时间从一到两周减少到两到四个小时。另外,Gattu说,“在工时来说,这是一个人比较起在同时需要开发者和DevOps。”在生产中单个部署的时间减少了80%,部署的数量也增加了,从每年1200到每年3200。

“看到我们的工程师通过结合大量的Kubernetes基元来提出创造性的解决方案,让我一直留下了非常深刻的印象。将Kubernetes构造作为服务暴露给我们的工程师,而不是暴露高阶构造对我们来说效果很好。它可以让你熟悉这项技术,并用它做更多有趣的事情。” - Melinda Lu,VSCO机器学习团队工程经理

实际上也节省了成本:凭借Kubernetes,VSCO的EC2效率提高了2倍至20倍,具体取决于服务,使公司的EC2账单总体节省约70%。

Ryan指出,该公司能够从管理一个大型单体应用程序到50多个微服务,使用“或多或少同等规模的开发团队。我们之所以能够做到这一点,是因为我们能够增加对工具的信任,并且当系统存在压力点时更加灵活。你可以增加服务的CPU内存需求,而无需启动和拆除实例,阅读AWS页面只是为了熟悉许多行话,这对于我们规模的公司而言并不适合。”

Envoy和gRPC也对VSCO产生了积极影响。“我们从开箱即用的gRPC中获得了许多好处:跨多种语言输入安全性、使用gRPC IDL轻松定义服务、内置架构如拦截器,以及通过HTTP/1.1和JSON的性能改进。”Lu说。

VSCO是Envoy的首批用户之一,在它开源五天后将其投入生产。“我们希望通过我们的边缘负载平衡器直接向移动客户端提供gRPC和HTTP/2,而Envoy是我们唯一合理的解决方案。”Lu说。“在所有服务中默认发送一致且详细的统计数据的能力,使得仪表板的可观察性和标准化变得更加容易。”Envoy内置的指标也“极大地帮助了调试”,DevOps工程师Ryan Nguyen说。

“因为现在有一个支持Kubernetes的组织,这会增强信心吗?答案是响亮的。” - Naveen Gattu,VSCO社区团队高级软件工程师

随着Kubernetes、gRPC和Envoy的到位,VSCO的中断时间减少了88%,这主要是由于消除了JSON模式错误和特定于服务的基础架构配置错误,以及加快修复停机的速度。

鉴于其使用CNCF项目的成功,VSCO开始尝试其,包括CNI和Prometheus。“拥有一个大型组织支持这些技术,我们更有信心尝试这个软件并部署到生产中。”Nguyen说。

该团队为gRPC和Envoy做出了贡献,并希望在CNCF社区中更加活跃。“看到我们的工程师通过结合大量的Kubernetes基元来提出创造性的解决方案,让我一直留下了非常深刻的印象。”Lu说。“将Kubernetes构造作为服务暴露给我们的工程师,而不是暴露高阶构造对我们来说效果很好。它可以让你熟悉这项技术,并用它做更多有趣的事情。”

KubeCon + CloudNativeCon和Open Source Summit大会日期:

  • 会议日程通告日期:2019 年 4 月 10 日
  • 会议活动举办日期:2019 年 6 月 24 至 26 日

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

编程人生(上卷)

编程人生(上卷)

[美] Peter Seibel / 图灵社区 / 人民邮电出版社 / 2014-12 / 39.00元

这是一本访谈笔录,记录了当今最具个人魅力的15 位软件先驱的编程生涯。包括Donald Knuth、Jamie Zawinski、Joshua Bloch、Ken Thompson等在内的业界传奇人物,为我们讲述了他们是怎么学习编程的,在编程过程中发现了什么以及他们对未来的看法,并对诸如应该如何设计软件等长久以来一直困扰很多程序员的问题谈了自己的观点。中文版分为上下卷,上卷介绍8位大师。一起来看看 《编程人生(上卷)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换