架构师速成-架构体系

经过这段时间的反思和整理,终于对架构有了一个较为明确的理解。架构是产品从无到有以及慢慢壮大过程中所需要的全部技术体系总称,架构过程:

  1. 配置、编码、测试、运维、监控分析、安全、运营等一系列技术体系的选型、取舍
  2. 技术选型基础上进行规划、设计、实现、迭代、制定相关规范
  3. 相关技术及规范运用到产品开发的整个过程中,并在产品迭代过程中对架构进行迭代优化

架构不止包含技术的框架,比如有人用了spring就觉得我已经是架构师了,其实架构并不是这么简单。我们以做一个新浪微博类似产品为例,现实应该是这样的:

  1. 产品初期,经典的LAMP快速开发实现第一个版本,功能也无比简单就是加好友,发消息,开发人员也只有一个小的队伍。此时的架构就体现为纯的技术选型及实现,包含了

    • 配置:代码通过git管理,暂时无其他
    • 编码:技术选型为LAMP,基于LAMP的开发框架封装,并在开发团队内制定开发规范
    • 测试:技术人员手工测试
    • 运维:手工发布,主备2台,mysql也做主备
    • 监控:暂不需要
    • 安全:发帖过滤、屏蔽
    • 运营:后台删帖
  2. 随着用户的暴增以及功能的增加,产品需要迭代,架构也需要迭代。产品功能增强,性能需要优化,开发人员的增加,此时架构就发生了一个较大的变革:
    • 配置:代码通过git管理,要分为多个模块,不同团队开发不同模块
    • 编码:技术选型增加缓存、消息队列、搜索引擎等,框架封装更加复杂,抽象出基础层和服务层。分团队进行代码的维护,制定不同模块之间通信标准。推拉模型也提炼出来。
    • 测试:单元测试+自动化测试
    • 运维:批量自动化发布、回滚、支持灰度发布
    • 监控:增加流量监控,机器监控
    • 安全:发帖过滤、屏蔽,防范其他攻击
    • 运营:后台删帖、大V管理等等
  3. 用户和流量再次增加后,产品再次发生变革,架构也再次变革。
    • 配置:代码通过git管理,服务化,每个服务单独一个模块,不同团队开发不同模块
    • 编码:技术选型需要考虑异地容灾,层次继续抽取,服务粒度细化,增加开放api,改进推送架构。
    • 测试:单元测试+自动化测试
    • 运维:批量自动化发布、回滚、支持灰度发布,异地数据同步
    • 监控:增加流量监控,机器监控,增加缓存等监控
    • 安全:发帖过滤、屏蔽,防范其他攻击,开放api权限管理oauth2,防止恶意调用
    • 运营:后台删帖、大V管理等等

从上面的例子可以看出,架构是跟随产品进行迭代的,而且随着产品的越来越复杂,不可避免的需要不断拆分,多团队合作,运维自动化。架构也变成团队的工作,而不是一个架构师就搞定一切了。

阿里发展到现在架构也有些类似,有很多不同团队负责底层设施(中间件)的开发迭代及其架构的革新。业务也有不同的团队负责开发不同的业务模块,这个都使用统一的架构体系。技术保障部门维护统一的自动化运维工具,安全部门维护安全工具。不同部门都有自己的架构师,负责本部分的架构,不过比较遗憾的是没有一个总架构师的角度去推动总体架构演进及各个部门架构的优化。

时间: 2024-10-09 23:33:09

架构师速成-架构体系的相关文章

架构师速成-架构目标之正确性

本系统架构模式: 统一异常 统一异常处理是保证程序正确性的第一步,这是第一个架构模式.具体如何实现,详见前面的文章. 日志 日志也是保证程序正确的一大手段,虽然是在错误出现后,日志才会记录.但是日志是快速确认问题,并分析出隐藏问题的重要手段. 关键点 日志文件按照级别进行区分,将错误和普通调试日志分开 日志文件滚动方式,可以按天及按大小滚动,定时清理 日志级别可以实时调整设置 性能 支撑系统: 测试系统 自动化单元测试,保证基础模块的正确性 自动化功能测试,保证每次代码更新的正确性 监控系统 监

架构师速成-架构的目标

架构的目标为了实现以下特性: 正确性 系统首先需要正确,运行稳定 可用性 软件系统对于用户的商业经营和管理来说极为重要,因此软件系统必须非常可靠,一般99.99%是一个比较基本的要求. 快速开发 互联网目前是一个快鱼吃慢鱼的时代,已经不是大鱼吃小鱼了.因为小鱼在一夜之间就长大了,把大鱼吃掉了.诺基亚就是明证,facebook就是明证. 良好体验 良好的体验对用户的吸引力是巨大的,某迅公司往往是抄一个产品,把用户体验做好,然后原产品就没有然后了. 伸缩性 用户激增的时候,网站可以伸缩来支持用户的增

架构师速成-架构目标之可用性

服务器等,从而共同完成工作任务.各种负载均衡的软硬件有很多,我们可以单独讲解一下. 配置中心,原来单一节点的配置,被类似zookeeper的多节点配置中心取代. 流量控制,流量控制是保证大流量下系统可用性的重要手段,当系统流量不足以支撑所有流量时,只保留合理的流量处理.其他流量直接丢弃,否则系统会被压垮,造成雪崩. 功能降级,另外大流量情况下,有些无关紧要的功能可以暂时降级,后期通过数据补全的方式进行修正,将核心的资源用于最关键的业务.比如双11时,为保证购买可以暂时不考虑推荐,这样省掉推荐资源

.NET 高级架构师0003 架构师之路(2)---架构师的职责

2 架构师的职责 近来看到CSDN上有个CTO俱乐部,里面聊得是不亦乐乎.我怀着无比崇敬的态度,拜读了一下牛人们的发言.里面有个哥们发起一个话题:"CTO, 你多久没有写程序了?".有人回答:"不写代码的CTO,属于......这公司问题大了!".看到这里,我就赶紧撤了,怕忍不住反驳几句,反而遭到牛人们的群殴.试想,一个上点规模的IT公司,还得靠CTO来写程序的话,那是不是才叫问题大了呢.当然,我没有做过CTO,所以我有我的不同看法,而且还愿意表达出来,无知者无畏.

架构师速成4.2-幼儿园要学会如何高效学习

<如何高效学习>,这本书的作者是scotthyoung,最知名是的1年内自学完成4年麻省理工学院计算机科学的33门课程,同时也写了一个学习方法的Blog,他使用费曼技巧来加强理解和学习. 费曼技巧有很多种理解,最简单的是: 拿张白纸; 在白纸顶部写上你想理解的某想法或某过程: 用你自己的话解释它,就像你在教给别人这个想法. 最要紧的是,对一个想法分而化之,虽然可能重复解释某些已经弄懂的知识点.但你最终会到达一个临界点,无法再解释清楚.那里正是你需要填补的知识缺口.为了填补这个缺口,你可以查课本

架构师速成7.4-架构师为什么要带团队

有人说架构师明明只需要做架构,干嘛要扯出来带团队,带团队不是项目经理或者CTO之类的管理人员干的事情吗? 其实这个是一个误区,架构师其实是一个全栈的特殊人物,应该项目开发的所有的环节和角色都有深入了解,尤其是带过团队对你的帮助会更大.那种只做架构,而且仅会做架构的架构师,是大公司畸形的产物,在我看来,不太接地气.大公司人员体系庞大,分工明确而且细致,技术只是负责技术就好了,管理自然有专门的管理人员来做.我简单列举一下架构师带团队的优势: 架构设计时会从整个项目的角度考虑 开发人员使用更方便 测试

架构师速成4.2-幼儿园要学会如何学习

<如何高效学习>,这本书的作者是scotthyoung,最知名是的1年内自学完成4年麻省理工学院计算机科学的33门课程,同时也写了一个学习方法的Blog,他使用费曼技巧来加强理解和学习.费曼技巧很简单: 拿张白纸; 在白纸顶部写上你想理解的某想法或某过程: 用你自己的话解释它,就像你在教给别人这个想法. 最要紧的是,对一个想法分而化之,虽然可能重复解释某些已经弄懂的知识点.但你最终会到达一个临界点,无法再解释清楚.那里正是你需要填补的知识缺口.为了填补这个缺口,你可以查课本.问老师.或到互联网

架构师速成6.6-知识的收集整理学习

知识如何学习前面已经讲了2节,这节主要讲知识的整理和沉淀. 其实我之前也一直没有好好的思考过这个问题,今天在整理自己的wiz知识库的时候突发灵感,所以有了这一节. 其实知识获取的过程分为搜索->收集->整理->精化->应用->分享,前一部分跟时间管理的收集也很相近吧.知识获取的思路适用于有目的的知识收集和日常的备忘性的知识收集.当然你随机收集一些资料记录下来其实效果并不是很理想,重要的是你要有目的的学习才能最大的发挥你的心智以及潜意识.当你主动要学习一项知识时,你的潜意识会主

架构师速成8.2-架构师要懂产品

产品和架构两个截然不同的职业,好像风马牛不相及,其实不是这样的.产品的思想需要经过技术的手来成为现实,在成为现实之前,需要技术理解.评估.碰撞.优化.把控.验证等等.当然架构师就承担了这一系列技术的责任,而且在一个产品的实现过程中,技术架构并不是很重要的,前期可以没有架构,简单快速验证,只有在用户多了之后,架构才有真正的用处.在初创公司,很多架构师都等不到用户多了的那一天,来实现自己的架构梦.所以产品这一关架构一定要把好,只有你把好了,后面才有机会让你去架构. 当然架构师的懂产品,是懂产品的生命