本文要点
- 我们已经亲眼目睹了容器编排和 Kubernetes“赢”得了战场。我们认为服务网格将成为开发者新的聚焦点。Kubernetes 仍然是构建混合云(hybrid-cloud)的基础——实现原生的云代理现在已经变成了反模式。
- 人们对开发者体验(Developer Experience,DevEx)的感兴趣程度与日俱增,开发者体验旨在逐步消除软件交付过程中存在的摩擦,最小化将想法变成可运行代码这一过程的痛点。
- 人们对混沌工程——在“混沌原则”中被定义为“分布式系统的试验学科,为的是让系统具备在混乱生产环境下生存的能力”——的感兴趣程度也在增长。站点可靠性工程(Site Reliability Engineering,SRE)和谷歌的客户可靠性(Google’s Customer Reliability,CRE)也是值得我们关注的领域。
- 我们普遍认为 Unikernel 已经无法在主流软件交付领域取得一席之地,类似的,引导性的应用程序似乎也已经走向了衰弱。
InfoQ 和 QCon 主要关注处于创新者(Innovators)、早期采用者(Early Adopters)和早期大众(Early Majority)阶段的技术。Geoffrey Moore 所说的早期市场是由“技术狂热爱好者和想要赢得先机的远见者”组成的,从根本上说,我们就是要找出与早期市场相匹配并有可能“跨越鸿沟”走向大众的技术。该想法的初衷来自于对 Everett Rogers 的研究,Rogers 是传播学领域的专家,他在《创新的扩散》( Diffusion of Innovations )一书中对上述的理论进行了阐述,并广为流传。这本书最早出版于 1962 年,截止到 2003 年已经出到第五版。
继之前的一篇文章 Cluture and Methods之后,这篇文章主要介绍我们对运维领域的看法,包括 DevOps 和云计算。我们在之前的那篇文章里写道:
对于图中靠右边的技术,你可能会在 InfoQ 上找到很多相关的内容——在这些技术刚出现的时候,我们对它们进行了报导。当个人、团队和企业要使用这些技术时,创新者和早期采用者的经验可以作为指导。
图中靠左边的是现在出现的新兴技术,创新者和早期采用者正在使用这些技术,我们致力于报导这些内容,将这些技术想法带给我们的读者,他们就可以知道需要研究哪些新技术,或者观望这些技术将如何发展。
自上次总结以来,该领域出现的一些重大变更就包括了 Kubernetes 容器编排的“胜利”,尽管一些主要的云平台似乎要把这些细节抽离出去。我们认为服务网格技术将会成为开发者新的聚焦点,目前的服务网格框架有 Envoy、Istio、Conduit 和 Linkerd(这两个都来自 Buoyant),除此之外还有 NGINX 的 nginmesh。
混沌工程——在“混沌原则”中被定义为“分布式系统中的试验学科,为的是让系统具备在混乱生产环境下生存的能力”——的感兴趣程度也在增长。站点可靠性工程(Site Reliability Engineering,SRE)和谷歌的客户可靠性( Google’s Customer Reliability ,CRE)也是值得我们关注的领域。
我们普遍认为 Unikernel 已经无法在主流软件交付领域取得一席之地,类似的,引导性的应用程序似乎也已经走向了衰弱。
文章的第一张图片是 2018 年第一季度的趋势图,而下面这张是 2017 年第四季度的趋势图。
下面的内容来自InfoQ 云计算频道和DevOps 频道编辑之间的内部对话。
Charles Humble (总编)
你们认为容器编配现在发展得怎样——它还在增长吗?Kubernetes 赢得胜利了吗?Unikernels 现在还值得一提吗?
Manuel Pais (InfoQ DevOps 主编,DevOps 交付顾问)
Kubernetes 着实是打了一场胜仗,它的市场还在增长。我觉得它仍然处于早期采用者阶段,不过增长得很快。
我会把 DevEx 归入创新者阶段。或许以后还会出现“OpsEx”,但我不确定现在是不是应该把它加进来。
我感觉 Unikernels 仍然无法像 Docker 那样被广泛采用,我会把它归入创新者阶段。
近来,人们谈论较多的是心理安全,尽管它可能属于企业文化的范畴,而不是 DevOps。它似乎应该处于早期采用者阶段。
多云基础设施即代码(或者叫 Terraform)没有出现在图中,但我觉得它应该处于早期大众阶段。
其他的变化如下:
- ChatOps ——> 早期大众
- 容器安全解决方案 ——> 早期大众
- 自助服务平台 ——> 早期大众
- 持续部署 ——> 被移掉了?人们都知道持续交付,而不是持续部署,似乎这个词已经不用了
- 企业 DevOps ——> 早期大众
- 容器 ——> 晚期大众(也就是会被移除了)
- General DevOps ——> 晚期大众(也就是会被移除了)
- 基础设施即代码 ——> “旧”的基础设施即代码(Puppet、Chef 等)现在已经处于晚期大众阶段,但我认为 Terraform 还处在早期大众阶段
- 我认为应该再加上管道即代码 ——> 早期采用者
Daniel Bryant (咨询 CTO)
在编配器方面,Kubernetes 赢得了战场,但局势也在发生扭转。在我看来,AWS Fargate 的发布预示着平台将会取代 DevOps 来运行这些框架。服务网格与简化的声明式运维模型(例如,开发者只需要指定 CPU 和内存数量,而不需要配置整个 Kubernetes YAML 文件)以及带有智能 canary 的持续交付将会成为开发者新的关注点。
我同意 Manuel 关于 DexEx 的说法,DevEx 应该处于创新者阶段。我也认为 OpsEx 有了一定程度的发展,而且我们也看到了人们的注意力越来越多地放在了运维工具上,如 Istio、Terraform 和 AWS CLI 等。一些工具早已存在,不过它们要么太过笨重,要么太过面向人类(将需求转化为脚本)。
我也同意 Manuel 关于 Unikernels 的看法,尽管我认为目前 Unikernels 缺乏的是具有影响力的应用。主流的容器已经能够满足我们 80% 的需求,而大部分人只使用其中的 20%,他们将应用程序丢进容器,根本不去考虑安全和性能问题。我认为 Unikernels 在物联网领域可能有机会一展拳脚,随着 AWS 和 Oracle 再次推出他们的裸机服务,有些企业可能会运行自己的 Unikernels 管理程序——或许是为了解决专门或遗留的技术问题?
我也赞同关于心理安全问题的说法。
我也很赞同关于混合云的说法,不管是在基础设施层还是在服务层。
关于趋势图的变更,我也赞同 Manuel 的说法,不过有一个例外:
- ChatOps ——> 早期采用者(Atomist 是该领域真正的大玩家,只是他们还没有大举进入该市场)
另外,我对趋势图的看法是这样的:
- 引导性应用程序 ——> 它仍然值得一提吗?
- 编配 ——> 早期大众
- 服务网格 ——> 创新者
- 全栈跟踪 ——> 早期采用者(如 OpenTracing、AWS X-Ray 和 Lightstep)
- GitOps/DiffOps ——> 创新者(WeaveWorks 与谷歌在这方面展开了合作)
- 自动化 / 智能 canary ——> 创新者
- ClusterOps、AppOs、AppDev 的独立控制面板 ——> 创新者(KubeCon 上展现了很多该领域的创新)
- Ops 洞见和告警机器学习 ——> 创新者(如 Lightstep、AWS GuardDuty)
- 日志聚合 / 分析 ——> 早期采用者或早期大众
- 全球双活数据库运维 ——> 早期采用者(Cosmos、Spanner、DynamoDB)
- 混沌工程 ——> 创新者(Gremlin 是目前唯一的商用级别的工具)
- 价值驱动架构或运维 ——> 创新者(高效云架构的设计和运作与成本有着越来越紧密的联系,需要引起运维人员的注意)
- 声明式基础设施验证 ——> 创新者 / 早期采用者(CapitalOne Cloud Custodian、HashiCorp Sentinel、AWS Config Rules)
Richard Seroter (InfoQ 云计算主编,Pivotal 高级产品总监)
我的天,这些问题都回答得很好,没有什么是我不同意的。
我们有 CI/CD,不过我会再加上“管道基础设施”,我觉得它应该归入创新者或早期采用者。我想把数据 DevOps 也归入创新者或早期采用者,因为有很多人想看到 DevOps 准则被应用到存储、网络和安全领域。
Chris Swan (DXC.technology 全球交付组织部门的 CTO)
我觉得 Manuel 和 Daniel 差不多都说到点上了,不过我再补充几点:
Unikernels——几天前,Justin Cormack 发了一篇博文,他发现,“我们能够买到的产品单元大小是由供应商决定的,这可能是阻碍 Unikernels 得到广泛应用的原因之一,因为供应商提供的虚拟机大小通常会大于紧凑型 Unikernels 应用程序所需要的大小,而稍小一点的虚拟机又容易受到其他虚拟机的影响”。
CD 中的 D 指的是交付,而不是部署——CD 已经走过了早期大众阶段,它已经被很多正规公司所采用,在这些公司里,直接部署应用到生产环境被认为是违反职责分工原则的。所以,对于进行持续部署的企业来说,其实就是持续交付。如果你要采用持续交付,并进行完整的持续部署,应该不是什么大问题。
Kubernetes 无疑已经赢得了战场,EKS 在最后一场抗争中举起了白旗。我不确定 Fargate 是否有那么重要,但关于容量分配和计费(按虚拟机大小计费模型和按功能调用计费模型之间的空白)确实有值得我们思考的地方。在可访问性和助益性方面,Kubernetes 仍然有很长的路要走,这也就是为什么会出现 Heptio、Istio、Metaparticle 等框架。
混合云——我所见过的所有与之相关的应用都使用了 Kubernetes。云中介模式似乎出现了问题,因为一个 broker 只能应付少量的服务,而大多数用户需要更强大的能力——不管是对于新的虚拟机实例还是整体新服务来说(Barclays 认为云中介是一种反模式)。
Atomist——我把它看成是元数据编程,而不是 ChatOps,我们正迎来新元数据编程的黎明,而且超越了之前的 LISP 和 Ruby DSL。下一个大跳跃可能会来自机器学习领域,DRY(Don’t Repeat Yourself)将会变成 DRA(Don’t Repeat Anybody)。
Steffen Opel (Utoolity 的合伙人)
我这边没有什么本质上的内容可说的了,不过可以补充一点云计算方面的东西:
我也赞同 Kubernetes 已经赢得胜利这样的说法。我也很期待能够隐藏运维复杂性和使用基于使用量(调用量等)的计费方案,但大部分开发者仍然会依赖 PaaS 来构建应用程序,正如 Simon Wardley 所分析的那样。另外,Fargate 即将为大部分云平台上的 Kubernetes 提供无服务器操作和基于 ECS 的 FaaS 定价模型,所以我们不能小觑它。
从“无服务器”方面看,我发现少了“Function as a Service(FaaS)”这个关键词。我们应该接受 BaaS 和 FaaS 之间的区别,“Backed as a Service(BaaS)”是全托管且能够自动伸缩的应用组件,而 FaaS 是一种适用于微服务和事件驱动程序(正在从创新者过度到早期采用者)的计算模式。
他们都提到了 D 代表了交付,也提到了管道配置即代码。
我也赞同 Daniel 将用于 Ops 洞见和告警的机器学习归入创新者——这种需求在 2012 年的时候就出现了,只是那时我们还缺少成熟的机器学习技术,但这种状况现在已经得到改观。元数据编程领域的机器学习也是一样的,我很喜欢 Chris 关于 DRY 到 DRA 转变的想法……
最后,我想增加一个“边缘计算”,把它放在创新者或早期采用者当中(例如 Lambda@Edge、S3 Select、Amazon Athena、AWS Greengrass、Joyent Manta)——Manta 已经出现很长一段时间了,如果它们能够被集成到已经被广泛采用的云服务当中,如 CloudFront、S3、Lambda,它们的威力就会得到体现。
Manuel Pais
我们似乎忽略了非常重要的一项:SRE。
即使是在 2017 年,我仍然认为它不会发生。对于很多还未达到谷歌那样规模的企业来说,他们有其他很多种方式可以达到相同的目的(如果我们从方法论和组织层面来看这个问题),但事实上,SRE 似乎已经证实可靠性也是一种能力(不管是哪种团队:Dev、Ops 或 SRE 工程师),所以越来越多的企业正在采用 SRE。
我会把它放在早期大众里。
Chris Swan
在谈及 SRE 这个话题时,我想到了谷歌的 Customer Reliability Engineering(CRE),他们把 SRE 融入到了一般性的公共责任模型当中。
CRE 已经不是新闻了,或许我们在 2018 年将会看到一些案例出现。
InfoQ 的编辑团队通过招聘或培训专家来生产新闻和文章,以及分析当前和未来的技术趋势。读者可以在编辑页面申请加入编辑团队。
关于作者
Manuel Pais 是一名专注于团队和工作流的 DevOps 交付顾问。他帮助企业实施自动化的持续交付,知道如何从技术和人性的角度来理解 DevOps。他还是 DevOpsTopologies.com 的联合评论员、InfoQ DevOps 板块的主编、里斯本DevOps 会议的联合创始人、“ Team Guide to Software Releasability”一书的联合作者,该书即将出版。Tweet:@manupaisable。
Daniel Bryant 是组织和技术的变革者。他目前的工作包括:通过引入更好的需求和计划模型在企业中促进敏捷的实施、专注于与敏捷开发相关的架构问题、促进持续集成和持续交付的实施。他目前的技术领域主要包括 DevOps 工具、云计算 / 容器平台和微服务实现。他是伦敦 Java 社区(LJC)的负责人,是多个开源项目的贡献者,为多个知名网站(InfoQ、DZone 和 Voxxed)撰文,并定期在国际大会(QCon、JavaOne 和 Devoxx)上演讲。
Richard Seroter 是 Pivotal 的高级产品总监,拥有科罗拉多大学工程硕士学位,曾经 10 次获得微软 MVP 殊荣。他是开发者培训公司 Plutralsight 的教练,InfoQ 云计算板块的主编,以及多本图书的作者,这些图书与应用程序的集成策略有关。他定期在博客上撰写与架构和方案设计相关的文章,可以通过Twitter @rseroter 联系到他。
Chris Swan 是 DXC.technology 全球交付组织部门的 CTO,之前是 Global Infrastructure Services 的 CTO 以及 CSC 分布式计算的总经理。再往前,他分别是 Cohesive Networks、UBS、Capital SCF 和 Credit Suisse 的 CTO 和总监。在从事这些职位时,他的工作主要面向应用服务器、计算网格、安全、移动、云计算、网络和容器。
Steffen Opel 是 Utoolity 的合伙人,Utoolity 是一家云计算和软件开发流程工具提供商。他最早学习 C++,早期专注于富客户端技术,并参与过 RESTful Web 服务架构的转型。行业向云计算的转变激起了他对开发流程自动化的兴趣,他专注于 DevOps 实施,喜欢在敏捷团队中使用 API 驱动开发。
评论