现代软件供应链的演化——2016年基于Docker的调查


概要

容器是现代软件供应链中的基础单元。 2016年以“现代化软件供应链变迁”为题的调查结果显示:处于纽带中心的Docker平台是其中一支重要的驱动力量。现代软件开发的策略主要表现有三个方面:向(混合)云方向的转移,向微服务架构的过渡,通过DevOps方式进行软件开发模式的实践。

Docker能满足现代软件供应链中灵活性,可控性,可移植性等这些必需的要求。

每一个业务不论是否在经历着颠覆或者已经被颠覆,他都在努力拥抱数字信息化的改变,他们都在持续交付这些已经在运行的应用,并不断提高整个行业经验。软件供应链的效率已经成为每一个业务绩效的关键指标。这些指标包括灵活,可控,以及他们创建团队和产品的可移植性。所有的这些都可以通过Docker平台以“容器及服务”的模式提供给应用程序以及OPS运维团队。毫无疑问,最终的结果是:Docker的应运而生,而且还成为一支有力的驱动力量。Redmonk(一家针对开发者的行业数据分 析公司:编者注)把这种现象称为“Docker 模式”。

Docker通过可量化的方式提高DevOps的实践,以此来改进应用程序的交付过程。

愈来愈长的发布周期、不断膨胀的代码库、日益增长的开发团队与运维团队之间的裂痕,组织架构上渴望通过应用开发驱动转型来摆脱诸如上述这些软件遗留问题。搜索速度为敏捷开发铺平了道路,也增加了DevOps的实践能力,这不仅仅发生在新的网络公司,传统的软件企业也在转型中。

Docker作为混合云策略的中心,满足用户在本地、私有云和公有云等多环境之间自由切换。

部署在容器上的应用程序可以在任意的平台做迁移,并获得更高的控制权。业务可以在混合云平台或者全部云平台跨多个供应商使用,这样也避免了类似21世纪初的科技寡头局面出现。

Docker也支持微服务架构的交付和现代传统整体化应用程序。

对应用程序开发者来说,另一个爆炸性的增长是大量的web services服务提供的API开始转向微服务架构设计和现代传统的整体化应用程序设计。在现在应用程序的设计中,经常会提供几十个独立的微服务来实现需求,这种设计方式非常灵活,易于变更,即使在复杂的应用程序中也容易管理。Docker从组成和网络到编排和调度都为管理这些应用程序微服务提供了必要的控制管理方法。

在容器管理的供应商中Docker提供了良好的可移植性。

至于编排和管理工具生态系统,被调查者以压倒性的优势都在使用Docker Swarm、Google Kubernetes和Amazon的EC2容器服务。除了前三名以外,还存在其他的一些未知的编排工具。
1.png

主要调查结果

DevOps有以下实践上的变化:开始向云进发,将现存软件按需求改造以增加敏捷性、可控性,满足其可移植性,团队切入使用Docker提供的软件环境。
  1. Docker提供了敏捷,可控,可移植的软件供应链
    2.png
  2. Docker通过更改DevOps实践提高了开发交付的质量
    3.png
  3. Docker可以作为混合云和多策略云的中心,允许用户自用选择公有云、私有云环境。
    4.png
  4. Docker支持微服务架构体系和现存的单体服务应用
    5.png


关于我们的受访者

参与Docker调查的511个被调查者基本覆盖了开发和运维的所有角色:
  • 47%的被调查者是开发者或者担任开发经理。
  • 56%的被调查者所在公司少于100名员工 。
  • 59%的被调查者来自于软件公司,他们分布在不同的行业中。
  • 51%的被调查着他们已经在生产环境部署使用了Docker。


6.png

7.png

8.png

9.png

重要调查结果一:Docker为受访者最新的开发计划提供了所需的敏捷性、控制性和可移植性

要求团队降低开发阻碍是打造更高效软件供应链的第一个步骤。通过减少依赖性和提高效率,企业能获取更富有成效的软件开发过程。Docker平台的敏捷优势(速度和灵活性)已经吸引了开发者,并且开发者了解容器内部的实现机制,懂得如何加速软件开发过程。事实上,超过65%的用户选择使用Docker,归因于它潜在的生产效率和流线型的开发周期。

另外,开发者还被Docker的可移植性效益和任何基础设施都可运行Dockerized程序的能力所吸引,从本地数据中心到公共云,通过大量的网络和存储提供商。实际上,超过42%的受访者表示可移植性是他们使用Dokcer的一个关键性因素。
10.png

可移植性和敏捷性能够使开发者让持续集成(CI)过程变得更高效,但是由于app pipeline 已经变成了“瀑布式”部署导致CI只体现了Docker潜在价值的一半。为了提供急需的管理和控制,一些企业已经尝试使用平台即服务(PaaS)的解决方案和其他的绑定解决方案,但是都以牺牲使用者的可移植性和敏捷性而告终。

针对从开发到生产阶段,想要使用Dock化应用程序来管理应用程序生命周期的企业,重点是实现更好的控制和标准化;Docker容器即服务(CaaS)平台也为其记录了需求;事实上,超过48%的受访者表示他们使用Docker的意图就是为了更好地管理软件供应链。

Docker CaaS 平台提供了IT管理和安全应用程序环境,开发人员可以以自助的方式创建和部署应用程序。一些世界上最有安全意识的企业,已经购买和部署了Docker数据中心用来分发和交付Caas服务,给开发团队带来了方便和灵活性,给运维团队带来了可控性,给应用程序在无任何基础设施带来了可移植性,这一切都依托于从本地数据中心到公共云和大量的网络和存储提供商。

企业正在运用Docker将应用程序部署到生产线

正如RedMonk最近发表在Docker模型崛起的博客中写到:“Docker即将成为行业标准生产平台已经是显而易见的”。Red Monk在文章中指出使用Docker开发的日益流行也表明了Docker很快就会成为开发人员和IT运维人员的标准。调查结果表明,90%以上的受访者表示最初使用Docker 是用来容器化已经存在的APP或者创建微服务。
11.png

但是当容器化的应用程序开始在企业中被使用,IT 运维人员需要找到一种管理这些应用程序的方法。这也就是为什么58%以上的受访人员表示他们在生产环境上有很多应用程序,80%以上的受访人员表示他们将在2016年年底之前推行容器化应用程序到生产环境。现存的部署和2016年的计划部署对比表明受访者在注重不断交付微服务应用到生产环境。
12.png

由于Docker入门简单而且提高生产效率,所以开发者都逐渐开始使用Docker,而且通过原生态的Docker技术,开发者可以非常容易的分享他们的软件,而且在应用或环境之间无冲突的情况下相互依赖。与此同时,IT 运维团队可以只关注安全部署和管理APP的层次。Docker为企业提供了坚实的基础容器环境,是团队在开发和运维上花费更多的时间为企业用户带来价值。

重要调查结果二:Docker 通过优化的 DevOps 实践为应用程序交付流程提供了可量化的改进

各种规模的企业都追求开发速度,试着摆脱原有的软件缺陷和自由的周期性发布,面临不断膨胀的代码,以及开发团队与运维团队的矛盾。通过不得不吸收快速的在语言,框架API开发方面的增长,这样加剧了开发和运维之间的矛盾。多样性质的强调性系统已经不能调和不同依赖已经开发包。

大约一半的受访者已经体验了CI和DevOps,而且他们正在推进这些实践从持续交付到生产环境,其余的受访者也都准备在2016年底争取使用CI平台。
13.png

在软件供应链中的搜索速度受敏捷方法和DevOps实践来解决更多更频繁的变化,提高软件质量减少解决问题的平均时间。Docker是唯一能实现这一转变的,Docker容器的基本控制单元开发和运维允许分离关注点、标准化、简化开发到生产环境管道。Docker提供了开发团队能够利用的语言和工具来标准化应用程序环境。这些都使变更更加简单和易用。这个等式的一边需要Ops来控制,以防止敏捷性变得混乱,战胜那些承诺使用工具的管理者,也保障了不用限制开发工作流、开发语言和开发工具的软件供应链。

较快的交付软件并不做严格意义的评估,但却影响了IT运维和业务。

通过自由的创建的软件,毫不费力的从测试环境到生产环境发布相同的代码,开发者感到更有控制力。由此调查参与者反馈软件发布的频繁度平均上升了13倍。
14.png

Docker通过消除“运行在本地”上的问题,从而加速乐开发到运维整个DevOps的过程,当部署新软件到新的机器时,软件之间的如矩阵一样的依赖问题就暴漏出来了,新的服务器上可能不存在这些软件的依赖包,因从而导致软件安装后无法正常工作。Docker通过容器分离了软件所需的依赖以及其他的类库从而解决了依赖问题。现在我们就可以十分方便的在测试环境完成测试再部署到生产环境。
15.png

因为docker操作便捷,容易隔离问题,方便回滚操作等优势,所以63%的受访企业认为这样减少了他们的平均恢复时间(MTTR),这样保证了软件的质量,也提高了用户体验。
16.png

70%的被调查这认为Docker帮助开发和运维可以更好的管理应用程序。Docker的架构允许将应用程序和基础运行架构分离,这样两个团队的工作就可以完全独立,在开发上不用影响对方。

重要调查结果三:Docker 对混合云/多重云策略至关重要,用户可以自由选择本地、跨云、私有云或公共云环境。

80%的受访企业认为他们使用Docker实现了他们的云平台策略。
17.png

利用Docker最关键的容易化功能,可以将应用程序完全移植到任何环境,实现可跨越多个供应商的服务。这样就避免了如2000年软件巨头一家独大的局面。
18.png

可移植性不仅仅是计算机层次的功能,而且还可以通过跨网络环境实现完整的分布式部署,而此时开发者不用修改任何代码即可实现。这种可移植性也增加了软件管道式部署的速度。
19.png

监测现有应用程序的工作负载也是企业云战略的一个重要组成部分。Docker对现存用用程序进行改造,使他们具有跨平台性能,从而Docker也成为了微服务架构的实践核心技术。在这个过程中,现存的应用程序不仅仅是影子IT(Shadow IT),他们也从公有云中收益。此外,想要把工作负载转移到云计算实现便捷性的企业,得有足够的决心将所有的应用迁移到云上。我们可以通过工具和经验来确保迁移的灵活性,首先要对应用程序进行优化而不用绑定某一个特殊的服务供应商。

重要调查四:Docker可以满足使用微服务形式交付和现存单体式应用交付的方式

另一个重要的影响是开发者方面,开发者面对着web服务API快速增长,也开始转向使用微服务架构交付和现存的单体交付方式并存。应用程序由灵活、敏捷的微服务组成,不过随之而来的是应用管理的复杂性提升。

而Docker正好本认为是最好的微服务交付方式,已经有47%受访者计划在2016年进行实践。
20.png

随着微服务架构在Docker中试水并认为可行,也标志着传统工作负载应用转移到容器环境来支持现存单体式应用,使之可移植成为可能,43%的受访者正打算要做。

现存应用程序的维护负担和原有的软件环境维护是开发团队面临的两大挑战。长期的发布周期和软件旧版本遗留问题发起的频繁变更使移动团队受着双重的压力。
21.png

也许不足为奇的是,Docker被78%的用户用来运行Web应用程序,和APIs和Webserive有关的高达75%。然而70%的用户在运行应用程序服务器和数据库 - 无论传统式和分布式 - 分别被42%和27%的用户运行着。13%的用户使用Docker跑大数据进程(例如Hadoop)
22.png

使用Docker过渡到现代软件开发过程

随着企业开始走向更现代化的软件开发周期,很明显,公司已经在寻找更有效的解决方案,也会考虑调整以前的平台。对开发和运维团队一直在探索的敏捷性、可移植性、可控性来讲,企业也在寻找将云计算、DevOps实践、微服务架构等在企业内落地。

为了实现这一新的现代化APP平台,企业也在寻找具有异构能力的平台,这个平台必须在软件生命周期内通过开发和运维提供的集成工具,支持灵活自由的DevOps需求。团队不再对孤立的工作流、团队、应用程序工具感兴趣。
23.png

调查表明:Docker作为服务平台的容器,加速了平台的标准化和可定制化。当开放平台允许企业集成到现有的系统和企业专用的工作流时,应用程序和工具在容器上被标准化。

原文链接:Evolution of the Modern Software Supply Chain(翻译:张亚龙)

0 个评论

要回复文章请先登录注册