DevOps是否仅限于具有SaaS产品的公司?


26

描述DevOps的实践(例如连续交付,自动化等)与提供连续服务的产品(例如SaaS产品)相关。

例如,一家软件开发公司主要为其他客户做项目,而在项目结束后,这些公司可能永远都不会得到维护。客户项目与其他客户不共享,因为它们无关紧要。

DevOps是否甚至适用于一次性开发多个项目的公司?如果有的话,什么DevOps实践适用于这种情况?

Answers:


32

绝对不!

DevOps旨在打破传统的筒仓(部门)以提高效率。

团队之间更好的沟通,更好的可视性以及可靠和自动化的流程是获得更好产品的方法。

我曾经在一家大型媒体公司工作过,在那里我们将支持内部工具并开发面向公众的网站。

在我们的案例中,DevOps的优势如下:

  • 通过持续的构建,如果他们的代码存在集成或构建问题,我们会尽早通知开发团队,而不是稍后。他们可以解决问题,而他们仍可以保留刚提交的代码。
  • 通过持续的测试和交付(进入质量检查),我们使质量检查团队能够更早发现问题并提早报告。这减少了查找和纠正错误所需的时间,并减少了这些调查的复杂性。
  • 由于没有日志收集和汇总工具,我们使开发人员可以访问他们通常不会看的东西(他们非常热衷于调试器:)-了解其他团队如何查看和使用日志可以提高日志的整体质量
  • 我们经常共享信息并创建文档以在团队之间共享知识,以试图打破壁垒。通过了解Ops的需求,我们为引导应用程序时(在何处/如何管理属性等)创建了一些指南。通过了解开发人员的实际情况(编​​写更多功能,更快,更gogogogo!),我们能够使操作人员创建更适合开发人员需求的服务器和集群。
  • 部署的整体质量也大大提高了。部署由我们的团队处理,因此我们对操作和开发都拥有完美的可见性。这样就消除了许多与“代码移交”有关的问题,开发人员可以将软件包和一页文档交给操作人员说“安装此!”。

总体而言,我想说的是,无论您每天或每月一次更新生产环境,无论您拥有多少客户或您的业务模式,每个企业都可以使用更好的沟通,更好的工具,更好的可视性,更快的反馈,等等


1
实际上,DevOps几乎可以应用于任何软件开发组织,甚至适用于每年只有少量公开发布的大型嵌入式产品-通过开发流程中使用持续交付他们仍然可以获得一些DevOps的好处:更好的质量,降低的成本,发布预测等
丹Cornilescu

答案的确提醒了SaaS,但并未真正很好地解释非SaaS产品或服务如何从这些实践中受益。
叶夫根尼

我正在研究的产品不是SaaS(正好相反)。但是基本原理保持不变,无论您是否使用SaaS都没关系,DevOps尝试以非传统的方式改进产品。我对我们的定价模式或产品一无所知,不会有太大的改变。
亚历山大

13

我和我的团队负责开发“一次性”产品,完成后的产品将提供给客户进行保养,或者在某些情况下由我们收取费用。

我们仍然需要保持稳定的开发流程来处理来自客户的不断反馈,以确保我们向他们提供可靠且经证实可以运行的产品。

尽管客户并不关心DevOps(在大多数情况下),但对我们仍然有帮助。借助DevOps,我们可以快速推出新版本,因此客户可以在数分钟而不是数小时内看到反馈,并且我们还可以通过Jenkins / Travis进行测试以捕获任何错误/错误。

为了确保我们的部署策略在各个项目中相同,我们专注于容器化我们的应用程序。使用Docker,我们能够轻松地将应用程序交付给客户。

DevOps节省的成本很难确定。我们确实会以选择用于管道的软件的形式(Travis,Jenkins,Puppet等您拥有)来支付额外费用,但我们还通过修复错误/快速提供客户反馈来节省时间和金钱。我们的快速响应时间使我们的客户满意,从而使我们的钱包满意。


您能提供一些为什么这很重要的理由和好处吗?客户实际上是在乎您的管道,还是只是在约定的日期完成项目以及他们需要支付的价格?您是否可以通过不做所有这些“开发”的事情来削减成本?您是否可以通过不做这些事情而在项目中投入更多的时间,并为项目获得更多的钱(因为时间更长)?
Evgeny

1
@Evgeny DevOps由于我的回答中所述的原因,有助于按时,按预算完成项目。通过削减DevOps,您还将削减我解释过的好处。构建和测试通常有助于保持预算和时间。后来发现一个错误需要花费更多的金钱,并且需要花费更多的时间来修复,这一点已被反复证明。客户端不在乎管道,但是您等待反馈的时间越长,重写的成本和时间就越多。
亚历山大

不只是敏捷软件开发人员吗?
叶夫根尼

@Evgeny我已经更新了答案以进行澄清。我们使用敏捷,但是这并不意味着我们不能有一个DevOps的心态..

1
@Evgeny您可以通过不维护单元测试和验收测试来节省一些费用,但这会积累技术债务,这是DevOps的反模式。您可能会放弃它几个星期或几个月,但是您很快就会(可能)以难以维护的混乱局面,这是无法测试的。
史蒂夫·巴顿

3

我曾在为收缩包装产品,完全安装和支持的部署以及设备中的嵌入式代码的软件生产公司工作。在所有这些公司中,DevOps为开发提供了必要的支持:

  • 具有可控的编译器,库和其他构建工具的已知配置的自动化,可复制的软件构建。
  • 自动化,可重复的系统测试,用于回归测试和新功能测试。
  • 其他自动化和常规操作(例如,以所有受支持的语言提供的,不断更新的示例屏幕截图,供翻译人员进行验证以及技术作者将其合并到用户手册中)。

在所有情况下,这些都是单个开发人员可以一次性完成的事情,但是这并不能很好地利用开发人员的时间,也不能像自动化构建一样保证配置控制。


自动化不是发展。最终与David Bock在下面的回答相同的评论(对不起,我的
投票被拒绝

3

以前有关软件开发和实施的活动不需要部门之间的深入整合。但是今天,有必要紧密协作所有部门(开发,IT运营,质量保证等)。

对于开发人员来说,改变就是他们得到的报酬。业务始终需要进行更改以适应现代世界。这种理解促使开发人员产生最大数量的更改。IT专业人员有不同的理解,即改变是有害的。他们每个人都认为它可以正常工作,从而使业务受益。确实,如果我们分开考虑它们,它们都是对的。

所有员工必须了解他们是单个流程的一部分。DevOps培养思想,这使人们有可能意识到每个人的个人决定和行动都应针对实现单个目标。而且,应该相对于整个开发到交付周期来衡量成功,而不是从单个角色的成功来衡量。通过开发人员和维护专家之间密切合​​作的结果,形成了新一代工程师,他们利用了这两个学科的最佳成就,并将它们结合起来,以使用户受益。这体现在具有开发,配置管理,数据库管理,测试和基础结构管理经验的跨职能团队中。

因此,该方法不仅在SaaS中有用。


0

一点也不。尽管此线程上已经有很多很好的例子,但我想分享我自己的轶事。2001年,我继承了一个软件项目,该项目的发行版涉及CD的创建。发布过程的文档包括以前的工程师记录的40(!)个步骤,其中包括一些荒谬的手写说明,例如“打开此配置文件并在第41行更改.jar文件的名称以包括版本号”。新版本”。

我们积极地执行了构建过程的每个步骤,用bash脚本编写的“ patch”代替了手写的说明。我们甚至不得不与我们的第三方安装工具供应商联系以打开票证,以使他们的项目文件可修补。

该过程自动化后,我们购买了“ CD Jukebox”。测试通过后的每个晚上,构建机器都会自动创建新的安装CD。我们的测试人员可以在第二天早上来,拿起一个磁盘,并确保所有内容都可安装。

当我们可以将软件作为服务部署时,我们当然会有更严格的反馈循环,但是自动化,反馈,周期时间,小版本等核心原则都适用。


这与自动化有关,但与devops组织毫无关系,我看不到任何地方有关伪造纪律团队的参考,只是ops使他们继承的东西自动化
Tensibai

那是2001年……早在DevOps成为现实之前。这不只是自动化,我相信这可以与最终被称为DevOps的“文化”的方式完全相同,从而简化了项目管理。因此,这是SaaS组织外部DevOps态度的一个示例。
David Bock

DevOps与自动化无关,也与项目管理无关。这是从根本上打破基于筒仓的组织。很抱歉,我认为这个答案与问题无关(这并不意味着它没意思,但不是在正确的位置IMO,而且我不知道它可能在何处出现)稍后)
Tensibai'3

我将再尝试澄清一下-通过如此快速一致地切割CD,我们可以比以前更快地从质量检查中获得反馈。这减少了筒仓。它并没有消除它,因为又过了一两年,我们才取消了围绕集中预算进行活动的限制,但这无疑是制止这种情况的关键一步。当发布过程中断时,我们也早就知道了。我将许多类似的小事情归功于我个人通往DevOps的道路。
David Bock

这最后一个评论使该问题下的答案更具意义,您应该对其进行编辑以包括它,但我仍然觉得这不适合这种格式,但是当我观察此私人Beta版的总体发展时,我的立场似乎是错误的,因此... 随你(由你决定。如果没有信息编辑,我无法删除我的
不赞成投票
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.