本帖最后由 阿空 于 2016-6-28 21:59 编辑
“CIO视点 (CIO_VIEW)”公众号文章,转载请注明
导语:话说在跨越千年的时候,有一部系列电影,几乎是搞IT 的人的必看。对了,那就是Matrix。各种从来没有过的思想、各种天马行空,各种感叹,为什么中国人想不出来、做不出来这样的东西呢?这里想说的是,里边有个重要人物,架构师,The Architect。镜头很少,却是最重要的人物之一,因为他就是Matrix 之父。十年以后,有另一部神剧,同样是IT 人的最爱,名叫Inception。同样各种从来没有过的思想、各种天马行空和各种感叹。不像Matrix 里的架构师是个精准精确、却无聊透顶的超级程序,Inception 里的架构师是个小女孩,思路敏捷又洞察人性。她同样重要得很,没有她,就没有那设计完美的4 层梦境。一不小心把影迷的身份又暴露了,赶快扯回来,那么我们今天就818架构师吧。
说道架构要写一篇文章不容易,想要写好这篇文章,首先谷歌一下,官方说法到底什么是架构。没想到的是,中文媒体里,基本上提到架构,就会提到软件架构。嗯,好像缺了点什么。换做英文,Architecture,觉得美了一些。不出所料,出现了维基百科的词条,里边的描述:
A general term to describe buildings and other physical structures. The art and science of designing buildings and (some) nonbuilding structures. The style of design and method of construction of buildings and other physical structures. The knowledge of art, science & technology and humanity. The practice of the architect, where architecture means offering or rendering professional services in connection with the design and construction of buildings, or built environments.
看着标黑的那些词汇,顿时觉得自己的职业高大上了。
然后点击对应的中文词条,赫然是:建筑。
明眼的同学已经看出来了,我从导语一直到现在,其实混合了两个概念:IT 里的架构和建筑——以及其对应的职业:IT 架构师和建筑师(或者建筑设计师)。中文真美,可以分清楚,而英文里,傻傻的就一个词Architect。那么英文在这里是不是就不美了一些呢?
其实不然,美的地方就是,这两者有千丝万缕的联系,同样有各种各样的相似之处。所以,这一个词把两者联系了起来,代表了更广阔的意思。而上面关于“建筑”的描述,恰好引申出了IT 概念里对“架构”的理解。
从建筑到架构
我一直觉得,搞IT 的人,不管专业是什么,不管会不会编程,不管搞开发、测试、部署,还是集成、实施、运维,都应该要有两样本领、两种思想,其一是项目管理,其二是架构。项目管理的话题以后另起炉灶,这里单表架构。
既然我们说了,建筑是架构的大兄弟,那么我们还是从建筑说起。
要造一栋房子,建筑师首先要知道的是,这是造的居民楼,还是办公楼? 如果是居民楼,那么按照德国的划分,这是独栋、还是双拼、还是排房、还是公寓? 如果是公寓,那么是小户型还是多室一厅还是跃层? 那么我们确定一下吧,多室一厅比较常见。开始画蓝图。多少层人口密度合适?要不要电梯?客厅在哪里、卧室在哪里、厨房在哪里? 墙在那里、门在哪里、窗户在哪里? 什么材料的墙、什么材料的地板、什么材料的瓷砖;怎么走线,插头在哪里,下水怎么走? ……
那么IT 的架构呢? 首先要知道为什么需要某种架构,也就是架构所支持的企业的商业战略目标
然后要知道企业应该有什么样的专业能力,需要用什么来实现这样的战略目标 在实现目标的过程当中应该有什么样的企业流程,应该遵循什么样的规则和运用什么样的模式 然后也是画蓝图,也就是Technology Blueprint。用云还是私有数据中心?网络怎么设计?什么样的应用框架符合这些规则和模式,用什么样的应用来实现企业流程:ERP,CRM,SCM?需不需要BI? 怎么做防火墙、怎么保证安全?怎么做应用之间的接口?做不做、怎么做企业服务总线?数据存放在哪里? 应用是基于什么编程语言、什么软件框架?接口用什么技术? ……
企业服务总线(Enterprise Service Bus,ESB),是一种基于服务的技术架构。说白了,就是为企业里各个软件应用提供连接和服务的一种框架,能够整合不同种类和形式的应用。就像现实生活中的大街一样,连接了不同的楼宇。
有弟兄可能要说了,哇,这个架构的观念还真大。没错,这是从“企业架构”的层面往下一层一层削皮去子的。通常说的,有很多种架构,比如网络架构、应用架构、系统架构、集成架构、数据架构、安全架构以及最常用的软件架构,都是包含在这个框架之内的,大多比较偏向技术。而“企业架构” 则是从商务开始,一直到技术实现,企业架构师需要全程地陪,考虑的因素还包括了人、流程、方法论和工具。在很多情况下还需要进行关于“钱”的考量,也就是怎么用合理的投资和合理的人力资源实现合适的解决方案——这就是所谓的Solution Architecture。
企业架构就是Enterprise Architecture,简称EA。远不是一个纯技术概念,而是跟企业运营息息相关的整体信息系统框架。
那么问题来了,自己究竟在哪个范畴呢?
其实,每个人都可以在自己的领域成为一个架构师,重要的是,应该像架构师一样去思考。
像架构师一样去思考
以前有一本书,叫做《Java 编程思想》。英文原版叫做“Thinking in Java”。中文的翻译其实很好了,但我觉得欠缺了原文里的一个“用Java 的方式来思考”的隐喻。 前面说到的IT 人应该有的本领和思想,之一就是“架构”,并不是说人人都应该去做架构。人人都应该做自己喜欢做的和擅长做的事情。而用架构的方式来思考的能力,是每个IT 人都该锻炼的;是可以锻炼而且难能可贵的。
首先问的问题应该是Why,然后是What,最后是How。 比如Matrix 里的架构师,他很明确自己的目标,那就是保证机器世界的正常运行,需要人类电池系统的正常运行。Matrix 的架构经过多次升级,都是为了这个终极目标的;Inception 里的Ellen Page 演的小女孩架构师(其实我们现在都知道她应该叫“建筑师”或者“建筑设计师”了),也很清楚,一层一层的梦境,都是为了引到最后那层梦境的一个点上的。
这是回答Why。
接下来应该重视的是企业业务的需求和技术的需求。业务的需求得懂,而技术的需求在这个上下文更重要。比如安全性、性能、可操作性、可扩展性、可恢复性、可维护性等等。理想状态下,这些需求都得实现,而且要不多不少(我知道,理想很丰满,现实很骨感的)。
用什么实现这些需求,是回答What。
再往下是架构的设计了。这需要一些想象力,和虚构化了之后再具体化的能力。Page 在第一次与小李进入梦境的时候把街道弯了的那种能力,就是这里说的,你懂的。这种能力不是每个人都有,但是一些固定的原则和模式是可以学的。
比如,原则包括了:亲亲法则“KISS”(Keep It Short and Simple);不要去自己再发明轮子,用已有的东西(比如成型的软件框架);黑箱原则(比如“模块”、“封装”)等等。而模式,比如搞软件的人都懂的,大名鼎鼎的“设计模式”;比如搞SAP 应用架构的都知道的,常用的“三系统或五系统模式”;比如搞网络的人都明白的,“非军事区”。
这里就是回答了How。 三系统模式指的是项目开发、测试和运营三系统;五系统指的是再加上维护开发和集成测试系统 非军事区指的是Demilitarized zone (DMZ),网络设计里常用的用于保证安全的一个对外的网络区域
最后的最后,我觉得就是要有包容的思想和接受变化的胸襟。
未完待续 这是来自Youtube 上的一个非常赞的短视频,关于EA 的,大家有空看一下吧。
https://www.youtube.com/watch?v=qDI2oF1bASk
觉得戛然而止不太好,但是再继续写下去,恐怕就要谈人生、谈理想了,欲罢不能。就此打住,以后再深入吧!
欢迎关注我们的公众号!
|