2008-08-27 74 views
-1

我目前的雇主使用第三方托管的CRM提供商,我们在这两个系统之间有一个相当复杂的集成层。在CRM提供商的功能中,开发人员可以使用Java等语言编写业务逻辑,也可以使用用户单击按钮或向系统提交新账户,验证和/或业务逻辑触发等事件。开发环境和API开发的最佳实践?

我们使用的功能之一是在托管提供程序上运行的业务代码来调用我们托管的Web服务。典型的例子是一个销售代表进入一个新的销售主管,并点击一个按钮来ping我们的系统,看看我们是否能够根据电子邮件地址,公司/名字/姓氏等标识出新的潜在客户,如果是,返回代表该个人的内部GUID。这对我们来说都很好,但我们一次又一次地陷入困境,试图建立一个合理的开发环境来应对。

因此,尽管我们的用例有点细微差别,但它通常适用于为第三方消费构建API的开发室:当您构建API时,设计开发流水线和环境时的一些最佳实践是什么?被外界消耗?

在我们的办公室,我们所有的开发人员都在防火墙后面,因此正在进行的代码不会被外部世界所打击,在我们的例子中是CRM提供商。我们可以在防火墙上打洞,但从安全表面的角度来看,这并不理想。特别是如果需要进入DMZ区的开发人员数量很多。我们目前正在尝试DMZ中的单个开发机器,然后根据需要进行远程开发,以便开发工作,但如果多个开发人员需要使用该机器,则会造成资源短缺问题,更不用说他们正在进行潜在的冲突更改(例如,不同的分支机构)。

我们已经考虑通过为这些服务构建假客户端来嘲弄/伪造传入请求,但这是构建功能集的一个非常重要的开销(尽管它本质上确实加强了我们API的可测试性)。这也不能避免这样的事实,即有时我们确实需要诊断/调试来自真实客户端本身的问题,而不是某些伪造的请求负载。

其他人在这些类型的场景中做了什么?在混搭的这个时代,必须有很多人在开发API的经验 - 有什么工作(而不是工作)以及那里的人呢?

回答

1

在与我有关的情况下(我们经常会这样说),我们倾向于在内部托管解决方案的开发副本并嘲笑我们不能做的事情主办。

我个人认为,你可以在个人开发盒上托管的东西越多越好 - 如果你的开发人员的电脑足够强大,可以运行整个系统以及他们需要开发的任何其他东西,那么他们应该这样做。它使他们能够发展大量的灵活性,而不用担心其他人。

1

对于开发者来说,使用模拟对象并编写好的单元测试来定义手头任务是有意义的。这有助于确保开发人员了解业务需求。模拟库非常复杂,有助于解决这个问题。

然后可能是一个连续的构建过程,将代码移动到DMZ中的开发框中。一个强大的质量保证过程是有意义的,加上一般的UAT测试。

另外,对于一般调试,您需要再次访问远程登录的DMZ中的机器。

这可能是一个“理想”的情况,但你确实要求最佳实践:)。