任何IT组织迟早都必须处理诸如持续交付(CD)之类的问题。 他们意识到存在各种环境,例如开发,QA,支持,UAT,生产等,并且在这些环境中有许多不同的系统在工作。 在某个时候,手动管理所有这些东西变得不可能了,应该自动化。 市场上有很多可用的工具,可让您自动化构建和部署流程。 当根据不同应用程序的基础技术将不同的工具用于不同的应用程序时,这是非常常见的情况。 随着时间的流逝,当整个基础架构变大时,不同环境,服务器,不同版本的应用程序和持续交付工具的动物园变成了噩梦。 我知道一个组织具有相当大的基础架构,没有人可以绘制其环境图。 来自同一家公司的另一个人告诉我,不可能在二维的纸上和平地表示它,并且有可能在3D或更佳的4D环境中做到这一点:)
因此,拥有一个允许您组织和组合基础架构的所有部分,进行设置,控制和监视的系统将是非常不错的。 并且存在这样的系统。 在这篇文章中,我将重点介绍其中之一。 这是FlexDeploy 。 该系统在市场上是一个相当新的系统,但是我相信由于其概念和想法,它很有可能很快就会流行起来,尤其是在使用Oracle Fusion Middleware Products的组织中。 FlexDeploy本身是一个ADF应用程序,它主要集中于持续交付和集成使用Oracle Fusion Middleware构建的系统。
FlexDeploy声称您拥有多少服务器,应用程序和工具都没有关系。 软件工程的基本定理“我们可以通过引入额外的间接级别来解决任何问题(…,除了太多间接级别的问题外)”在这里非常有效。 在任何复杂的基础架构中,总会有一些实际的环境 。 例如开发,构建,生产,用户接受测试,质量保证和支持。 使用这种明显的间接或抽象,任何基础结构都可以轻松地分为这六个部分。
另一方面,有实例 。 例如,WebLogic 11g域,WebLogic 12c域,WebSphere AS,ESB,ADF构建服务器,Oracle DB,GlassFish AS,ODI等。所有这些都是实例。 与整个基础架构中不同服务器上托管的不同技术有关的某些系统和工具的实例。 这是第二个抽象。
FlexDeploy使您可以轻松地为每个实例(在什么环境中)工作。
完成此操作后,基础架构的拓扑可以这样表示:
并且有由项目组成的应用程序 。 对于它们中的每一个,我们都可以指定它们的构建位置和部署位置。 因此,每个项目都映射到一个构建实例和一些部署实例。 如前所述,应用程序由项目组成。 例如,某些Oracle MAF系统WorkMuchBetter实际上包含两个项目– WorkMuchBetterClient(实际上是Oracle MAF移动应用程序)和WorkMuchBetterBackEnd(通常的ADF应用程序)。
问题是什么工作马力实际上将要构建和部署项目。 有工作流程 。 FlexDeploy提供了一个非常强大的工具来设计构建和部署工作流。 工作流程是步骤的编排,可以是插件操作或基本工作流程操作(例如变量分配,条件或循环构造)的组合。
在FlexDeploy中使用工作流设计器类似于在Jdeveloper中使用任务流设计器。 有一个带有工作流程的工作表,一个带有工作流程操作(如While,If,Assign,Wait等)的调色板,以及一个带有插件操作的调色板。 您可以仅通过从调色板中拖动活动并将其拖放到工作表上来设计工作流程。
在插件方面 ,FlexDeploy引入了广泛的插件,您可以在工作流中使用它们来执行与不同技术相关的活动。 例如,从SVN或GIT获取源代码,构建ADF应用程序,将应用程序部署到WebLogic服务器,运行SQL脚本,导出OSB项目等。 此处提供了受支持插件的完整列表,而且好处是该列表会不断增长。 基本上,如果FlexDeploy没有针对特定任务的插件(到目前为止),我们始终可以使用Unix Shell插件或Windows Shell插件来实现所需的功能。 这些插件使您可以在相应平台上运行任何Shell脚本。
在FlexDeploy 2.0之前,您必须在远程服务器上安装代理才能在远程服务器上执行插件操作。 代理是一种轻量级Java应用程序,负责运行插件操作并与FlexDeploy服务器通信。 即将推出的FlexDeploy 2.0仅通过与远程服务器的ssh连接就使用了无代理技术。 这样就消除了在整个基础架构中对代理的管理和监视,从而使FexDeploy的使用变得更加容易。
作为FlexDeploy被认为是一个完全自动化的解决方案它肯定让你建立和部署计划的基础上应用。 预定任务完成后,将有一封包含任务详细信息的通知电子邮件。 例如,在构建项目时,您会收到一封包含SVN更改的信函,并链接到由构建工作流生成的工件 。 例如,这可能是耳朵或jar文件,它们对于软件开发人员来说非常方便。 除了计划外,还有一个窗口概念。 窗口是可以为特定环境指定的时间范围,这意味着默认情况下允许在此时间范围内进行部署。 但是,如果恰好在窗口之外进行部署,则应由某些授权人员将其作为例外批准。 否则,将在下一个可用窗口的开始时间安排此部署。 例如,只允许在晚上部署到生产环境,但是如果迫切需要在白天进行部署,则应该由他人批准。
基本上,FlexDeploy会不断完善其功能,以实现新的插件并致力于仪表板和图表等可视化功能。 也许现在该应用程序还很年轻,但我认为它将很快成为一个成熟的连续交付系统。
您可以在Flexagon网站上索取演示版或试用版,然后自己尝试。 FlexDeploy是一个ADF应用程序,它需要一个应用程序服务器和一个数据库实例。 但是,很酷的事情是,只需单击一下即可将试用版安装在您的笔记本电脑上,这需要几分钟。 它准备在您的计算机上安装Oracle XE实例和GlasFish服务器。 因此,如果您对此不满意,最好使用某种虚拟机进行此类实验。
而已!