职业发展基础知识互联网架构

《系统架构设计》-01-架构和架构师概述

2023-02-19  本文已影响0人  玄德公笔记

1. 架构的基本定义

1.1 架构组成理论

系统架构包括系统元素、基本系统属性、设计和发展原则3个主要方面。

1.1.1 系统元素

1)概念

2)静态结构和动态结构

1.1.2 基本系统属性

1.1.3 设计和发展原则

常见的原则如用户操作响应时间在1s之内、用户信息需要进行安全性处理、系统可以快速集成第三方服务等。

1.2 架构的决策理论

以下两个理论体系仅是对架构定义问题的一个诠释,架构师需根据自己的情况理解。

1.2.1 统一软件过程(Rational Unified Process,统一软件过程)

1.2.2 决策类的架构设计过程

1.3 架构设计与系统工程

架构设计就是以干系人提出的业务需求为源头、以技术管理和过程改进体系为工作流程、以质量为重心的一项系统工程。

在系统工程中,业务需求需要进行分析和抽象、过程需要进行管理和改进、设计质量需要进行保障,完成包含这些活动在内的整个系统架构设计工作的角色就是架构师。

1.3.1 人

干系人是功能需求的来源,同时拥有对系统架构是否成功的判断权利。

1.3.2 事

无论是架构描述还是架构展示都不是一步能够到位的,架构设计本身也是一个过程,过程就需要通过计划、实施、监控、管理等方法确保其执行,并通过持续改进实现过程的高效性和正确性。

1.3.3 物

架构描述并不只是架构师的个人成果,而是架构师及相关干系人共同确认的成果,用于构建系统,以满足业务需求。

2. 架构师

2.1 架构师的活动与系统工程

架构师是负责设计、记录和领导能够满足所有干系人需求的系统构建过程的人。

2.1.1 架构师的工作

干系人是业务需求的源头,识别正确的干系人能够确保业务需求的正确性,让干系人参与能够确保业务需求的实时性和有效控制需求变更。

通过需求分析,架构师梳理并抽象系统的各项功能性和非功能性需求,并对这些需求进行系统建模。

对功能性和非功能性需求,从扩展性(Extensibility)、性能(Performance)、可用性(Availability)、安全性(Security)、伸缩性(Scalability)等架构设计的基本要素出发定义架构。

推动架构设计活动按照项目和产品计划有序进行,参与需求、设计评审等各种技术评审过程,并管理系统设计和开发团队的日常工作。

2.1.2 对项目的参与度

就一个完整的系统开发生命周期而言,架构设计活动有其时效性。下图体现了传统瀑布(Waterfall)模型下的系统开发生命周期与架构师参与情况。

从图中可以看出在由需求分析和系统建模所构成的系统初始阶段,以及由服务集成和产品接受所构成的最后交付阶段,架构师会较多地参与到系统建设过程中去。
对于类似Scrum的敏捷开发模型,如果把一个个迭代看成是小型的Water-Scrum-Fall模型的话,架构师参与程度实际上也与上图所示的结果相类似,即重点参与迭代计划阶段和迭代演示回顾阶段。

2.1.3 架构师和架构描述

2.2 架构师的分类

2.2.1 根据作用

设计型、救火型、布道型、极客型等

相较于传统意义上的设计型架构师,以上类型的架构师更加偏重于执行某一项特定的架构任务,并不一定会完整参与系统开发生命周期,更不一定会从系统工程的角度去看问题。

2.2.2 根据职责

2.2.3 根据关注层次

功能、非功能、团队组织和管理、产品运营等。

2.3 架构师的技能和职责

作为一名合格的架构师,完备的技术领域知识是必备的技能,包括我们在1.1.2节架构演进理论中提到过的分布式系统、缓存、消息中间件、企业服务总线、搜索引擎和批量数据处理等各种目前业务主流的技术体系,也包括软件架构体系结构中所蕴含的架构风格、架构模式和架构模型思想。但针对应用设计型架构师,所需的技能不仅仅限于了解和掌握技术体系,也需要从另外两个层面进行技能拓展。
(1)业务领域知识
在应用程序开发过程中,业务架构驱动技术架构现象非常普遍。提升业务领域知识和提升技术领域知识一样,都对架构设计有直接影响。从这个角度讲,架构师应该具备跨领域的技能。
(2)软技能

2.4 架构师的基本职责

定义并记录系统的架构、构建和部署系统的策略、确保架构满足系统的质量属性、促进系统级别决定的产出、确保相关决定与干系人的期望一致、对架构方面的各项指标做平衡性的判断并确保达成一致意见等都是架构师的职责示例。

3. 从程序员到架构师

3.1 架构师和程序员的对比

3.1.1 思维模式

3.1.2 沟通

3.1.3 学习

3.1.4 协作

3.1.5 推动力

3.1.6 全局高度

3.1.7 方法论

3.1.8 业务

3.1.9 时间管理

3.1.10 系统化

3.1.11 产品交付

3.1.12 实用主义

3.2 转型成功的三段式模型

3.2.1 思路

意识形态是转型的前提。意识形态很多时候决定了一个人发展的高度。

一个人所能达到的高度还很大程度受限于环境因素。我们往往无法改变环境,只能适应。转型之前需要判断,必要时应该果断改变。

3.2.2 方法论

3.2.3 工程实践

把软件开发的最佳方式和开发人员个人做得最好的事项总结出来,就是组织的最佳实践。

3.2.3 转型思维导图

3.3 架构师的工作开展

1)识别干系人

2)确定原则

架构原则代表对架构设计过程中采用的方法和意图的基本声明,并用于指导架构的定义。
最小化外部数据、用户信息需要进行安全性处理都属于典型的原则示例。在系统设计之前对一些基本原则的规划和沉淀被认为是一项比较好的工程实践,有助于在根据具体业务场景进行架构设计过程中保持架构的独立性及架构师的基本立场。

3)分析业务场景

识别业务场景的过程可以采用从业务需求出发进行分析、跟干系人沟通、借助于架构师经验等方式。该过程的输出是一系列业务场景,确保这些业务场景按照优先级进行排序。

4)使用架构模式

是解决问题通用的方法和结构,包括发布-订阅、管道-过滤器、事件驱动架构等架构风格,也包括对象-关系行为模式、Web表现模式、分布模式架构等架构模式及各种架构模型。

5)构建系统模型

采用UML能够方便地建立系统所需的用例建模、静态建模、动态建模和架构模型。

6)完成技术方案

对于系统架构设计,技术方案即架构描述。
架构描述中通常包含干系人的关注点、通用架构原则、架构视图的确立、架构视角的确定、视图与视角之间的一致性和相关性等要素。

7)评估与决策

8)管理过程事务

架构师作为技术负责人,通常也担任技术团队的Leader,自然也需要参与团队资源整合、内部/外部分享和交流、Code Review、人员招聘面试、汇报等日常管理事务。

9)开发并学习

架构师通常也需要和团队一起参与核心代码编写、参加技术会议和调研新技术。


上一篇下一篇

猜你喜欢

热点阅读