架构师主要做些什么,你知道吗?

多态蝉翼
• 阅读 3330
小伙伴们,新年好!

感谢大家对「 IT老兵哥 」原创文章的支持顶赞,❤️❤️❤️!把有价值的知识或经验分享给更多人,在分享中提升个人价值,这是我写作、分享的初衷和动力,在新的一年里我会更加努力,也希望能够继续获得各位小伙伴的支持!坚持原创不易,如果文章有价值,千万要记得手动点个「 ? 」哦,^_^

祝大家新年在家庭、事业和生活上都有新的进步,我们一起加油干!⛽️⛽️⛽️

年前我们一起聊了 程序员为什么要懂架构架构是什么 和架构都有哪些类型 这三个话题,今天我们来看看架构师是怎样开展工作的,他/她需要对接上下游哪些角色,以什么作为工作输入,最终要对外输出什么产物。这些内容既有助于我们跟架构岗同事更好的协作,也可以作为是否往架构转型的参考,接下来我们一起揭开架构师的神秘面纱吧!

1. 架构设计的输入是什么?

架构师主要做些什么,你知道吗?

软件系统最终要构建成什么样,这是由项目干系人的各种要求决定的。通常,我们将这些要求归集在产品需求文档之中,这份产品需求就是架构设计的输入。我们可以将这些需求划分为:

  • 功能需求:完成某项业务需要的功能操作,例如:共享单车客户端软件需要支持单车定位、扫码解锁等。
  • 质量需求:每项功能操作要达到什么样的质量要求,例如:易用性、可靠性、安全性、性能等等。
  • 商业需求:软件系统需要以什么样的成本、迭代速度推向市场,如何提升产品的市场竞争力等等。

2. 架构师要对接哪些角色?

这些需求源自项目干系人、商业管理、商业竞争、法律法规、技术环境、政治约束和生命周期等不同维度的诉求,架构设计就是要区分这些需求的优先级权重,然后找出相对最优的方案来平衡满足各个方面的诉求,最终基于这个架构设计方案研发出相应的软件系统推向市场,并收集市场反馈输入到下一次迭代演化当中。

架构师主要做些什么,你知道吗?

因此,架构在开展工作的过程中需要对接老板、产品、项目、开发、测试、安全和运营等各种岗位角色,他们都是架构需要关注和服务的内部客户,他们的痛点就是架构工作的驱动因素。

3. 架构设计的输出

架构师主要做些什么,你知道吗?

  • 关键场景(Key Scenarios):分析产品需求并从中提炼出关键的业务场景,架构设计必须要通过这些关键业务场景的验证,例如:共享单车的关键业务场景包括:用户注册登录、支付账号绑定、单车租借归还等。
  • 逻辑视图(Logical View):为了实现关键业务场景,整个软件系统从逻辑上需要划分成多少个子系统。如果关键业务场景比作一幕话剧,那么逻辑视图就是出演话剧的主要角色,它是面向最终用户,对功能需求负责。
  • 过程视图(Process View):过程视图是以逻辑视图为基础的,逻辑视图是系统的静态结构,过程视图是系统的动态流程。如果把关键场景比作故事剧本,逻辑视图就是角色人物,过程视图就是让这些角色人物把故事剧本演练一遍,在该视图中每个角色人物的分工定位和交互关系都会被明确下来,集成人员可以根据它来验证系统。
  • 开发视图(Development View):通过逻辑视图、过程视图确定了子系统的划分和职责定位,开发视图就是明确每个子系统采用什么样的技术栈来实现,包括编程语言、开发框架、分层结构、项目工程等。开发视图主要是输出给编程人员,编程人员基于此就可以开始编码实现相关的工作了,所以说架构设计就是桥接需求和实现的。
  • 物理视图(Physical View):待构成整个系统的子系统都开发完成之后,我们需要将这些子系统部署到真实的物理环境当中,物理视图就是明确每个子系统需要什么规格的软硬件环境,分别部署到哪个网络区域,不同网络区域是否要开通防火墙,以及每个子系统需要部署多少个实例才能满足业务需求等,它主要是面向系统工程师。

架构师主要做些什么,你知道吗?

4. 架构设计的工作流程

  • 分析产品需求梳理出关键业务场景;
  • 基于关键场景划分子系统,输出逻辑视图;
  • 基于关键场景、逻辑视图确定业务交互流程,输出过程视图;
  • 基于逻辑视图、过程视图确定子系统技术栈,输出开发视图;
  • 基于逻辑视图、过程视图和开发视图确定部署方案,输出物理视图。

今天暂时先分享到这里,接下来我们还要继续聊架构,敬请关注哦。坚持原创不易,如果你觉得有价值,麻烦动动手指点下文 「 ? 」按钮,让更多小伙伴可以看到,老兵哥会更有动力坚持分享的。另外,我后续还会分享职业规划、应聘面试、技能提升、影响力打造等经验,欢迎 关注 本专栏或歪信公主号 「 IT老兵哥 」

架构师主要做些什么,你知道吗?

  • 软技能-热门文章:(首发公众号)
  1. 2020 来了,你的 2019 晒好封存了吗?
  2. “花式”裁员套路深,你知道吗?
  3. 遭遇裁员,如何渡过心理危机?
  4. 如何在寒冬中找到好工作?
  5. 2C 还是 2B,跟找工作有什么关系?
  6. 大公司 vs 小公司,你会选哪个?
  7. 记住这一点,不怕找不到好工作!
  8. 跳槽,跳还是不跳,该怎么跳?
  9. 程序员“求包养”攻略揭秘
  10. 很努力了,为什么我还在原地踏步?
  • 硬技能-热点文章:
  1. 如何设计出优美的Web API?
  2. 程序员必须掌握的性能调优 X Y Z
  3. 如何把单体式应用拆解成微服务?【上】
  4. 如何把单体式应用拆解成微服务?【下】
  5. 图解 Spring:HTTP 请求的处理流程与机制【1】
  6. 图解 Spring:HTTP 请求的处理流程与机制【2】
  7. 如何正确使用 Spring Cloud?【上】
  8. 如何正确使用 Spring Cloud?【下】
  9. Spring 核心技术与产品理念剖析【上】
  10. Spring 核心技术与产品理念剖析【下】
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
4年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
4年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
4年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
4年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
4年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Python进阶者 Python进阶者
2年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这