DevOps是近年来推动技术进步的动力。DevOps为我们提供了一个进入未来的通道,在那里,软件技术始终保持最新,一切都可以在眨眼之间完成加载,你再也不会遇到另一个应用程序故障。这怎么可能?密切的团队沟通、快速反馈和关键流程的自动化让DevOps团队能够不断创新,导致传统IT看起来极其笨重而繁琐。今天的软件公司已经到了做出抉择的时候:“采用DevOps,或慢慢死去。”
在进一步讨论这个话题之前,先让我们澄清一下DevOps的概念。DevOps是一种软件交付的整体方法,它统一了软件开发(Dev)和软件运营(Ops)。它涉及软件工程各阶段的自动化和更短的开发周期。Netflix是成功应用DevOps的最著名的公司之一——它能够通过无处不在的自动化来支持公司的快速增长,包括故障自动化(一种名为“Chaos Monkey”的工具通过定期随机关闭服务器实例来测试Netflix应用程序的稳定性)。
话虽如此,DevOps仍然存在一些问题——主要与自动化流程、基础设施不足以及计算能力不足有关。所幸的是,在标记化的基础设施市场、自动化GRID和人工智能的帮助下,有很多项目可用于解决某些DevOps所面临的挑战。在本文中,我们将详细描述它们并将它们与非区块链解决方案进行比较。
DevOps与传统IT:感受差异
采用DevOps的好处包括:处理安全问题所花费的时间将减少50%、故障恢复速度将提高24倍、变更故障率将降低3倍。此外,当今最具适应性和发展最快的科技公司正在使用DevOps来达到接近“随需速度(speed of need)”的目标。他们可以快速获得产品反馈,并以最小的延迟满足新出现的需求。
DevOps究竟与用于创建大多数现有网站的传统IT模型有何不同?
专注的跨职能团队
任何一家采用DevOps的公司都由专门的跨职能团队而不是以技能为中心的孤岛(独立部门,它们之间没有进行充分的沟通)组成。在传统的IT环境中,由三四个孤岛轮流开发新功能,有时候出现返工,需要将功能回退给上一个孤岛。但DevOps团队是自给自足的,它们由专注于一个应用程序的开发人员、测试人员、运营人员和业务分析人员组成。这样一个跨职能的团队可以在不向其他人推卸责任的情况下处理新功能。在准备好进入部署阶段时,工作就算完成了,因此不会在交接上浪费时间。根据1/4-2-20法则(每四分之一的完成时间,可以让生产效率提升2倍,并减少20%的成本),周期时间每减少25%,生产力就会翻倍,并减少20%的运营费用。
频繁的小批量交付
DevOps适用于频繁的小批量交付,而不是每年进行几次大型的发布。从DevOps的角度来看,大批量风险太大、太复杂、难以协调,而小批量可以进行必要的全面测试。如果出现任何问题,可以迅速解决。除此之外,频繁发布小版本可以更好地响应客户的需求。
自动化
DevOps文化倾向于提倡自动化,因为这样可以让团队处理创造性任务而不只是常规任务。系统自动构建和测试代码,并通过管道传递给消费者(已经通过测试)。不过需要注意的是,完全自动化不是必需的。自动化水平取决于每个团队的流程和痛点,过度自动化可能导致不理想的结果。为了达到完美的平衡,每个团队应评估自己的需求,找出瓶颈,并确定优先级——遗憾的是,并不存在适合所有需求的通用方案。
采用DevOps将会面临的挑战
如果DevOps是一种可以带来竞争优势的方法,为什么不是所有人都采用它?它已经存在好几年了,首次出现在2010年,而2018年的情况如下:只有30%的软件公司宣布完全(17%)或几乎完全(13%)引入DevOps,仅22%刚刚开始向这种方法过渡。
当然,最关键的是整个公司的大规模心态转变——从管理层到入门级员工。这就是为什么刚开始引入DevOps会很难以及成功完成实施会更难。大多数企业的开发和运营团队都试图实现相反的目标:鼓励前者进行创新,鼓励后者保持正常运行时间和连续性。要消除二者之间的摩擦并让他们组合在一起并非易事。这就是为什么公司管理层应该通过引入面向协作的目标和促进跨职能培训来转向DevOps。它将帮助Dev和Ops超越他们通常的职责范围,并意识到他们都处在同一个团队中。
是什么阻止DevOps渗透到整个行业?
除了企业文化的转变,DevOps的采用受到了一些不可避免的功利问题的阻碍,这些问题与基础设施、同步和自动化流程有关。沙盒专家Quali进行的调查表明,阻碍引入DevOps的主要障碍是公司文化(14%)、测试自动化挑战(13%)、遗留基础设施(12%)、应用程序复杂性(11%),以及预算限额(11%)。
自动化挑战
测试自动化是DevOps的基石之一:它让持续集成成为可能,并节省了团队的时间,让他们可以专注于更具创造性的工作。测试旨在检查一段代码是否按预期工作,以及它是否满足所有的技术或业务要求。有各种各样的测试类型,这就是为什么手动测试在DevOps流程中会不可避免地成为瓶颈所在。虽然测试自动化需要额外的努力,但绝对是值得的。对于FinTech之类的解决方案或电子商务网站等应用程序来说尤其如此——即使最小的停机时间也会导致重大的利益损失。
自动化测试的一个常见问题是,在资源有限的本地基础设施上运行时,可能会过于耗时。有时候,你甚至可能需要在晚上进行自动化测试,以便在第二天获得结果,甚至等到周末。如此低的速度对于DevOps流程来说是不可接受的,但很少有公司能够负担得起构建强大的本地基础设施的成本。
基础设施挑战
遗留基础设施是很多公司抵制采用DevOps的另一个原因。快速开发(DevOps的特征之一)主要基于微服务架构,与传统架构完全不同。迁移到微服务将大幅增加工作量,在大多数情况下,传统的基础设施需要进行昂贵的升级。
另一个与基础设施有关的问题是DevOps工具与现有IT系统的集成——集成过程很少能够顺利进行,因为涉及的变化太多。例如,Dev和Ops团队通常使用不同的工具和指标,但为了实现真正的DevOps效率,他们必须进行集成和统一——他们需要组成一个跨职能团队。
应用程序的复杂性
DevOps的最佳环境是云,原因很明显:云提供了必要的规模、最佳的速度和最大的灵活性,所有这些通常都无法在有限的本地部署上实现。云环境让开发人员可以更好地控制组件并减少等待时间。除此之外,云环境让DevOps团队能够为分配基础设施创建自助服务方法——这意味着他们不需要等待分配资源。但是,向云迁移并非总是可行的:据调查,44%在内部部署环境中运行的应用程序因为太过复杂而无法迁移到云环境中。
基于区块链的DevOps平台
现在已经出现了很多数字加密项目,以满足该行业对计算资源和基础设施日益增长的需求。它们使用了不同的技术,但都有一个共同点:激励社区发展并作为使用资源奖励的代币。
Buddy
作为最有前途的去中心化DevOps平台之一,Buddy通过提供对两个自动化网格的访问来解决基础设施问题。受信任的高可用私有自动化网格和共享自动化网格可以执行时间密集型和计算密集型自动化操作,甚至整个管道。因此,DevOps团队可以以最高的效率完成他们的工作(并且无需担心基础设施可用性问题)。最重要的是,Buddy支持复杂的企业级应用程序、多云工作流和混合环境。
Buddy用户可以通过受支持的自动化操作来创建管道。目前有80个操作,不过很快会出现更多的操作,这要归功于Buddy市场。这个市场是为了鼓励社区发展和支持有才华的开发者而推出的。第三方开发人员可以向Buddy的生态系统提交自己的自动化操作,可以是有偿的,也可以是免费的。
私有自动化网格是由Buddy实例组成的网络,为DevOps流程的自动化提供按需自动伸缩的基础设施。用户可以在他们认为合适的地方运行Buddy实例:在他们自己的物理基础设施上、私有云或IaaS服务器上。Buddy还可以使用由合作伙伴或SaaS集成(如Google Cloud、Amazon Web Services等)提供的受信任网格。根据不同的负载,Buddy会自动创建新实例,并在不再需要它们时将它们移除。
共享自动化GRID在不需要受信任基础设施的情况下使用。可以向具有可用资源的Buddy实例网络分配时间密集型和计算密集型的任务。运行这些实例的用户将获得每个计算单元的BUD代币。该网格不能用于核心开发,但可用于测试(由数百个Buddy实例来运行测试将花费更少的时间)或其他不需要高度信任级别的任务——例如性能监控或可用性监控。
DevOps工程师还可以在Buddy沙箱的帮助下消除开发瓶颈,他们可以直接在一次性运行环境中从Git仓库运行应用程序或网站。沙箱不需要任何物理服务器或虚拟机。
Buddy支持与以下生态系统集成:Github、Bitbucket、GitLab、Slack、DigitalOcean、Vultr、AWS、Google Cloud、Microsoft Azure等。它还有一个内置的Git,用户可以选择使用它来托管项目。
基于以太坊的BUD代币旨在作为去中心化经济的基础,并在Buddy生态系统中创建积极的反馈循环。如果没有代币,平台就缺乏对参与网格计算进行激励的经济因素,因为法定支付太慢而且效率太低,不足以推动社区的发展。
Fetch.ai
Fetch.ai是一个基于区块链的智能账本(Smart Ledger,下一代分布式账本技术)项目。它为数字世界提供动力,在这个世界中,自主软件代理可以通过出售数据或空闲资源来获得Fetch代币。DevOps团队显然可以从这个市场中受益:这是一种购买计算资源以进行测试、监控或执行其他DevOps时间密集型任务的便利方式。从DevOps的角度来看,它有点类似于上面提到的Buddy共享自动化网格,只是人为干预较少。
这项技术还可以怎么用?简而言之,就是可以在Fetch数字世界中出售数据。物联网设备可以出售对于其他代理来说有用的信息:例如,软件代理可以将车辆挡风玻璃刮水器的使用信息作为气候信息的来源。空闲计算机可以为远程客户执行测试任务或执行其他计算。除此之外,还可以将旧数据接入Fetch并使其成为可销售的资产。
随着时间的推移,Fetch网络可能会扩展并获得巨大的计算能力,因此代理将获得新的数据洞察力。得益于集成到Fetch系统中的机器学习技术,网络能够自己创建宝贵的知识。最终,受信任的数字代理将能够取代人类中间人,并建立全新的行业。数据和基础设施不会像现在这样依赖人类——它们将创造新市场并进行自主销售。
Fetch代币将用作网络中所有交易和操作的内部货币,它们还将作为某些行为的可退还押金,以确保安全以及防止不良行为。
Golem
Golem项目释放了闲置计算机资源的潜力,创建了另一个带有基于以太坊的代币的去中心化市场。Golem网络是一个结合了用户可用资源的全局超级计算机,DevOps团队显然可以有效地使用它来运行密集的自动化任务。然而,这些资源的可靠性和可用性存在疑点:家用计算机(即使放在一起数量很大)是否与Buddy的受信任云基础设施一样可靠?
Golem网络的参与者——包括人类和应用程序——可以请求或销售机器周期。那些共享资源个人电脑或大型数据中心,都可以从Golem网络代币(缩写为GNT)的请求者那里立即获得报酬。沙箱环境提供了必要的安全级别,其中计算与主机系统是完全隔离的。
除此之外,软件开发人员还可以使用Golem生态系统来创建、部署、发行和货币化应用程序。Golem为这些活动提供了应用程序注册表和事务框架。
目前,Golem仍然处于测试阶段,因为它的创建者专注于让它变得更加强大和灵活。他们还计划为开发人员和软件公司添加各种工具,让Golem成为云提供商的可行替代方案。
结论
本文中提到的基于区块链的平台解决了对计算资源的迫切需求,计算资源在未来几年必然会变得更加严峻。虽然传统云提供商在提供基础设施和计算能力方面似乎非常有效,但在社区参与和独立性方面,去中心化解决方案更具前景。一旦它们获得足够的动力,就会开始以自己的方式发展和成长,吸引有才华的开发者,这些开发者将带来新的功能和可能性。人工智能、机器学习和其他尖端技术将推动它们进一步发展——有一天,我们会惊讶地发现,未来已经到来。
基于区块链的平台几乎允许所有人都来参与这个市场,并通过销售闲置资源来赚取代币。这意味着,如果有必要,去中心化平台有可能可以利用全世界所有的计算能力。