VSCO:移动应用如何经过云原生节省70%的EC2帐单linux
公司: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大会日期:
KubeCon + CloudNativeCon和Open Source Summit赞助方案
KubeCon + CloudNativeCon和Open Source Summit多元化奖学金现正接受申请
KubeCon + CloudNativeCon和Open Source Summit即将首次合体落地中国