@liuhui0803
2016-10-18T09:56:32.000000Z
字数 4879
阅读 2075
架构和设计
DevOps
开发
PaaS
敏捷
摘要:
在盛况空前的Dreamforce大会上,云计算领军厂商Salesforce.com发布了Salesforce DX:一种为Saleforce平台构建和部署应用程序的全新模型。InfoQ就相关细节采访了Salesforce DX产品副总裁Wade Wegner。
正文:
在盛况空前的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 Workbench、Force.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开发者主题演讲。
作者:Richard Seroter,阅读英文原文:Salesforce.com Introduces Extensive Changes to Developer Experience