Instacart公司成立于2012年7月,以一种全新的方式来解决一个老大难的问题:如何提升顾客购买的杂货的配送交付速度。这家初创型企业并没有斥资数百万现金用于基础设施的投资、与经销商关系的打造、仓库的建立、招聘大量配送卡车司机,而是通过利用现有资源与食品杂货店合作,及与个体的 “购物代理人(personal shoppers)”签订采购和交付订单合同。而当涉及到所需要的技术支持来支撑其YCombinator孵化业务时,Instacart公司也回避了采用投资自有基础设施和人员的方式,而是选择了托管服务,其首先选择了Heroku的服务,现在则采用亚马逊网络服务(AWS)。
该公司的客户群、订单量、零售合作伙伴的数量和配送产品分类目录都呈现了爆炸似增长;每个月Instacart新数据的增长都是TB级的。尽管如此,该公司工程师团队负责人尼克·埃尔瑟却一直没有组建一支基础架构团队(2015年5月,他首次租用了他的第一款基础设施),或建立新的数据中心。
当AWS在2013年11月宣布推出其PostgreSQL的关系型数据库服务(RDS)时,Instacart就成为了其首批签约客户之一。 “无需增加基础设施工程师,我们只是增加了RDS硬件。”埃尔瑟说。他的团队不必担心备份、调整大小规模、安全性、生产监控和报告 “所有那些初创型企业所普遍遭遇的难题都被搞定了。”埃尔瑟说。“亚马逊为我们提供了API来解决这些问题。”取而代之的是,该工程团队可以集中精力去解决企业自身的业务问题。
CIO.com的记者专门就这家一小时送达服务平台的基础设施需求采访了埃尔瑟。期间谈到了该公司是如何评估和权衡由Heroku托管转为选择 AWS的相关风险问题;以及在现如今这样一个瞬息万变的环境中管理生产数据库的难度问题;采用基础设施适时反应战略(just-in-time)的好处。
您作为Instacart公司工程师团队负责人的作用是什么?
埃尔瑟:我已经是我们公司的一名老员工了,也就是说,我已经在这家公司供职超过两年半的时间了。我是做全栈开发的,并在处理基础设施相关问题方面有经验,所以我自然而然地能够胜任今天的这一角色。我负责带领团队,并负责规划和执行我们企业的基础设施需求。
随着公司的发展壮大,您为什么决定从Heroku(建立和部署Web应用程序的平台即服务)转移到AWS RDS?
埃尔瑟:像很多初创公司一样,我们最初在Heroku推出我们的服务的。在彼时,这是令人难以置信的强大且非常有用的。而且,我们仍然针对很多更小的产品使用它。但在某一点,其已然没有我们所需要的那样强大了。
我们正在处理的是令人印象深刻的大规模增长,而这些增长不仅仅是来源于我们的客户群,同时还来源于我们企业的内部。我们雇用了这么多的工程师,每天推送上百个更新到我们的服务器。Instacart的工程师们所面临的其中一个巨大的挑战是管理规模惊人且品种繁杂的商品分类——这些都是来自数千家杂货店的需要被不断更新的商品库存信息。其结果是,我们需要对这些流程有更多的控制。同时,事实证明,管理生产数据库真的是相当困难。
一年多以前,我负责率领我们公司将相关托管工作负载转移到AWS,从那时起,我们已经利用了他们太多的技术,并将越来越多的栈迁移到他们的云。AWS通过控制管理我们的基础设施,以及更好更强大的管理我们的RDS数据库,给了我们更多的控制权。
当亚马逊推出针对PostgreSQL的RDS时,我们在第一时间成为了其首批客户。这是一个完全托管的,工业强度数据库解决方案,使我们能够很容易的随着我们自身业务的发展壮大而增长规模。
您能否谈谈关于这款基础设施所支持的预测分析吗?
埃尔瑟:随着后端的技术不断发展,使我们得以有了分配算法。我们所做的其中一件大事便是采用了Python和R语言library的机器学习。基本上,我们有大量的机器在EC2环境运行,以处理这些预测算法,决定将相关订单分配给哪位购物代理人,而这些决定的做出是随着城市的不同、以及每天时间点的不同而动态变化的。而这一切都需要归功于AWS的启用。
云基础设施的采用如何影响了您企业内部对于所需IT专业人士类型的需求?
埃尔瑟:具体而言,我们无需任何人专注于数据库管理,虽然我们也有了解这方面的人才。这的确改变了我们公司聘用人员的方式和聘请人员的类型。我们已经偏向于雇佣更多能够解决业务问题的通才,而不是集中于诸如数据存储方面的某一专业人才。实际上,对于我们来说,快速获取信息和优化我们的购物代理人及顾客的体验才是非常重要的。
从Heroku过渡到AWS的过程中的困难程度如何,您是怎么管理这其中的风险的呢?
埃尔瑟:在我们转移之前,我们做了广泛的测试。我们先将2个集群运行一段时间,以确保其正常运行。在此测试的基础上,我们没有了后顾之忧。
从Heroku转移到AWS的缺点是什么?
埃尔瑟:Heroku的是一款非常强大的平台,将复杂性隐藏在其表面之下。而这些复杂性直到您迁出之前,您都不会意识到。我们必须为诸如配置,扩展和部署编写替代方案。庆幸的是,有大量的开源解决方案使我们能够复制。而我们能够创建一款更加符合我们业务需求的定制化解决方案。
他们也有一支惊人的支持团队来解决我们可能在基础设施方面所遭遇到的很多问题。因此,我们没有再一直访问该团队以帮助我们解决问题。亚马逊也拥有一支支持团队,但其运作还处在一个较低的水平。所以最终,迁移到AWS给了我们一个更强大和灵活的解决方案,但没有Heroku所提供的安全的网络。
业务部门是否关心IT基础设施是如何配置的?他们看到的好处是什么?
埃尔瑟:首先,我们能够支持新的业务增长,能够在进军到一座新的城市或在我们现有的市场增长时实现快速,无缝地规模化扩展。我们已经在两年内将市场由一座城市扩展到17座城市,而购物代理人也由几百名增加到数千名。其次,该平台为我们提供了我们为客户提供良好的体验的稳定性。它总是能够保持正常运行,并做出快速反应,而且我们也没有安全性方面的问题。我们的首要任务一直是保证客户体验,以及确保基础设施的可靠和快速响应才是至关重要的。
在利用基础设施即服务方面,您有什么样的建议?
埃尔瑟:对我们来说,最大的一课是,我们没有管理我们的主要数据存储。这意味着我们可以将更多精力用在客户体验方面。在一个快速变化的环境中,我不能夸大管理生产数据库是多么的难。能够利用云所带来的力量是相当疯狂的强大。
第二课是及时进行基础设施决策的好处。每年真的没有必要进行大规模的架构大修。相反,您可以为未来两个月做容量规划,在提供服务级别协议的同时进行资源配置。我们所有的架构决策均是建立在提供卓越的客户体验基础之上的。