00:00
技术在的危害与治理。前一阵有个同学问我,系统怎么不能一键安装PHP了,前几天还好好的,我登上去一看,用的是吴邦都16.04系统。打开乌方图官网可以看到16.04是2016年的老系统,在2021年4月结束了官方标准支持,所以业界也不再支持了。比如六月份热心开发者提供的PPPPI不再支持16.04,结果就无法一键安装了。九月份,Github actions不再支持16.04,事先对老用户进行了两次停服警告。有的同学抱着稳定压倒一切的想法,只要能用就不升级,结果有一天突然无法使用,或者安全漏洞被攻击了,才发现在技术领域落后,就要挨打。技术债的定义是为了加速软件开发,采用短期技术方案,从来给未来带来负担。就像借债一样,短期获得收益,但会产生利息。
01:03
如果持续增加债务,有一天就爆雷了。就像下面的图,初期业务发展快,债务积累慢,过了某个临界点,债务占比很高,导致业务发展变慢。技术债主要有四个方面的影响。安全性、可维护性、可演进性和招聘成本。下面将展开讲解。最常见的技术在时,随着时间的推移和开发人员的增加,代码越来越乱,也就是可维护性降低。比如左边的代码判断了等于一,等于二,这叫做魔法数字,过几天自己都看不懂了,后续接手的同时更是难以理解。导致维护成本高。右边的写法是正确的,使用常量代替数字。这个技术可以通过自动检查代码规范来解决,之前已经录了视频,感兴趣的同学可以课后观看。
02:02
随着项目的功能越来越多,Bug也越来越多,改一个函数影响了很多调用的地方,产生了很多bug。那就不改了,把这个函数复制一份。就像左边的代码有个get方法,后续修改的人复制成了GET1,又有人要改复制为了GET2。这短期解决了问题,但降低了可维护性,增加了债务。这个技术债可以通过开发人员写单元测试来解决。之前已经录了视频,感兴趣的同学可以课后观看。前几天有个运维同学问PP7.3怎么无法安装一些开源包了,提示只支持7.4,难道要把公司的所有微服务都升级到7.4吗?我回答,是的,打开PP官网可以看到这张图。PP7.3在2021年底废弃了。这意味着后续有安全漏洞也没人修了,可能导致公司被攻击,带来巨大损失。
03:04
作为技术人员,当一个技术组件结束活跃,进入安全维护阶段时,就应该评估升级了。千万不能拖延到废之后。所以现在2022年PB7.3升级到7.4也不合适,因为7.4也快废弃了,建议升级8.0。2021年12月爆发的lock坊街漏洞影响巨大。连续推出了四个版本,被发现了四个漏洞。这个事情告诉我们一个道理,及时升级很重要。除了修复漏洞,新版本往往还有这些优点,新特性,语法堂,性能提升,总之可以提高开发效率,降低成本,比如2021年发布的JAVA17和note gs16,大家的公司都用上了吗?欢迎评论留言。如果想学习如何升级,可以课后扫码阅读salesforce如何大规模升级Java的文章。
04:05
有的时候升级版本也没用,因为技术站换代了。比如安构建工具被Marvin取代,又被gra取代。大家的公司还在用Mar吗?欢迎评论留言。再比如,JA query被react will取代。如果一个公司现在还在用JA query,那会导致招聘成本高,面试者会觉得来了学不到东西,以后出去找不到好工作。还有一些有争议的,比如Java后端要不要升级到里,Pip后端要不要升级到go?欢迎评论发表你的观点。架构落后也是一种技术,在比如2006年云计算诞生之前。大家只能买服务器或者组装服务器,或者租服务器,成本很高,而云计算诞生之后,上云带来成本大幅度降低。是一个重大的架构变化。2013年,Do诞生,带来了容器化。
05:03
2016年开S开始流行,架构持续升级,成本持续降低。私有化定制开发偏离主干也是一种技术,在比如大客户提出了一些需求,SaaS版本难以满足。决定收费、定制开发。短期获得了收入,但经过一段时间发现代码无法合并到主干,主干的新功能也无法合并到大客户的版本。导致开发成本急剧升高。很多创业团队在一两年内都不超过20名开发人员,采用单体应用效率非常高,不应该过度设计采用微服务,那样反而会降低效率。但有的创业团队业务获得爆发性的增长,很快达到了50人,甚至超过100人。这时候发现耦合导致可维护性下降,开发效率降低,那就应该拆分微服务了,这可以说是幸福的烦恼。刚才讲解了常见的技术债,有的管理同学非常重视,说如何看到公司现在各个项目的技术债情况。
06:09
这非常好。有的开发同学说公司领导不重视,如何提醒他?这两种情况都存在,那就需要记录、警示和解决。在coding项目协同中,内置了常见的需求、任务和缺陷,还可以自定义十项类型。比如图中,我们创建一种技术债类型,它会在所有项目中生效。这是一种非常巧妙的设计,后面才可以跨项目查看所有的技术债。当有新的语言工具或框架版本发布时,开发同学可以录入技术在。比如图中的JAVA8升级到JAVA11,结果公司没时间给大家升级,就欠下了债。现在想从JAVA8直接升级到JAVA17就更困难了,作为管理者,会在左边的全局仪表盘里看到长期滞留四项。
07:06
比如GCC升级11,为什么这么多年了还没人处理?一问才知道是被三体人锁定了。然后打开全部事项,在右边筛选技术债,可以看到所有项目欠的债加起来非常惊人,这就起到了警示作用,可以用来向管理层争取时间。这些案例可以访问coding样板间查看,请联系coding客服获得访问方式。最后总结一下今天讲解的内容,常见的技术在和解决方案,以及它的实施难度。第一个代码越来越乱,这个可以落地代码规范来解决,难度比较低。一星。第二个bug越来越多。这个可以通过开发人员编写单元测试来解决,难度非常高。五星。
08:00
第三个语言版本落后,这个可以通过容器化,由开发人员决定版本来解决难度两颗星。下一个技术战落后,这个需要开发人员持续学习,持续的升级,难度非常高。架构落后也是同样的,需要持续学习。私有化定制开发偏离主干。它的解决方案是删除分支,采用补丁或者产品灵活可配置。或者技术灵活、插件机制,总之,私有化和公有化合并到一个版本里。它的难度非常高。五颗星。最后一个单体应用膨胀,它的解决方案是微服务,难度也非常高。五颗星。
我来说两句