每个企业的软件产品都多多少少用了许多工具。我们的一些企业用户报告他们在整个产品化过程中使用了50多个工具,这包括从代码的开发到产品的发布。对于今天的大多数开发组织来说,这些工具是由商业和开源(OSS) 技术所组成的。
您可以发现您的软件开发和运维的团队已经在使用诸多的开源工具 - 从编程语言,基础设施和技术堆栈,开发和测试工具,项目管理和缺陷跟踪,源代码控制管理,持续集成(CI),配置管理,以及更多 - 开源 (OSS) 无处不在。
这些年开源技术,库和框架的激增极大地促进了软件开发的进步,提高了开发人员的效率,以及工具集的灵活性和可定制性,从而可以支持不同的用户场景以及开发人员的偏好。
提高生产率和鼓励文化自治和共享所有权——你想让团队使用他们选择的工具。话虽这么说,自从出现敏捷开发,我们注意到大型公司在允许工程师自主选择和按时交付中做了一定权衡,即在软件交付的生命周期中所使用的所有技术保持一定程度的管理,可见性和治理。并且随时间的推移这个问题越来越难——因为独特并高效的新工具日趋被创建并采用解决越来越多精细的问题。
企业处理应用的关键任务是需要一定级别的控制,不仅是低消耗(通过改进利用工具、基础设施等)或者加快速度减少周转时间(流线型的或标准化的流程) ,还是——更重要的是——使用一种方式保证可操作性、合规和满足SLAs(SLAs为企业为了满足客户的需求和期望, 与客户之间或企业内部部门之间所设定的服务水平协议)
尽管你使用的开源工具是免费的并能加快你的工作进程。但是如果开发端没有沉淀任何技术,这将会带来的风险。如果有一天你所管理的生产环境下的应用出现了问题,又或者暴露了一个涉及安全或可控性的角度问题,你将无法解决。
我想提出两个关键挑战,当软件管理者面临使用开源软件(OSS)作为他们的软件开发和产品发布过程中的一部分时,他们如何在使用开源软件的同时减少开源软件可能带来的风险。
在大型的企业的现实的软件生产过程中,会涉及成百上千的内部项目,应用,相关团队,相关基础设施节点,他们之间的关联关系异常复杂。所有上述部分又使用不同的开源工具(OSS)和工作流程 — 在种情况下,软件管理者正面临在可管理,可视化,易扩展,通用性方面的挑战。
企业包含众多的单点工具(解决特定任务的工具)也创造了一个运维的自动化(筒仓的自动化)问题。在这种情况下,工作的每一部分都使用不同的工具,并且为工序的下一步做准备,这些工作都需要输出,分析,传递给不同的团队和工具。这些工作涉及的人工和容易出错的传递方式都是妨碍企业DevOps(运维开发)的效率的因素之一。——因为这些工作不只降低你的工作效率,还会带来风险增加管理成本。
事实上你工作的过程包括很多针对特定任务的最佳工具,这几乎是不争的事实,(大部分)情况下是好的理由。但在运维自动化角度都是不必要的。
企业DevOps急需一个标准化的方式来协调,自动化的管理跨组织流程的几十个工具。在你希望开发者使用他们熟悉的工具时,你也希望能够管理软件交付的端到端流程,维护具有灵活性能够兼容他们需要使用的新工具,优化包含许多团队和项目的负责组织的工作流程,提高生产效率。
这就是为什么如今的企业选择集成他们的工具链到端到端的DevOps自动化发布平台中。为了加快你的工作流程,更好的支持整个过程的管理,你需要一个平台,该平台可以提供一个层级高于(或低于)任何基础设施或特定工具/技术的服务,能够集中管理并调配你所有的工具,环境和应用。这允许灵活的管理当下(或适应未来)每个团队使用的特定工具,与此同时也尝试将所有工具集中在一起消除自动化运维遇到的问题,并提供跨组织的,可视化的,标准化的,可控化的服务。
开源软件不只流行在你的工具链中,还流行在你的编码和基础设施中。当今许多工具集成开源软件和使用开源库,或者依赖于开源技术方案。不完全估计,三分之一以上的软件编码使用了开源组件,有些软件甚至70%的部分依赖于开源代码。伴随着开源软件的使用率增加,一些潜在的安全漏洞和问题也在增加(想想Heartbleed,Shellshock 和 POODLE等)
商业软件与开源软件一样也会存在安全bug。减缓这种风险,你需要确保你对你的基础设施做出适当地反应,并且快速修复问题或补上任何可能出现的隐患。
通过编排所有的工具,并在开发(Dev)和运维(Ops)上自动化你的端到端处理,DevOps发布的自动化平台会加速你在这些问题上的处理时间——因此,你可以快速开发,测试,和部署你的更新。
此外,它还会给你的应用,环境和管道级数,提供历史记录和状态的简单可视化,这极大地简化了你的响应。你可以很容易地确定哪个版本的应用程序的部署环境,定位出问题的地方,你还可以更快地推出你的更新,且更持续,并可以重复部署。
当管理IT组织和企业向数字化方向发展,公司的IT部门领导应该适当的支持同时使用开源技术和商业技术作为他们工具链的一部分,考虑如何把合适的系统变的更加企业化,易管理和更安全。
怎么确定在何处使用开源软件,当开源软件中有潜在漏洞或者需要定位潜在的系统瓶颈怎么办?在开始优化之前,你一定要清楚你应用的生命周期。对整个流程都十分清楚在一些庞大而繁杂的组织里十分困难。大型复杂的组织是很难概括整体的流程的。我经常见到一些对整个流程不熟悉的项目管理人,缺少对整个流程的认知。CIO(chief information officer首席信息官)需要和他的团队一起敲定每个点的流程和工具链,从代码提交到产品上线整个流程。这对查找系统瓶颈,定位问题,低效率等问题来说都十分关键。
之后,与你的团队一起选择工具(不管是不是开源的)一定要最适合正在解决的问题。考虑如何协调所有这些工具作为一个集中平台的一部分。考虑协调所有这些工具作为集中化平台的一部分。通过管理,跟踪并给所有工具,任务,环境,数据流在管道中的输送和端到端的DevOps自动化支持扩展提供可视化,给不同团队以灵活性,使系统级视图和跨组织管理适应复杂的企业管道。
随着文化的改变,打破“自动化孤岛”,让破除Dev和Ops间的孤岛前进了一大步,并且统一了流程使分享成为公司的目标:让有价值的软件更快地交付给你的用户。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务