前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我的软件架构方法论

我的软件架构方法论

作者头像
春哥大魔王
发布2018-09-21 11:18:23
9280
发布2018-09-21 11:18:23
举报

我们公司内部职级晋升中,当目标职级比较资深或者专家后,有一项考察内容是:有自己的方法论。

什么是方法论

方法论很多人听过,可是很多人也在问什么是方法论?

方法论是我们对于很多事情进行思考沉淀后,具有总结性的指导思想。

比如很多名言警句就可以是方法论。

  • 近朱者赤,近墨者黑
  • 勤能补拙

软件架构方法论

少即是多

一次有人问我,你有没有总结过你的方法论? 我说我的方法论是:少即是多。

之前对系统接口进行性能和稳定性的优化,第一期优化的效果还可以,他们问我都用了哪些技术手段,用了哪些新东西。 我说我删了5k行代码,他没说你的方法论就是“删代码”。

最开始接到这个系统的时候,努力去整明白他里面做的事情是很难的。 等一部分代码逻辑明白后,发现里面做了很多无用功,可能是之前的系统设计的太烂了,完全没有考虑到后续扩展的方向,也可能是产品的需求改了又改,大部分代码都只能为了适应业务迭代而修修补补,结果造成了一大堆无效而冗余的代码存在。

于是首先是梳理系统响应接口的主要目的,梳理上下文逻辑,梳理数据流逻辑,删除冗余代码,让代码编写的更易读,更整洁,更优雅。 对代码逻辑进行抽离,和封装,复用。

很多人看待代码分离,都只是简单对分层,分模块。 我写代码主要的分离除了上面两点,还有一个是计算和存储分离,这个点后面讲。

总之这个可用性和性能优化,仅仅通过“删代码”就达到了目标,为未来的进一步优化带来了很多空间。

我们内部有个代码统计系统,每次发版打tag都会进行一次统计,别人每次都是绿色的加号,+500,代码增加了500行。 我的每次都是红色的减号,-1500,我又删了1500行代码。

面向大数据系统设计

上面说了,我分代码逻辑还有一个是计算和存储分离。

很多人写代码,除了写面条代码外,虽说可以分成很多子方法,子模块,代码行数控制到80行,可是依然难读。 因为这样做只是简单的文字分页而已,并不是一个软件开发的思想。

我写代码一般会考虑这个功能是读功能还是,写功能,进行抽离,这样的话读功能在数据量上来之后我们可以做很多我们可扩展的能力,比如拆库拆表,比如引入缓存,比如多存储介质存储等,完全不用关系业务逻辑问题。

计算和存储分离是数据库的执行方式,底层在磁盘上的B树负责存储,上层的SQL Parser负责计算,我们系统也可以具有这样的逻辑,这样我们可以零成本的切换存储,而不该上层代码逻辑,达到更好的单元测试。

所以这里的方法论是:面向大数据系统设计。

在互联网系统中,数据的增长,业务的发展,用户的增加,是远远快于系统迭代的,只有我们将我们的单机系统代码设计的具有面向大数据高并发场景的时候,系统才具有可扩展,易扩展的能力,才能承载更多的数据压力,也变得更稳定。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 春哥talk 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是方法论
  • 软件架构方法论
    • 少即是多
      • 面向大数据系统设计
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档