我想在Google Cloud上做行为驱动开发(BDD)。我已经写出了我的BDD故事,看起来一个基本的web应用程序就可以满足需求。我喜欢使用AngularJS来编写客户端代码,使用Java来编写服务器代码,因为这是我最熟悉的。我对Maven也比较熟悉。
我如何才能开始专注于编写代码?
1]选择Google云服务(App Engine、Compute Engine、Container Engine)?
2]找到并复制任何技术的Hello World示例,这些技术也具有与我想使用的一样多的其他组件(用于BDD、AngularJS、Java的JBehave,上面的Google Cloud服务)?但是,我应该从哪个组件的入门指南开始,这样其他组件才能轻松集成?
3]找到一个合适的Maven原型?
4]调查Spring.io?我听说Spring.io试图让开发人员更容易地专注于编码。但我对此所知不多。
我想花尽可能少的时间来设置项目,这样我就可以尽快开始做行为驱动开发。我通常会发现,在这样的项目中,我锁定了使用哪种技术的决定之一,遵循他们的入门指南,但当我开始集成其他组件时,却遇到了障碍。
我如何开始这个项目,以便我可以在非编码方面花费尽可能少的时间?
发布于 2016-12-24 02:13:11
就我个人而言,我不会关注在哪里执行系统。在我的世界里,开发是在本地计算机上完成的。CI在其他地方完成,最终的工件在其他地方执行。必须能够从您的CI构建中将其部署到某个位置,以便您可以在部署之前验证它是否实际工作。
我会从构建在我的计算机上本地工作的东西开始,然后继续前进。我不会花任何时间去寻找Maven原型,我会慢慢地手动构建我的项目。这听起来可能是一种缓慢的方式,但它会让我了解正在发生的事情。添加的魔法是我添加的魔法,因此没有魔法。
那么你应该从哪里开始呢?我建议从克隆https://github.com/cucumber/cucumber-java-skeleton开始,并使用您需要的业务功能对其进行扩展。如果您需要更多技术,请在需要时添加。在你需要它之前不会。我的经验是,我通常需要比人们从一开始就想象的更少的技术东西。而且绝对不是我在开始这个项目之前能想到的工具。
发布于 2016-12-24 03:09:03
一种方法是从前到后或从后到前思考。从前到后的思考意味着从用户界面开始,一旦构建完成,就创建中间层,最后是后端。
然而,从用户界面开始的问题是,如果没有后端,您无法真正验证它是否工作。但我相信依赖注入(DI)解决了这个问题。您可以实现足够多的模拟服务器,以使BDD故事传递给用户界面。当每个BDD故事传递到用户界面时,您就可以构建堆栈中的下一层。
通过查找前端技术(AngularJS)的Hello World示例,应该可以开始开发用户界面。寻找一个Hello World示例,它包含了测试所需的两个部分: BDD和依赖项注入。如果找不到,那么就从AngularJS Hello World开始,让它运行起来。然后对依赖注入执行相同的操作。希望这能让你拥有一个完全实现的AngularJS前端,你可以验证它是否能与BDD和依赖注入一起工作。
然后你就可以在中间层工作了。您可以将其设置为独立于AngularJS项目的单独项目,这样您就不必担心将来自堆栈两层的代码组合到一个项目中的麻烦。Maven应该能够做到这一点,但是Maven的文档往往不那么容易使用。
要开发中间层,可以找到一个Hello World示例,用于开发在Google Cloud上运行的基于REST的API服务器。在这一点上,您不需要前端或后端。前端可以通过BDD故事来模拟,后端可以通过DI来模拟。一旦所有的BDD故事都通过中间层,那么您就可以构建后端了。
开发后端类似于构建中间层。找到一个Hello World示例,用于开发在Google Cloud上运行的数据库应用程序。最可能的相关技术是Google Datastore,它使用Objectify作为面向对象的包装器。但是让我们称这一层为服务层,因为REST API和数据存储之间应该有一个抽象层。这里的复杂之处在于,独立于中间层开发这一层可能不是很简单,但如果可能的话,请尝试这样做。换句话说,创建一个基于Google Datastore Hello World示例的单独项目。使用BDD模拟中间层。您可能不再需要DI,因为您处于堆栈的底部,只需直接调用数据存储即可。但是,如果不能在您正在开发的本地计算机上运行数据存储,则DI可能无论如何都是有用的。
现在,BDD stories已经在所有三层(用户界面前端、REST API中间层、服务层后端)上运行,现在开始让它在生产服务器上运行。不过,我不确定这是不是最好的方法,因为在这最后一步中似乎会出现很多复杂的情况。从理论上讲,如果每一层都通过了BDD测试,那么它们应该都能很好地结合在一起。但将它们集成在一起可能不会那么顺利。确保它顺利进行的一种策略是将每一层映射到它自己的专用生产系统上。如果每个部分在开发机器上都运行得很流畅,那么它在生产机器上就不应该运行得很流畅吗?
希望如此,但我希望其他人能提出一种更好的方法,允许人们在编码上花费更多的时间,在DevOps上花费更少的时间。
https://stackoverflow.com/questions/41305117
复制相似问题