这些年,这些事(技术整理)之一

        忙忙碌碌,忙忙碌碌接近十年的工作经验了,不知何时起开始有感慨的感觉了。从一个小白变成大白。最近一段时间处于“空窗期”,静下心看看书,写写东西,整理一下之前的笔记。发现原来我已经很长时间没有购买过书籍了,又开始翻出以前的书籍再次回味一下。

      看着满满的书架上面的书,发现自己是一个“万花筒”,什么书都有,技术,小说,销售,产品等等什么都有。人杂而不精,是我对自己的评价。(突然想起来,最后一次书籍来了新伙伴是拿一个蓝牙耳机和小夏童鞋换的二本书)。

      三年前也是九十月份的时候,跟着马波童鞋和老张童鞋一起做“火腿肠”项目(HTC项目)的时候,开始真正在公司里面进入项目组搞起应用框架(特别强调,只是应用框架)。三年的时间过去了,为什么突然强调应用框架呢?因为应用框架只是提供给开发人员开发的一个开发框架,将开发复杂度降低,而不是真正意义上的架构,一套真正的架构应该包含数据传输协议,网络服务,对接协议等等,而不是简单的Spring,Mybatis,JPA等这些成熟框架整合的一个框架。

        二年前,花一个星期干了一件“坏事”(如果是现在,如果我手下有人这么干的话,我会劈头盖脸的骂他),当时候还在客户现场驻场开发,应该说第一小阶段的东西已经做好了,但是我发现这么做的话,我的一个Project会变成非常“臃肿”,一时之气,妈妈的,使用Servlet 3.0新规范里面web-fragment的将每一个模块独立出来(可以参考我之前写的一篇文章),然后通过POM文件重新组建整个新的Project。幸运的是当时我还是技术可以,并没有惹出什么幺蛾子,完全将代码整体整合进去。想想当初也是胆大包天,如果有那么一点点业务流程问题不通的话,就白白浪费5个人日的投入并且对整个开发团队的进度影响也很大。其实现在想想还是满感谢波波的,虽然他只是简单的说“以后如果有这么大的变更,请提前通知他”。这件事也让我想明白一件事,就像朱曦说的技术可以由下而上的推进。但是有时候您还需要一群志同道合的人存在。

        一年半前,开始和朱曦组件架构组搞起微服务,这玩意大家搞得不亦乐乎,对于开发人员或者架构组里面的人员而言,这是一个全新的技术框架体系,每一个开发人员都想加入到架构组,因为对他们的吸引点很是明确,因为进入到架构组,他们可以学习到很多很多不同的技术。小伙伴们说,一年半前是我最爽的日子,因为我的工作就是安排小伙伴们写不同的组件,服务,感觉无聊的时候自己写写核心代码,想骂人的时候Review一下整个项目组的代码。时间也就这么一点点的过去,当我发现我已经对我的项目不在有那么多热情的时候,我发现我开始焦虑,心慌的时候,我才知道,原来这些不是我想要的,我想要什么,那段时间一直在困扰着我,想要一份清闲的工作,架构组的活对于我而言就是清闲的,想要一份高薪,出去也可以找到,那段时间每晚都睡不好觉,头发也开始脱离,白头发也开始一夜之间不知道冒出多少。不断的看书,寻找自己希望的答案。发现原来自己真正想成为一个真正的架构师,设计整体业务框架,各种数据交换方式等等真正架构意义上面的事情。

        半年前毅然决然的选择了离开工作快5年的公司。选择加入了新公司,一直我也是告诉自己,每一家公司都是一样,肯定不会有那么好的机会做自己那么喜欢的事,年轻的时候,老司机告诉我们,将自己不喜欢的事情做好,才是你能力的表现。这种心灵鸡汤已经对我没有任何的感悟的。我也不是那么年轻,没有那么任性,我只是想静静的将一个项目或者产品慢慢将它的开发模式,设计模式什么的慢慢改变。这段时间也和很多不同行业人员交流,了解真正行业里面专业做法。底层和上层交易使用什么协议,协力内容格式应该是什么类型,整体框架我们如何切分。其实慢慢发现不管是对于纯软件开发也好,软硬集合也好大家都想做成一个模块化。慢慢我又静下心来看书,不管是《领域驱动设计》或者《启示录》,如何设计好一个好的产品或者一个好的同系列框架。人需要协助,当你发现只有你一个人的时候,你会孤单,你会钻牛角尖(最近一段时间一直在设计思考如何使用Netty做TCP服务器和TCP集群这块。阿里对于物联网有一块独立的IoT解决方案其实一直想知道如何设计的)。

      心慢慢静下来,你会发现一个人也可以做很多事,开始慢慢整理自己之前学习的东西,重新翻开自己之前买的书,静下心来整理之前的框架,将一件件事情计划的出来,充实自己全部的时间。

以上是最近一段时间的感悟,接下来是将之前写的应用框架,微服务框架整理出来完全分享。

以下内容为一个星期内完成的应用框架组合(待完善)。


        先来一个目录截图,其实我很简单只是想将之前的东西重新封装整理增加。这是一个长而远的计划。

这些年,这些事(技术整理)之一_第1张图片
代码整理目录

应用开发框架已经开始整理了。截图说明一下把。

这些年,这些事(技术整理)之一_第2张图片
第一阶段整理的框架

core:基础使用的一些Utils类

datasource:动态数据源和单数据源封装

domain: 常用的一些类的基类

jpa:对于JPA进行的封装

logger:日志封装,默认提供一些操作日志

mongoDB:对于mongodb的一些列封装

swagger:在线API展现

validators:数据有效性校验框架,整体使用XML格式

test:测试共通架构里面的Junit测试

PS:为什么一开始不对Mybatis进行封装,没有什么特殊原因。因为最近半年做的产品,单表操作的更加多,发现很多人的SQL写的不是很规范,也花了很多时间,即使使用Mybatis自动生成也有一些列问题。所以是优先对JPA进行了封装。

简单贴出domain第一阶段的结构图。

这些年,这些事(技术整理)之一_第3张图片
Domain结构图

      后面一段时间会将每一个框架模块每一个UML图和设计想法全部分享出来。并且每一个模块都会在基础服务中使用到。

        第一个基础服务,对于微服务,第一个基础服务应该是配置中心,但是想来想去其实权限系统是每一个都必须使用的,所以也就开始做权限中心基础服务了。

技术框架:Spring Boot + thymeleaf

数据库:MongoDB

API文档:Swagger

JDK:JDK1.8

        并且也完全遵守阿里的数据对象传输规范,将POJO分为Param,Result,Entity不同层次的数据使用不同的类型。

来一个权限系统的整体页面效果。

这些年,这些事(技术整理)之一_第4张图片
权限中心首页

        最近一直在研究MongoDB,所以也就使用MongoDB作为权限中心数据存储。并且权限数据本来就是树形数据,所以也就使用了MongoDB。(PS:这个还真没有参考朱曦的权限数据结构)。

PS:本人不太喜欢写CSS,所以也就使用了现成的第三方后台框架。

在线Rest API文档

这些年,这些事(技术整理)之一_第5张图片
API文档
这些年,这些事(技术整理)之一_第6张图片
API在线测试

PS:对于Swagger,阅读源码以后,Swagger框架模块做了一个可以生成固定Excel的文档。其实我一直喜欢开发人员在一开始的时候设计好接口,返回假数据这种模式开发,但是对于开发人员又要写一份接口文档,其实是一个“蛋疼”的时间,并且对于很多开发人员,如果接口变更了,很少有人会主动去改接口文档的。

整体Project目录结构

这些年,这些事(技术整理)之一_第7张图片
整体结构

所有的Logic和Service都进行Junit测试。其实对于Junit后面也会进行二次封装,将Junit更加简单实用。

很少写注释,也不是不喜欢写注释,因为我信奉一个好的方法名称可以减少很多废话。但是这次我还是将注释写上,因为我想将一切完美一下。

这些年,这些事(技术整理)之一_第8张图片
代码片段1
这些年,这些事(技术整理)之一_第9张图片
代码片段2

以上。有点累了,未完成,待续。下次将分享具体一些。

人有时候就这样,当你真的认真起来的时候,其实还是可以静下心来。


满满的书架
5年前的敏捷故事开发学习笔记
领域驱动设计(小夏童鞋送的)
产品经理必读(启示录)

你可能感兴趣的:(这些年,这些事(技术整理)之一)