Salesforce 大刀阔斧变革开发者体验

阅读数:1307 2016 年 10 月 18 日

话题:DevOps持续交付语言 & 开发架构

在盛况空前的Dreamforce 大会上,云计算领军厂商Salesforce.com发布了Salesforce DX:一种为 Saleforce 平台构建和部署应用程序的全新模型。Salesforce DX 全面支持各种目前对 Salesforce 开发者来说尚且较为陌生的概念,例如源代码控制管理、持续集成、脚本化。InfoQ 就相关细节采访了 Salesforce DX 产品副总裁Wade Wegner

InfoQ:请介绍一下 Salesforce DX 的长远目标。是否是为了扩展 Salesforce 所能支持的应用程序类型,并将现代化的软件开发实践带到 Salesforce 平台?

Wade Wegner:Salesforce DX 为 Salesforce 应用在整个生命周期内的开发、部署和升级定义了一套全新的方法,将 Force.com 和 Heroku 开发者体验中的精华汇聚一处,可实现源代码驱动的代码开发、受管控的团队协作、代码从开发到生产环境的无缝推进、与自动化测试机制的持续集成,并可在应用程序生命周期内支持第三方开发者工具。在 Salesforce DX 的帮助下,开发者可以在为 Salesforce 平台开发自定义应用程序的过程中获得更高程度的敏捷性。

InfoQ:开发者在 GitHub 代码库中存储的到底是 Salesforce 应用中的哪些内容?该服务是否只面向编写 Apex 的 Salesforce 开发者?

Wegner:在开发 Salesforce DX 的过程中,我们在持续完善 Salesforce 环境中通过源代码控制机制对源代码和元数据的运用,借此帮助开发者实现真正意义上源代码驱动的开发方式。除了源代码元数据,我们还可以支持测试配置、测试数据,以及 Salesforce org shape(例如版本、功能、首选项)等内容。

Salesforce DX 的重点不光在于组织中的元数据和源代码。越来越多的企业开始开发分布式、可组合的应用程序,会将 Salesforce 应用代码与通过开放式语言和框架开发的微服务结合在一起。Salesforce DX 在设计上可以对这种分布式应用程序设计提供良好的支持。我们基于 Heroku 平台构建的持续交付和持续集成工具对应用开发所用的语言,以及编写自定义应用的语言没有任何要求。Salesforce DX 还为这些工具提供了有关 Salesforce 应用程序和 Apex 的支持。

InfoQ:Heroku Flow 在 Salesforce DX 中扮演了重要的角色。您能否介绍一下这个服务,以及该服务在 Salesforce 内部和外部的使用方法?

Wegner:Heroku Flow 包含四个重要组件,其中三个早在 2016 年上半年就已正式发布到 Heroku 平台,最后一个全新组件本月刚发布 Beta 测试版。现有 Heroku Flow 服务包括:

  • Heroku Pipelines:Pipelines 是一种服务,可以用来管理多个共享相同代码基的 Heroku 应用,将应用分组为审核、开发、准备,以及生产环境,对持续交付过程提供支持、管理和可视化。将测试完成的代码从一个阶段推进至下一个阶段的过程可手工或自动完成,由于编译结果可以推进至下一阶段,这个过程几乎可以瞬间完成。
  • Review Apps(审核用应用):这是一种提议、讨论、决定是否将变更合并到代码基的方法。对于连接至 GitHub 的 Heroku 应用,Heroku 可以手工或自动使用唯一 URL 为每个打开的 Pull 请求(PR)创建一个临时的测试用应用。每次提交后该临时应用可自动更新,这样审核者无需猜测代码的具体作用,就可在浏览器中亲自尝试所做变更。PR 的合并会破坏审核用应用,在配合 PipeLines 使用时,可以自动将代码推进至准备阶段。在 Salesforce DX 的世界中,审核用应用的角色是由 Scratch orgs 承担的。
  • GitHub 集成:借助 Github 集成,开发者可以手工或自动将自己的 GitHub 代码库连接至 Heroku 应用,借此对 GitHub 的每次 Push 部署一个特定分支。每个部署可在 Heroku Dashboard 中应用的 Activity 选项卡下看到当前发布和上一次提交之间的差异,这样开发者就无需猜测应用中到底包含了哪些代码。在 Salesforce DX 中我们进一步扩展了 Salesforce 与 GitHub 的集成。

Heroku CI 是 Heroku Flow 的最新版,这是一种新增的嵌入式持续集成产品,该产品也已将 Beta 测试版发布至 Heroku 平台,并以开发者预览版的形式包含在 Salesforce DX 中。Heroku Flow 已经可以与 Jenkins 等第三方测试工具集成,但 Heroku CI 提供了一种全新的备选方案,可补充或取代对代码运行自动化测试的主要方法。

InfoQ:“Scratch orgs”是 Salesforce DX 中新增的,该技术的用途是什么,会对 Salesforce 开发者目前的工作流产生哪些影响?

Wegner:Scratch orgs 是一种全新的 Salesforce 环境,一种源代码驱动的即抛型 Salesforce 代码和元数据部署。Scratch orgs 完全可配置,可供开发者模拟出包含不同功能和首选项的不同 Salesforce 版本,该产品在开发过程中对开发者生产力和协作能力起到了关键作用。在创建分支并开发不同功能时,开发者可以在开发过程中创建 Scratch orgs,并将这些 Scratch orgs 分享给协作者或审核过程中的其他有关人员。Scratch orgs 也可用于自动化测试以及完整的持续集成实现中。

InfoQ:新增的 CLI 据说可以跨平台使用。这一特性是否只能用于自定义代码的场景,或者也可以通过这个 CLI 管理 Salesforce 组织的其他内容?您觉得哪些人需要使用这样的功能?

Wegner:Salesforce DX 命令行接口(CLI)是最令 Salesforce 开发者感到激动的功能之一。该接口基于 Heroku CLI 构建,可以让开发者更充分地使用我们提供的所有 API。过去则需要通过多种工具(例如 Salesforce WorkbenchForce.com CLI等)获得这些能力。

该 CLI 将成为开发者与 Salesforce org 交互的主要方式。用户可以使用它来创建 Scratch orgs,将源代码和元数据推送至 Org 或从中拉取,甚至执行会影响到 Org 中元数据的操作,例如为某个应用分配权限集或执行匿名 Apex。

CLI 还可以简化 DevOps 的 Salesforce 使用体验。用户可以在构建自动化脚本时使用 CLI,通过源代码创建环境,并运行所有测试。

我们“API 为先”的方法也被纳入到 CLI 中,未来我们还将为 Salesforce DX CLI 提供更多开发者功能。

InfoQ:基于 Salesforce DX 的完整开发流程是怎样的?应用程序从自举到最终部署需要经历哪些步骤,用到哪些技术?

Wegner:设计 Salesforce DX 的过程中,我们的基本原则之一在于让团队能够灵活定义最适合自己的方法。Salesforce 已经将源代码驱动的开发方法作为我们实现的中心,我们认为这样能帮助客户更好地获得成功。

首先需要定义版本控制策略。Salesforce DX 可支持多种 VCS 选项,但我们建议大家采取一种 VCS 并将其作为开发工作的基础。应用的真实来源(Source of truth)已经不再是 Org,而是版本控制系统。

随后需要理解自己的环境。新的 Scratch org 使得开发者可以通过 CLI 更容易地构建应用并实现持续集成和交付。Scratch org 使得开发者可以使用本地源代码进行开发并运行全部的测试,更有信心地将代码提交至 VCS。

在将更新提交至 VCS 之后,无论提交的是使用 Heroku Pipelines,或使用 Jenkins、TeamCity 等第三方工具开发的 Salesforce 解决方案,开发者均可使用标准化的 Web 钩子发起构建自动化和持续集成(CI)。

在这一系列过程中,开发者可以灵活选择自己使用的工具。CLI 消除了与 Salesforce orgs 进行交互的复杂性,意味着开发者无需使用任何专用工具,可以自由选择使用 Vim、Sublime、Visual Studio Code、Atom,或任何文本编辑器来编写自己的代码。

InfoQ:为开发者提供的这种基于 Eclipse 的全新 IDE 包含哪些新功能?与之前的 IDE 集成有什么不同?

Wegner:Force.com IDE 是我们基于 Eclipse 打造的一个工具,过去很长时间里一直是 Salesforce 开发者最主要的工具。新发布的 Force.com IDE 2 依然为从 Apex 到 Workflow 等 Salesforce 可支持的各种元数据类型提供了最广泛的支持。我们目前还在努力完善以提供更多强大的新功能,例如:语言服务、对 Lighting 部署的完整支持,以及将陈述性构建器(Declarative builder)直接载入 IDE 的能力。

Salesforce DX 的所有元数据均外化保存在源代码控制系统中。通过从同一个源代码控制系统直接导出 Eclipse 项目,将能对元数据获得更全面的了解,借此可以实现更智能的分析,因为可以了解所有 Apex 类,所有自定义项目,以及所有 Lightning 组件等。以前在老版 Force.com IDE 中,用户可以,并且经常需要选择元数据的子集并将其导入 Eclipse 项目,这种不完整的视图由于缺乏某些重要信息,限制了 IDE 提供智能分析的能力。

不过对我们而言,真正的创新在于新版 Eclipse 插件是直接基于 CLI 开发的。这样做不仅可以加快我们的工作进度,而且可以让 IDE 直接用上 CLI 方面包含的所有创新。我们也鼓励所有工具领域的合作伙伴采取这样的做法,借此大家将能更轻松地在不同工具中打造更棒的开发者体验。

InfoQ:对于将 Salesforce 视作一种只能进行“指向并点击”式开发工作的人,您有什么想说的?

Wegner:我们有关 Salesforce DX 的愿景涵盖了 Salesforce 平台客户先驱的方方面面,从程序开发者到 Salesforce 管理员,再到通过底层代码用“指向并点击”的方式设计和部署 Salesforce 应用的业务用户,所有类型的用户都在我们的考虑范围内。为了给 Salesforce DX 打下坚实的基础并满足大型 ISV、SI,以及企业客户严格的需求,我们发起了这个由 CLI 驱动,用于打造可缩放能力更高的自定义应用程序的创新式举措。随着明年逐步将 Salesforce DX 推向市场,我们的重点将转向如何通过恰当程度的抽象和以用户为中心的设计,借助可视化流程和熟悉的管理构造(例如变更集),将 Salesforce DX 的核心优势提供给管理员和业务用户。在最终发布前我们还将围绕这个话题公布更多细节。

InfoQ:如果想进一步了解 Salesforce DX,开发者应该怎样做?

Wegner:建议从我们的开发者网站着手:https://developer.salesforce.com/platform/dx

随着公开测试和明年最终发布的临近,我们会将最新近况更新至上述页面,感兴趣的开发者可以在这里注册并在进一步详情公布后优先获得通知。另外也建议大家观看我们的技术总裁 Srini Tallapragada 所做的演讲:Dreamforce 2016 开发者主题演讲

查看英文原文:Salesforce.com Introduces Extensive Changes to Developer Experience