Docker是传统的应用发布管理的终结者么?

译者注:使用Docker能真正改善传统的应用发布管理中遇到的问题么?以下是译文:自从2013年发布以来,Docker已经成为每一个操作管理者眼中的最爱。如果你一直与世隔绝,这里恰恰是你错过的部分。


Docker是在一个操作环境地址空间中的分区能力。通过允许分区直接使用宿主的操作系统,即使操作系统位于分区之外(分区在这里称为容器),启动时间得以缩短,管理容器所需要的资源同样得以缩减(如果你熟悉z/OS,你会发现这个概念有点熟悉)



财务人士会喜欢这点,因为获取操作环境licenses的花费会实质性的减少,理论上,每一个非应用部分的组件都能驻留在容器以外。这意味着只需要购买一个Windows licenses,而不是每一个虚拟机上都要购买一个(如果不使用Docker,这是必要的过程)。


概念看似简单,但是如何工作呢?


本质上,一个特殊的文件(称为一个Docker文件),包含一条或多条关于如何创立一个容器的指令。这个Docker文件作为程序的部分,在文件系统中产生容器,其包含一个单独的应用以及相关联的二进制代码。这个容器(文件系统中的一个子目录)作为任意的文件集会被传送到目标环境并在目标环境中利用Docker的运行时库开始运行,运行时库可以通过命令行接口或者一个API(典型的基于REST,但是还有其他的实现)



系统管理员会很喜欢这点,因为容器易于部署(通过XCOPY命令就可以?)和维护(REST接口会很容易地集成到任何现代基础架构管理平台中)。


企业级发布自动化解决方案的需求


很不幸,当人们试图使用它作为真正的应用发布管理的替代品时,这个概念又不行了。我们能够使用每个人在高中学会的六个词中的五个词还描述应用发布管理:


Who: 并不是组织中的任何人都可以将某一个应用部署到某个环境中。实际上,即使对于那些专职从事这个工作的人,也需要其他人的许可才能进行部署工作。


What: 对于那些想真正引入敏捷业务概念的组织,

每一次都部署一个完整的应用也是不可接受的。那些被认为是低风险的工件(artifacts)(如内容更新)可以及时部署,而高风险的工件则需要在进行大量的测试和其他验证工作后,排队等待进行发布。Docker就属于后者,但是还有一些限制,这会在后面提到。


Where: 一个应用从开发到生产所经历的环境经常与部署的目标环境是不同的。这些差异会在应用进行部署以后,通过更改应用的配置来解决。


When: 发布窗口不是一个新概念。甚至在非生产环境中,也需要各自建立发布窗口,因为环境经常被同一个功能或者夸功能的多个团队所共享(例如:测试和开发可能会使用相同的环境)


How: 作为很可能是最难以完全集成到一个组织运行能力中的环节,部署一个应用的过程远不是简单的理解如何安装或者配置它。例如,与一个IT服务管理(ITSM)应用集成,以确保所有的需求改变都已输入并且处于正确的状态,这些被吸纳进部署过程以便操作环境的状态一直被明确的理解。这个会在下面进行详细的讨论。

对于上面的5个疑问词,Docker 只解决了其中的一个,而且是并没有采用最有效的方式。以一个欧洲著名银行为例,他们现在每个月发布的产品已经过千,这也只有在所有发布的产品都不是高风险的才能实现,在这个例子里,这意味着这些工件都是低风险类型。因此,这些类型工件的发布会很迅速,这有助于确保这个银行的客户的资产满足他们的需要。


然而,如果他们在使用Docker,无论这些类型的工件是否获得生产许可,整个应用都需要重建。对于大部分公司来说,直接将未获许可的二进制文件发布到产品中而带来的风险是不可接受的。这只是对于上面5项之一-Docker对于解决其他4项无能为力。


应用发布管理不只是应用


只从应用的角度考虑应用发布管理是很有趣的,而从业务的角度来看,忘记应用是更大场景的一部分。在上面How部分里,提到了ITSM,这不只是发布过程必须要集成的唯一技术。事实上,还有SDLC工具链与一系列适合特定需要的解决方案可供选择:适用于连续集成的Hudson 和Jenkins;用于源代码管理的Git和Subversion;用于工件管理的Nexus和Artifactory;用于配置管理的 Chef 和 Puppet 等等。

此外,在应用的生命周期中,发布应用的过程通常包括针对这过程的治理,但是这却不是该过程的一部分。然而,这些构建应用所要经历的阶段都是必要的,这可以将高节奏进行发布的风险降到最低,这包括许可、验证和其他类型的活动。


自动化是一切的关键


我们提到的每一件事对于应用发布来说都是关键的,但是,最后结果是什么。终端用户需要新的功能,应用开发团队能够以什么样的速度开发出新的功能并把它最终交付到终端用户手上,决定了新的功能能以多快的速度变成附加的收入。


此外,过程的可重复性能够保证应用发布更高的成功率,相反的,失败的部署会消耗你的公司资金,在诊断和修复过程中开发的应用数量也会受影响而下降。过去3年,分析公司的两项研究表明,财富1000强公司因变更、配置或其他与之相关的问题而导致应用中断的成本在$200k-400k/小时。


上述部分中的每一个工具只与应用开发和发布过程的一小部分有关系。类似地,Docker解决了与应用程序发布相关的工件管理,这样就可以简化这些工件的部署,确实如此。这些与其他解决方案的协调能力,必须要通过一个统一的方案来进行管理,这就是应用发布自动化的目标。


总结


总的来说,Docker是一项令人兴奋的技术,它应该被单纯看作是在整个应用程序发布周期中存在的另一种机制。但是它不应该被看作是一个定义良好方法的替代品,它不仅包括“what”,还包括“who”、“where”、“when”以及“how”。


投资于企业级自动化解决方案,实现关键任务应用的自动发布,不但可以提高部署应用的速度,而且能提高公司数字化转型的程度,随着更多的应用发布通过自动化完成,也会为公司带来更多的盈利。




全天候聚焦IaaS/PaaS/SaaS最新技术动态,深度挖掘技术大咖第一手实践,及时推送云行业重大新闻,一键关注,总览国内外云计算大势! 




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525839.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Mesos/Docker构建数据处理平台

本文深入介绍了去哪儿网利用Mesos和Docker构建私有云服务的全过程,分享了从无状态应用向有状态应用逐步过度的经验与心得。平台概览2014年下半年左右,去哪儿完成了有关构建私有云服务的技术调研,并最终拍定了Docker/Mesos这一方案。下图1展示…

Mesos容器引擎的架构设计和实现解析

引言:提到容器,大家第一时间都会想到Docker,毕竟Docker是目前最为流行的容器开源项目,它实现了一个容器引擎(Docker engine),并且为容器的创建和管理、容器镜像的生成、分发和下载提供一套非常便…

阿里的盔甲、未来20年发展的动力以及对未来的洞察

刚刚变身迈克尔杰克逊,用“经济体”、“理想主义”等词刷屏的马云又在教师节那天,赶到2017世界物联网博览会,为阿里的物联网站台。过去18年以来,淘宝网、天猫、聚划算、全球速卖通、阿里巴巴国际交易市场、1688、阿里妈妈、蚂蚁金…

MySQL InnoDB Memcached Plugin在Oray公司的实践

1、应用背景介绍我所在职的Oray是一家提供各种互联网服务且具有海量用户的企业,我们也一直在实践各种新技术新架构;缓存方面,我们从memcached、ttserver、redis等都有较多应用,其中redis在我们的dns体系中有着很深度的集成使用&am…

联想超融合平台oracle,联想AIO超融合云一体机解决方案.pdf

联想超融合云一体机解决方案--THINKCLOUD AIO联想云服务集团资深产品经理 赵舜尧2015年6月 zhaosy42015 LENOVO RESTRICTED. All rights reserved.1产品篇2客户收益篇 联想 技术篇THINKCLOUD AIO4测试篇32015 LENOVO RESTRICTED. ALL RIGHTS RESERVED.联想超融合云一体机解决方…

网易数据运河系统NDC设计与应用

【导语】 NDC是网易近一年新诞生的结构化数据传输服务,它整合了网易过去在数据传输领域的各种工具和经验,将单机数据库、分布式数据库、OLAP系统以及下游应用通过数据链路串在一起。除了保障高效的数据传输外,NDC的设计遵循了单元化和平台化的…

oracle数据库pfile文件,Oracle pfile/spfile参数文件详解

Oracle pfile/spfile参数文件详解在创建数据库时,SPFile文件中部分必须考虑的参数值:基本规则a.在SPFile文件中,所有参数都是可选的,也就是说只需要在初始化参数文件中列出那些需要修改的参数,其它保持默认值即可。b.S…

想学区块链技术?来这!

2017年,区块链技术可谓是最热的宠儿。在国务院日前印发《“十三五”国家信息化规划》中,区块链技术和人工智能、虚拟现实、大数据、无人驾驶交通工具、基因编辑等新多项高新技术创新被定义为战略性前沿技术超前布局,在政府大方向认同的情况下…

oracle管理员登录报错,关于Oracle使用管理员账号登录失败的问题

我在本地建的Oracle数据库在调试自己写的存储过程的时候提示缺少 debug connect session 权限,一般情况下根据这个提示直接用管理员账号登录进去,执行grant debug connect session to 你的用户名这样的sql就行了,但是问题来了,当我…

万字长文|深度剖析Service Mesh服务网格新生代Istio

Service Mesh新秀,初出茅庐便声势浩荡,前有Google,IBM和Lyft倾情奉献,后有业界大佬俯首膜拜,这就是今天将要介绍的主角,扛起Service Mesh大旗,掀起新一轮微服务开发浪潮的Istio! 今天…

linux c多进程多线程,linux下的C\C++多进程多线程编程实例详解

linux下的C\C多进程多线程编程实例详解1、多进程编程#include #include #include int main(){pid_t child_pid;/* 创建一个子进程 */child_pid fork();if(child_pid 0){printf("child pid\n");exit(0);}else{printf("father pid\n");sleep(60);}return 0…

避免大规模故障的微服务架构设计之道

作者:Pter Mrton 译者:Jackyrong 本文首先介绍微服务架构存在的风险,然后针对如何避免微服务架构的故障,提出了多种有效的微服务架构中的方法和技术,其中例如服务降级、变更管理、健康检查和修复、断路器、限流器等。…

linux下进程监听端口,linux下查看监听端口对应的进程

方法一1.通过lsof命令查看PIDipv4[roottest proc]# lsof -Pnl M -i4COMMAND PID USER FD TYPE DEVICE SIZE NODE NAMEjava 1419 1401 10u IPv4 6793357 TCP *:8453 (LISTEN)AutonomyD 6147 1401 6u IPv4 7597365 TCP *:20003 …

linux 内核裁剪的具体过程和方法,Linux内核裁剪的具体过程和方法

Linux内核裁剪的具体过程和方法这是我前段时间自己整的一份,内核功能:能够完成系统的基本功能,上网,收发邮件等,支持xwindows图形界面。在menuconfig中配置:详细介绍内核配置选项及删改情况第一部分&#x…

AI 线上峰会 | 人工智能技术解析与实战

10月28日, SDCC 2017“人工智能技术实战线上峰会”将在CSDN学院以直播互动的方式举行。 如今人工智能已不单单是发表学术论文、刷新正确率的竞赛,抑或全民参与的新闻事件,它早在为各行各业的先行者们创造着实实在在的利润和商业价值。而且&am…

linux mysql 存储过程乱码,mysql存储过程中 乱码问题解决办法

中文乱码无论在何时都是一个头疼的问题,mysql的存储过程参数也同样存在这个问题。1、直接使用insert into语句没问题,能够正常插入汉字。2、把insert into语句移到Procedure中后,就无法插入汉字了。在客户端软件中插入的汉字总是为乱码&#…

五阿哥钢铁电商资深运维工程师手把手教你这样玩企业组网

虽说干的是信息化智能化的行当,但每个IT工程师都必定踩过“IT系统不智能”的坑。就拿企业组建局域网来说,为了对网络接入用户身份进行确认,确保用户权限不受办公地点变更的影响,许多IT工程师都习惯开启 “手动模式”和苦逼的“加班…

linux程序 option,long-option.c/解析命令行参数

#include //继续ing。。。#include "version-etc.h"//初始化结构体static struct option const long_options[] {{"help", no_argument, NULL, h},{"version", no_argument, NULL, v},{NULL, 0, NULL, 0}};这里贴一下从网上找到的中文解释(出自h…

预告:Intel、Hulu、阿里、京东、携程等大数据实战直播

前言:由CSDN主办的SDCC 2017之大数据技术实战线上峰会将在CSDN学院举行。作为SD系列技术峰会的一部分,本次线上峰会秉承干货实料(案例)的内容原则,将邀请圈内顶尖的布道师、技术专家和技术引领者,共话大数据…

Linux添加gcc软连接,linux静态库,动态库和硬链接,软连接

静态库1、命令gcc -c a.c b.c生成a.o和b.o;2、命令ar -r libname.a a.o b.o生成包含名为libname.a的静态库;3、命令gcc main.c libname.a可以在main中链接静态库libname.a。动态库(共享库)1、命令gcc -c a.…