跳到主要内容

保存的帖子

还有什么比软件交付管道不自动化更糟糕?

Dave Nicolette |龙头
戴夫尼科尔特 高级顾问
读: 还有什么比软件交付管道不自动化更糟糕?

自动化您的软件交付管道

好的。听起来不错。顺便问一下,什么是“所有的事情”?

好吧,有点很多实际上。也许比大多数人在何时启发到自动化管道时,比大多数人在一起的一两个人。

自动化为什么?

价值拥有的组织能力即使客户不能经常使用更改,也要持续交付。无人值守的软件交付管道使技术人员可以将更多的时间花在增值活动上,而不是单调地手工执行重复的任务,例如

  • 通过眼睛审阅码,以确保遵守编码标准
  • 处理由多个人进行的代码更改的合并
  • 检查应用程序函数在已知条件下给出可预测输入时返回的预期结果
  • 提供和配置环境
  • 在部署之前准备测试数据以锻炼应用程序
  • 创建或修改数据库模式
  • 监控生产系统以检测常见和可预测的问题

但是,人们会对自动化感到兴奋并领先自己的风险。我记得John Seddon几年前的谈话(我现在无法在网上找到它)关于一家小公司,在卡车上送到卡车上的东西来解决人们的家园(或那样的东西)。

该公司希望自动化调度过程。他们要求一个软件开发人员需要什么,他估计了几个月超过20,000磅的东西。Seddon公司Vanguard,建议他们等待。他们建议该公司建立公司的过程,而不是自动化他们目前的进程,这是一种基于纸张的程序,这将易于改变或丢弃,并解决任何扭结的方式。一旦他们有一个工作系统,他们就可以自动化系统而不是他们目前拥有的系统。

他们遵循了建议。当他们使用他们的过程使用笔记本电脑和纸张的滑动时,他们已准备好自动化。它最终成本为约4,000磅,并在一个月内实施。更好:是正确的的过程。

在您跳上自动化潮流之前,我建议您考虑两件事:

  • 确保你理解了“所有的事情”到底是什么;有可能比你最初意识到的要多;和
  • 确保当你自动化这个过程时,你所做的事情不会让你难堪,因为无论你自动化了什么,它都会比以前更快地发生。

自动化是什么?

要求和验证

的受欢迎程度按示例规范和一些相同或几乎相同的实践,如验收测试驱动开发和行为驱动开发,已经导致人们急于进入它,也许希望快速和轻松地获得好处。

两个密切相关的概念错误似乎很常见。首先,有一个关于软件相关工作的刀具为中心的心态。人们在他们究竟究竟在他们想要做什么之前选择产品。其次,急于自动化。人们采取一个可以通过示例支持规范的工具,并且他们所做的第一件事就是尝试编写可执行脚本。但他们脚本是什么?他们是否澄清了与利益相关者的意图?是否参与确定示例的利益相关者?他们是否思考了哪种情况是值得自动化的?他们是否在一致的术语上定位用于写作情景?

团队经常会对工具和实践失望,因为他们发现自己不得不一次又一次地抛弃和重写脚本。但这不是一个“工具”问题。

解决方案架构与设计

如果您的申请以这样的方式设计,即需要进行重大的手动努力来实现大多数变化,那么当您自动化过程并开始频繁或“不断交付”时,手动努力的水平可能成为公司的瓶颈。

无人值守的CI / CD管道必须满足所有利益相关者的需求,而无需停止手动审查和批准。作为一般规则,任何需要停止和手动审查的任何东西都可能以次优的方式设计。我们希望“烘焙”一切利益相关者需要,以便自动化不会导致旧问题的快速产生。这可能包括这样的考虑因素:

  • 记录和报告以满足内部和外部审计师
  • 验证遵守行业规定
  • 确认与公司品牌标准的一致性
  • 对知名安全考虑的内置和可验证支持
  • 自动化的欺诈检测
  • 可观察性,支持自动化生产系统监控和恢复
  • 通过适当的日志记录和通知支持自检操作健康
  • 使用仪器方便分析和纠正生产问题
  • 功能切换以启用频繁的部署,包括不完整的功能
  • 松散耦合的组件,可以彼此独立地部署
  • API契约的运行时强制执行
  • Killability,即应用程序不需要特殊的关闭过程,并且在突然停止时不会使数据库和文件处于不一致的状态
  • 接受注入外部依赖项,例如系统日期和时间,数据库连接URL和日志记录服务
  • 始终一致的异常处理
  • 取决于背景的其他考虑因素

您可能指出,声音比任何给定的“业务应用程序”系统中的实际逻辑更复杂。亚博vip9通道是的,这是真的。我们今天已经在做这些事情;我们只是手动这样做。如果我们想要自动化它们,那么必须有代码到位做同样的工作。事实上,一些实际上比典型的商业应用程序逻辑更复杂。亚博vip9通道

您是否担心代码膨胀?尝试在原始开发环境中安装一个典型的业务应用程序。亚博vip9通道使用gradle、bundler或npm等工具运行构建。当工具下载依赖项时,请查看控制台。您可能会注意到,应用程序中只有很少一部分代码是您的应用程序代码。它大部分由库和框架代码组成。现在,您可能需要添加一些逻辑以使您的应用程序对管道友好。这真的很重要吗?

建筑软件

大约在2018年,这似乎是相当明显的,但自动化软件交付管道的一个方面是自动化应用程序的构建过程。这涉及管理软件组件和库之间的依赖关系;运行的工具,如绒毛、编译器和链接器;将二进制文件和资源文件打包成可部署的单元;定义和加载数据存储;以及其他取决于所涉及的技术性质的任务。

通常使用管理依赖关系并生成可部署构件的工具来构建应用程序。但这只是其中的一部分。

代码审查是将应用程序代码中的问题(从结构问题到与标准的一致性)最小化的有效方法。不幸的是,许多拥有自动化交付管道的其他部分的团队仍然使用手工方法进行代码审查。这让他们容易犯人为错误。

当开发人员有他们想要评审的代码时,这些团队通常会以固定的时间间隔或按需安排代码评审。这种方法会导致工作流程的中断和瓶颈,因为授权执行代码审查的个人通常短缺,并且有他们自己的任务。

协作开发方法配对溺爱提供实时的、持续的代码审查,以及从罕见的“高级”团队成员到其他人的知识转移。后者的影响导致标准和人们编写的代码之间的差异更少。

在自动CI流程中包含适当的工具可以覆盖该领域的大部分剩余风险。除了编译、链接和低级自动化检查之外,构建还应该包括样式检查、检查和静态代码分析。

创建环境

我听说过很多球队说他们有一个自动化的CI / CD管道,只能在仔细检查有手动步骤。它们可能必须复制生产数据并修改它以准备测试环境;这通常需要它们来修改测试用例。它们可能有一组预定义的静态环境,不同的开发团队轮流加载他们的应用程序。

为了实现无人值守的软件交付,无论是到登台环境还是一直到生产现场,我们不能在过程中使用手动步骤。测试数据必须根据测试用例所需的条件生成。这样的数据必须设计成适当的应用程序,而不仅仅是反映本月生产中碰巧出现的数据模式。

它不合理(例如)十个开发团队分享(例如)两个静态定义的测试环境,其配置在生产中繁荣不同。旧版本的图书馆存在于环境中,并且其他配置差异导致误报或否定,导致生产的惊喜。

我经常听到人们说,他们无法在整个过程中创建一致定义的环境。他们可能会摆出一张小狗一样的“你知道我是什么意思”的脸,然后搓着拇指和食指做一个表示“钱”的手势,好像这样就足以解释了。

对不起,朋友;这并不能充分地解释它。如果你算算,我是说那种算算特洛伊Magennis唐里昂龙如果这样做,您将看到您无法承担等待一个静态定义的共享环境对您的团队可用的成本,也无法承担发现和修复只有在代码投入生产后才出现的问题的成本。你负担不起有一致的环境。

无人值守的CI / CD管道需要基于在应用程序代码和测试代码的版本控制下维护的配置脚本以满足所有环境。

为了释放美国商业损失计划:“这并不难。你写脚本,你丢失了等待。“

软件测试(检查)

虽然“自动化测试”一词是有问题的,测试自动化在目前仍然是软件交付的强烈焦点。甚至还有一个特别的职称,“自动化工程师”,据我所知,这一点并不特别意味着自动化或工程。

无论您想要拨打什么,拆除手动促进常规功能验证都是连续交付拼图的基本作品。它具有Domino的好处效果,通过确保所有执行的一致性以及通过给予测试仪进行更多时间来执行它们应该做的值而不是手动验证来实现一致的效益。

术语中混淆的一个原因可以是相同的活动和相同的工具可以用于多种目的。例如,硒硒,邮递员,苏普岛,健身或黄瓜一般水平的工具可用于帮助表达客户需求并在利益相关者之间实现共同的理解。

程序员也可以使用相同的工具来帮助设计出合适的解决方案。

然后,它们创建的示例然后将用作回归套件,以防范在前进的现有功能中引入新的错误。

相同的示例或至少相同的工具可用于支持专业测试人员对系统的探索。

当解决方案接近使用期限时,可以使用相同的一组示例来指导替代解决方案的开发。

那么,它是沟通工具、设计工具、回归检查工具、测试工具还是规格说明工具呢?也许这取决于你现在用它做什么。术语不如实质重要:将重复的、可预测的活动自动化,这样您就有更多的时间进行真正的增值活动。

安全审查

当安全专家检查提议的应用程序更改以寻找安全漏洞时,许多组织在其交付过程中都有一个手动审查步骤。对于大多数必要的安全检查,在大多数情况下,可以用自动化取代手动步骤。好的CI/CD管道通常包括一个“安全扫描”步骤,在此过程中,自动化工具会检查代码是否存在已知问题。

定义要使用的工具的规则并不像它声音那么困难。人类安全专家在检查软件时使用一组已知的规则和指南。这些规则和指导方针不是“秘密”。安全专家可以配置或帮助技术人员配置,以扫描漏洞的工具。

没有人可以检查未知问题,即使使用手动方法,因此自动化这个步骤没有风险。

在每个项目的早期就让安全专家参与进来通常被认为是一种好的实践,而不是等到大部分时间和预算都用完之后才让他们有机会执行审查。从那里得到他们的输入到配置自动安全扫描工具是很短的一步。

同样的经验法则也适用于其他治理审查。当评审者使用一组文档化的规则来进行手动评审时,相同的规则通常可以由自动化工具应用。有了这样的自动化水平,项目干系人就可以确信很少有问题会进入生产,并且这些问题可以通过事后的抽查而不是停止交付管道来检测出来。

发布软件

在一个连续部署系统,软件更改自动从提交到交付,没有任何暂停(除非有错误)。在领先敏捷的背景下指南针,这种自动化级别将支持Basecamp 4组织。

在一个持续交付系统、软件的变化一直持续到生产现场,无需人为干预。在LeadingAgile模型中,这个级别的自动化将支持Basecamp 5组织。

通常,当一个组织已经自动化了CI/CD管道的大部分剩余部分时,自动化最后一步是非常简单的。它只是由生成沿途所有其他环境的相同脚本动态生成的另一个环境。

生产环境的其他步骤可能包括蓝/绿部署、淡色部署、烟雾测试、A/B测试等等。

运营

帮助我们建立软件自动交付管道的工具和方法也可以帮助操作。

如果我们可以在几秒钟(或者几分钟)内按需构建环境,那么我们就不需要延长任何给定生产环境的“活动”时间。基础设施可以动态销毁操作系统实例和应用程序组件,并将其创建为虚拟机和/或容器。这可以为最终用户提供100%的可用性,同时简化诸如系统更新、可变需求和安全利用等问题。

云服务提供商聚合日志,以便在托管它的操作系统实例被销毁并重新创建它的操作系统实例中,我们有一个有意义的方式编译的活动,以便以有意义的方式编译,这是一个有意义的方式编译的活动。时代。

一些当代的操作方法包括像代码基础设施和凤凰服务器这样的想法。可以将所有虚拟机设置为没有根帐户。这有助于抵御黑客。当所有给定类型的服务器都是从相同的配置脚本生成时,就不可能存在定义不一致的问题。当服务器经常被销毁和重新创建时,即使不需要部署任何应用程序更改,也不可能有任何配置漂移。

错误的原因不自动化

我已经触动了一些正确的在自动化之前要仔细考虑的原因。但在我的工作中,我有时会遇到一些组织引用错误的原因不自动化。这是人类心理学的奇怪角,可能有兴趣的杆风疹。让我们探索一下。

也许在一个理想的世界里,但不在这里

嗯,当然,那很好理论上但是在现实世界里,这是行不通的。

这是UnitShell的Univernal借口™。在我们可以自动化软件交付过程之前,世界的理想程度如何?好消息是世界不一定是完美的。

我们处在一个受监管的行业

这种担忧通常出现在金融公司,但也可能与其他行业相关,如能源和国防,以及政府组织。

在某些旨在为投资者提供更好安全性的法律通过之后,遵从性对IT组织变得特别重要,包括萨班斯-奥克斯利法案(美国,2002),和格式浸没法案(美国,1999)。

此外,还制定了保护个人信息的条例,包括一系列保护个人信息的指导方针个人身份信息(PII),比如美国出版的那本国家标准和技术研究所(NIST)。最近的一段一般数据保护规范(GDPR)由欧洲联盟扩展了防止个人信息的保护。

许多其他法规也适用于金融机构、程序和交易。所有这些都是为了增强投资者和消费者对经济体系稳健的信心。

对于IT组织来说,与其行业相关的法规通常可以归结为几个相对简单的概念:

  • 确保单独工作单独工作可以改变财务数据;和
  • 确保客户,供应商,合作伙伴等的个人身​​份信息(PII)没有接触到未明确授权的人。

处理第一个问题的方法是确保导致资金流动的任何交易必须由至少两个人进行。这是公司业务运作单位的程序性问题。亚博vip9通道当我们在IT领域编写应用程序来支持这些操作时,我们必须注意这些规定,这样我们就不会设计允许单个人单独修改财务记录的应用程序。

第二个问题影响到我们在IT领域,因为我们必须确保(a)生产系统不清楚地显示PII信息,并且(b)测试数据不包含任何PII。满足这些要求是很容易的。

其他行业的法规通常涉及所提供的产品和服务的安全、产品制造中的环境管理、产品和服务的使用者的安全以及工人权利的保护。其中一些影响了我们在IT部门开展工作的方式。

你可能还记得大众软件工程师的例子被判入狱因为编写代码使车辆欺骗性地通过排放测试。这种情况很少发生,但我们可能会看到这种情况的增加。软件开发人员在编写涉及安全问题的代码时,如在拖拉机挂车上平衡负载、操作医疗设备或驾驶自动驾驶汽车时,必须严格遵守道德规范。

大多数组织实施的概念职责分离帮助他们遵守这些规定。其理念是,任何可能与正式法规、安全或一般道德问题相冲突的东西,都必须由不止一双眼睛去看。

因此,我们得出了不简化软件交付过程的典型借口:职责分离被误解为意味着创建软件解决方案所涉及的每个活动必须由不同的个人或不同的团队执行。例如,一个人同时执行软件功能的编程和测试是不行的。同样,软件开发人员也不能这样做知道规则安全专家用来审查代码的。

这个论点有一个小问题。

这不是真的。

组织可以将开发网络(或子网)与生产网络分开,还可以将测试和生产数据库、后端系统的测试和生产实例、服务器、服务api、大型机lpar和其他资源分开。亚傅体育app开发团队不需要访问生产数据。

它是一个基本错误为组织依赖于生产数据的提取物,以便测试和检查。这是我们领域广泛持有的最令人衰弱的误解之一。它需要消失。必须制作测试数据以与测试用例对齐,以便每次执行测试计划都是相同的。否则,我们也可能不会打扰测试。

在我的经验中,当人们坚持使用生产数据进行测试目的时,事实证明他们并没有真正了解如何进行测试的系统,数据可以如下所示,或者如何在大系统内流动的数据在受抚养系统之间。在这些组织中,手动检查组件与端到端交易之间的系统行为的功能检查。有信心可能可靠地重复测试场景。

不确定性导致恐惧,恐惧导致对测试生产数据的感知依赖。毕竟,系统工作通过生产数据,即使我们不确定为什么。

解决方法是通过使用故意设计的数据创建故意设计的测试用例来消除恐惧的来源。随着我们对系统和数据了解的更多,这很有可能需要随着时间的推移逐步进行。渐进的方法是可以的;静坐不是。

甚至生产支持活动也可以以工程师看不到实际生产的方式组织起来数据即使他们解决了现场生产中的问题系统。它需要一些努力,但更频繁的是,它不值得成本。

但是,但是审计员,审计员!

和你的审计员谈谈,看看他们需要什么。你可能会感到惊讶。通常情况下,他们对实施严厉的规则和程序不感兴趣。他们需要提供证据的报告(a)一个已定义的过程存在,(b)人们正在遵循它。大多数此类信息都可以由CI/CD管道中的各种工具自动生成。

职责分离生产和非生产之间;在软件工作的各个子学科之间。

不需要通过停止工作并等待人来观察来保证遵从性。大多数遵从性需求可以被嵌入到流程中,并自动地得到满足。

我们的产品结合了硬件和嵌入式软件

这篇优秀的文章Yaniv Nissenboim描述了嵌入式软件产品实用的CI/CD管道的价值、工作流程和基础设施。大卫·罗森,在对主题的详细文章,触及遗留支持和监管合规性问题。“遗产”在这个空间中特别重要,因为你永远无法贬低任何在世界上的物理产品中运行的旧版。英特尔的Jakob Engblom,对该主题有很强的兴趣,增加更多的透视图这个话题。

詹姆斯Grenning,嵌入式软件领域的知名领导者,著有嵌入式C语言的测试驱动开发也是作者之一敏捷宣言和早期的采用者极限编程(XP)。多年来,他一直将持续集成和持续部署的思想应用于嵌入式系统,并教授相同的内容。

我不想低估这一领域的挑战,但我也不想默认这种常见的借口,即在嵌入式领域中采用这种方法是“不可能的”或“成本太高”。嵌入式系统目前在几家大公司以这种方式交付,应用范围从农业到航空。没有理由其他字母不能被覆盖。

我们要测试aGazillion.浏览器/设备

浏览器产品和版本的扩散,操作系统平台,具有许多独特特征和网络和移动技术的移动设备意味着无需针对这些客户端的任何置换都无法完全测试这些客户的软件。许多人用这是一个借口不能尝试自动化他们的CI / CD管道。

这位借口让我特别奇怪的是,鉴于实际的功能检查可以发现任何问题,比手动检查更快的问题可能会这样做。您需要检查的更多不同组合和排列,更需要自动化, 不低于。

检查房屋中大量平台和软件版本可能是一个瘫痪的费用。幸运的是,许多公司存在,其唯一的业务是在大量的平台和软件组合中运行彻底的自动化检查。亚博vip9通道这些服务可用于Web浏览器和移动设备。使用它们。

但是代价……代价!确定。看看要花多少钱。然后将其与成本进行比较对您的产品进行足够的测试,并且/或者不能及时手动完成您的测试套件,从而对市场产生影响。

我们在混合中有婴儿床包裹

大多数可观尺寸的组织在生产中运行了家庭成长和第三方应用程序(商业现货系统或婴儿床)的组合。这并不是严格的“遗产”关注,但是当单片架构充满意义时,一些较旧的COTS产品是在一个时代设计的。

其中一些产品旨在成为多种解决方案的平台,如Salesforce,SAP,Siebel,Oracle Financials,Oracle制造以及其他人(没有双关语)。该特征通常会导致人们想要采用敏捷开发方法的组织引起疼痛,该团队负责自主运行的每个托管应用程序,并且能够逐步部署而不影响其他团队。

为嵌入其中一个应用平台工具中的应用程序的自动单元测试套件以及在业务规则引擎,数据仓库,数据多维数据库,数据库存储过程中,与应用相关的应用程序相关的应用程序,以及与应用相关的逻辑,也存在实际问题。亚博vip9通道工具,集成服务器,业务流程编排工具或(是)电子表格。亚博vip9通道

这里主要的理由是成本,而主要的成本是将应用程序拆分为封闭的“平台”产品的各自实例的许可。像往常一样,我建议对缓解这些解决方案的成本进行评估这样做。精益风格的价值流分析可以像往常一样揭示业务成本远远高于预期。亚博vip9通道

一则轶事:几年前,我在一家大公司(在150个国家约有12.3万名员工)工作。在一个业务领域,他们有6个应用程序运行亚博vip9通道在Siebel平台上。有一个事务数据库和一个决策支持数据库,一些自定义工作流和一些自定义表单。每个应用程序都由位于三个地理位置的三个团队支持:一个用于事务数据库,一个用于决策支持数据库和表单,一个用于自定义工作流。

该公司有一个生产的Siebel实例,一个用于测试,一个用于开发。6 - 3个团队必须分时共用开发和测试环境,并且每隔9到12周,他们所有的更改都在同一时间批量部署到生产中。没有办法只回滚其中一个应用程序;要么全部,要么没有。通常这意味着"所有双手准备就绪“因为”没有什么正在工作。“

他们问我如何简化工作流程,并转向更“敏捷”的交付节奏。我告诉了他们他们不想听的答案。第一步是设置18个Siebel实例:每个实例6个用于开发、测试和生产。这将使这六种产品能够相互独立地进行管理。从这一点上看,他们将能够感知到进一步改善的机会;从他们目前的状况来看,机会并不容易。

他们犹豫不决。他们说,许可成本太高了。我煞费苦心地向他们介绍了当前方法的成本分析。他们点点头,说他们理解。他们决定无限期地照常经营。亚博vip9通道

还有很多类似的故事。另一家公司有一个主要的应用程序,它的逻辑被划分为Java代码和Blaze Rules Engine定义。后者在多个应用程序之间共享。他们的Java应用程序依赖于规则引擎,不能独立修改,也不能由相同的开发人员修改。我在WebMethods、BizTalk和你叫它的东西上看到过类似的依赖关系。

有时专门的工具是公司运营的关键部分,但在许多情况下,公司几乎没有使用专门的COTS产品。有人在销售中做得很好,现在公司拥有产品X.我已经看到了一个集成平台的实现,其中含有一些流动的流动,而不是别的。我已经看到了规则引擎实施的支持可能是20个规则,并且规则必须顺序运行,以便推理引擎(值得他们支付的价格)甚至没有使用。我看到了一个实现BizTalk的实现,其中团队写了一个用户退出来路由工具周围的所有流量。该产品已到位,所以批准其购买的经理将不会对他的老板看起来愚蠢;没有善意的亚博vip9通道这类产品的业务案例。这种情况很常见。您可以看看COTS包在您的环境中是如何使用的,看看功能是否可以迁移到“正常”代码中,这样更易于管理。

在所有这些情况下,有一些方法可以减轻对COTS包和依赖于它的应用程序的变更管理对交付周期的影响。“一直走下去”可能并不总是划算的,但考虑实际的改进几乎总是划算的现状

这里的点是:当你遇到第一次挑战时不要停止思考。有时工作很难。它仍然可能有价值。您可能永远不会通过堆栈中的COTS包到10部署一天,但您可以每12周使用每12周的单片部署6个应用程序。那些“额外的”许可证不是额外的;它们是实现自动化部署管道的代价。

我们的系统执行大量的数据分析

数据分析已成为信息系统中的重要领域。关于故意在测试计划周围制作测试数据,我经常遇到它是“不可能”或“不可行”的论点,因为应用程序必须将复杂的算法应用于大数据集。有时数据集是时间依赖的,并且获取测试数据的“唯一方式”是提取实时生产数据并修改它。

你还记得我不久前的一个帖子吗基于物业的测试?在本文中,我得出结论,纸考在某些情况下可能有用,但需要努力定义有意义的数据生成器,这可能使它在大多数情况下成本效益较低。

好吧,看看在这里:一个情况。

当人们认为专门为复杂的数据分析算法制作数据是“不可行的”或“不实用的”时,他们会考虑传统的基于实例的检查。他们是对的。尝试为这类应用程序创建一个全面而有意义的示例集将是一个非常令人头痛的事情。

但它可行的数据发生器,可以基于的数据生成器产生有用的测试数据集属性特征被分析的数据。

在我看来,如果您了解数据的“形状”您的应用程序流程,那么您可以识别该数据的突出属性,并为PBT工具写入数据生成器。你不必自己是一个非常了解数据的人;特别是如果你可以要求吟唱帮助你。如果你了解数据的形状,含义是您根据生产数据提取物进行测试,因为您真的不知道如何测试该事物。这是一个学习机会,不是避免自动化的借口。

我们有雪花服务器

在一个客户端组织中,基础架构支持小组负责大约100台Linux服务器和大约65台Windows服务器。大部分都归为几个类别可以已经得到了一些厨师食谱。少数是支持在过时版本的库中有依赖性的Cots软件包的一次性配置,或者无法支持TLS 2.但只有少数几个。

他们手动管理所有这些实例。没有版本控制下的脚本。一些工程师已经编写了自己的脚本来简化自己的生活,但几乎所有这些脚本都包含硬编码的值和/或要求的对提示的交互式响应。

没有对95%的服务器进行自动化配置的理由是,剩下的5%是雪花。组织中没有人知道如何从零开始构建任何雪花服务器。这些年来,他们一直在不断地修改它们,对配置文件做了一些小小的修改,并应用了补丁。

在我看来,这是一个高风险的情况。那些工程师只要有一个硬件故障就会过一个不愉快的周末。如果我在那里工作,我会更舒服地基于脚本构建和重建雪花服务器,即使每个脚本只对单个服务器有效,这样我们就能理解其中的内容。

在我看来,你必须支持的东西越多,争论越强赞同,支持,受赏识,有利自动化,而不是反向。此外,雪花服务器更加不寻常或独特的雪花服务器是,有价值更有价值,在失败时将使“可执行的构建纸”拉出沟渠。

我们有重要的后端系统

Large organizations that have been around a while often have significant investments in IBM mainframe (zSeries) technologies, and/or IBM midrange (iSeries), HP NonStop (formerly Tandem), and other platforms that don’t readily lend themselves to the “infrastructure as code” approach.

大型机不会在云中运行。为了回应该声明,最近,我的朋友提醒我已加载ZOS的MacBook专业人士。使用32GB的RAM,您可以使用一个缓慢的单用户大型框架上搭载。很酷,但不是真正的解决方案。它的可以想象有一天是大型机可以在云中运行。对于今天的实际目的,它不是一个选择。

那么,我们在哪里?哦,是的:大型机在云中没有运行。那么,我们可以用这些系统做什么?第一步是确定哪个后端系统(如果有的话)需要成为自动CI / CD管道的一部分。该决定必须基于后端应用程序支持的业务操作。亚博vip9通道

与通常的借口相反,这个决定不是技术性的。这取决于业务需要。亚博vip9通道他指的是LeadingAgile指南针,让我们考虑如何交付软件以支持每个Basecamp的业务运营。亚博vip9通道

如果应用程序支持业务操作亚博vip9通道自适应模型的一面,大型机商店(周至数周)的典型的交货时间不会充足。必须减少到几天(Basecamp 3)或分钟(Basecamp 5)的交货时间。

控件上支持业务操作的应用程序亚博vip9通道预测模型的一侧可能会受益于改进的交货时间,或者至少有点自动检查,但可能需要移动到完全自动化的CI / CD管道。几周内的交货时间可能就足够了。

在确定应用程序需要支持频繁和快速的更改以支持业务操作之后,我们可以通过查看应用程序执行的不同类型的处理来进一步细化分析。亚博vip9通道

不要说“不能”。亚博vip9通道业务需求推动它。“必须”这个词胜过“不能”这个词。更好地搞清楚。您可能无法找到开源项目,这些项目执行您需要做的事,但别担心;ZOS是程序员的游乐场。如果你能梦想它,你可以写它。

大型机应用程序是“批处理”或“在线”。批处理应用程序周期性地运行,可能有几个小时,并且通常一次进入大输入数据集,通常通过顺序排序,合并和处理数据。如果在一天内必须部署应用程序逻辑的更改,通常可以通过提高应用程序的自动化测试,而且彼此可以实现这一点。除了正在进行的批处理运行时,部署可以在任何时间或晚上发生。将每日部署循环拟合到批处理运行计划中并不困难。

“在线”应用程序支持交互式事务,业务到业务交易和决策支持系统。亚博vip9通道它们通常可以随时可用于最终用户。他们在控制所谓的时运行远程处理监控事务监视器。代表性产品包括CICS和IMS / TM。

虽然通常不可能将大型机LPAR与基于云的vm同等对待,以实现“将基础设施作为代码”的目的,但实际上没有必要为每个应用程序部署创建一个全新的LPAR。如果有必要,可以“清理”配置,并将应用程序可执行文件移到生产库中。“清理”或“重置”大型机配置通常相当于删除文件,并可能重新启动长时间运行的作业或子系统。实际上不需要重新构建系统,就像在云服务上对Linux VM所做的那样。

对于CICS系统,启动新的CICS实例并销毁旧的CICS实例是可行的,这与我们在云环境中管理vm的方式基本相同。CICS实质上是一种容器,概念上类似于docker或rkt。这是一个容器,但仍然“只是”一个容器。要“部署”修改后的CICS应用程序,我们可以启动一个新的CICS环境,优雅地将客户端通信传输给它,然后关闭旧环境。所需的时间取决于CICS系统在启动时必须初始化的资源数量,但通常大约为10分钟。亚傅体育app

一些客户指出,他们不能让开发团队按需启动CICS区域,因为可变的工作负载可能会影响生产负载和/或使使用超出IBM定价模型中的下一个价格点。在这些情况下,设置固定数量的CICS环境并让开发团队分时使用它们可能是可行的。团队可以关闭、重新配置并重新启动他们暂时“拥有”的环境。这比按需流程的无缝性稍差,但可能有助于控制工作负载和成本,同时仍然提供足够的部署灵活性。

是的,IBM和其他专注于大型机的软件公司为该平台提供CI/CD工具。

所以,这里没有任何借口。虽然存在一些实际限制,但没有真正的理由认为大型机系统不能单独或与企业中的其他平台一起参与CI/CD管道。

结论

有很好的理由在自动化之前进行思考,以免您自动化错误的过程,并最终以高速产生垃圾。另一方面,几乎没有理由证明自动化“所有的事情”在技术上是可行的,在任何行业的任何环境中都是划算的。

您已经从一些组织中听到过一些可怕的故事,这些组织由于自动化计划而产生了糟糕的结果。要抵制诱惑,不要把这些故事作为不在您自己的组织中实现软件交付和部署自动化的借口。认为它通过。

下一个>不要说不
让他们了解你的团队交付能力

评论(1)

发表评论

您的电子邮件地址将不会被公布。必填字段被标记*