前 言
为什么写这本书
架构师是许多互联网开发工程师的职业目标,然而一步步修炼为架构师却并不容易。
回想从事互联网开发的十余年经历,在架构方面的成长,主要得益于所处的团队的良好氛围和众多项目经历。在职业生涯初期,加入了QQ后台团队,遇到了很多互联网行业中技术能力顶尖的前辈。通过他们的无私传授,吸收了许多成熟经验,拓宽了知识面,学到了很多书本上没有的架构知识。同时参与了多个大型项目的研发,通过解决实际问题锻炼了能力。每一次实战都加深了对架构知识的理解,领悟了许多架构设计的道理。此外,还学习了许多架构技术之外的非技术知识,为日后成为架构师奠定了坚实的基础。
最近几年,在培养新人提升架构能力时,发现大家很努力,但是架构设计能力成长却并不明显。大体有两个原因:一方面是通过实践学习架构知识的机会越来越少。随着公有云技术的发展,大家可以轻而易举地实现一套成熟的互联网业务。大家在系统层面遇到架构问题的概率变小了,通过实践学习架构知识的路径也被拉长。另一方面,大家缺乏系统性学习架构的资料。很多新人反馈,平时阅读的内容,大都是介绍某种技术的专业书籍,或者是某种具体场景的解决方案的文章,导致大家对于架构设计缺乏系统性的认知,在遇到一些架构问题时不知道如何解决,希望能够有一些资料系统地覆盖架构知识及其原理。因此结合本人多年的工作实践,系统整理了所学的架构知识,并阐述了架构设计背后的道理,最终汇集成一本书。希望新人通过阅读本书,学到一些架构方法,在遇到问题时能够有的放矢,找到解决问题的方向。具有开发经验的读者,通过阅读本书能够领略技术背后的道理,举一反三,提升解决实际架构问题的能力。
本书是对互联网研发工作的阶段性总结,把已有的知识记录下来,然后放空自己,继续前行。本书也是对从前帮助过我的前辈们的一种致敬,作为一种感谢的方式,通过本书把知识传递下去,希望能帮助更多的人,把帮助新人成长的精神传承下去。
主要内容
本书主要讲解架构设计的思维和方法,同时介绍提高架构稳定性的工具。最后通过架构设计案例来加深读者对理论知识的理解。
架构简介:介绍架构的基本定义,对其有一个明确的定位。
架构设计的技术方法:介绍设计互联网架构用到的主要方法,读者通过这部分内容可以了解具体的技术方法,并可以在日常的架构设计中借鉴,提升软件架构设计能力,优化项目。
架构思维意识:介绍架构设计思维的本质,使得架构师在不同技术环境、不同时代背景下,都能设计出满足需求的架构。
善用工具:在算法、流程和文化等方面,介绍一些好用的工具。合理运用这些工具,可以达到事半功倍的效果。
案例剖析:列举在实际架构设计中的案例,通过案例加深读者对理论知识的理解。
由于各个章节的内容是相对独立的,读者既可以按照章节顺序来阅读,也可以根据需要选择感兴趣的章节阅读。
适合读者
本书主要适合互联网初中级后端开发人员,书中的方法大都是从工程实践中获得,并经过实际验证,能够有效地解决业务问题。通过本书能够对架构技术的理论知识框架有所了解,找到学习方向。读者可以根据自己的实际能力,侧重学习架构技术方法,或者提高架构思维意识。
本书也适合互联网行业的产品经理,为了说明架构设计的道理,本书尽量用通俗简单的方式讲解理论知识。产品经理通过本书,可以学习到架构技术的一些基础知识,在撰写需求文档、设计互联网产品时,起到约束需求和规避风险的作用。例如在灰度升级和柔性的章节中,会说明在系统异常情况下,如何保证用户的基本体验——需要在产品和用户教育上进行方案设计。关于互联网架构设计心得的其他部分,对于产品经理或其他互联网相关从业人员,同样具有借鉴意义。
本书还适合即将加入互联网行业的新人。书中的知识和案例都来自对实际项目的总结。刚入行的新人可以重点关注书中的案例,对互联网行业有一个初步的认识,了解架构设计的基础知识,在以后遇到类似的情况时,明确解决问题的方向。
勘误与支持
由于个人能力有限,书中难免有疏漏之处,欢迎读者批评指正。如果对书中的内容有疑问或者建议,可以通过扫描二维码关注微信公众号“owenzhang”与我讨论。
致谢
感谢博文视点的陈晓猛编辑,为本书的出版付出了很多,在他的督促和帮助下本书才得以顺利完成。
感谢家人的支持和鼓励,让我专心完成书稿。
感谢ppchen为本书写序。ppchen分享过很多领域的知识,从海量服务的课程,到许多基础学科的总结及观点。通过这些分享,我学习到很多新知识,开阔了眼界,提升了基础能力。
感谢bison的指导和帮助,bison对于技术的追求和深入研究的精神,一直都影响着我。
感谢陈国林对本书的推荐,在项目管理和团队管理方面给我提供了很多学习的机会和建议。
感谢troy对本书提出的修改意见。troy在工作中的热心态度和充满正能量的精神,一直都值得我学习。
感谢spray的教导和帮助。从技术知识到工作方法给予了我很多帮助和支持,为我在职业早期奠定了良好的基础。
感谢曾经所在的QQ后台团队和所有共事的同事。我在团队中历练了技术能力,培养了职业精神,受益终身。我为曾经加入过这个富有激情和充满实力的团队而感到骄傲。
最后衷心希望本书能够帮助读者设计出好的架构,成为优秀的互联网架构师!
张云鹏