前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工作这么多年,今天我对架构做了一个简单思考

工作这么多年,今天我对架构做了一个简单思考

原创
作者头像
王新栋
修改2019-07-26 17:41:17
4000
修改2019-07-26 17:41:17
举报
文章被收录于专栏:程序架道
图片来自网络
图片来自网络

架构,如果让你给它一个定义,恐怕一时不好表达。正如,问你,山,是什么;水,是什么一样。对于程序员来讲犹如游山玩水的侠客,畅游在程序-代码-架构之中。为架构,下一个定义,和为山水,下一个定义,一样可能会略作沉思之后,方能概述。

微服务是一种架构风格。曾经也思考,微服务,到底是先有了微服务这个动作,还是先有微服务这个名词。想到此,想起我们的祖先,拿来一个木棍,在另外一跟木棍上,使劲旋转,生出火来。后来,我们为其取了一个名词:钻木取火。因此,微服务也恐怕是这样,我们实践了分布式架构的动作,后又继续尝试精进更能符合业务和组织的方法。后来有技术达人总结为:微服务。

我们再说回架构,架构一定是为应用程序服务的,那么应用程序的需求是什么,有两个,一个是功能性需求,实现一些什么样的功能,这些功能的实现是通过代码编写最终完成;另外一个是非功能性需求,包括这套应用程序的可维护性、可测试性、可扩展性和可部署性。这个非功能性需求便是架构要解决的问题。

对于功能性需求你完全可以用一个"大肚子"应用程序去实现,只有对我们说的非功能性需求有要求的时候,也一定会对这样的非功能性需求有要求的,因为你肯定不希望自己的程序不可维护、不可测试、不可扩展和不可部署。非功能性需求更是一种能力,是应用程序健壮与否的能力,是程序的"肌肉"。

那架构是什么,你可以清晰的为之定义了吗?

程序的架构,有时候我们往往与建筑架构类比,更有意思的一点是,在英语中建筑师和架构师是同一个词architect。建筑架构,一般有结构、管线、电气等多个构成。那么程序架构呢,早在不少年之前,国外就有这方面的专家,提出了4+1的视图模型来描述架构。

4+1视图中的4,有逻辑视图、实现视图、进程视图、部署视图。其中的1,是场景。场景来负责把视图串联在一起。这种视图模型表示法是对现代化应用程序架构一个准确的描述,放在我们如今广泛使用的微服务架构中能很清晰的给出精准的定位。无论如何架构,都会涉及逻辑、实现、进程和部署。

架构有它的风格,在类比到建筑上。建筑架构的风格可以有 "大裤衩"的豪放之风,也可以有细腻的江南水乡之风。程序的架构也有它的风格,分层式的架构是一种风格,为其代表的是MVC;六边形的架构是一种风格,定义了端口和适配器,解耦了业务逻辑和依赖;微服务是一种架构风格,将应用程序构建为松耦合、可独立部署的一组服务。

计算机软件已经发展了那么多年,开发程序仍然是一个需要认真对待的复杂过程。无论今天你如何敏捷,定义问题、需求分析、软件架构、详细设计、编码与调试、单元测试、集成测试、保障维护,这些动作都少不了。你承认不承认都会在大脑中和行动上经历这些动作,而架构活动是软件开发中的核心活动。

那么架构师呢

架构,对于架构师,是解决问题的工具,如果架构师搞出的架构不能解决问题,架构对于架构师就是一个玩具。

本文首发于个人公众号 【程序架道】

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档