什么是架构师?业内一直没有定论,在前两天『聊聊架构』群的讨论中,来自各大互联网公司的架构师都对自己的工作内容做了总结,然我们还是没有抽象出架构师的定义。反而引来了跟多的问题,比如: 1. 架构师应该写代码吗? 2. 架构师有分类吗? 3. 好的应用应该包含哪些特点?什么才是好的应用系统? 4. 对于架构师,有哪些能力要求? 5. 怎么才是完整的方案? 怎么写出完整甚至完美的方案? 为了回答这些问题,1月10日晚上8点30分,我们邀请了1号店资深架构师张立刚来分享他自己的经验。本文根据其演讲整理而成。精彩观点提前看:
张立刚,2012年7月加入1号店,架构部-OMS订单管理平台负责人,负责1号店订单、库存、拆单、运费、第三方平台订单等电商核心交易系统。期间,作为负责人及项目经理,主导并参与了1号店SOA治理、订单Service化、订单水平拆库&去Oracle迁MySQL、无线性能优化及拆pool、运费体系重构、库存准确率优化等重要项目,负责1号店与Tmall、百度、当当、B2B2C平台等第三方平台订单业务。立刚从0开始建立了1号店完善的订单监控、预警、履单体系,致力于构建新一代电子商务核心系统–智能OMS订单管理平台。 架构分类 关于架构,大体可以分为以下三类: 1.1 IT架构 基于硬件、网络等构建整体的IT运维架构体系,包括IDC机房、网络拓扑、安全、负载均衡、运维监控等 1.2 基础架构 主要基于基础服务的软件产品架构,如SOA中间件、消息中间件、规则引擎、大数据存储、数据库产品、第三方组件等,相对独立于业务系统、不考虑具体的业务场景,更多地关注技术产品本身的性能、可靠、可扩展等,服务于业务系统。 1.3 应用架构 偏重于业务功能的实现,在基于用户需求实现业务功能、提升用户体验的基础上,保证系统的性能、可靠、可维护、可扩展。 我个人更愿意把应用架构师称之为SA(system analysist),即系统分析师。 应用架构师是用户(需求方)与开发人员(实现方)的桥梁,他的作用就是把业务与技术更好地结合起来,站在中立的角度-不唯技术、不唯业务,在业务和技术之间找到那个平衡点,做出最好的系统。 记住:首先,技术是为业务服务的;再者,技术可以推动业务。 3.1 好的应用系统特点
3.2 完全满足业务需求做不出好系统 业务需求是理想、技术是现实,理想是我们希望像鸟儿一样自由地飞出银河系,现实就是我们刚能踏上月球,还上不了火星,还必须借助于笨重的宇航服、宇宙飞船。 3.3 纯靠技术做不出好的业务系统 以减少系统功能降低用户体验为代价的高可用、高性能、高并发等貌似很NB的系统是得不到赞赏的。 3.4 一个好的业务系统一定是技术与业务的完美平衡 找到这个平衡点,是应用架构师的职责。 4.1 先看一个百度而来的架构师能力要求 一般来讲,系统架构师应该拥有以下几方面的能力:
4.2 如果我要招聘应用架构师会再加一条,并且是第一条 优秀的业务理解、分析能力,能站在业务的角度实现用户需求、提升用户体验。 因为上述的10条要求大多地是从技术的角度考虑的,可忽略了一点,我们做出来的系统是给用户使用的,用户说好才是真的好。 4.3 架构师的职责,不仅仅是技术
4.4 架构师是一个多角色综合体
5、 维护人员—系统维护者 只有站在一个系统所有的干系人角度,你才能设计出好的系统。 5.1 架构师不仅仅是技术架构,也是业务专家 专注于技术领先的是技术专家,不是应用架构师。 首先站在业务的角度去考虑问题,找到业务架构和技术架构的平衡。 5.2 架构师要培养
5.3 不要轻易说推倒重来
5.4 架构师要不要写代码?可能的话,尽量写吧
6.1 怎么才是完整的方案 一说方案,好多人就拿出技术架构图、流程图了,很漂亮很完美,NO,NO这不是一个完整的方案。 完整的方案应该包括但不限于以下要素:
6.2 怎么写出完整甚至完美的方案 还记得上面说的那几个角色么:用户、产品设计者、方案设计者、开发人员、维护人员 同时站在他们的角度看,你一定会写好的。 |
|