18 年技术老兵、恒拓开源架构师、远光软件架构师曹勇谈架构师之路及开源项目 AWCP 的发展历程


来自:开源中国,开源访谈

AWCP 是一个共享定制云平台,集成了 jflow 工作流引擎,并完成了基于钉钉的开发框架自动生成,可快速搭建基于钉钉管理系统。本期【开源访谈】邀请到 AWCP 项目创始人分享他的架构师之路及开源项目 AWCP 的发展历程。

【本期嘉宾】

曹勇,恒拓开源架构师,远光软件架构师,Java/C++ 程序员;jflow项目初创人员之一,awcp项目创始人。拥有 15 余年技术研发,研发管理经验,积累了丰富的技术管理和架构设计经验;在电子政务领域,企业信息化建设领域、互联网平台建设领域有着丰富的行业经验。深圳市资源交换平台,公文交换平台,政务云平台等系统都是主架构师。目前的主要研究领域包括:NB-IoT,hadoop、kettle,Docker等


1、首先请做个自我介绍。

大家好,我是曹勇,湖南郴州人,在软件行业干了18 年,一直从事于信息化系统的建设和基础平台的架构。曾经在远光软件,恒拓开源干过系统架构的工作。在深圳10多年,做了许多与深圳人日常相关的软件架构,例如资源交换,公文交换平台,政务云平台,土地房产交易系统的架构等等,这都是属于用户数据庞大,并发性很高的的平台。由于这么多年在信息化领域和电子政务领域做系统的沉淀,我们逐步形成了自己的一套开发体系,现在把它命名为AWCP。

2、作为一名资深的架构师,您对架构的理解是什么?架构师的本质是什么?

(1)架构师在整个系统、项目中的地位类似于房屋建造的设计师,需要对项目的整体进行统筹规划、有全局把控的能力,能够在功能、展现、技术选型等方面做决策,在技术攻关的时候还能撸起袖子直接上战场的人。

架构师应该考虑项目未来的发展,现有的架构是否满足项目未来5到10年的性能、存储以及功能变更的规划。做一套系统最关键的是两个方面:第一是性能上的规划,第二是功能上的扩展。个人比较推崇小而美的架构,并进行逐步迭代,不要过度设计,增加系统复杂度。

目前大数据分析,机器学习等科技前沿领域不断发展,不管信息化技术怎么发展怎么推进,怎么演变,它改变不了一个初衷:人与人之间的交互,有了交互就要审核审批,数据处理,数据流转,在不同的端上实现信息采集和信息展现。所以我就根据自身经验和积累,持续在数据库,流程引擎,表单定制领域不断深入研究,故而打造了AWCP开发平台。

(2)我认为,架构师的本质是将复杂的业务简单化(大道至简)。将无序变成有序,找出应用边界,再有机结合,具体用什么技术来解决问题,个人推荐小而美的思路,简单明了的解决方案,一切从简。同时,架构师需要一定的技术基础,侧重于产品全局的把控,思考的更多更全面,包括功能、用户群体、适用范围、未来扩展性、规划等。

3、您还涉猎了 docker、hadoop,kettle,物联网等很多领域,对于行业内不断出现的技术演变和新技术,架构师应抱有怎样的态度?

对于任何新技术我都很 open。一个新技术的出现,我会希望了解它产生的原因、背景,是不是现有技术无法解决的情况下产生的,新技术解决了什么关键问题。同时结合我目前的应用场景,是否适用,如果适用我会进一步的研究学习。比如 Docker技术,目前我的目标系统为了满足个性化定制,初步方案是独立部署。独立部署涉及到后期的维护,发布版本,更新等等,这就要涉及到容器技术。后的发布更新,升级就非常快速了,新用户环境搭建很便捷。因此这方面我们就采用了docker。同时还对镜像做了很多规划,不同行业的应用系统会提供不同的镜像来初始化。

同时,我看好微服务架构并在做这方面领域的技术储备,企业微应用的场景预计会用上微服务架构。集团在江西建设了一个特色小镇,规划了大量的智能家居,万物互联的概念,目前正在找合作伙伴丰富AWCP在物联网这块的基础框架。实现后我将免费开源给有需要的同行使用,让AWCP基础功能越来越丰富,越来越满足客户需求。

4、普通开发人员要如何转型为架构人员?现在涌现的很多轻便化和简易化的产品会不会降低对架构师的门槛?

(1)普通开发人员不应该急躁、眼高手低,成为高手不是一朝一夕的。首先,应该做好自己的本职工作,在每一次解决完问题后再思考还有没有更好的解决方案,一点一点的进步,同时养成好的习惯,动手之前先想,能想出多种解决方案,并选择出最适合的,对于自己的成长一开始不要定一个很大的目标,给自己一个规划,有想法就去做,一点一点地积累,多动手,多思考,多重构。曾经遇到一个应届毕业生看设计模式,这就是我不推崇的,当然,能力特别突出就另当别论。

(2)轻便化和简易化的产品不仅不会降低架构师的价值,反而是一个合格的架构师要学会用这些稳定的、可靠的小组件,去丰富工作中的一些解决方案。如何将众多好的开源产品进行融合、整理,这是架构师一个重要的能力:架构治理能力。

5、做 AWCP 项目的初衷是什么?做 AWPC 时遇到的过什么困难?

(1)首先,我希望技术人员都能够有共享的心态,共享代码,资源,经验。可以一起学习、研究,一起为平台的升级扩展努力。

其次,是看到了目前的一些众包平台的没有涉及的领域。如猪八戒网,它是一个信息的搓合平台,很多程序员在上面接单,但可能同一时间都在做同样的事情,但大家都没交流,没共享,重复造轮子,其他人无法在某个稳定的基础功能上进行扩展。

基于上述所说,我想能不能做一个规范化的、统一的技术开发平台来承接外包开发,做好信息的互通、积累。公司的信息化资产也可以逐年的沉淀积累。解放程序员回家,让他们有更多的时间陪伴家人,让他们做企业用得起的软件。这就是做 AWCP 的初衷。

(2)印象中遇到最困难的是在做资源交换平台时,数据并发的问题。那时采用了 esb 和 BPEL技术的一些组件,但数据并发过程中出现了瓶颈,并发数达到 200 就停止请求了。最后通过第三方性能测试跟踪平台才发现开源ESB代码中的某个参数设置导致了故障,几乎用了一周时间找问题。还有就是面对客户需求不停的变更,不停的调整,程序员通宵加班还得不到客户认可,人员流失严重,后续力量跟不上的时候,怎么交付系统,如何架构系统,那些心酸史都可以写成一本书了。

6、作为一个协同云平台,AWCP 发展过程中遇到的比较多的是技术问题,还是业务问题?

主要还是业务问题。作为一个平台,不可能满足各个行业的业务。我们的定位是专注于做基于数据库的信息化业务系统,为用户提供工具、组件、模块。平台上有各个领域专业的用户,他们在自己所属的行业深入了解,梳理好业务需求,将需求不断细化、完善,然后通过平台配置实施出来,满足不了时告诉我们,再根据具体需求来升级组件。

7AWCP 目前的迭代主要在解决哪些方面的问题?能简单透漏一些发展历程和后续的计划吗?

目前的迭代主要是做组件的升级扩展,移动端适配,沉淀更多的应用模板,让系统建设更加便捷。

平台未来的计划主要物联网接入、大数据分析和机器学习这些领域组件构建。

一方面开发物联网接入模块,封装标准协议实现数据采集,指令推送,平台监控,和数据应用。

一方面做智能分析、数据分析,把现在各个行业应用软件数据做整合,实现数据的智能化分析。满足企业对自身数据的一些挖掘使用,风险评估,决策分析。

另一方面机器学习,通过对政策文件的解构实现政策解读、政策引导,即政府制度文件发布出来后可以通过平台快速判断、分析并推送给符合条件的企业。同时还能根据企业经营数据快速分析出企业适合在哪些领域发力,满足条件后即可享受政府的哪些政策优惠。

8、您是如何看待开源的?为什么会选择将 AWCP 全部开源?

开源需要有开放的心态。一个项目团队里,每个程序员将自己的代码开源出来,可以和其他成员一起探讨,推动项目开发,不仅自己做了贡献,也给别人做了贡献。

将项目开源出来,一是企业可以放心使用;二是遇到问题可以得到更多人的帮助,获得更好的解决办法;三是不断会新的人加入对项目做作贡献。

AWPC全部开源也是基于上述原则,开源可以帮助项目团队更好的发展。一个开源社区的力量远远大于一个项目团队。开源是希望大家能一起来把这个平台做大做强。

推荐↓↓↓
开源最前线
上一篇:开源工具Emscripten,让C++秒变JavaScript 下一篇:百度开源高性能 Python 分布式计算框架 Bigflow