谈谈软件架构和架构师--童亚斋

       软件架构和架构师,这是一个老生常谈的话题,一直争论,也没有什么具体的标准和定论。

       行业不同,公司不同,并且公司发展的阶段不同,对软件架构的要求和对架构师的要求都不同。

        首先谈谈架构师。一提到架构师大家都感觉高大上,感觉技术是非常牛。其实架构师不仅仅是一个技术岗位,还是一个管理岗位。作为一个架构师,你的技术必须要足够好,想在技术圈里混也是不容易的。古代的时候是文人相轻,现在在技术圈里同样如此。如果你没有两把刷子,不用说一个通才,你至少要在某一方面是大拿。别人搞不定的,你可以挥挥洒洒,在指尖下键盘畅快的敲击中将问题搞定。同时架构师也是一个管理岗位。你在进行技术选型后,在构建架构时,在封装完模块后,最后将一个软件平台推出来让广大程序猿使用,这时候,你要有好的沟通能力,管理能力和比较好的口才。得不到别人认同,没有推广出去的程序和架构是没有价值的。

        所以作为一个架构师,不仅要在专业的技术层面善于钻研,有所建树,同时,也要加强沟通、管理方面的培养。

        还是回到文章开头提到的,不同行业和企业对架构师赋予的职责是不一样的。有的企业可能把架构师当做项目经理用,有的企业把架构师当做程序员用,还有的企业架构师是无所不能的,项目管理,需求规格说明书,架构搭建,数据库设计,代码开发,性能测试,部署,甚至给客户的业务培训都会去。当然也有很多良心企业,能够给架构师以相对应的岗位,比如搜索引擎架构师,流程引擎架构师,数据算法架构师,大数据架构师等等。当然专有专的好处,杂有杂的好处,就看自己对以后的职业如何规划。

         如果以后想转管理那么任务杂一些,未必不是好事。如果以后就是想在技术领域一直钻研下去,那么就最好找个自己感兴趣的方向,踏踏实实的做下去。

        笔者做过多年的企业信息化建设,也做过互联网电商的架构。下面先谈谈企业信息化中的架构。以后有机会再聊聊互联网的架构。

         架构包括整个集团系统的总体架构和单个项目的架构。

         首先集团架构。集团要有一个基础软件平台,这个平台要支撑企业的绝大多数系统。因为一个集团在做信息化的时候,要有五统一即:统一规划,统一投资,统一架构,统一建设,统一管理。所以一个软件基础平台的技术选型,架构选型,平台搭建就是核心。平台的关键技术比如选择java系列,那么相应的框架比如springmvc,或者spring boot,redis,rabbitmq,以及数据库的选择,网络架构的配合,以及配置管理和持续集成的工具,比如maven、git,jekins,redmine等等。

         软件基础平台的核心模块也要确定好,比如用户管理,组织管理,流程引擎,流程设计器,报表引擎,日志管理,调度系统,安全监控等等。这些模块都采用什么插件或框架,是自主研发还是采用开源系统等等。

         支撑一个集团运营包括很多系统,例如,预算系统,成本系统,CRM系统,招标采购系统,人力资源系统,协同办公系统等等,甚至达到数十个。这些系统运行到一定阶段会要求集成联动,最简单的理解就是单点登录要实现,从而提高办公效率。数据孤岛的打通也非常重要,从而使资金流,物流,信息流真正贯通,为公司的决策提供数据支持。

         单个项目的系统架构一般要求架构师把握住一个项目的关键点1.需求范围,2.技术选型,3.进度把控。技术架构贯穿于项目始终。架构师既要有行业背景,又要有丰富的技术知识面。因为要把握进度节奏,所以项目的配置管理也必不可少。源码管理,项目管理,wiki管理,jar仓库管理,持续集成。

         软件架构不仅包含系统建模、定义接口、划分功能模块、大胜模式、性能优化等,还包括系统的安全性、易用性、产品支持、发布管理、部署方式等问题。
         架构师不仅要为用户创造实用的软件,还要平衡兼顾不同部门的目标,如 CE O要求控制成本,运营部门要求易于管理,二次开发人员要求代码易读易维护等。
        当项目提交后,又会遇到大访问量,大数据量,大文件,访问速度等等情况。我们采用反向代理,负载均衡和缓存来从软件层面解决大并发,用好的设备和F5来从硬件层面来解决大并发。大数据量我们采用数据库分区,分表,主从表,主从库,只读,只写等来优化数据库设计。大文件,我们来搭建专门的分布式的文件系统。

         以上是企业信息化的一些架构和方法,互联网及移动互联网的架构和关注点与企业信息化还是有很大不同,后面会和大家分享。

谈谈软件架构和架构师--童亚斋_第1张图片

谈谈软件架构和架构师--童亚斋_第2张图片

  

你可能感兴趣的:(谈谈软件架构和架构师--童亚斋)