- 主题:[转载]现代软件开发是否太复杂
“复杂性会致命,”Lotus Notes 作者和微软资深工程师 Ray Ozzie 在 2005 年的一份内部备忘录中写道。“它剥夺了开发人员的生命;使产品难以规划、构建和测试它带来了安全挑战;让用户和管理员感到沮丧。”
如果 Ozzie 当时就认为软件开发过于复杂的话,你会忍不住好奇他会如何看待软件开发人员在云原生时代所面临的复杂性。从你可以触摸的服务器上托管的整体架构中构建应用程序到将它们拆解成多个微服务,打包进容器,与 Kubernetes 调谐并托管在分布式云环境中,这种转变标志着软件的复杂程度激增。加上对功能丰富的消费级体验的期望,要求安全和富有弹性,这对开发人员提出了前所未有的高要求。
亚马逊首席技术官 Werner Vogels 在 2019 年 AWS 峰会期间表示:“当你迁移到如此普遍的微服务环境时,复杂性明显增加了。一切都在单一整体中的日子是否更容易?是的,对于某些部分肯定如此。”或者,正如他的同事、AWS 的 DevOps 产品营销主管 Emily Freeman 在 2021 年所说的那样,现代软件开发是“一项关于熵的研究,并没有变得更简单。” 另一方面,复杂的技术从未像现在这样现成、简单、易用,通常是通过一个API——从基本库和框架到图像识别功能甚至是整个支付堆栈。只要在上面组装和构建你的业务逻辑就可以了,但真的有那么简单吗?
https://www.computerworld.com/article/2513705/ozzie-s--doomsday--memo-warns-microsoft-of-post-pc-days.html
--
FROM 140.224.35.*
我觉得应对复杂性问题上,还是有进步的
微服务架构,虽然让软件的结构和部署变得更复杂了
大多数开发人员都很难把自己的产品部署上,都得用别人帮着搭建的开发环境了
但实际上,也让开发人员要了解的问题变少了
大多数时候,都是不需要自己了解其他模块的细节
只要用别人已经部署好的模块
然后只有自己的部分重新部署就行了
其实这个情况,比二十年前还有是有进步的
当年为了应对复杂性问题,人们的解决方案还是面向对象,封装这些概念
但是大家的代码跑在一个进程了,即使有语言方面提供的一些区隔能力
但还是不够
现代方案则是把不同模块直接跑到不同的进程,甚至不同的机器
然后模块之间的相互作用,直接受到物理限制
这样反而保证了独立性
【 在 hgoldfish (老鱼) 的大作中提到: 】
: “复杂性会致命,”Lotus Notes 作者和微软资深工程师 Ray Ozzie 在 2005 年的一份内部备忘录中写道。“它剥夺了开发人员的生命;使产品难以规划、构建和测试它带来了安全挑战;让用户和管理员感到沮丧。”
: 如果 Ozzie 当时就认为软件开发过于复杂的话,你会忍不住好奇他会如何看待软件开发人员在云原生时代所面临的复杂性。从你可以触摸的服务器上托管的整体架构中构建应用程序到将它们拆解成多个微服务,打包进容器,与 Kubernetes 调谐并托管在分布式云环境中,这种转变标
: 亚马逊首席技术官 Werner Vogels 在 2019 年 AWS 峰会期间表示:“当你迁移到如此普遍的微服务环境时,复杂性明显增加了。一切都在单一整体中的日子是否更容易?是的,对于某些部分肯定如此。”或者,正如他的同事、AWS 的 DevOps 产品营销主管 Emily Freeman 在 2021
: ...................
--
FROM 103.208.15.*
【 在 sixue1999 (宋似雪) 的大作中提到: 】
: 我觉得应对复杂性问题上,还是有进步的
: 微服务架构,虽然让软件的结构和部署变得更复杂了
: 大多数开发人员都很难把自己的产品部署上,都得用别人帮着搭建的开发环境了
: 但实际上,也让开发人员要了解的问题变少了
但是一个信息系统的部署运维成本并没有减少,
只是从所谓的业务代码纯程团队转移到了运维团队
或者云服务上,对于需方而言,如果没有条件用
云原生基础设施的话,反而负担更大了。
: 大多数时候,都是不需要自己了解其他模块的细节
: 只要用别人已经部署好的模块
: 然后只有自己的部分重新部署就行了
: 其实这个情况,比二十年前还有是有进步的
: 当年为了应对复杂性问题,人们的解决方案还是面向对象,封装这些概念
: 但是大家的代码跑在一个进程了,即使有语言方面提供的一些区隔能力
: 但还是不够
: 现代方案则是把不同模块直接跑到不同的进程,甚至不同的机器
: 然后模块之间的相互作用,直接受到物理限制
: 这样反而保证了独立性
--
FROM 122.225.220.*
Ozzie 说话的时候是2005年,那时候没有云计算,企业软件的开发商需要投入大量人力到适配客户的各种环境上。现在其实是复杂度降低了,否则大家也不会推动用户上云
云计算出现之后,各种客户环境都被那几家厂商定义好了,企业软件的适配简单了很多
但对于之前没有见过不同用户环境导致的复杂度的人来说,这几家厂商的定义属于过于复杂了
--
FROM 123.116.196.*
现在的复杂度,我觉得就是云厂商搞出来的。故意往开源社区里面推各种垃圾框架。好让程序变得又笨又重,只好使用他们的复杂方案。
狥腾和头像是喂猪食给普罗大众。aws,azure喂猪食给程序员。都是差不多的原理。
【 在 leadu (leadu) 的大作中提到: 】
: Ozzie 说话的时候是2005年,那时候没有云计算,企业软件的开发商需要投入大量人力到适配客户的各种环境上。现在其实是复杂度降低了,否则大家也不会推动用户上云
: 云计算出现之后,各种客户环境都被那几家厂商定义好了,企业软件的适配简单了很多
: 但对于之前没有见过不同用户环境导致的复杂度的人来说,这几家厂商的定义属于过于复杂了
: ...................
--
FROM 140.224.35.*
云计算的复杂度主要来自于企业it那边。
那边的情况实际比云计算复杂的多得多,现在上云之后企业it的研发人员都省心多了
企业it那边的复杂度对于普通互联网开发者来说,却又属于很难掌握的复杂
【 在 hgoldfish 的大作中提到: 】
: 现在的复杂度,我觉得就是云厂商搞出来的。故意往开源社区里面推各种垃圾框架。好让程序变得又笨又重,只好使用他们的复杂方案。
: 狥腾和头像是喂猪食给普罗大众。aws,azure喂猪食给程序员。都是差不多的原理。
:
--
FROM 123.116.196.*
对此影响最大的因素是操作系统,因为操作系统为了兼容各种应用,所以同一个接口程序为了能兼容多媒体,又能给程序开发测试用,这样势必声称大量的冗余代码,所以为了配合这个操作系统,各种编程软件的接口也必须大量兼容,有一天如果编码有一个专用的系统,然后多媒体也有一个专用的,这样才有希望简化,才能带来电脑应用质的飞跃。
--
FROM 110.182.134.*
嫌云负责的难道都是自己亲自装机器?
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 现在的复杂度,我觉得就是云厂商搞出来的。故意往开源社区里面推各种垃圾框架。好让程序变得又笨又重,只好使用他们的复杂方案。
: 狥腾和头像是喂猪食给普罗大众。aws,azure喂猪食给程序员。都是差不多的原理。
--
FROM 27.91.71.*
嫌PaaS复杂的可以用k8s
【 在 leadu (leadu) 的大作中提到: 】
: Ozzie 说话的时候是2005年,那时候没有云计算,企业软件的开发商需要投入大量人力到适配客户的各种环境上。现在其实是复杂度降低了,否则大家也不会推动用户上云
: 云计算出现之后,各种客户环境都被那几家厂商定义好了,企业软件的适配简单了很多
: 但对于之前没有见过不同用户环境导致的复杂度的人来说,这几家厂商的定义属于过于复杂了
: ...................
--
FROM 27.91.71.*