作者回复: 感谢你的回复,其实对于DevOps的定义,我是加了双引号的,因为这个定义也只是一家之言。
的确,DevOps要解决的还是软件研发交付能力和业务需求快速多变之间的矛盾。职责划分是企业精细化运营的必然结果,因为每一个领域的知识厚度已经超越了以前英雄的时代,也就是一个人搞定一切,所以才有了不同的职能。现在忽然发现,职能和组织划分又产生了部门墙和沟通成本,甚至这个成本已经超出了做事本身,于是现在又开始推崇全栈工程师。
以我在企业中的观察,所谓全栈还为时尚早,更多的还是通过平台来解决只有专家才能做事的问题。顺便说一下,QA的能量依然很强大呀😄
作者回复: 你好,感谢你的留言。
说说我个人的看法,首先采用敏捷开发方式,与需求是否靠谱没有直接的关联关系,比如瀑布模式下,也有大力出悲剧的案例,比如摩托罗拉的铱星计划,再比如诺基亚智能手机的案例。
其次,说句实话,即便使用敏捷模式,现在很多需求都是拍脑袋拍出来的,至于说这个需求价值到底有多少,始终缺少直接的衡量,这就导致拍的越多,成功率越高,从而产生无穷无尽的需求。
那么这也代表了,其实企业对于用户想要什么并不清楚,谁能想到电商行业两大巨头格局已定的情况下,偏偏杀出来个拼多多呢?
所以,无论是精益创业的MVP理论,还是反脆弱中的从不确定中收益的角度来说,企业以可控的成本不断试错,以博取一个无限的收益,已经成为了常态。
那么对软件开发来说,就需要有这样的能力,可以快速的把一个原型想法交付上线,并收集线上数据实时反馈给业务方,判断是否需要继续投入资源。这个过程的成本越低,企业的成长性就越好,从而不断发展下去。
至于说软件架构这个东西,我还没见过哪个架构做出来10年不变的,即便我们自己的内部平台,也是重构重构再重构,所以没必要一步到位,更多是还是演进式思路,要不然开发怎么磨砺自己的技能呢?
作者回复: 你好,你是指Deadline Driven Development 嘛 😆
开个玩笑,我对DDD的理解还没有那么深,所以就不胡说八道啦,推荐你参考张逸的专栏哈😄
作者回复: 嗯嗯,协作的前提是大家有相同的认知,如果你觉得重要的事情,对他来说并没有什么意义,那就没有合作的基础,所以DevOps最重要的就是让大家认同价值交付是共赢的事情,并在这个基础上先前一步吧。
作者回复: 果然运维都是自带万能光环出现的,而且又无处不在,我从开发的角度深刻能体会到对运维环境的未知和恐惧,只要不是代码的问题,就全部是运维的问题,这种思维定势,直接导致了很多问题直接都会丢给运维解决,这对运维团队的能力和压力都是双重考验啊。
回到全栈工程师的问题,目前看到更多的还是领域内的全栈,比如前后端开发,比如全栈测试,真正的全栈还是凤毛麟角吧。
Anyway,感谢你的留言,也期待你的更多分享。
作者回复: 感谢你的推荐,猪齿鱼的博客我也有关注哈,现在基于多云的一体化研发平台确实很热,其实大家的思路都大同小异,我后面也会花一讲的时间搭建一个开源的流水线平台,就是基于gitlab+k8s来做的,欢迎有问题随时留言。
作者回复: 你所说的设备端是指嵌入式或者智能硬件设备吗?其实这些产品同样需要提高软件交付效率和质量,我记得在DevOps实践指南里面就提到过一个POS机实践DevOps的案例,他们通过分批下发,自主部署的方式,解决了一次性部署的问题和冲突,你可以找来看看。其实在我接触过的公司,同样有类似的平台支持远程升级,核心理念还是怎样通过工程能力建设解决实际的业务问题哈。
作者回复: 你好,我目前在公司就是重点负责移动端的DevOps建设,除了你提到的自动打包,其实能做的事情非常多,比如自动发布,自动多渠道管理,测试和代码质量门禁的建设,组件化的能力建设等等,相当于一整套移动端的持续交付链路能力,重点看你们当前的阶段,和急需解决的问题哈,可以提出来一起讨论。
作者回复: 我的理解一站式服务并不能解决交付效率和质量的问题哈,当然现在基于DevOps的一体化平台无论在公司内部,还是外部,都有不错的需求,比如阿里云效,我相信基础设施云化只是一个开始,后面很多能力都会SaaS化,也包括效率建设方面的能力哈。
作者回复: 感谢你的问题,首先我先问的是作为企业内部IT你们的用户对软件交付现状是否满意呢,如果用DevOps的核心指标来度量,一个需求从提出到交付的时长是多少呢?是否存在积压和排队的现象呢?
另外一方面现在现在你们团队状态又如何呢,是否需要熬夜上线呢,个人发展方面有进步吗。
其还是那句话,DevOps是否有用的衡量标准就是是否能解决实际问题。
其实,回到ERP/CRM系统的问题上来,我在想这些系统的未来是哪里呢。我特意搜了下SAP公司,今年一季度的财报显示,由于创新和云服务的强力推动,整体公司业绩上涨了6.5个百分点。
所以如果未来的趋势是上云,也就是软件走服务化路线,那么慢慢和互联网软件是不是也没什么不同了呢?
所以回答你的问题,一方面看现状,一方面着眼未来,如果有可取之处,自然提早准备也是好的哈。
作者回复: 赞,我特别喜欢你的这个评论,希望越来越多的公司都能“很DevOps”哈!
作者回复: 你好,我只能说,单从软件形态上划分,基于服务端的业务相对最适合于DevOps,因为没有固定的发布周期,服务拆分治理又有相对比较成熟的框架,比如Spring Boot,各种配套的工具平台比较完善,更不要说容器应用后的高可扩展性,所以在企业里面推行DevOps,优选的还是服务端业务。
就像我在专栏中说的那样,我觉得DevOps应该是所有IT从业人员都需要了解的内容,也许不需要那么精通,但也不能完全不清楚,毕竟DevOps是大势所趋哈。
作者回复: 那是,背锅侠可不是浪得虚名的😂
作者回复: 我觉得你说的很好,DevOps因为涉及领域众多,经常被人看不懂,实际上可以分为两个方面。首先工程能力层面的目标就是快速满足业务需求,也就是业务提出一个想法,通过最快的方式完成开发上线的过程并交付上线,也就是说工程能力的核心在于帮助业务快速试错,降低试错成本,或者线上反馈,辅助业务决策,但是工程能力的提升就一定带来业务价值吗?这可不一定,业务是否有价值,是从业务分析的层面定义的,这个目前是一大难题,因为业务也不知道哪个方向是有价值的,这一点我最近的感受也很深,如果有人要你证明工程能力的提升能够直接带来业务价值的提升,我建议你好好思考下这两者的关系,有助于你更好的理解DevOps。
作者回复: 你好,我们来假设一下,如果没有采用敏捷的方法,那么十有八九还是瀑布软件开发模式,那么发布的频率和周期是多大呢,如果几个月一个版本,那么和DevOps的快速发布本身是否就背道而驰呢?但话又说回来,很多工程实践,并不只适合DevOps,你比如持续集成,只要是软件开发都是需要的。只不过敏捷的价值不仅在于开发,而是在于如何理解需求,交付需求,我个人的看法是,如果敏捷没做好,DevOps也一定做不好。
作者回复: 谢谢你的留言,我会认真对待每一个跟大家交流的机会哈😄
作者回复: 你好,人的问题是最复杂的问题,如果完全依靠人的境界提升,还是不太现实,我一直认为,建立有效的流程和机制是非常重要的手段,这会潜移默化的影响人的行为,行为建立习惯,习惯构建文化。
作者回复: 精辟的总结!如果总想着一步到位,那就失去了DevOps持续改进的精髓呀!这也是理论篇想要传递的核心思想。
作者回复: 因为DevOps太火啦,所以大家都不能置身事外呀,其实沟通协作不仅仅在dev和ops两个部门之间有,在外部的安全,业务部门也同样存在,而且部门墙更加严重,比如安全要求应用上线发布前必须经过审核,每次审核要一天时间,而有时候为了早一天发布,开发测试都是通宵达旦,这要如何解决呢?还是自动化,对其目标,共享上线计划,把安全团队拉进来才行嘛。
作者回复: 你好,维服务是一种应用架构的设计风格,简单来说吧,以前的应用大多是单体的,也就是所有服务都打到一个软件包里面,这样的问题就是,哪怕任何人改一点代码,整个软件包都要重新生成,重新部署,这样肯定不够灵活。
而DevOps追求的是软件的灵活快速发布,所以如果把一个大应用拆成一堆小的组件,彼此独立部署发布,那就不用大家一起齐步走了,搞得快的人可以快点跑。
所以这两者没有啥因果关系,但是微服务应用更加容易发挥DevOps的威力,再加上云和容器,就构成了现在一体化的技术变革。