写点什么

架构实战营 - 毕业总结

用户头像
༺NPE༻
关注
发布于: 1 小时前

架构实战营说长不长,说短不短,真到快要结束的时候,其实还有点不舍

1. 进击的程序员

架构启蒙

相信很多人应该和我一样,是通过极客时间的专栏华仔的《从 0 开始学架构》认识华仔的。刚开始学架构是在两年前,我喜欢编程,于是给自己定了个位置,就是要在这个领域里成为一个技术大佬,当时是觉得架构师这个职业特别厉害(当然现在也这样认为),于是就购买的《从 0 开始学架构》的专栏课,开始了架构学习之旅。

从入门到放弃

刚开始学架构专栏的时候,还绕有兴趣,但是看着看着,就发现架构里面的东西太抽象,太难理解,一篇文章要看很长时间才能弄懂。有的时候容易会去钻牛角尖,比如在学习数据库读写分离和分库分表的时候,就特别容易陷入技术的细节中,想着怎么通过代码去实现读写分离和分库分表。而且很多东西看了可能刚开始懂了,隔几天忘了再看的时候,可能又会产生疑惑。学架构的积极性慢慢的消失,直到今天专栏课才看 30%。

重启

去年的时候,有幸在极客时间上看到华仔的训练营要开课。当时主要出于以下几点原因才报了名:首先华仔的直播课内容很丰富,有理论有实战;然后,加入训练营有很多同学一起学习,这样的话学习架构不会感觉到孤单;其次,主要的是可以向华仔或者助教去问自己不懂的内容。最后还是希望自己能跟着华仔,能一直学习去,而不是中途又放弃了。


于是我决定重新从零开始学架构。

2. 架构能力

架构师核心能力:拆解复杂度的能力,判断和取舍的能力

4R 架构

软件架构指软件系统的顶层结构,它定义了系统由哪些角色(Role)组成,角色之间的关系(Relation)和运作规则(Rule)


比如说,我在学习 Kafka 的时候,先去了解 Kafka 整体的架构是怎样的,对整个架构有个简单的了解,再去看看包含的角色,角色之间的关系是怎样的,有哪些运作规则,然后在具体去学习每个角色,这样由浅入深,可以达到更好的学习效果。


4R 架构不仅仅应用在软件架构领域,其实也可以用来指导日常的工作和学习。可以将工作或学习内容大而化小层层分之,最后统筹各个层级之间的关系以及整体的运作规则。

架构三原则

架构三原则即:合适原则简单原则演化原则,用来指导决策。架构三原则个人理解其实就是统筹业务、资源、和时间,并做到收益最大化分配。

架构设计环


架构设计环是架构实战营中最核心部分也是最顶层的抽象。整个架构课都是围绕着架构设计环来展开,华仔的架构课不仅仅让我学到架构的相关知识,更重要的是教会了我如何去学习,如何去分析,如何将知识体系化。


架构设计前期从需求到判断,然后不断的去澄清需求,这一阶段,架构师要做的是澄清需求的不确定性,分析出与业务相关的业务干系人,分析不同利益干系人的诉求,根据业务目标平衡各个业务干系人的诉求。


架构设计中期要做的是拆解业务复杂度,形成若干个备选架构,然后根据现有的资源来做适当的取舍的过程。复杂度主要分为业务复杂度和质量复杂度。业务复杂度主要体现为难以理解、 难以扩展,应对业务方法主要有 SOA、DDD 以及微服务等。可扩展的核心是拆分(按业务形态,粒度进行拆分,服务拆分的核心原则是三个火枪手原则)和封装(预测业务变化,并封装变化)。质量复杂度主要从高性能高可用成本安全等质量属性的要求角度出发。这部分内容实战营中占了极大的篇幅,详细的讲述了高性能架构、高可用架构,可扩展架构到底则么做(简单的概括为华仔所说的鸡蛋篮子三个法则:拆分法则、叠加法则,冗余法则)。最后根据架构三原则从备选架构中筛选出最合适的架构。


架构设计后期要做的是根据筛选出来的架构,进行详细架构设计,包括规定架构规范定义(交互协议,数据格式,开发采用的框架等)、架构质量设计(可维护性设计如管理后台,运维系统等、可测试性设计如日志,命令行等、可观测性设计如日志系统,监控系统等)、描述架构中各个 Role 之间的关系,以及定义系统运行的规则等。

案例实践

架构实战营整体是按照道与术的结合,不仅仅有理论的详细讲解,更重要的是如何将这些理论运用于实践。十分详细的讲解了亿级 IM 架构演进的过程(从十万用户 -> 百万用户 -> 千万用户 -> 亿级用户),如何对不同的业务场景进行 QPS、TPS 的估算,根据估算的结果去设计存储架构,负载均衡架构、计算高可用架构,存储高可用架构等。

3. 成长方法论

成长
  • 架构思维:判断、取舍和创新。

  • 能力:技术、业务和管理。

  • 成长原则:复杂度和 10000 小时理论。

学习方法论
  • 海绵学习法:时间就像海绵里面的水,挤挤总是有的。

  • Play 学习法:通过模拟实践中的场景来进行学习和训练。

  • Teach 学习法:通过给别人讲解来提升自己的理解。

  • 链式学习法:自顶向下,逐步深入,一环扣一环。

  • 比较学习法:横向比较同一个领域中类似的技术,梳理它们的异同,分析它们各自的优缺点和适用场景。

  • 环式学习法:按照技术或者业务的维度,构建一个完整的闭环过程,将多个领域的“鱼”一网打尽。

4. “三人”行

当我们身处一个环境的时候,即使你不想走,别人也会推着你走。其实架构学习不管是看视频也好,还是自己看书也好,最终达到的效果是一样的,只不过可能会走了很多的弯路,甚至可能中途就放弃了。对于我来说,加入架构实战营的初衷是想要找一个能够一起学起的群体,在学习的过程中,会发现有很多很厉害的同学,这个时候就会清晰的发现自己和别人的差距。不仅仅是专业技术上的差距,还可能是学习能力和思考力的差距,这个时候就是要去向他们学习,查漏补缺。

5. 是“结束”还是“开始”?

虽然历时 4 个月的架构实战营结束了,但是我的架构之路才刚刚开始。感觉一路上遇到的人!

用户头像

༺NPE༻

关注

还未添加个人签名 2018.05.13 加入

还未添加个人简介

评论

发布
暂无评论
架构实战营 - 毕业总结