架构是什么?怎么学?有哪些分类?有什么内容?
这些问题任何一个拿出来都够写一个月了。
本文主要简单介绍一些架构的前置知识,同时给出一系列涉及架构相关的书籍。
注意:文章源自个人认知,仅供参考,有不合理或者错误的地方,欢迎指出和讨论。
1 我认为的架构
架构就是在适当的时期,进行“分分合合”的过程。
怎么理解适当的时期?
-
大的方面来讲,根据企业发展和业务发展的诉求。举例来说:居委会说每个月有很多通知需要发给社区的居民,想委托你们做一款 APP 可以查看通知消息。这个时期,最要紧的是让居民能收到并且看到通知。而不是搞一个又可以聊天又可以视频,还可以开社区大会的东西出来。当然以后可能会有这些情况。
-
小的方面来说,根据任务紧急程度,甚至是任务要求的上线时间。这也是需要考虑当前时期,做某些事情是不是合适。比如:上面说的这个通知 APP 能实现查看文字信息,工时仅需要三天,而查看视频需要十五天。这个时候,也是需要考虑当前时期的。
最重要的是,适当的时期,是进行架构时要考虑的首要条件。
怎么理解分合?
围绕分而治之去解决复杂的问题,在适当的时候,也有合的操作。
架构怎么分
我们先来分一下“架构”。如果把架构简单分一下,我认为有两种架构。
一种是业务架构,另一种是服务架构。(或者称为系统架构)
- 业务架构:根据一定的原则和方法论,抽象出业务的流程、模块、数据,把业务“造出来”。
- 服务架构:利用软件、硬件来支持和保障业务的顺利运行,也就是让业务“跑起来”。
描述有些抽象?那你可以这么想。类似小时候玩的叠纸飞机。
业务架构就是:怎么叠,叠什么形状,能造出个纸飞机。系统架构就是:用什么纸,在哪里飞,如何扔,飞之前要不要哈一口气。让纸飞机真正可以飞起来。
-
真实的业务架构内容:如何划分领域?如何组织各功能模块?最终呈现是小程序还是 APP?使用什么编程语言?什么框架,框架里面选用什么模式?如何承载数据?数据表如何设计?等等。
-
真实的系统架构内容:包括使用物理机还是用云主机?自己买机器还是买阿里云的?需要不需要缓存?你的服务容量是多少?可承载多少人同时访问?要不要实时扩缩容?数据怎么保证不丢失?机房光缆挖断了,怎么保证用户依然能访问到?等等
而每种架构里面,核心操作就是分分合合。
到底分合什么
分合具体的业务模块、机器资源、软件资源等等。
在业务架构中,比如:你决定开发上文说到的“通知 APP”,那么要做哪些模块?注册登录要不要做?推送服务要不要做?消息汇总列表要不要做?甚至再来说,查看的人可不可以发送消息?到数据层面,用户信息存到一个表合适吗?地址信息里的省市区怎么组织比较好?等等。这都是要考虑的点,做这些考虑的时候,是不是一个“分”的过程?
在服务架构中,支撑业务需要几台机器呀?比如电商场景,分给订单服务的是不是得比分给聊天的机器多呢?我们的服务部署到几个机房呢?能不能支持全球访问呢?这也有分的过程。
合的过程,从业务上来看,省市区信息是不是合并到地址服务比较好?那地址服务是不是合并到物流服务比较好?改昵称改头像的频率很小,是不是共享一些机器资源?降低成本呢?等等
到这里,之前不懂得人,是不是有了一些简单的认识?已经是大神的你,是同意还是觉得哪里有问题呢?无论如何,有思考有收获就好。
2 如何成为架构师?
没有捷径。
一定是从实践中成长起来的。理论结合实践是最好的,因为理论可以让你避开大部分别人踩过的坑。
最重要的,不要放过任何一个业务或者技术问题,都是你思考的好机会。
真实的职业发展路径,作为技术人员来讲,一定是从最底层小开发人员开始,改 bug,写小模块,写大模块,写一个系统,承担某个业务线,成为 CTO 或者专家,解决很多复杂的问题等等。不断学习,不断丰富自己。才成为架构师的。
当然话说回来,人人都能成为架构师。别小看你每一次思考和选择,都是你架构师之路上的垫脚石。
3 书单推荐
常见的计算机书单里,大家豆瓣知乎一搜就有啦。这里就不推荐啦。
注意:以下书籍顺序是从易到难,可以自己选择。
业务架构书单
- 《企业 IT 架构转型之道:阿里巴巴中台战略思想与架构实战》
阿菜说:描述中台的前因后果。什么是中台?为什么有中台?以及中台的分类和发展。以阿里巴巴业务为线讲述。
- 《企业应用架构模式》
阿菜说:很经典的一本书,虽然书很老,但是里面很多原则和思想,至今仍不过时。稍微有些难度。理论和实践都有。看完会有一个系统性的架构概念。
- 《业务中台产品搭建指南》
阿菜说:从头到尾讲述构建电商系统的书,很值得读。五星推荐。
- 《领域驱动设计》
阿菜说:这本书是经典书籍,偏理论。个人感觉很难。但是适合不断的回头读,不断的翻看。去理解里面的内容。你会发现时间长了,某些时候,慢慢就理解了。这本书前前后后读了两个月,因为中间总睡着。。。
- 《实现领域驱动设计》
阿菜说:书如其名,实战。在领域驱动的指导思想下,真实去做一个项目出来。
- 《架构整洁之道》
阿菜说:书很厚,很系统,很详细。不太好读。有很多偏文字性的描述性的知识和原则。适合翻着看。
服务架构书单
- 《大型网站技术架构 : 核心原理与案例分析》
阿菜说:入门,知道什么是服务或者系统架构,循序渐进,开阔视野,看完服务架构知识面的广度提升。可以听懂别人说的那些技术名词了。
- 《从零开始学架构》
阿菜说:偏系统架构、运维、服务部署、软硬件配合等等,有一些实际的方案,个人认为是上一本的丰富。很不错。
- 《微服务设计》
阿菜说:什么是微服务?为什么有微服务?怎么做?有哪些原则?算入门书。读起来很轻松。
- 《微服务实战》
阿菜说:和上一本差不多,适合补充阅读。偏向实践。
- 《中台架构与实现:基于 DDD 和微服务》
阿菜说:作者自己给出了中台的定义,以及微服务和中台的关系。有理论有实践,适合多次研读。包括中台是什么?中台和微服务怎么结合?怎么实践?真实工作中该怎么应用这些知识?挺好的一本书。五星推荐
有趣:
- 《大象 UML》 不读之前自己根本不知道 UML 是什么。别人的图都是怎么画出来的。
- 《算法基础:打开算法之门》 很基础。挺简单的,适合不是那么懂数学的读。学渣的我读懂了。
- 《计算机系统:基础概念及编程实践》感觉像在复习大学课程。
- 《代码里的世界观——通往架构师之路》推荐,作者的思考,书籍的内容,都很有意思。就像饭后的雪糕或者甜点。
- 《代码之外的功夫》 全方位走向技术之路。
- 《淘宝技术这十年》 比较老,看看淘宝是怎么发展起来的。当课外书看了。
- 《中台产品经理宝典》 写的很棒,来自一个产品经理的知识和经验。值得读。
- 《电商产品经理:基于人、货、厂…》 正在读,很有意思,在这之前你可能不知道原来细分起来,有这么多东西。知己知彼。
下期预告:技术人如何写好一份简历?
欢迎一起讨论学习,共同进步。
我是程序员阿菜,祝好。