持续交付和软件产品部署问题





本文由“ CI / CD”课程负责人Konstantin Bryukhanov编写在其中,康斯坦丁(Konstantin)揭示了与在IT公司中部署软件产品代码有关的许多问题点,并从最佳国际实践中收集了建议。






在IT运营中,最迫切的方向就是不断交付和部署的调整和提供。技术和方法不断发展,工具也在不断完善。因此,最新的交付和部署要求包括变更测试的就绪性和连续性,为质量检查团队准备和设置测试环境。



技术上的突破和免费软件已导致组织CI / CD流程的方法发生了重大变化。向新原则的过渡极大地影响了企业文化,员工的需求技能以及在组织中工作的原则,从而导致了软件开发领域的大规模变革。



云解决方案变得越来越重要。持续的软件交付需要开发,测试和运营团队之间的有效协作,而云非常适合这种协作。



但是,在复杂的分布式拓扑中执行的部署阶段容易出错,通常需要手动进行故障排除。连续交付流程的产品部署阶段通常会产生瓶颈,并会对DevOps流程的有效性产生负面影响。



连续交付使您能够以最有效,最安全的方式实现自动化测试增量软件更改和快速部署更新。这种方法使用户有信心在生产环境中使用最新版本的代码,而程序员所做的更改可以在几小时甚至几分钟内到达客户手中。



让我们考虑在项目中实现CI / CD的最常见方案:



  1. 开发团队发布了该产品的新版本(以前版本的新功能或错误修复)。
  2. 持续集成(CI)服务通过一系列测试来验证新代码,这些测试包括语法,单元测试和回归测试等多个测试级别。
  3. , (CD).
  4. (, ) , (staging), , .
  5. stage- CI/CD , .
  6. .




这种情况是最一般的,涵盖了开发和运营团队的大多数需求,但是仍然存在一些问题,例如:



  1. 替换文件通常,您需要更新或替换配置文件或重新生成一些静态内容。在这种情况下,用户可能会收到错误,直到流量从旧软件版本切换到新软件版本为止。如果部署失败,则存在文件不兼容的风险。
  2. . , , . . , - , - .
  3. . . , , .. . , - , , .. .




值得注意的是,即使在接近理想的环境中也可能出现上面列出的问题,但是实施DevOps方法的主要困难之一是,对于持续交付和产品部署过程的外观没有单一的了解。许多IT公司对DevOps知之甚少,有时他们根本不了解这种方法,而其他公司已经拥有历史解决方案,因此他们必须建立新的流程。考虑到对Devops专家资格的高要求以及他们在劳动力市场上的短缺,雇主经常被迫使用已经掌握的资源,并将Devops的任务交给新手工程师。结果,系统中存在更多弱点。



如果在没有正确理解方法论的情况下使用CI / CD,而没有用于构建基础结构和交付代码方法的分析方法,则会出现以下问题:



1.人为因素。第一个也是最重要的风险与人为因素有关。假设有一种情况,有必要配置更多与现有服务器相​​似的服务器。如果进行了先前安装或设置的专家由于某种原因(患病,退出等)当前不可用,并且没有准备详细的说明,则情况将变得更加复杂。在这种情况下,每位新专家都必须完全研究设置服务器的整个过程,同时要保证没有错误的余地。此外,不可能准确估计建立并保证成功所需的时间。



这还包括与以下事实相关的风险:该方法的作者犯了一个错误,忘记了用测试覆盖流程,或者根本没有考虑到某些事情,而他的后继者也没有注意到。



还应该记住,公司经常开发多个项目,而IT运营部门通常是一个,而一名运营工程师则负责多个项目。如果没有单一的方案和概念,那么将以不同的方式构建不同团队中的流程,这将使公司内部Devops的后续开发复杂化,并为运营工程师进入另一个项目提供了较高的门槛,在该项目中,已经使用的流程与他所使用的流程不同较早。



2.非幂等方案...幂等性是持续交付和代码部署方案的关键属性,尤其是在基础结构部署中。工程师必须确信,每次执行脚本时,在重播同一脚本时,结果将得到唯一保证,预期和不变。通常,在公司中实施Devops时,工程师试图开发业务解决方案,并且可能没有考虑幂等性或根本不了解此要求。在这种情况下,公司会收到定时炸弹。有可能将意外的代码传递到生产设备。例如,如果某人为一个项目更新了CMS模块,从而影响了其他项目,那么这是不希望的。



3.敏感数据的存储和访问的组织。 Devops方法中用于存储秘密数据,限制权限,组织网络和用户访问的最重要点之一。到目前为止,还没有统一的公认实践和工具来解决此问题,并且工程师必须每次进行研究,具体取决于基础结构的当前组织和所采用的限制访问的方法。因此,在企业中实施Devops方法变得很复杂,因为不可能明确地找到适合您特定情况的解决方案,并且使用他人的做法并不总是可以保证安全性。



4.定义预算模型,更适合瀑布方法。



5.高安全性要求。因此,不可能将国家IT项目的基础架构置于商业,外国公司(例如亚马逊,微软)的责任范围内。



6.需要维护大量的“遗留代码”,“遗留基础结构”。与大量遗留系统集成的需求。



因此,在企业中构建Devops的过程可能会伴随许多问题,而并不总是解决为其创建的问题。



重要的第一步是放弃与服务器的关系,因为它是难以定制的基础架构的独特元素。从手动服务器配置过渡到自动化的集中式基础架构管理。配置每个服务器的过程应以易于阅读,可更改且可以进行多次安全重用的配置的形式描述,以提供明确的保证结果。工业协调器系统的示例是Chef或Ansible。这些系统使您能够以最低的成本管理大量服务器。



下一个重要步骤是应用自动化测试尽可能覆盖正在开发的代码的功能(软件和基础结构)。换句话说,拥有已部署的基础结构但没有自动化测试,开发过程的瓶颈将是及时验证功能。使测试过程自动化应该从实际编写软件代码(单元测试),在负责构建软件的服务器上应用主要测试以及对服务器配置的测试开始。这将减少软件质量保证团队的工作量,并显着减少软件通过管道的时间。



最后的逻辑步骤是从所有服务器集中收集和分析日志文件及时通知所有利益相关者并主动监控整个基础架构的状态。



以上准则将帮助您构建可处理密集型开发过程的弹性,可扩展的基础结构。 DevOps的实施需要每个人的参与,从测试和开发到经理和运营。在每个阶段,都需要对过程进行持续的回顾性分析,因为由于更改配置时出现随机错误,系统会完全停止工作。需要改进遥测技术,以更好地检测错误并进行恢复,并保护部署管道并实现管理变更目标。这将使您在实施DevOps计划时获得管理层的最大支持,创建更友好的工作环境,这样,任何参与者都可以随时随地学习-这不仅可以帮助每个绩效者实现目标,而且可以使组织成功。



在3个月的在线课程“ CI / CD”中,将了解云提供商的体系结构,学习自动化代码分析和搜索漏洞,并学习如何从三个最大的提供商那里定制构建,测试和安装应用程序的过程该计划是为具有管理经验的专家设计的-特殊的入学考试将帮助您确定您是否有足够的培训准备。






阅读更多:






All Articles