`

架构设计之初体验,送给准备进阶架构的朋友(个人总结)

阅读更多

这篇文章呢是我在阿里学习了架构设计之后总结的一篇文章,本人是高级开发,目前想进阶架构师

1 基本概念和目的

架构设计的基本概念和目的

 

架构设计的目的是为了解决系统复杂度带来的问题,并不是要面面俱到,不需要每个架构都具备高性能、高可用、高扩展等特点,而是要识别出实际业务实际情况的复杂点,然后有有针对性地解决问题,即:有的放矢,而不是贪大求全。 在实际情况中,不一定每个系统都要做架构设计,需要结合实际情况。有时候最简单的设计开发效率反而是最高的,架构设计毕竟要投入时间和人力,这部分投入如果用来尽早编码,项目也许会更快。

2 架构设计复杂度来源

高性能

高性能

 

高可用

高可用

 

可扩展性

可扩展性

 

低成本、安全、规模

低成本、安全、规模

 

3 架构设计三原则

架构设计三原则

 

合适原则

GFS为何在Google诞生,而不是在Microsoft诞生,其中Google有那么庞大的数据是一个主要因素,而不是因为Google的工程师比Microsoft的工程师更加聪明。

真正优秀的架构都是企业在当前人力、条件、业务等各方面约束条件下设计出来的,能够合理地将资源整合一起并发挥出最大功效,并且能迅速落地。这也是很多BAT出来的架构师到了小公司或者创业团队反而做不出成绩的原因,因为没有大公司的平台、资源、积累,只是生搬硬套大公司的做法,失败的效率非常高。

简单原则

软件领域的复杂性

 

无论是结构的复杂性还是逻辑的复杂性,都会存在各种问题,所以架构设计时如果简单方案和复杂的方案都可以满足需求,最好选择简单的方案。《UNIX编程艺术》总结的KISS(Keep It Simple,Stupid!)原则一样适用于架构设计。

演化原则

对于软件系统来说,变化才是主题。软件架构需要根据业务的发展而不断变化。 如果没有把握“软件架构需要根据业务发展不断变化”这个本质,在做架构设计的时候就很容易陷入一个误区:试图一步到位设计一个软件架构,期望不管业务如何变化,架构都稳如磐石。

为了实现这样的目标,要么照搬业界大公司公开发表的方案;要么投入庞大的资源和时间来做各种各样的预测、分析、设计。无论哪种做法,后果都很明显:投入巨大,落地遥遥无期。更让人沮丧的是,就算跌跌撞撞拼死拼活终于落地,却发现很多预测和分析都是不靠谱的。

实践中,架构师要提醒自己不要贪大求全,遵循演化优于一步到位的原则,因为业务的发展和变化总是很快的,**无论多牛的团队,都不可能完美预测所有的业务发展和变化路径。**实践中可以参考如下建议:

  • 首先,设计出来的架构要满足当时的业务需要。

  • 其次,架构要不断地在实际应用过程中迭代,保留优秀的设计,修复有缺陷的设计,改正错误的设计,去掉无用的设计,使得架构逐渐完善。

  • 第三,当业务发生变化时,架构要扩展、重构,甚至重写;代码也许会重写,但有价值的经验、教训、逻辑、设计等却可以在新架构中延续。

  • 在这里推荐一个学习架构的群:433540541,进群可以免费获取到架构学习资料,希望能够帮到现在想要进阶架构,遇到职业瓶颈的朋友。

4 架构设计的流程

 

架构设计的流程

相信很多朋友看完之后也想现在就学习一下程序员进阶架构方面的知识,还有很多朋友在3-5年之间,但是呢,遇到了职业瓶颈,想进阶一个台阶,在网上找了大量的视频,看了很多书籍都没有太大的效果,公司项目上面遇到的项目问题也没有地方问,所以呢,这里有老师们录制的一些关于Java进阶的一些视频,并不是一两个方面。肯定能够帮到行业的一些朋友,少发些时间在博客和百度上面找资料,把时间利用好。可以加群:433540541,免费获取。

分享到:
评论

相关推荐

    秒杀系统设计与实现.互联网工程师进阶与分析

    二、系统架构设计 1. 分层架构:通常采用三层架构,包括表示层(Web)、业务逻辑层(Service)和数据访问层(DAO),各层之间职责分明,降低耦合。 2. 微服务化:大型秒杀系统可能涉及多个微服务协同工作,如订单...

    架构实战 : 软件架构设计的过程

    本书从基本原理入手,介绍软件架构设计过程中涉及的一些概念、流程、方法、用到的工作产品及可重用的资源,从第6章开始,通过介绍一个具体的案例来阐述如 何定义需求、创建逻辑架构、创建物理架构。在第10章“进阶”...

    系统架构设计师教程第二版

    通过对上述知识点的学习,读者不仅可以掌握扎实的理论基础,还能通过丰富的案例分析获得实践经验,这对于准备参加系统架构设计师考试以及希望提升自身技术水平的人来说都是非常宝贵的资源。本书不仅适用于考生备考,...

    系统架构设计师考试全程指导.pdf

    《系统架构设计师考试全程指导》是一本专门为全国计算机技术与软件专业技术资格(水平)考试中的系统架构设计师级别考试编写的参考书。这本书由希赛IT教育研发中心组织编写,由张友生和王勇主编,根据2009版大纲进行...

    [精品]企业信息化架构规划设计全面参考资料合集(100份).zip

    华为安全架构与设计进阶课件 华为流程与信息化实践与架构规划 某大型集团公司IT技术架构规划方案 企业信息化建设TOGAF内训课件 企业架构设计理论与IT架构规划方法 某集团流程优化及IT规划项目-IT架构规划设计报告...

    软考系统架构设计师教程和系统架构设计师考试全程指导

    《软考系统架构设计师教程和系统架构设计师考试全程指导》是针对全国计算机技术与软件专业技术资格(水平)考试中的高级资格——系统架构设计师所编写的权威教程。这套教材结合了清华大学出版社出版的《系统架构设计...

    架构师进阶之路-Java架构致力于提供后端工程师提供架构设计相关的各种资源和面试题 .zip

    在“架构师进阶之路-Java架构”这个资源包中,我们主要关注的是Java后端开发人员如何逐步提升自己的技术水平,成为一个优秀的架构师。这个压缩包包含了一个名为"JavaArchitecture-master"的项目,这通常意味着这是一...

    java 架构设计示例文档

    Java架构设计示例文档涉及的知识点众多,通常它旨在为读者提供一个关于如何设计高效、可扩展和可维护的Java应用架构的参考。文档可能包含以下几个核心部分:需求分析、系统设计、技术选型、模块划分、接口设计、安全...

    系统架构设计师32小时通关1

    【系统架构设计师】是软件开发领域中的核心角色,他们承担着设计和规划复杂软件系统架构的任务,确保系统在技术上可行、高效,并满足业务需求。系统架构设计师不仅要具备深厚的技术底蕴,还需拥有良好的管理和协调...

    2023年系统架构设计师备考必备资料

    系统架构设计师不仅需要扎实的技术基础,还需要具备良好的沟通协调能力和业务理解能力,因此在准备考试的同时,考生也要注重培养自己的综合素养。 总的来说,这个压缩包为系统架构设计师考试提供了全方位的复习资源...

    Android进阶架构资料.jpg

    Android架构师知识图谱 按照图中的知识系统学习,Android架构师职位

    架构实战——软件架构设计的过程

    ### 架构实战——软件架构设计的过程 在现代软件开发中,软件架构设计扮演着至关重要的角色。良好的架构设计能够确保软件系统的可扩展性、可维护性和性能等关键特性。《架构实战——软件架构设计的过程》一书深入...

    软件架构概述(进阶)

    7. **团队协作与沟通**:软件架构设计不仅仅是技术问题,也涉及到团队协作和沟通。良好的架构应易于理解和维护,促进团队之间的合作,降低沟通成本。 8. **持续集成与交付**:随着DevOps文化的普及,软件架构必须...

    系统架构设计师教程(软考)划重点版本

    系统架构设计师教程(软考)划重点版本是针对系统架构设计师考试的一门课程,旨在帮助考生高效备考。课程内容涵盖软件架构设计、软件工程、项目管理等关键领域,旨在覆盖广泛的理论知识,确保零基础考生也能理解和...

    软考高级系统架构设计师资料

    系统架构设计师是IT行业中至关重要的角色,他们负责构建和优化软件系统的整体结构,确保其高效、稳定、可扩展。在软考高级系统架构设计师的考试中,考生需要掌握多个核心领域的知识,包括计算机组成与结构、系统配置...

    面试宝典之BAT架构进阶.pdf

    文档标题为《面试宝典之BAT架构进阶》,表明该文档是针对BAT(百度、阿里巴巴、腾讯)这类大型互联网公司架构师职位面试准备的资料。内容主要涵盖面试题目、解答题及其答案,目的是帮助面试者通过刷题的形式,充分...

    JavaEE 30招 JavaEE架构师进阶之路.zip

    JavaEE 30招 JavaEE架构师进阶之路.zip

    java 高级架构进阶学习

    它能够帮助开发者快速掌握架构设计的核心概念和技术要点。 - **核心内容**: - **基础知识**:包括Java基础知识复习、面向对象设计原则、设计模式等。 - **框架与工具**:涵盖Spring框架、MyBatis、Hibernate、...

    架构实战软件架构设计的过程

    资源名称:架构实战软件架构设计的过程内容简介:本书从基本原理入手,介绍软件架构设计过程中涉及的一些概念、流程、方法、用到的工作产品及可重用的资源,从第6章开始,通过介绍一个具体的案例来阐述如 何定义需求...

Global site tag (gtag.js) - Google Analytics