写点什么

大数据公司 LiveRamp 上云记(五):如何使用云原生技术重构本地系统

  • 2020-02-23
  • 本文字数:2802 字

    阅读完需:约 9 分钟

大数据公司LiveRamp上云记(五):如何使用云原生技术重构本地系统

接下来呢?

在之前的迁移文章中,我们问过自己:



最后也最令人兴奋的问题是,“接下来会发生什么?”,“我们该如何重新设计从而充分利用 GCP 平台的优势?”。

技术

虽然我们没有将现有的基础设施直接迁移到 GCP 上,最终做了不少改动,但我们在第一天还是使用了很多 GCP 的工具:


扩展:这很显然,但是能够在需要实例的时候添加它们而在不需要的时候关闭它们,这是一个能改变游戏规则的能力。我们最大的批处理图形构建程序在运行时需要大量资源,但其只占一半的运行时间。在本地环境下,这意味着我们必须为峰值容量提供物理机器,而在 GCP 中,我们可以在不需要机器的时候自动关闭它们:



Google Kubernetes Engine(GKE)+Google Container Registry(GCR):到目前为止,我们做的最大的重构就是消除了的本地 Chef 环境,转而支持 Kubernetes(通过 GKE),并在 GCR 中存储镜像。虽然这是一项庞大的工程,但花费的时间却是 100%物有所值。


云存储(GCS):我们正在用 GCS 完全取代 HDFS 环境。采用对象存储可以使我们更灵活地迭代计算基础设施,而且不会有数据丢失的风险。


BigTable:我们已经用 BigTable 替换了内部的键值数据存储。


CloudSQL:Liveramp 非常依赖 MySQL。除了使用数据库的常规原因(数据规范、状态协调)之外,我们内部还将数据库用于队列、统计仓库等等。这项工作分成了几十个数据库,其中许多数据库由应用程序团队拥有。通过将轻量级数据库转移到 CloudSQL 中,应用程序团队可以完全拥有 MySQL 实例,而不必成为数据库管理员;团队可以考虑数据库的模式,而不必担心数据的备份或复制。


BigQuery:尽管分析性查询不是 LiveRamp 所做计算的主体,但这些查询有一个重要的用途,即不需要通过工程师就可以将我们的日志数据暴露给商业智能分析师。


FileStore:在本地,NFS 是我们用来在虚拟机之间实现配置共享的粘合剂,也可以让支持工程师在将数据保存到 HDFS 之前进行阶段处理。FileStore 完全可以作为一个高性能 NFS 的替代品,并且不必由我们自己管理。

下一步如何?

短回答是:我们不知道,找到答案的时候我们会在这里更新, : )


稍微长一点的回答是:我们不知道,但是我们非常肯定它会涉及到更多令人兴奋的技术:


BigTable(第 2 次):我们使用 BigTable 来强化我们的像素服务器,但我们只是对可伸缩的实时查询存储做了一些浅尝辄止的工作。还有一种可能是用一个真正的实时管道来补充(甚至替换)我们的批处理管道。


DataFlow:LiveRamp 非常倚重 Hadoop。我们构建了很多复杂的工具来帮助处理每天数百万兆字节的数据,Hadoop 支持所有这些工具。但是,我们不想用同一把锤子来处理所有问题;如果能不费力地用 DataFlow 来替换我们自己的 ETL 工作流,我们会这样做的。


Cloud 函数,CloudRun:LiveRamp 运行了很多服务;其中大多数服务主要用来封装不同团队的数据库,提供配置逻辑或封装请求等。这些服务通常导致非常不稳定的负载,有时可能会处理数百个请求,有时一个也没有:



虽然 Kubernetes 自伸缩功能可以起到缓解作用,但云函数随负载伸缩的原生能力将完全消除这个问题。

云计算迁移通常是在技术权衡的背景下讨论的。云计算提供原生服务、更容易的区域复制、灾难复制等(当然是有代价的)。


但人们往往忽略的是,云迁移其实还是一个重新思考自己工程实践的机会。虽然我相信 LiveRamp 在这次迁移中已经完成了一项令人惊讶的技术成就,但更让我自豪的是,随着对内部环境限制的摆脱,团队也开始利用这个机会重新思考自己的责任。我们的工程团队已经做了三个重要的改变,我将在下面提到。

不要在共享的基础设施上进行构建

因为提供新的硬件需要几个月的时间,在本地为新的应用程序团队创建新的基础设施是不切实际的;因此,我们在应用程序团队之间共享基础设施。我们最敏感的共享服务有:


  • Hadoop 环境:YARN 和 HDFS 被所有应用程序团队共享。

  • 数据库:一些团队运行独立的数据库,但所有数据库都由基础设施团队管理。

  • Kubernetes:跨团队的应用程序将被部署到一个中央 Kubernetes 集群。

  • 虚拟机:虚拟机从中央资源池统一分配。


不幸的是,中央服务的便利性是以敏捷性为代价的。如果十几个应用程序团队使用相同的 Hadoop 环境,那么最终就演变成无法升级基础设施;每次更改都会破坏一些关键的东西。当不同的团队以不同的方式使用相同的基础设施时,即使简单的性能调整也很难实现。


同样,共享的基础设施也非常容易受到单个应用程序或团队的(通常是偶然的)滥用行为的影响。Kubernetes 可能会耗尽资源;NameNodes 可能会被 RPC 调用压垮。如果团队的变更会影响不相关团队编写的应用程序,那么团队的变更迭代就会变得很不情愿。


而在 GCP 上,我们只需要几分钟就可以为基础设施提供一个新的轻量级副本,团队不再需要自举一个公共服务池。这在很大程度上提高了信心和迭代速度。

团队负责自己的资源开支

当很多应用程序使用共享的服务是,这会很难准确地将成本划分到单个团队或应用程序。优化项目通常是由基础设施驱动的;只有当基础设施耗尽一组共享资源时,我们才会去主动回收这些资源。团队通常不知道他们的应用程序耗费了太多的资源,直到基础设施告诉他们这一点。


在 GCP 中,团队在自己的项目中运行资源,所以划分成本变得非常容易。应用程序团队离客户最近,他们现在也被授权去做成本权衡的选择,如果花费 2 倍的资金但可以按 2 倍的速度交付数据,这就算物有所值,他们就可以去做。

基础设施引导,团队最终决定

资源和成本的共享把基础设施团队推到了技术仲裁者的尴尬位置上,因为基础设施团队最终将拥有所提供的任何基础设施,我们不得不更频繁地对实验性技术说不。


在云迁移的世界里,我们重新定义了基础设施团队在工程团队中的位置:


  • 基础设施仍然处理安全和数据权限。

  • 核心基础设施(例如,共享 VPC 网络)仍然由基础设施管理。

  • 在其他任何地方,基础设施都可以通过构建工具和建议最佳实践的方式来提供帮助;团队可以自由使用他们认为最适合自己的工具,不论这些工具是内部的还是外部的。


没有人(至少我们团队中没有人)喜欢成为一个中央计划者;通过分解我们共享的基础设施,我们可以回归到基础架构团队的本质:构建工具和帮助其他工程师。

展望

这些都是很大的改变。写一篇关于未来的文章是很容易的,但我们完全明白要达到这个目标需要很多年。但是,无论一年后最终使用哪种技术,我们相信我们仍在朝着正确的方向前进。


原文链接:


https://liveramp.com/engineering/migrating-a-big-data-environment-to-the-cloud-part-5/


相关阅读:


大数据公司 LiveRamp 上云记(一):为什么选择 GCP?


大数据公司 LiveRamp 上云记(二):哪些功能可以直接迁移,哪些需要重新设计?


大数据公司 LiveRamp 上云记(三):如何在吞吐量有限的情况下处理数据复制


大数据公司 LiveRamp 上云记(四):如何在迁移时处理数百万请求和 PB 级数据传输


2020-02-23 09:001554

评论

发布
暂无评论
发现更多内容

Linux一学就会之Linux环境搭建并安装VMware虚拟机

学神来啦

Linux centos 运维 vmware

百度Q3财报:百度智能云同比增长73%,稳居中国四朵云之一

百度大脑

人工智能

解决 Serverless 落地困难的关键,是给开发者足够的“安全感”

阿里巴巴中间件

阿里云 Serverless 技术 云原生 中间件

青海西宁市正规等保测评公司名单汇总-行云管家

行云管家

网络安全 等级保护 等保测评 过等保

安全稳定高效节约的云运维软件哪个好?咨询电话多少?

行云管家

云计算 公有云 混合云 云管平台 云运维

带你了解AKG正反向算子注册+关联流程

华为云开发者联盟

算子 AKG 正向算子 反向算子 算子注册

微帧Film Grain编码技术,致敬电影胶片颗粒的独特魅力

微帧Visionular

视频编解码

Apache ShardingSphere 企业行|走进转转

SphereEx

ShardingSphere SphereEx Apache ShardingSphere 转转

阿里云发布云原生加速器,携手生态企业拥抱数字时代

阿里巴巴云原生

阿里云 云原生 企业 合作伙伴 创投

群雄“逐鹿”风采显露:2021信创“大比武”鲲鹏赛道总决赛火热来袭

科技热闻

Hadoop 生态里,为什么 Hive 活下来了?

大数据技术指南

11月日更

CRM与ERP之争,谁能在“企业数字化转型”的趋势中胜出?

优秀

低代码 CRM ERP

3分钟搞定 web人脸识别登录,这样式爱了

程序员小富

Java 编程 人脸识别 springboot 毕业设计

微信和QQ这么多群,该如何管理好友关系?

Tom弹架构

Java 架构 设计模式

恒源云(GPUSHARE)_云GPU服务器如何使用VSCode?

恒源云

人工智能 深度学习

用户增速与体验质量并存,博睿数据携阿里云发布双十一电商网站用户体验报告

博睿数据

论文解读丨无参数的注意力模块SimAm

华为云开发者联盟

卷积神经网络 视觉 注意力模块 SimAm 神经元

Python代码阅读(第62篇):列表是否包含相同元素判断

Felix

Python 编程 列表 阅读代码 Python初学者

几个高效做事的法则,让你的一天有 25 小时

程序员鱼皮

Java c++ 效率 大前端 高效

LifseaOS 悄然来袭,一款为云原生而生的 OS

阿里巴巴云原生

阿里云 云原生 操作系统 LifseaOS

微服务的灾难:拆的很爽,但服务太小...

热爱java的分享家

Java 架构 程序人生 编程语言 经验分享

智能云分支(Cloud Intelligent Branch)方案正式发布!

阿里云 云网络 智能化 发布会

驴行千里不洗沙尘,尚硅谷Spark性能调优教程发布

编程江湖

大数据 spark

Apollo生产环境整合springboot

小鲍侃java

11月日更

The Data Way Vol.6|我不是开发者,但我依然向往开源

SphereEx

开源 开发者 播客 ShardingSphere SphereEx

JAVA应用生产问题排查步骤

热爱java的分享家

Java 架构 程序人生 编程语言 经验分享

数据可视化界的小公主:cutecharts,入门+实战应用

老表

Python 数据可视化 11月日更 实战案例 cutecharts

Redis为什么需要强一致?技术揭秘秒杀活动如何限流

华为云开发者联盟

redis 开源 华为云 强一致 MySQL组件

“低代码”是什么?低代码平台如何助力企业实现数字化转型?

优秀

低代码

Aeron是如何实现的?—— Ipc Publication

BUG侦探

Aeron Ipc Publication

HBase 的预分区及 rowkey 设计技巧

五分钟学大数据

11月日更

大数据公司LiveRamp上云记(五):如何使用云原生技术重构本地系统_大数据_Benjamin Podgursky_InfoQ精选文章