自己构建和管理基础设施可以让拥有更多的控制权,但是,把一切都置于掌控之中,也可能会占用其他领域的创新资源。FiveStars是一家面向小型企业提供营销平台的公司,该公司首席技术官Matt Doka不喜欢这种权衡取舍,他竭尽全力把一切工作都外包出去。
这说明他并不想拥有属于自己的服务器,但最显而易见的是他对数据工程的态度,他实施自动化项目、把大部分日常维护工作外包转而将内部资源重点集中在数据分析上已经有五年时间了。
FiveStars为小型企业提供在线会员卡服务,相当于“买九送一”邮票卡的数字版——他们可以将其关联到客户的电话号码和支付卡。全球超过10000家小企业在使用FiveStars的服务,据Doka估计,约有7000万的美国人选择FiveStars来管理忠诚度计划。最近,FiveStars开始涉足支付处理领域,大约20%的客户选择了FiveStars进行支付处理,与此同时,FiveStars也提供符合PCI标准的支付终端。
记录下所有这些交互操作会产生大量的数据,但这还不是全部。FiveStars将遥测系统内置到终端中,定期报告连接状态、电池电量和应用性能等信息,而以前客户使用传统终端只能在出现问题的时候自己打电话寻求帮助。
他说:“我们大部分的负载甚至不是来自交易、积分或者是信用卡本身,大量的设备遥测数据可以确保当有人想要付款或者赚取一些积分时,能获得一流的体验。”
要从数据中弄清楚这一点,就需要进行大量的是数据分析,但是Doka带领的10人数据团队却没有那么多精力,因为仅仅维护他们的数据基础设施就挤占了他们的全部时间。
当时,这支数据团队开始打造FiveStars数据基础设施的第一个版本,是从业务的销售端和营销端开始,而不是从IT开始的。Doka说,那次事故说明,虽然他们是真正地了解数据处理的方式,但他们几乎没有任何基础设施管理方面的经验。
当Doka接管这个团队的时候,他发现他们的一切都是手写的:服务器自动化代码、数据库查询、分析,一切。“他们甚至手写了bash脚本!要知道,10年前,系统就可以抽象出bash脚本了。”
这个系统很脆弱,高度手动化,基于大量的陈旧知识。最终结果就是,数据分析师不得不把大部分时间花在了维持系统运转上。“他们努力把新的数据洞察力转化为分析。”
他说,早在2019年,大家解决此类问题的方法就是使用Apache Airflow,这个开源平台用于管理使用Python编写和控制的数据工程工作流。Apache Airflow最初是在AirBnB开发出来的,后来被用于完美地执行Doka团队仍在手工完成的各种事情。
Doka选择了Airflow的托管版本来取代FiveStars自主开发的资源密集型系统。他说:“我想摆脱托管我们自己基础设施的业务,因为他们是数据分析师甚至是数据工程师,而不是经验丰富的SRE,这并不能很好地利用我们的时间。”
采用Airflow意味着Doka可以不再担心服务器之外的其他事情。他说:“我们在标准化和运行基础的方面有了巨大的改善,只需要延续我们正在打造的或者重塑的所有最佳实践就行了。”
但是,他也感叹道,“Airflow的实际工作方式完全取决于开发团队,所以你仍然可能会花费大量的思维周期来构建每个新项目,”他特别提到,你必须建立自己的文档最佳实践。
因此,在开始迁移到Airflow不到一年之后,Doka认为自己应该去寻找更好的方案来帮助他实现更多数据工程流程的自动化,并对一些占用大量时间却不太重要的业务决策实施自动化。
他广撒网,但最后发现很多工具只能解决一部分的问题。”
“例如,DBT只专注于如何更改单个Snowflake实例中的数据,它在这方面做得非常好,但是你要如何把所有来源的数据都导入Snowflake?有一些平台可以以标准化的方式抽象出所有数据迁移,比如Fivetran,但并没有真正提供给你一种语言来进行处理。”
在评估了其他几个选项之后,Doka最终选择了Ascend.io。“我喜欢用一种标准方法来编写SQL查询或者是Python代码,并且这种方法可以生成谱系和拓扑,系统可以自动知道所有数据来自哪里;以及最终是如何对数据进行分析的。”
他说,这不仅避免了运行服务器带来的挑战,还有你工作方式方面的挑战。
“这为数据工程师和数据分析师减轻了大量精神上的负担,让他们能够完全专注于他们试图回答的问题和他们试图做的分析上。”
他说,这样分析师们不仅更容易专注于自己的工作,而且他们也更容易关注彼此的工作。
“所有这些文档都是按设计内置的,每个分析师无需考虑就可以留下清晰的路径,说明他们是如何实现现在这个结果的,所以如果有新人加入该项目,就更容易目前的状况。”
Ascend使用另一个Apache项目——Spark作为分析引擎,而且拥有他们自己的Python API PySpark。
Doka说,迁移来自Airflow的第一批核心用例只用了不到一个月的时间。“启动需要一个小时,连接Postgres和我们的一些数据源需要两分钟,速度真的非常快。”
工作流的复制就像是把底层SQL从Airflow拷贝到Ascend一样简单。“一旦我们让它以对等的方式工作,我们就可以关闭旧的工作流,将新的工作流输出连接器放到需要的位置。”
Ascend最有用的一点是可以快速更改运行代码,这样团队就可以实时开发和修复问题。“这样系统就可以知道工作流程中的哪些部分发生了变化,如果没有发生变化,它不会重新运行所有内容,这样你也不会浪费计算资源,这是一个非常好的加速方法。”
不过,有些事情仍然需要隔夜等待。“有一个上游服务,你只能在凌晨2点到凌晨5点之间下载,所以你要准备好代码并确保代码在准确的时间下载,这一点很令人感到痛苦,但这不一定是Ascend的问题。”
推动企业文化的转变
转向采用Ascend也没有导致任何大量的再培训工作或者是招聘需求。Doka说:“既然我们已经将所有内容都抽象化了,那么构建工作几乎为零。”现在有三个人在新系统上运行作业,大约六名分析师负责报告并从数据中生成洞察。
Doka说:“大部分基础设施工作都没有了,尽管仍然有一些ETL工作,一直都存在的转换和清理工作,但这部分现在都是以标准化的方式完成的。但是,有一件事需要时间来消化,那就是从Airflow使用的普通Python转变到Spark Python。这感觉和仅仅编写程序代码还是有所不同的。”这不是什么深奥的知识,只是FiveStars团队以前没有使用过、需要熟悉的东西。
在Doka的数据工程之旅中,一个反复出现的主题,就是寻找他可以停止自己构建、转而购买的新事物。
他说:“当你在内部构建、维护和运行基础设施的时候,你要拥有更高水平的控制和知识,但通常你需要为此牺牲大量的时间,而且在很多情况下,你并不具备开发基础设施的最佳专业知识。”
让他的团队相信“少做事”的好处并不容易。“我和团队一样都苦苦挣扎过,这始终是向任何更抽象的系统过渡过程中的一个环节。”
Doka说,他作为投资者或者顾问和很多家初创公司合作过,并且他总是会告诉那些有技术头脑的创始人:避免自己运行基础设施并选择一流的厂商帮助托管他们的东西,这么做不仅仅是为了节省时间。“和他们一起工作的时候,你还能学到更好的最佳实践。”在和内部团队打交道时,他向IT负责人也提出了同样的建议。“在担任CTO的11年里,我看到最一致的事情就是,出于某种原因人们倾向于‘自主构建’,我对此一直感到不解”。他认为,应该抵制这一点,否则最终你会把时间浪费在维护不属于核心业务的事情上。
好文章,需要你的鼓励
临近年底,苹果公布了2024年App Store热门应用和游戏榜单,Temu再次成为美国下载量最多的免费应用。
云基础设施市场现在已经非常庞大,很难再有大的变化。但是,因为人们可以轻松地关闭服务器、存储和网络——就像开启它们那样,预测全球云基础设施开支可能非常困难。