前言
为什么写这本书
每个程序员心中都有一个成为架构师的梦想,梦想是美好的,但道路是曲折的。
我在2006年开始参与架构设计,原本以为学习架构设计就像学习一门编程语言一样,先学习基本的语法,再研究细节和原理,然后实践一下就能够快速掌握。但真正实践后才发现,架构设计的难度和复杂度要高很多。从最早开始接触架构设计,到自我感觉初步完整掌握架构设计,至少花费了6年时间。等到自我感觉彻底掌握架构设计的精髓,至少花费了8年时间(当然,在这个过程中我不是一直在做架构设计)。
我曾经以为是自己天资愚笨才会这样,后来我带了团队,看到几乎每个程序员在尝试架构设计的时候,都面临着我遇到过的各种困惑和瓶颈。特别是我作为职业等级晋升评委的时候,发现很多同学技术能力很强,业务也不错,但却卡在了架构设计这部分。我意识到这应该不是个人天资的问题,而是架构设计本身的一些特性导致的。
我总结了几个架构设计相关的特性。
1. 架构设计的思维和程序设计的思维差异很大。
架构设计的关键思维是判断和取舍,程序设计的关键思维是逻辑和实现。很多程序员在转变为架构师后,很难一开始就意识到这个差异,还是按照写代码的方式去思考架构,这样会导致很多困惑。
2. 架构设计没有体系化的培训和训练机制。
大学的课程几乎没有架构设计相关的课程,架构设计的书籍更多也只是关注某个架构设计点,没有体系化的架构设计书籍,导致程序员在学习上没有明确的指导,只能自己慢慢摸索,效率低,容易踩坑。
3. 程序员对架构设计的理解存在很多误区。
例如,要成为架构师必须要有很强的技术天分;架构师必须有很强的创造力;架构设计必须要高大上才能体现架构师能力;架构一定要具备高可用、高性能……这些似是而非的误区让很多技术人员望而生畏,还没尝试就已经放弃了。
得益于移动互联网技术的快速发展,我有很多机会直接参与架构设计,这些架构背后的业务形形色色,包括社交、电商、游戏、中间件、内部运营系统;用到的技术栈差异也比较大,包括PHP、Java、C++等。虽然每次架构设计对我来说都是一个新的挑战,但正好也提供了非常好的机会,让我亲身体验不同的架构设计。在这个过程中,我不断学习、思考、实践、总结、改进、交流,逐步形成了自己的一套架构设计方法论。
有了这套方法论后,首先,我在做架构设计的时候游刃有余,不管什么样的业务,不管什么样的技术,按照这套方法论都能够设计出优秀的架构,在职业等级面评的时候,就算我之前从来没有接触过对方的业务,也能快速理解对方描述的架构和发现其中做得好或不好的地方;其次,在指导其他同事的时候思路很清晰,容易理解,效果明显。原来对架构设计比较迷茫的同学,通过几次结合案例进行方法论培训,都能够很快地掌握这套方法论并在实践中应用。甚至有很多其他业务线的同学,遇到架构设计的困惑,也来找我交流和指导,按照这套架构设计方法论的指导,能够较快地理清架构设计的思路。
本书的主要出发点就是将这套架构设计方法论分享给更多热爱技术、有架构师梦想的技术人员,降低架构学习的成本,减少架构学习过程中走的弯路,助力大家更快地实现自己的架构师梦想。
本书内容已经在“极客时间”App上开设了“从0开始学架构”的专栏,订阅人数已经超过25000人,成为“极客时间”最受欢迎的专栏,能够得到这么多技术朋友的信任,相信书中的内容一定会让你有所收获。
本书的主要内容
本书涵盖了我的整套架构设计方法论和架构实践,主要包括以下内容。
? 架构基础:先介绍架构设计的本质、历史背景和目的,然后从复杂度来源,以及架构设计的原则和流程来详细介绍架构基础。
? 高性能架构模式:从存储高性能、计算高性能方面介绍几种设计方案的典型特征和应用场景。
? 高可用架构模式:介绍CAP原理、FMEA分析方法,分析常见的高可用存储架构和高可用计算架构,并给出一些设计方法和技巧。
? 可扩展架构模式:介绍可扩展模式及其基本思想,分析一些常见架构模式。
? 架构实战:将理论和案例结合,落地前面提到的架构原则、架构流程和架构模式。
本书适合的对象
? 有一定的编程基础的软件开发工程师。
? 对架构设计有兴趣的技术人员。例如,测试、运维等岗位的人员。
? 有初步的架构设计经验,但需要继续提升的技术人员。
勘误与支持
因个人水平有限,且架构设计整体涵盖的技术范围很广,技术深度很深,书中难免有不足之处,还望读者批评指正。如果你对本书有比较好的建议或对书中内容有所疑惑,可与我联系。
Email:yunhua_lee@163.com
致谢
首先感谢王行云、胡晏秋、陈俊良、张怡炘等同事对本书的勘误和审核,帮助完善了本书的很多细节和内容。
其次感谢家人的支持,在写书的过程中父母、妻子承担了家庭的重任,让我能够安心写作。
特别感谢陈晓猛编辑,本书在他不断督促下才最终写完初稿,后期他耐心地指导、审稿、修改,最终才有了本书的诞生。
特别感谢极客时间架构专栏团队郭蕾、何潇、周君凤等负责人,打造了一个非常成功的架构专栏,他们的高要求也让整体内容更加完善、更加优质。
特别感谢高效运维创始人萧田国、特赞科技CTO黄勇、腾讯云高级总监熊普江、贝壳金服 2B2C CTO史海峰、资深技术专家于君泽(右军)、21CTO社区创始人杜江(洛逸)几位专家对本书的推荐。