首页 > 其他分享 >系统架构设计系列之基础:初探软件架构设计

系统架构设计系列之基础:初探软件架构设计

时间:2023-12-12 14:33:08浏览次数:37  
标签:架构设计 需要 架构 运维 系统 软件架构 初探 架构师

前言

欢迎来到软件架构设计的世界,这是一次面向有志成为架构师的研发工程师的学习和分享交流的机会。

本系列内容将结合理论和实践经验,探讨软件架构的基本知识、设计原则和最佳实践,旨在和大家一起更好地理解软件架构设计的重要性和成为架构师的路径。

一、架构的基础

我们都知道编写和调试一段代码直至成功运行,这是需要一定的知识和技能,但并不需要特别高深。相比之下,软件架构却是一件非常困难的事情,它需要深入的专业知识和丰富的经验。

所以并不是所有的程序员都可以成为架构师,这需要有独特的思维和独到的见解。

一个没有良好架构的系统会带来严重的后果:

  1. 组件之间的关系错综复杂,耦合紧密,任何一个小的改动都需要数周的恶战
  2. 整个系统的设计可能差到令人无法忍受,充满了腐朽的设计和裹脚布般的恶心代码
  3. 不仅会影响系统的质量和性能,还会导致整个团队士气低落,程序员生不如死

因此,为了提高系统的质量和性能,我们需要有一个良好的系统架构。需要一位专业的架构师,他需要:

  1. 具备深厚的技术知识和经验
  2. 具备强烈的责任感和领导力
  3. 需要能够从宏观的角度看待整个系统
  4. 为系统的未来发展作出预测和规划

1 、架构是什么

架构是软件系统的顶层结构,是对软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计。

2 、架构的目标

使用最小的人力成本、最高的质量、更高的客户满意度来满足构建和维护该系统的需求。总结来看就是四字目标:多、快、好、省,其中涵盖了效率、成本、稳定、运维、演进、容错、安全等多个方面。

3 、架构的理论目标

  1. Reliable - 可靠性
  2. Secure - 安全性
  3. Scalable - 可扩展性
  4. Customizable - 可定制化
  5. Extensible - 可伸缩
  6. Maintainable - 可维护性
  7. Custom Experience - 客户体验
  8. Time to Market - 市场时机

二、架构的职责

架构需要将不变的部分从变化中抽象出来,沉淀为稳定的组件,同时管理多个组件之间的依赖,识别、定位、管理组件的边界和上下文,让变化更容易暴露和识别。

此外,架构还需要考虑如何管理多维度的变化,以及如何将业务逻辑变成可配置的易变更的实现方式。

三、架构的类型

架构分为:

  1. 业务架构:业务架构师(业务领域专家)负责,涉及对业务的定义和划分,属于顶层设计,它影响着组织结构和技术架构
  2. 应用架构:应用架构师负责,根据实际业务场景,设计应用的拓扑结构,制定规范、定义接口和数据交互协议等,尽量把应用的复杂度控制在一个可接受的范围内
  3. 系统架构:系统架构师负责,根据业务情况综合考虑系统的非功能属性,包括性能、安全性、可用性、稳定性等,然后做出技术选型;而对于分布式系统架构设计,还需要解决服务器负载、分布式服务注册和发现、消息系统、缓存系统、分布式数据库等问题以及 CAP 的权衡问题
  4. 数据架构:数据架构师负责,关注数据的收集、处理以及提供统一的服务和标准。其目的是统一数据定义规范,标准化数据表达,形成有效易维护的数据资产,搭建统一的大数据处理平台,形成数据使用闭环
  5. 物理架构:关注软件元件在硬件上的部署,包括机房搭建、网络拓扑等
  6. 运维架构:负责运维系统的规划、选型、部署上线,建立规范化的运维体系;借助技术手段控制和优化成本;通过工具化及流程提升运维效率,注重运营效率;制定和优化运维解决方案,包括但不仅限于柔性容灾、智能调度、弹性扩容和防攻击、推动及开发高效的自动化运维和管理工具、提高运维的自动化程度和效率

四、架构的衡量

一个好的系统架构需要在满足用户需求的过程中,以最低的成本实现最高的质量和客户满意度,并且能够在很长一个周期内持续保持稳定和适应变化。

如果一个系统的架构能够在满足用户需求的过程中,以较低的开发和维护成本实现较高的稳定性和可扩展性,那么这个架构就可以被认为是好的。反之,如果每次需求发布之后都会提升下一次变更的成本,那这样的架构就是不好的架构。

好的架构不是一蹴而就的,而是需要经过多方面的考虑和评估。在选择和设计系统架构时,需要考虑系统的需求、约束条件、环境等因素,并选择合适的架构类型和技术栈来满足系统的需求。

同时,还需要在架构的设计和实现过程中,注重成本效益、可维护性、可扩展性等方面的考虑,以确保系统能够以最低的成本、最高的质量和客户满意度来满足用户的需求。

总之,好的系统架构需要在满足用户需求的同时,注重成本效益、稳定性和可扩展性等方面的考虑,以实现系统的长期稳定和适应变化。

 

标签:架构设计,需要,架构,运维,系统,软件架构,初探,架构师
From: https://www.cnblogs.com/jiuge-tech/p/17896732.html

相关文章

  • 《架构师之路:软件架构之美》阅读二
    软件架构:1.是一个系统的草图,是构建计算机软件实践的基础。2.是用于指导大型软件系统各个方面的设计的一系列相关的抽象模式。3.描述直接构成系统的抽象组件以及组件之间的通讯。4.在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间......
  • 金牌导航-网络流初探
    网络流初探例题B题解从源点向每个猪圈连边,每个人向汇点连边。然后对于每个人所能打开的猪圈,如果在此之前没有被其他人连过,就让这个猪圈连向这个人,否则让这个人连向之前那个人。例题B代码#include<bits/stdc++.h>usingnamespacestd;inlineintread(){intx=0,f=......
  • 脚手架架构设计和框架搭建
    站在前端研发的角度,分析开发脚手架的必要性脚手架核心价值是将研发过程自动化:项目重复代码拷贝/git操作/发布上线操作标准化:项目创建/gitflow/发布流程/回滚流程数据化:研发过程数据化、系统化,使得研发过程可量化自研脚手架和自动化构建工具的区别市面上已经有了如Jenkins......
  • CVE初探之漏洞反弹Shell(CVE-2019-6250)
    概述ZMQ(ZeroMessageQueue)是一种基于消息队列得多线程网络库,C++编写,可以使得Socket编程更加简单高效。该编号为CVE-2019-6250的远程执行漏洞,主要出现在ZMQ的核心引擎libzmq(4.2.x以及4.3.1之后的4.3.x)定义的ZMTPv2.0协议中。这一漏洞已经有很多师傅都已经分析并复现过了,但在......
  • 1.需求分析和架构设计
    需求分析熟悉产品需求以架构师的思维分析需求,不能只停留在表面实现需求,要考虑怎么实现能给业务带来增长全局思维、整体思维、闭环思维,不能只考虑自己,要全局考虑整个团队,要做到有输出、有输入、有结果浅层需求分析表面需要实现的功能,如登录、创建作品、编辑、发布、访问作......
  • 初探webpack之单应用多端构建
    初探webpack之单应用多端构建在现代化前端开发中,我们可以借助构建工具来简化很多工作,单应用多端构建就是其中应用比较广泛的方案,webpack中提供了loader与plugin来给予开发者非常大的操作空间来操作构建过程,通过操作中间产物我们可以非常方便地实现多端构建,当然这是一种思想而不是......
  • 『Postgres.Live 技术沙龙回顾』揭秘 PieCloudDB Database eMPP 架构设计
    2月1日,拓数派参与了由开源软件联盟PostgreSQL分会组织的Postgres.Live线上系列沙龙活动。拓数派产品及推广总监吴疆发表主题演讲《PieCloudDB:eMPP云原生数据库》。相关视频回放欢迎访问拓数派B站链接,PPT欢迎前往官网链接获取。本文由演讲内容整理而成。随着计算机技术的发展,”云......
  • CodeQL初探
    一、CodeQL的研发背景最早期,安全人员会通过人工审计的方式来审计项目代码,查找危险函数,并跟进危险函数的参数是否可控,如果可控,说明存在安全漏洞。但是随着项目数量的增加,以上的纯靠人工的方式很难实现所有项目漏洞的覆盖测试。所以出现了一些辅助人工审计的工具,比如前几年比较火......
  • 【驱动】串口驱动分析(一)-软件架构
    区分不同的终端类型串行端口终端(/dev/ttySn)串行端口终端(SerialPortTerminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。有段时间这些串行端口设备通常被称为终端设备,因为那时它的最大用途就是用来连接终端。这些串行端口所对应的设备......
  • 架构设计师能力模型
    作者: 胡庆访不论是在公司内部,还是在面试过程中,经常看到很多开发人员,说想成长为架构师,但是实际上却像一支无头苍蝇一样学习、成长。所以今天我就来简单总结一下,开发人员要成长为一个架构师,都应该学习哪一方面的知识。也就是:架构师的能力模型。(PS:本文纯属个人见解,并不一定完......