架构腐化之谜-阅读笔记

简介: # 架构腐化之谜 本文的内容来源于此,但非仅限于此:[http://www.infoq.com/cn/articles/cjz-architecture-corruption](http://www.infoq.com/cn/articles/cjz-architecture-corruption "") ![](http://work.alibaba-inc.com/img3_tbcdn

架构腐化之谜

本文的内容来源于此,但非仅限于此:http://www.infoq.com/cn/articles/cjz-architecture-corruption

失败的经验更容易让人记住,是因为失败让人印象更深刻,5年的编码经历,大部时间都是在循环搞一些让人胃疼的东西。

腐化的特征

每个项目初创之时,都有一个目的:理念先进、架构优美、编码简单、易于维护,但往往随着进度的推进,因为各种原因会变得难于理解、维护、扩展。我曾参与2个遗留产品:关于支付、社交的,在我加入的时候已经只能添加新的功能代码,老的分支逻辑:无论是否有用,都没有人敢动。

  • 难以修改:代码牵涉模块流程太多,导致任何的改动都会造成依赖业务的动荡。如果需要在现有流程的基础上新增业务,最安全的方式是通过if-else方式来兼容老业务添加新功能,而且木有单测,只能靠回归测试来保证功能不出错。这也是我参与支付、社交产品遇到的最常见问题,当时的感觉是自己唯一能做的就是避免新的功能代码把这工程拖向腐烂的深渊,但每次做局部优化也会心惊胆战。
  • 难以模块化:模块化的目的是重用:代码、功能。早期的遗留系统很容易出现package之间的交叉应用、循环应用,后面即使想重构如果没有能力和支持,基本上是不可能的事情-把事情做错比最对容易多了。所以现在这2个系统只是处于线上运行状态,基本上没有添加大的功能模块了。

靠谱的规则

在一个项目开启的时候,靠谱的编码规则:
copy from @爵爷

电影的业务逻辑服务化,整合无线和pc端的业务逻辑。达到几个目标点:

  • √ 业务模型统一
  • √ 业务接口整合
  • √ 异常体系定制
  • √ 接口可测试化
  • √ 系统可监控性
  • √ 提高开发效率

这些规则在任何项目中都适用,个人认为业务模型可以划分为:元数据模型和业务数据模型。元数据模型是现实数据的逻辑映射,例如电影系统中的排期、影院、影片信息,面向db。业务数据模型面向系统页面展示而用,页面的变化、调整会导致业务数据更改,但是组成业务数据的元数据不会更改:

微信:比如朋友圈这个产品经历了很多次变动,出了好几十个版本,但是有东西是不变的,就是数据模型是不变的。所以我们在产品设计和细节还没出来的时候,我们从后台到协议设计到本地存储的整个数据结构设计都已经做好了,界面的框架也可以先做,等设计最终确定的时候,我们技术这边已经进入ready的阶段。(http://www.huxiu.com/article/23367/1.html

我理解所谓的ready阶段是指:交互和原型确定的时候,后台只需要使用基本的数据结构提供相应的业务数据就ok了。

业务接口整合:现在系统都会有app和pc版,每个版本依赖的基础服务接口应该是统一的,这也要求app和pc上的设计的产品模型不能有太大差异。太多的业务分裂也会导致滑向深渊。

异常体系定制、系统可监控性、提高开发效率:不要用if-else-return error 的方式来处理异常分支,统一的异常体系更易于主流程编码、维护。监控是一种非功能性的需求,但是要趁早规划、实现,一个运行在黑盒状态的系统是不能令人放心的。提高效率和编程理念、使用的平台、工具、框架有关系

目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 缓存
面向边缘通用智能的多大语言模型系统:架构、信任与编排——论文阅读
本文提出面向边缘通用智能的多大语言模型(Multi-LLM)系统,通过协同架构、信任机制与动态编排,突破传统边缘AI的局限。融合合作、竞争与集成三种范式,结合模型压缩、分布式推理与上下文优化技术,实现高效、可靠、低延迟的边缘智能,推动复杂场景下的泛化与自主决策能力。
215 3
面向边缘通用智能的多大语言模型系统:架构、信任与编排——论文阅读
|
2月前
|
机器学习/深度学习 人工智能 资源调度
MicroNAS:面向MCU的零样本神经架构搜索——论文阅读
MicroNAS是一种专为微控制器单元(MCU)设计的零样本神经架构搜索(NAS)框架,无需训练即可通过理论驱动的性能指标评估网络架构。相比传统NAS方法,其搜索效率提升高达1104倍,同时兼顾精度与硬件效率,适用于边缘计算场景。该框架结合神经切线核(NTK)条件数、线性区域计数及硬件感知延迟模型,实现快速、高效的架构搜索,为资源受限设备上的AI部署提供了新思路。
192 2
MicroNAS:面向MCU的零样本神经架构搜索——论文阅读
|
2月前
|
机器学习/深度学习 人工智能 vr&ar
H4H:面向AR/VR应用的NPU-CIM异构系统混合卷积-Transformer架构搜索——论文阅读
H4H是一种面向AR/VR应用的混合卷积-Transformer架构,基于NPU-CIM异构系统,通过神经架构搜索实现高效模型设计。该架构结合卷积神经网络(CNN)的局部特征提取与视觉Transformer(ViT)的全局信息处理能力,提升模型性能与效率。通过两阶段增量训练策略,缓解混合模型训练中的梯度冲突问题,并利用异构计算资源优化推理延迟与能耗。实验表明,H4H在相同准确率下显著降低延迟和功耗,为AR/VR设备上的边缘AI推理提供了高效解决方案。
375 0
|
8月前
|
网络协议 Java 应用服务中间件
框架源码私享笔记(01)Tomcat核心架构功能 | 配置详解
本文首先分享了《活出意义来》一书序言中的感悟,强调成功如同幸福,不是刻意追求就能得到,而是全心投入时的副产品。接着探讨了Tomcat的核心功能与架构解析,包括网络连接器(Connector)和Servlet容器(Container),并介绍了其处理HTTP请求的工作流程。文章还详细解释了Tomcat的server.xml配置文件,涵盖了从顶级容器Server到子组件Connector、Engine、Host、Context等的配置参数及作用,帮助读者理解Tomcat的内部机制和配置方法。
|
12月前
|
前端开发 测试技术 数据处理
Kotlin教程笔记 - MVP与MVVM架构设计的对比
Kotlin教程笔记 - MVP与MVVM架构设计的对比
359 4
|
12月前
|
前端开发 JavaScript 测试技术
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
Kotlin教程笔记 - 适合构建中大型项目的架构模式全面对比
172 3
|
12月前
|
存储 前端开发 Java
Kotlin教程笔记 - MVVM架构怎样避免内存泄漏
Kotlin教程笔记 - MVVM架构怎样避免内存泄漏
159 2
|
10月前
|
Java 网络安全 开发工具
Git进阶笔记系列(01)Git核心架构原理 | 常用命令实战集合
通过本文,读者可以深入了解Git的核心概念和实际操作技巧,提升版本管理能力。
|
XML 前端开发 Android开发
Kotlin教程笔记(80) - MVVM架构设计
Kotlin教程笔记(80) - MVVM架构设计
|
XML 前端开发 Android开发
Kotlin教程笔记(80) - MVVM架构设计
Kotlin教程笔记(80) - MVVM架构设计
87 1