分类 观点 下的文章

谷歌是开源领域领先的贡献者之一,但是这个搜索巨头不是所有的开源许可证都喜欢。

来自多伦多的报道:Marc Merlin 从 2002 年起就在谷歌担任工程师,至今已经做了许多开源和 Linux 相关的工作。在本周召开的 LinuxCon 北美峰会上,Merlin 发表了演讲,为大家揭示了谷歌是如何使用开源和为开源做贡献的。

“没有开源软件就没有今天的谷歌”,Merlin 说。

Merlin 讲到,谷歌早期回馈到开源社区的资源有限,谷歌的第一代软件全都是写给内部用的,最初并不是为开源而设计的。他接着补充说,事实上开源并不是一件简单的事。也就是说,谷歌早期的软件最初并没有准备开源,不过谷歌发表了技术性论文描述了使用的方法和代码,以便其他人也可以用同样的原理来实现。

google open source

Marc Merlin at LinuxCon North America

在各种开源技术领域,谷歌早期的贡献主要是错误修复。

“我们通常是第一个发现并修复那些只在我们这个量级出现的错误的”,Merlin 说。

到现在,Merlin 说谷歌已经为 Linux 内核贡献了超过 5000 个补丁,补丁涵盖了从小的修复到完整的驱动程序和类似容器这样的子系统。

随着谷歌在开源领域的努力,现在已经在 GitHub 上发布了超过 3000 个开源项目。为了以法律的角度来管理整个过程,Merlin 说谷歌有六个人专门在内部从事使用和发布开源软件的合规管理。

为了保证法律上的一致性,谷歌将所有外部的开源代码存储在一个第三方体系内。Merlin 补充说,谷歌只允许使用谷歌能够遵循的许可证的开源软件。其中一个不能接受的许可证是 AGPL (Affero General Public License),它是一个互惠的许可证,要求使用该代码需提供一个到源代码的链接。

“确保我们没有在任何对外的产品中使用 AGPL 代码的代价太高,相较而言,不如找一个限制性更少的替代品或我们自己写一个”,Merlin 说。

对于那些贡献给谷歌项目的代码,谷歌要求开发者接受一个 贡献者许可协议 Contributor License Agreement (CLA),该 CLA 主要是让谷歌可以对贡献的代码重新颁发许可证,并为谷歌提供代码的专利授权。

“你仍然拥有你的代码,你只是授予谷歌一个许可而已”,Merlin 说。

从根本上说,几乎所有的主要软件,即使是开源软件,都是在基于镜像的容器技术出现之前设计的。这意味着把软件放到容器中相当于是一次平台移植。这也意味着一些程序可以很容易就迁移,而另一些就更困难

我大约在三年半前开展基于镜像的容器相关工作。到目前为止,我已经容器化了大量应用。我了解到什么是现实情况,什么是迷信。今天,我想简要介绍一下 Linux 容器是如何设计的,以及谈谈镜像签名。

Linux 容器是如何设计的

对于基于镜像的 Linux 容器,让大多数人感到困惑的是,它把操作系统分割成两个部分:内核空间与用户空间。在传统操作系统中,内核运行在硬件上,你无法直接与其交互。用户空间才是你真正能交互的,这包括所有你可以通过文件浏览器或者运行ls命令能看到的文件、类库、程序。当你使用ifconfig命令调整 IP 地址时,你实际上正在借助用户空间的程序来使内核根据 TCP 协议栈改变。这点经常让没有研究过 Linux/Unix 基础的人大吃一惊。

过去,用户空间中的类库支持了与内核交互的程序(比如 ifconfig、sysctl、tuned-adm)以及如网络服务器和数据库之类的面向用户的程序。这些所有的东西都堆积在一个单一的文件系统结构中。用户可以在 /sbin 或者 /lib 文件夹中找到所有操作系统本身支持的程序和类库,或者可以在 /usr/sbin 或 /usr/lib 文件夹中找到所有面向用户的程序或类库(参阅文件系统层次结构标准)。这个模型的问题在于操作系统程序和业务支持程序没有绝对的隔离。/usr/bin 中的程序可能依赖 /lib 中的类库。如果一个应用所有者需要改变一些东西,就很有可能破坏操作系统。相反地,如果负责安全更新的团队需要改变一个类库,就(常常)有可能破坏面向业务的应用。这真是一团糟。

借助基于镜像的容器,比如 Docker、LXD、RKT,应用程序所有者可以打包和调整所有放在 /sbin、/lib、/usr/bin 和 /usr/lib 中的依赖部分,而不用担心破坏底层操作系统。本质上讲,容器技术再次干净地将操作系统隔离为两部分:内核空间与用户空间。现在开发人员和运维人员可以分别独立地更新各自的东西。

然而还是有些令人困扰的地方。通常,每个应用所有者(或开发者)并不想负责更新这些应用依赖:像 openssl、glibc,或很底层的基础组件,比如,XML 解析器、JVM,再或者处理与性能相关的设置。过去,这些问题都委托给运维团队来处理。由于我们在容器中打包了很多依赖,对于很多组织来讲,对容器内的所有东西负责仍是个严峻的问题。

迁移现有应用到 Linux 容器

把应用放到容器中算得上是平台移植,我准备突出介绍究竟是什么让移植某些应用到容器当中这么困难。

(通过容器,)开发者现在对 /sbin 、/lib、 /usr/bin、 /usr/lib 中的内容有完全的控制权。但是,他们面临的挑战是,他们仍需要将数据和配置放到 /etc 或者 /var/lib 文件夹中。对于基于镜像的容器来说,这是一个糟糕的想法。我们真正需要的是代码、配置以及数据的隔离。我们希望开发者把代码放在容器当中,而数据和配置通过不同的环境(比如,开发、测试或生产环境)来获得。

这意味着我们(或者说平台)在实例化容器时,需要挂载 /etc 或 /var/lib 中的一些文件或文件夹。这会允许我们到处移动容器并仍能从环境中获得数据和配置。听起来很酷吧?这里有个问题,我们需要能够干净地隔离配置和数据。很多现代开源软件比如 Apache、MySQL、MongoDB、Nginx 默认就这么做了。但很多自产的、历史遗留的、或专有程序并未默认这么设计。对于很多组织来讲,这是主要的痛点。对于开发者来讲的最佳实践是,开始架构新的应用,移植遗留代码,以完成配置和数据的完全隔离。

镜像签名简介

信任机制是容器的重要议题。容器镜像签名允许用户添加数字指纹到镜像中。这个指纹随后可被加密算法测试验证。这使得容器镜像的用户可以验证其来源并信任。

容器社区经常使用“容器镜像”这个词组,但这个命名方法会让人相当困惑。Docker、LXD 和 RKT 推行获取远程文件来当作容器运行这样的概念。这些技术各自通过不同的方式处理容器镜像。LXD 用单独的一层来获取单独一个容器,而 Docker 和 RKT 使用基于开放容器镜像(OCI)格式,可由多层组成。糟糕的是,会出现不同团队和组织对容器镜像中的不同层负责的情况。容器镜像概念下隐含的是容器镜像格式的概念。拥有标准的镜像格式比如 OCI 会让容器生态系统围绕着镜像扫描、签名,和在不同云服务提供商间转移而繁荣发展。

现在谈到签名了。

容器存在一个问题,我们把一堆代码、二进制文件和类库放入其中。一旦我们打包了代码,我们就要把它和必要的文件服务器(注册服务器)共享。代码只要被共享,它基本上就是不具名的,缺少某种密文签名。更糟糕的是,容器镜像经常由不同人或团队控制的各个镜像层组成。每个团队都需要能够检查上一个团队的工作,增加他们自己的工作内容,并在上面添加他们自己的批准印记。然后他们需要继续把工作交给下个团队。

(由很多镜像组成的)容器镜像的最终用户需要检查监管链。他们需要验证每个往其中添加文件的团队的可信度。对于最终用户而言,对容器镜像中的每一层都有信心是极其重要的。

作者 Scott McCarty 于 8 月 24 日在 ContainerCon 会议上作了题为 Containers for Grownups: Migrating Traditional & Existing Applications 的报告,更多内容请参阅报告幻灯片


via: https://opensource.com/bus/16/8/introduction-linux-containers-and-image-signing

作者:Scott McCarty 译者:Tanete 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

25 年前,一个芬兰的大学生在一个邮件列表中分享了他的项目:

From: [email protected] (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Message-ID: mailto:[email protected]
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki

Hello everybody out there using minix —

I’m doing a (free) operating system (just a hobby, won’t be big and
professional like gnu) for 386(486) AT clones. This has been brewing
since april, and is starting to get ready. I’d like any feedback on
things people like/dislike in minix, as my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons)
among other things).

I’ve currently ported bash(1.08) and gcc(1.40), and things seem to work.
This implies that I’ll get something practical within a few months, and
I’d like to know what features most people would want. Any suggestions
are welcome, but I won’t promise I’ll implement them :-)

Linus (torv…@kruuna.helsinki.fi)

PS. Yes — it’s free of any minix code, and it has a multi-threaded fs.
It is NOT protable (uses 386 task switching etc), and it probably never
will support anything other than AT-harddisks, as that’s all I have :-(.

“就是个个人爱好”,他说,“不会像 gnu 那样庞大而专业。”

这个孩子并不知道他的操作系统将永远的改变了软件世界。

今天,Linux 统治了服务器操作系统。它也是 Android 的基础——统治了手机操作系统。而且,它还是 100% 自由而开源的。

让我们回溯时光,看看 Linux 这 25 年来的 25 个少为人知的真相:

真相 1:在这个 Linux 基金会的协作项目里有 1.15 亿行代码。而与之相比,Windows XP 只有 0.45 亿行代码

真相 2:Linux 内核项目是世界上最活跃的开源项目。它平均每天会接受 185 个补丁。

真相 3:每年大约有 4.1 万人参与开发 Linux,如果要给他们发薪水的话,差不多每年需要 50 亿美金。

真相 4:Linux 基金会为了让 Linus Torvalds 继续开发 Linux,每年给他发 1000 万美金的薪水。他的净资产已达 1.5 亿美金。

真相 5:尽管加起来有这么多的钱,还有那么多运行在 Linux 上的系统, 但是 Linus 仍然工作在家里,哦,还有他的猫在陪着他。下图是他在他的站立式工作桌前工作的照片:

真相 6:在 Linus 还在芬兰军队服役时,他那时从事弹道计算,他买了一本 Andrew Tanenbaum 的《操作系统:设计与实现》。那本书介绍了 Minix ,这是一个用于教育用途的简化版 Unix,正是这本书开启了 Linus 的 Unix 思想之路。

真相 7:虽然 Linux 的第一版全是由 Linus 写就的,但是他最初的贡献仅占今天全部的代码的不到 1%。他说他现在忙于合并代码而没空自己写代码了。

我没有一个五年计划,也没有登月计划。我很高兴我周围的人可以看着星星说“我要去那里!”,但是我会看着脚底下,把那些我前行时会掉进去的坑填上。
—— Linus Torvalds

真相 8:其它的软件界著名人物,比如比尔盖茨、扎克伯格都放弃了他们的学业而投身于事业之中。而 Linus 不仅在 Linux 取得了一定成功之后继续上学,而且一直念到了硕士毕业。

真相 9:虽然 Linus 创造了 Git,但是他从不通过 GitHub 接受补丁,即便 Linux 也放在 GitHub 上,而且有多达 35000 个星

真相 10:Linux 的吉祥物是一个名为 “Tux” 的企鹅:

真相 11:来自各行各业的公司的开发者们给 Linux 贡献了代码,以下是按贡献进行的排名:

公司变更数量占总数比例
英特尔1438412.9%
红帽89878.0%
“无”85717.7%
“未知”75826.8%
Linaro45154.0%
三星43383.9%
SUSE36193.2%
IBM29952.7%
Consultants29382.6%
Renesas Electronics22392.0%

真相 12:世界上 97% 的超级计算机运行在 Linux 上,包括 NASA 的集群。

真相 13:SpaceX 在其 Merlin 火箭引擎中使用了一个特殊的容错设计的 Linux,帮助完成了 32 次空间任务

真相 14:2009 年德国慕尼黑政府从 Windows 切换到了 Linux。他们声称在软件许可证费用上大约节约了 1000 万欧元。不过这个切换让他们在生产效率方面损失不小。

真相 15:Linux 可以运行在仅售 5 美元的微型树莓派计算机上。

真相 16:Linux 已经成为世界之王了吗?《泰坦尼克号》是首部使用 Linux 服务器制作的大片。

真相 17:虽然视频游戏开发商 Valve 的创始人 Gabe Newell 公开宣称他认为 Linux 是游戏的未来,但是他的公司基于 Linux 的 Steam Machine 游戏机却失败了。相比 2010 年,使用 Linux 玩游戏的人更少了。

真相 18:Dronecode 是一个 Linux 无人机项目。大约有一千家公司在这个系统的基础上开发他们的无人机产品。

真相 19:丰田和猎豹计划将来在他们的汽车中使用 汽车级 Linux(AGL)

真相 20:Linux 有很多发行版,大多数发行版都是基于别的发行版的。最流行的发行版是 Ubuntu,它是基于 Debian 的。

真相 21:Red Hat 是一家开发针对企业的 Linux 发行版的公司。它是开源软件领域最大的公司,今年准备达成营收 50 亿美元的目标

真相 22:Linux 并不一定需要图形界面。许多开发者都是使用命令行来操作它的,比如 Bash。你也可以从很多种图形界面中选择一个,比如 Xfce 和 KDE。你可能听说过 “Xubuntu” 这个词,它的意思是 “Ubuntu with Xfce” 。你想必能猜出 “Kubuntu”的意思吧?

真相 23:Linux 使用的是 GPL 许可证。

“大多数软件的许可证都为了夺走你分享和修改它的自由。相比之下,GNU GPL 许可证力图捍卫你分享和修改自由软件的自由——以确保软件对它的任何用户都是自由的。” 
—— GNU GPL 序言

真相 24:Linux 采用 “类 Unix”设计,它的单体 Linux 内核控制着文件系统、网络和进程管理。剩下的功能部分由模块来控制——大部分来自 GNU 项目

真相 25:即使是微软的 Windows ,这个 Linux 的最大的竞争对手,也在拥抱 Linux。它最近将 Ubuntu Bash 集成到了 Windows 10 之中。

赠品真相:Linux 的灵感来自于 Richard Stallman 的 GNU 项目,它是自由软件运动和黑客伦理。你可用从 Steven Levy 的经典著作《黑客》中了解到这些以及其它比如 Apple I 计算机等重要项目的历史。

此外,这里还有一份对 Linus 的简单采访,他谈及了 Linux 和 Git,以及他是如何创造他们来解决他自己的问题的。

让我们期待接下来 25 年的 Linux。开源软件将继续打造一个更完美的世界!

Linus Torvalds 和他的朋友们

虽然对 Linux 正式生日是哪天还有些争论,甚至 Linus Torvalds 认为在 1991 那一年有四个日子都可以算作 Linux 的生日。但是不管怎么说,Linux 已经 25 岁了,这里我们为您展示一下这 25 年来发生过的 25 件重大里程碑事件。

1991:Linus Torvalds 向世界宣告 Linux 诞生

这封邮件是 1991 年 8 月 25 日 Linus 发在 Minix Usenet 新闻组的,这个日期通常被认为是 Linux 的生日。那时候 Linus 还没有什么名气,他说它的新操作系统“只是一个兴趣,并不想着像 GNU for 386(486) AT 那么庞大和专业。”

1992:第一次 Linux 之战

Andrew Tannenbaum 是一位操作系统专家,也是当时著名的 Minix 操作系统的作者,这是一个用于教学用途的 Unix 版本。Andrew 声称 “LINUX 是过时的”,从而打响了 Linux 的第一次操作系统之战。在由此而来的论战中,Linus 发表了一个至今看起来仍然正确的观点,“如果 GNU 内核(指 Hurd,这是另外一个尝试建立自由的类 Unix 操作系统的项目)去年春天就已经好了的话,我绝不会启动我的项目:事实上它根本没有完成,估计永远也完成不了。Linux 能胜出的很大原因就在于它现在就能用!”

1993:Slackware Linux

这时已经有了一些早期的 Linux 发行版,比如 MCC 和 Yggdrasil Linux,但是 Patrick Volkerding 的 Slackware 其中最成功的一个,而且直到今天它仍然在不断更新和有人使用。

1993:Debian Linux 项目启动

最流行的社区版 Linux:Debian Linux 项目启动了。今天,它是 Mint、Ubuntu 以及许许多多的流行的 Linux 发行版的上游发行版。

1994:Red Hat Linux 诞生

Marc Ewing 创建了 Red Hat Linux 公司,随后 Bob Young 买下了 Ewing 的公司,并与他自己的公司合并,重组为 Red Hat——这是当今最成功的 Linux 公司。

1995:Linux 大会召开

Linux 召开了其首次商业会议 Linux Expo。今天 Linux 方面的大会越来越多了,仅在美国每年就会召开十多场全球性或地区性的 Linux 会议。

1996:KDE

第一个主流 Linux 桌面系统 KDE 项目启动。

1996:SUSE 公司创建

同年,继 Slackware 和 Red Hat Linux 之后,SUSE 这个来自欧洲的 Linux 公司发布了其首个独立的 Linux 发行版。

1997:GNOME

GNOME 桌面项目启动。今天,它和 KDE 成为了 Linux 上最重要的两个桌面系统。

1998:万圣节备忘录

微软开始敌视 Linux。Eric S. Raymond 是一位早期的 Linux 及开源领袖,他披露了这份万圣节备忘录),其中展示了微软视 Linux 为重大威胁,开始制定它的反开源战略和反对 Linux 的活动。然而还不到十年,微软就改变了初衷。

1999:Corel Linux 桌面

Corel 发布了其第一个主流 Linux 桌面。虽然没有成功,但是它为其它流行的 Linux 桌面发行版指明了道路,比如 Ubuntu。

1999:Linux 与 Windows 的服务器之争

Linux 与 Windows NT 首次在文件服务器方面展开竞争,Linux 获胜。 Linux 与 Windows 服务器操作系统之间的战争开始了。

2000:IBM 为 Linux 投资 10 亿美金

2000 年的时候,IBM 宣布将在下一年对 Linux 投资 10 亿美金。这已经被证明是 IBM 有史以来最明智的投资。

2001:Linux 2.4 发布

经过了几次延期之后, Linux 2.4 发布了。随着这个版本,Linux 成为了可以与 Solaris 和其它的高端服务器操作系统相提并论的操作系统了。

2003:SCO Linux 战争开始

由 SCO Unix 公司和 Caldera Linux 公司组成的 SCO 公司开始翻 Linux 的旧账,起诉 IBM 和其它公司,指控 Linux 抄袭 Unix。虽然这个公司最终破产,但这场官司困扰了 Linux 的商业发展很多年。

2004:Ubuntu 来了

Ubuntu 创建!它架构于 Debian Linux 之上,Ubuntu 成为了一个非常流行的 Linux 桌面操作系统,同时也是最重要的云端 Linux 发行版之一。

2004:Linux 统治超级计算机

世界上最快的超级计算机中超过半数运行着 Linux。而到了 2016 年,仅有少数超级计算机没有运行 Linux。

2005:大企业拥抱 Linux

任何对 Linux 成为主流的怀疑都被 Linus Torvalds 出现在《商业周刊》封面上所击碎。头条?显然是 Linux Inc. 。

2007:Android 出现

由谷歌和一些硬件厂商组成的开放手机联盟发布了 Android。它现在已经成为了最流行的终端用户操作系统,运行在超过 10 亿的智能电话上。

2008:证券交易所换到了 Linux 上

纽约证券交易所和世界上许多著名的证券交易所一样切换到了 Linux 上,将其作为核心操作系统。Linux 没有变成大企业,但是成了巨大的业务。

2011:Watson 赢了 Jeopardy

IBM 的 Watson 计算机运行在 Linux 上,赢得了 Jeopardy 智力挑战,为智能专家系统订立了新的标准。

2011: Chromebook 兴起

谷歌发布了第一台 Chromebook: CR-48。它运行着基于 Gentoo-Linux 的 ChromeOS。到 2015,Chromebook 的销售额已经超过了运行着 Windows 的笔记本

2012:云运行在 Linux 上

IT 基础设施从服务器和数据中心移动到了云端,而云运行在 Linux 上。即使是在微软 Azure 上,2016 年的时候超过 1/3 的虚拟机运行在 Linux 上

2012:Red Hat 营收首次达到 10 亿美金

Red Hat 成为第一家年收入达 10 亿美金的开源公司。而在 2016,它成为首家达到 20 亿美金的 Linux 公司。

2014:微软爱 Linux

谁说豹子不能没有斑点的?微软新任 CEO Satya Nadella 说,微软爱 Linux。这个公司通过在他们的云端和公司内部支持 Linux 和开源软件证明真爱。

当我刚刚开始用 vi 文本编辑器的时候,我憎恨它!我认为这是有史以来设计上最痛苦和反人类的编辑器。但我还是决定我必须学会它,因为如果你使用的是 Unix,vi 无处不在并且是唯一一个保证你可以使用的编辑器。在 1998 年是如此,但是直到今天 vi 也仍然是可用的,现有的几乎每个发行版中,vi 基本上都是基础安装的一部分。

在我学会能使用任何功能前,我已经在 vi 上花费差不多 1 个月的时间,但是我仍然不喜欢它。不过那时我已经意识到有个强大的编辑器隐藏在这个古怪的外表后面。所以我坚持使用它,并且最终发现一旦你知道你在干什么,它就是一个快的令人难以置信的编辑器。

“vi” 这个名称是 “ 可视 visual ” 的缩写。在 vi 出现的时候,行编辑器是很普遍的,能一次性显示并编辑多个行是非同寻常的。Vim,来自“Vi IMproved”的缩写,最初由 Bram Moolenaar 发布于 1991 年,它成为了主要的仿 vi 软件,并且扩展了这个强大的编辑器已有的功能。Vim 强大的正则表达式和“:”命令行语法开始于行编辑和电传打字机时代。

Vim,有 40 年的历史了,有足够的时间发展出海量而复杂的技巧,即使是懂得最多的用户都不能完全掌握它。这里列出了一些爱 Vim 的理由:

  1. 配色方案:你可能知道 Vim 有彩色语法高亮。但你知道可以下载数以百计的配色方案么?在这找到些更好的
  2. 你再也不需要让你的手离开键盘或者去碰触鼠标。
  3. Vi 或者 Vim 存在任何地方,甚至在 OpenWRT 里面也有 vi(好吧,其实是在 BusyBox中,它挺好用的)。
  4. Vimscript:你可能会想重映射几个键,但是你知道 Vim 有自己的编程语言么?你可以重新定义你的编辑器的行为,或者创造特定语言的编辑器扩展。(最近我在定制 Vim 用于 Ansible 的行为。)学习这个语言最佳的切入点是看 Steve Losh 著名的书《Learn Vimscript the Hard Way》。
  5. Vim 有插件。使用 vundle(我用的就是它)或者 Pathogen 来管理你的插件来提升 Vim 的功能。
  6. 插件可以将 git(或者你选择的 VCS)集成到 Vim 中。
  7. 有庞大而活跃的线上社区,如果你在线上提问关于 Vim 的问题,肯定会有人回答。

我一开始讨厌 vi 的可笑之处在于,这 5 年来不断的在尝试新的编辑器中碰壁,总是想找到“一些更好的”。我从来没有像讨厌 vi 一样讨厌过其它的编辑器,现在我已经使用它 17 年了,因为我想象不出一个更好的编辑器。额,或许有稍微好一点的:可以尝试下 Neovim -这是未来的主流。看起来 Bram Moolenaar 将会把 Neovim 的大部分融入到 Vim 第 8 版中,这意味着将会在现有的代码基础上减少 30%、更好的代码补全功能、真正的异步、内置终端、内置鼠标支持、完全兼容。

在本文作者在多伦多的 LinuxCon 演讲中(LCTT 译注:LinuxCon 是 Linux 基金会举办的年度会议),他解释了一些在你可能错过的、过去四十年增加的杂乱的扩展和改进。这个内容不适合初学者,所以如果你不知道为什么“hjklia:wq”是很重要的,这就可能不是讲给你听的。它还会涉及一点关于 vi 的历史,因为知道一些历史能帮助我们理解我们的处境。关注他的演讲能让你知道如何使你最喜欢的编辑器更好更快。


via: https://opensource.com/business/16/8/7-reasons-love-vim

作者:Giles Orr 译者:hkurj 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

那些熟悉 DevOps 的人通常认为与其说 DevOps 是一种技术不如说是一种文化。在 DevOps 的有效实践上需要一些特定的工具和经验,但是 DevOps 成功的基础在于企业内如何做好团队和个体协作,从而可以让事情更快、更高效而有效的完成。

大多数的 DevOps 平台和工具都是以可扩展性为设计理念的。DevOps 环境通常运行在云端,并且容易发生变化。对于DevOps 软件来说,支持实时伸缩以解决冲突和摩擦是重要的。这同样对于人的因素也是一样的,但弹性合作却是完全不同的。

跨企业协同是 DevOps 成功的关键。好的代码和开发最终需要形成产品才能给用户带来价值。公司所面临的挑战是如何做到无缝衔接和尽可能的提高速度及自动化水平,而不是牺牲质量或性能。企业如何才能流水线化代码的开发和部署,同时保持维护工作的明晰、可控和合规?

新兴趋势

首先,我先提供一些背景,分享一些 451 Research 在 DevOps 及其常规应用方面获取的数据。云、敏捷和Devops 的能力在今天是非常重要的,不管是理念还是现实。451 研究公司发现采用这些东西以及容器技术的企业在不断增多,包括在生产环境中的大量使用。

拥抱这些技术和方式有许多优点,比如提高灵活性和速度,降低成本,提高适应能力和可靠性,适应新的或新兴的应用。据 451 Research 称,团队也面临着一些障碍,包括缺乏熟悉其中所需的技能的人、这些新兴技术的不成熟、成本和安全问题等。

在 “Voice of the Enterprise: SDI Q4 2015 survey” 报告中,451 Research 发现超过一半的受访者(57.1%)考虑他们稍晚些再采用,甚至会最后才采用这些新技术。另一方面,近半受访者(48.3 %)认为自己是率先或早期的采用者。

这些普遍性的情绪也表现在对其他问题的调查中。当问起容器的执行情况时,50.3% 的人表示这根本不在他们的计划中。剩下 49.7% 的人则是在计划、试点或积极使用容器技术。近 2/3(65.1%)的人表示,他们用敏捷开发方式来开发应用,但是只有 39.6% 的人回应称他们正在积极拥抱 DevOps。然而,敏捷软件开发已经在行业内存在了多年,451 Research 注意到容器和 Devops 的采用率显著提升,这是一个新的趋势。

当被问及首要的三个 IT 痛点是什么,被提及最多的是成本或预算、人员不足和遗留软件问题。随着企业向云、DevOps、和容器等转型,这些问题都需要加以解决,以及如何规划技术和有效协作。

当前状况

软件行业正处于急剧变化之中,这很大程度是由 DevOps 所推动的,它使得软件开发变得越来越横跨整个业务高度集成。软件的开发变得不再闭门造车,而越来越体现协作和社交化的功能。

几年还是在小说和展板中的理念和方法迅速成熟,成为了今天推动价值的主流技术和框架。企业依靠如敏捷、精益、虚拟化、云计算、自动化和微服务等概念来简化开发,同时使工作更加有效和高效。

为了适应和发展,企业需要完成一系列的关键任务。当今面临的挑战是如何加快发展的同时降低成本。团队需要消除 IT 和其他业务之间存在的障碍,并在一个由技术驱动的竞争环境中提供更多有效的战略合作。

敏捷、云计算、DevOps 和容器在这个过程中起着重要的作用,而将它们连接在一起的是有效的合作。每一种技术和方法都提供了独特的优势,但真正的价值来自于团队作为一个整体能够进行规模协同,以及团队所使用的工具和平台。成功的 DevOps 的实现也需要开发和 IT 运营团队之外其他利益相关者的参与,包括安全、数据库、存储和业务队伍。

合作即平台

有一些在线的服务和平台,比如 Github 促进和增进了协作。这个在线平台的功能是一个在线代码库,但是所产生的价值远超乎存储代码。

这样一个协作平台之所以有助于开发人员和团队合作,是因为它提供了一个可以分享和讨论代码和流程的社区。管理者可以监视进度和跟踪将要发布的代码。开发人员在将实验性的想法放到实际的产品环境中之前,可以在一个安全的环境中进行实验,新的想法和实验可以有效地与适当的团队进行沟通。

更加敏捷的开发和 DevOps 的关键之一是允许开发人员测试一些东西并快速收集相关的反馈。目标是生产高质量的代码和功能,而不是浪费时间建立和管理基础设施或者安排更多的会议来讨论这个问题。比如 GitHub 平台,能够更有效的和可扩展的协作是因为当参与者想要进行代码审查时很方便。不需要尝试协调和安排代码审查会议,所以开发人员可以继续工作而不被打断,从而产生更大的生产力和工作满意度。

Sendachi 的 Steven Anderson 指出,Github 是一个协作平台,但它也是一个和你一起工作的工具。这样意味着它不仅可以帮助协作和持续集成,还影响了代码质量。

合作平台的好处之一是,大型团队的开发人员可以分解成更小的团队,可以更有效地专注于特定的组件。它还提供了诸如文件共享这样的代码之外的功能,模糊了技术和非技术的贡献,增加了协作和可见性。

合作是关键

合作的重要性不言而喻。合作是 DevOps 文化的关键,也是在当今世界能够进行敏捷开发并保持竞争优势的决定因素。执行或管理支持以及内部传道是很重要的。团队还需要拥抱文化的转变---迈向共同目标的跨职能部门的技能融合。

要建立起来这样的文化,有效的合作是至关重要的。一个合作平台是弹性合作的必要组件,因为简化了生产活动,并且减少了冗余和尝试,同时还产生了更高质量的结果。


via: http://devops.com/2016/05/16/scaling-collaboration-devops/

作者:TONY BRADLEY 译者:Bestony 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出