时下的IT趋势中,DevOps 正是一个热语。它起源于几年前SPA (单页面应用) 的前端应用。我认为常态的IT技术适应就是,在新技术爆发的那一时刻开始,立马就会被敏锐的人们所采用,然后被快速传播开来。最近几年的DevOps 就是这样的。但再过几年,你将会听到另外一个流行词:NoOps.
时下的IT趋势中,DevOps 正是一个热语。它起源于几年前SPA (单页面应用) 的前端应用.我认为常态的IT技术适应就是,在新技术爆发的那一时刻开始,立马就会被敏锐的人们所采用,然后被快速传播开来。最近几年的DevOps 就是这样的。但再过几年,你将会听到另外一个流行词:NoOps。
DevOps和 NoOps的差异
DevOps是开发和运维的融合,是开发和运维工程师共同协作,定义应用从设计到交付全生命周期过程的实践。
NoOp的意思是无须操作。它的理念是去掉所有的平台管理部分,从而降低开发人员与基础设施之间的摩擦。
为何需要DevOps?
随着技术和业务需求越来越具有挑战性,IT服务也变得越来越复杂。这使得交付变得越来越重要,也让我们不得不投入精力来编排整个应用交付过程。
有了云平台之后,对系统管理员需求开始下降,但对DevOps技术和业务技能的需求依然很高。要实现DevOps并恰如其分的使用它。这让我们需要考虑技术交付之外的情况。
为何以前没有DevOps?
答案有很多个,你可能会说以前的业务场景更简单或没有足够的技术文化氛围。我很认同上述观点,但我认为那些不是根本原因。根据我的经验,更大的原因应该是技术。交付的自动化其实是很难实现。
十年前的大多数系统,在默认情况下,都没有一步构建或如git-flow一样定义良好的工作流。当时也没有高性价比的CI解决方案,所以难以实现自动化交付。
我记得2009年,我打算部署我自己的一个.net门户。我花了一个周六的上午尝试使用开源工具创建一个自动部署系统,但最后我还是放弃了。因为我知道维护自动化交付比手动部署它的成本要高得多。到了现在,如果使用Azure DevOps服务的话,我只需使用web浏览器就可以在十分钟内完成。果然是时过境迁啊!
为何我所需的比DevOps能做到的要多?
这个原因很好理解,当你历经波折将DevOps引入到你公司后,你可能会认为状态良好啦。但是事实却是IT世界,事物的变化比人快,现在市场需求越发火爆,不断的需求带来了不断的变化和调整,而你不能简单的应对一句:“我已经疲于应付变化,需要歇一下。”
云时代的到来让事情变得更加复杂。它让我们得以实现复杂的解决方案并解决许多挑战,但也需要我们具备更多的技能。
云端的所有组件都是可伸缩的,但是它会牵扯到某些DevOps的配置,既总是需要一些手工干预,在大部分流程运转的背后,仍然需要有人参与。可以理解为这还是旧的工作模式。
NoOps的目的是定义一个不需要开发与运维相结合,就可以使流程顺利进行的过程。NoOps有一个目标:通过设计使所有东西都可以完成部署,而不需要任何人参与。
NoOps大致的方法如下:开发人员将代码提交到代码库就已经完成了全部的部署。看起来与连续交付非常相似,但它所包含的范围更大,这里面不仅有应用程序,还包含了基础设施的部署。
NoOps是如何做到的?
相对于DevOps, NoOps是需要技术支持的。这个支持有很多选择,但基本上,我们可以总结如下:
- NoOps是一个PaaS解决方案,像 Heroku或由Azure, AWS等云服务商所提供。
- 从AWS,Azure等服务商处购买的无服务器计算服务。
- 创建了可复制的基础设施(这几乎是第一步的必要操作)。
上述类似的方案很适合解决基础设施部分的工作,而让传统部署工具能够推动流程处理,交付应用。
闪光的未必都是金子
我坦承,取消基础设施管理的想法很有诱惑力,感觉就像拔掉一颗坏牙。因为在通常情况下,基础设施占用了大量的管理成本,还带来了开发和运维之间的摩擦。
但另外观点是,问题不在于基础设施,而在于流程。如果流程设计良好,就不会有摩擦,不会有延迟,一切都可以有条不紊的进行。
你会担心管理成本吗?其实你应该考虑整体成本,而不仅仅是管理成本。也许您云上基础设施的管理成本更高,但最终的成本会是相同的。但这也不绝对。困惑吗?这其中的秘密就是有些应用程序可以部署在PaaS上,有些则不能。仅此而已。如果您的应用程序很简单,那么PaaS是一个很好的解决方案,DevOps人员将乐于减少工作量。但如果你要推出的是下一个Netflix,那你将需要更多的控制权利,PaaS服务就没那么贴切啦。这就是根源所在。
说到最后,其实无所谓DevOps或NoOps。最根本的驱动是:用尽可能少的维护工作,去创建智能的基础设施,并将一切自动化。使用如谷歌云或其他的公有云服务,您都能为你的应用场景找到最佳的解决方案。
那么,从这个角度来看,什么是NoOps?本质就是云化趋势中的另一个流行词。