QCon全球软件开发大会8折优惠倒计时,购票立减¥1760!了解详情 >>> 了解详情
写点什么

Intuit 的 Alex Balazs 访谈

2016 年 7 月 17 日

要点:

  • 当前技术发展迅猛,其中的一些改进将可使你的客户们最终受益,并简化他们的生活。聚焦于这样的改进是十分重要的。
  • 采用了“凡事皆服务”的原则以来,Intuit 公司得以前所未有地快速行动起来,可更快地创造出神奇、顺畅的客户体验。
  • 技术改造中,有两件重要的事情需要牢记:1)尽可能在开始阶段就说服执行者,并得到执行者的支持,2)通过与团队的交流,确保团队对技术改进的理解,并围绕改进开展工作。
  • 科技世界正在发生改变,客户期望也同样在发生变化。Intuit 的平台重构工程将会促进创新,并满足用户重大权益。
  • 仅一年内,Intuit TurboTax 软件得以转变其企业架构,为超过三千万的用户提供了在任何设备上可使用的报税软件的完全版和原生版。

在本次访谈中,Alex Balazs,作为 Intuit 公司 Turbo Tax 软件的 VP Fellow 架构师,将讲述他们是如何使用 Node.js 去分割他们遗留系统平台的整体架构。Balazs 谈及了如何使员工参加到项目中,项目中面对怎样的挑战,以及其它大公司如何能从他们的经历中获益。

InfoQ: 既然 TurboTax 已经采用了一些新的技术,关于该过程你能更多地介绍一下吗?

Alex Balazs: Intuit TurboTax 软件的发展历程是十分有趣的。在上世纪 90 年代,TurboTax 作为桌面软件产品取得成功,因此成为家喻户晓的产品。TurboTax 将纸质表格填写转化为软件操作,使得报税填写更加容易,这在当时是非常创新的技术。

考虑到技术已向移动和云计算领域迁移,我们也不得不进行变革。如何将这个仍使用遗留技术构造的产品并且当前是蓬勃发展的商业,在新的领域中进行彻底地改造?这就像要在飞行中对你所驾驶的飞机进行重新构建。我们意识到,如果我们想要继续保持对神奇产品的创造,就需要对技术与创新进行持续地转化。

过去两年中,我们前行于公司技术栈现代化的征程上,并创立了我们的技术战略。该战略使我们不仅要去建立最好的报税软件,而且要去为我们的客户解决各类各异的复杂问题。我们首先构建了一个知识引擎,在其中编码了税务法律、逻辑和计算等内容。该引擎不仅推进了开发人员的开发速度和项目创新,而且使所有人能更好地理解税费的计算方式。这个知识引擎在项目中具有非凡的作用。

此后,我们的现代化征程聚焦于去构建一个服务平台。我们知道面向未来的产品的建立,需要一个面向未来的平台;我们也知悉解决诸如报税之类的复杂问题是十分困难的任务;这个事实源于我们经历的两次失败的平台重构经历。

高尔定律指出:“一个可用的复杂系统势必是从一个可用的简单系统发展而来的。从头开始设计复杂系统从根本上而言是不切实可行的,并且修修补补是无法让一个复杂系统可用的。你必须由一个可用的简单系统重新开始。”

InfoQ:那么你们是怎么做到的?

Alex Balazs:通过采用“凡事皆服务”的原则。这是前期我们从行业中一些最优秀的人那里所学到的,即我们的技术必须使我们以及其他开发人员能够快速地去创造神奇、顺畅的用户体验。在团队可按员工各自的节奏工作时,服务提供效率得以改进。因为这允许我们的员工在不必召集会议的情况下,独立地去构建、测试和发布服务及产品体验。

服务是为他人所创建的,因为服务具有一个标准的合约,是可扩展的、安全的、可被搜索到的并易于使用的。

通过大规模地提供高质量的、创新的、可响应的服务而建立持久优势的做法,在现有技术具有局限性的条件下是非常难以实现的(经常是不可能实现的)。

我们的目标是通过让我们的全体员工提供他们平生最好的工作而引领技术栈的革新,这种创新可提供突破性的用户体验及爆炸性的用户增长,并淘汰过时的报税方法。

Node.js 技术影响了我们的技术平台重构提议。当我们启动平台重构征程时,我们有一个使用遗留技术所构建的整体架构,具有一千万行的旧代码。我们的方法是通过将已仓储的整体代码库分解为更小的、更简单的服务组件而构建企业级服务。该方式使我们在无需颠覆上百万用户年年所仰仗的操作经验的前提下加速创新。

基于对可用技术的审慎分析,我们确定 Node.js 技术将有助于我们构建“凡事皆服务”的征程。但是我们知道,如果想要大规模地去实现 Node,我们不能只考虑该技术的优点。实际代码也证实了这一点。考虑到这些,我们设计了实验去测试整个技术栈中最短板的一块。在两个月内,我们构建了用于端到端的用户体验的实验,引入了从产品管理、产品开发、用户体验和工程中所获取的所有专业技术。实验证实了 Node.js 可以在大规模环境中正常地工作。

当前,我们正在扩展我们所使用的服务(包括 Node.js)去打破原有的整个庞然大物。我们将整体代码库视为一座冰山,并用 Node.js 在垂直切片上进行钻进。假以时日,过去的代码库将会最终被分解,留下的是由包括 Node.js 在内的许多组件所构建的新平台。

InfoQ:在诸如 Intuit 这样的大公司中,你怎样使员工去支持你?

Alex Balazs:我们曾设想所有的雇员在面对使用新技术的工作机会时,都会鱼跃而上。但事实并非如此。员工时常是很享受于用他们所知的去工作。我们知悉这关键在于应向员工解释清楚,现有平台是岌岌可危的,这个理由是令人信服的,它说明了技术改进的必要性。如果所有各层级的员工都没有参与进来,再好的点子都是没有意义的。执行者的支持也是十分重要的;企业领导有时也是不敢于对当前仍盈利的产品进行技术改进。确保去说服公司内部的各个层级也是我们的职责。

InfoQ:为什么 Intuit 要着手去实现该平台重构的提议

Alex Balazs:科技世界正在改变,用户期望也同样在发生变化。在我们所从事的行业里,商业模式经常被瓦解重建,我们需要行动敏捷,并像初创公司一样地思考问题。公司和应用正在重构,从桌面向云端迁移。满足“凡事皆服务”是全 Intuit 公司范围的关键重点,而在应用服务中,Node 是一种标准的运行时环境。我们企业的规模和数据本身都需要企业级架构,该架构是 Node 可提供的。

我们进行平台重构并非是为了使用某个新编程技术或是为了清理我们的代码库。启动该历程的最根本原因在于,促进创新并满足客户的重大权益,并且我们已看到了有意义的结果。在过去的两年中,Intuit 通过从整体代码库向模块化面向服务开发的转化历程,已经节省了近 120 编程人年的时间。我们的原生移动端开发技术已使开发人员的生产率提高了 10 倍。所有这些都意味着更好的开发人员体验,以及更多的时间可用于去解决可改善我们客户生活的重要问题。

InfoQ:你们的研发过程是如何改进的(例如敏捷之类的)?

Alex Balazs:Intuit 构建了一个服务平台;该平台的核心理念在于,平台团队指出架构问题的解决方案,包括主机、监控、管理、启动、集群、更新,并致力于提供多服务的支持。反过来,全公司的开发人员团队聚焦于解决他们的客户问题,以及服务的商业逻辑。

InfoQ:你们曾面对怎样的挑战?

Alex Balazs:从企业组织的角度看,我们所面对的挑战之一就是,对于满足移动端优先而言,我们企业的组织结构并非是最有效的。我们历史上的策略曾是为 iOS、Android、Windows、Mac 及 Web 分别建立完全独立的团队,更遑论对其它设备的支持。我们已通过一次重组,将所有移动端开发团队重组在一起并向统一的目标看齐,致力于一起取得胜利。

InfoQ:对于其它可能考虑着同样问题的企业,你有什么好的建议可以给出吗?

Alex Balazs:下面是我们基于在 Intuit 的经验而得到的建议:

  • 凡事皆服务 - 确认你公司中进展缓慢的任务并对此有所准备。
  • 分而治之 - 掌控全公司中不同资源所具有的专业技术。
  • 在平台中,服务开发人员需在系统的控制和与其它系统的符合性间做权衡。优先满足符合性,并使得易于与公开合作的模块一起使用。人们总是喜欢使用易用的东西。

InfoQ:你们下一步将如何进展?

Alex Balazs:我们仍处于技术转变的历程中,但我们正在看到我们努力的成果。在仅仅一年中,Intuit TurboTax 转换了其企业架构,并向超过三千万使用各种设备的用户发布了填报税务软件的完全版和原生版。 下一阶段,我们将使用 Node.js 及其它技术扩展服务,使得软件更加高效,并易于开发人员创新。

我们并不是在企业级规模上使用诸如 Node.js 等 JavaScript 技术的唯一企业。包括 PayPal、Netflix 和 Walmart Lab 等企业都在使用这些技术进行研发。但是我们都认识到,拥有众多用户和大量资产收入的企业仍有许多需要去学习的。这也是为什么 Intuit 引领建立企业级 JavaScript 联盟的原因。我们每月举行会议,一起分享最佳实践。我们仍处于合作和部分技术开源过程的初始阶段,该过程使得我们这些企业相比于去各自发展而言,可更加快速地共同前进。我邀请其它企业通过访问我们的网站加入我们。

关于受访者

Alex Balazs是 Intuit 公司用户税部门的副董事长,兼 Fellow 首席产品与工程架构师。在该职位上,他负责引领先进技术创新、卓越工程管理和 Intuit TurboTax 报税软件产品线的技术战略。Balazs 是一位成熟的领导者及工程师,他通过务实的架构有效地加速了企业的商业产出,该架构具有面向未来的大胆的想象力,可不断地通过快速的实验达成对架构愿景的验证。作为一位在 Intuit 具有 16 年工作经历的雇员,Alex 自 16 年前加入 Intuit 以来,历经一系列的岗位,其中包括杰出架构师 - 消费税部门首席架构师,首席身份识别架构师及软件架构师。

查看英文原文: Q&A with Intuit’s Alex Balazs


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016 年 7 月 17 日 18:12765
用户头像

发布了 226 篇内容, 共 61.9 次阅读, 收获喜欢 18 次。

关注

评论

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

大厂运维必备技能:PB级数据仓库性能调优

华为云开发者社区

架构 数据

合约跟单app,永续合约交易所带单交易软件

13823153121

甲方日常10

句子

工作 随笔杂谈 日常

“新基建”与“双循环”的二重奏:2020服贸会靠什么推动经济复苏

脑极体

架构师训练营 - 第 8周命题作业

红了哟

indexOf原理,Java,javascript,python实现

叫练

算法

市值做市机器人,操盘做市系统搭建

13823153121

从用户输入手机验证码开始

架构师修行之路

模板方法模式——看看 JDK 和 Spring 是如何优雅复用代码的

Java架构师迁哥

【万字长文】探讨可信构架之道

华为云开发者社区

架构 服务端

CSS常用样式——绘制单(双)箭头的多种方法(2)

程序员学院

CSS html 程序员

使用开源软件构建工业互联网的平台

刘旭东

工业互联网 Odoo thingsboard

XSKY ClickHouse如何实现存算分离

XSKY融合存储

MySQL高性能架构设计原则

李浩宇/Alex

当心这些“坑”!阿里云服务器部署前后端分离项目

麦洛

nginx 前后端分离 跨域

LeetCode题解:225. 用队列实现栈,两个队列,压入 -O(1), 弹出 -O(n),JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

未读消息(小红点),前端与 RabbitMQ实时消息推送实践,贼简单~

程序员内点事

Java RabbitMQ mqtt

[翻译]The Go scheduler[Go调度]

卓丁

golang golang调度 Go scheduler

[翻译]Go Concurrency Patterns[Go 并发模式]

卓丁

golang Rob Pike Go Concurrency Patterns Concurrency

架构师训练营作业(大数据与机器学习)

qihuajun

物联网通信技术最全科普!你一定要了解的NB-IoT

华为云开发者社区

物联网

协同新机遇:让研发敏捷起来

人称T客

Redis 哨兵模式

是老郭啊

redis redis哨兵模式 redis哨兵 redis哨兵集群

边缘计算,如何啃下集群管理这块硬骨头?

BoCloud博云

云计算 容器 边缘计算 PaaS 博云

20张图,大学四年都没整明白的操作系统就这么学会了

小Q

Java 程序员 架构 操作系统

工作好多年有可能还未真正了解接口和抽象类

架构师修行之路

接口 抽象

云图说 | GPU共享型AI容器,让AI开发更普及

华为云开发者社区

AI 容器

呕心沥血,整理200+最新面试题,面试之前看一下,事半功倍

小Q

Java 学习 程序员 架构 面试

教师节特别活动:第四范式多项自研技术及其应用实践分享

天枢数智运营

人工智能 推荐系统 第四范式 个性化推荐

Polkadot初识,不止于跨链

QTech

polkadot 跨链

一步搞定任意圆角背景

mengxn

android xml 圆角

移动应用开发的下一站

移动应用开发的下一站

Intuit的Alex Balazs访谈-InfoQ