大厂工作的跨域架构师,最好掌握这4个原则

news2024/11/28 12:32:14

今天学习的主要内容如下:

  • 什么是跨域架构师,在职责上跟单域架构师有什么区别?

  • 跨域架构师的勇气重要,还是技术重要?如何面对多领域之间的冲突,又如何解决冲突?

  • 我是一名跨域架构师,可以告诉我有哪些基本建议和原则?

1、什么是跨域架构师。你看这个图,在领域拆分之前,人、系统、机器都在一个团队,只有一个管理者,这个叫单域,团队里面的架构师叫单域架构师。

60db897926507d519c304a2411638514.png

图自https://time.geekbang.org/column/article/521463

反之,右边的组织关系中。人、系统、机器分别处在不同的团队中,有多个管理者,负责多个团队业务领域的架构师叫跨域架构师。

举个例子,一个大公司的BU会有多个产品线,每条产品线都有对应的产品经理。一个产品经理,往往会对应一个或者多个研发经理。一个研发经理负责一个研发领域,还会带领一个研发团队。一个研发团队有多个程序员。一名跨域架构师对应多个研发经理。

2、跨域架构师比单域架构师牛吗,回忆一下架构师的职责:“软件架构师就是为相对复杂的业务定义并引导实施一个结构化软件方案的能力,其中结构化,代表这个软件在其涉及范围内的设计理念、代码结构、实现方式上是同质的。”

这里的同质,该怎么理解。代码结构要遵循你的设计理念,实现方式要能落地代码结构,通俗些讲,设计什么样,实现就该什么样。反之,就不是同质。

结合上述架构师的职责,假设一下,如果你现在正负责多个领域的软件架构,而每个领域都有对应的研发经理,甚至领域内还有对应的单域架构师。试问,为什么这些领域的设计理念、代码结构和实现方式是处处一致的呢?

生产实际中,每个领域都有自己的领域目标、挑战、需求优先级、相对独立的工作环境。领域之间的设计理念也不一致。正如先前所讲,单域内的架构设计理念、代码结构、实现方式需要一致。跨域之间也需要一致,比如订单域有一个SOA层,依赖订单域的商详也有一个SOA层,那么这两个SOA层是不是冗余的呢。这个就需要跨域架构师来判断了,也会比较困难。

现在你知道跨域架构师的挑战了吧:要持续抵抗天然的熵增,将多个子领域中不同的设计理念、代码结构和实现方式,往同质的方向上进行整合。”

你说跨域架构师牛不牛呢。

3、从一个线上事故说起。上一篇文章我们讲了一个背锅的故事。最后是架构师背的锅。

194f05f073f03b46c06b77c5610d3a8e.jpeg

产生线上问题的原因,只有两个,一个是管理问题,一个是技术架构问题。而这个线上事故,既有管理的问题,也有技术架构的问题。

订单、支付、资金这样的业务团队,能不能不拆,这是一个平衡的问题。大单体和微服务之间的平衡。大单体在决策上可能实现上行下一,但也带来版本迭代慢,发布效率低下等问题。微服务当然有它的优势,比如执行效率快等。但也带来了这种协作沟通的问题。

公司成长,达到一定的体量,就会有多个微服务,多个领域,多个跨领域协作的团队。在大厂里尤甚,仔细想一想,这样做是必然的,大了就要拆,多了就要分。这块可以结合康威定律来理解。

所以,我们不会因为有这样跨领域协作的问题,从而倒退到原始组织的状态去。既然组织上不能返回大一统,那就尝试从技术架构上去解决。

就需要跨域架构师。

4、跨域架构师必备的四个要求。你若是一名跨域架构师,在生产实际中该怎么发挥你的水平呢。

1、在直接修复一个大BUG,和找到一个最优解之间,要选择后者。

2、跨域架构师的存在就是协调子域之间的决策、执行和沟通,从而平衡全局结构化和局部个性化之间的冲突,最终最大化全局目标的实现。

3、跨域架构师千万不能充当和事老。

4、要具备解决跨领域冲突的的能力和勇气,其中勇气有时候更重要。

今年9月5日,我在QCon大会性能优化主题中,也讲到了关于架构师,及团队文化冲突的内容。如有兴趣索取完整PPT,请加微信:wangxindong2015,备注PPT。

参考学习资料:郭东白老师的架构课。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1254307.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript 表达式

JavaScript 表达式 目录 JavaScript 表达式 一、赋值表达式 二、算术表达式 三、布尔表达式 四、字符串表达式 表达式是一个语句的集合,计算结果是个单一值。 在JavaScript中,常见的表达式有4种: (1)赋值表达式…

Xshell连接VMware虚拟机中的CentOS

Xshell连接VMware虚拟机中的CentOShttps://www.cnblogs.com/niuben/p/13157291.html 步骤: 1. 检查Linux虚拟机的网络连接模式,确保它是NAT模式。(由于只在本机进行连接,所以没有选择桥接模式。当然,桥接模式的配置会…

中东客户亲临广东育菁装备参观桌面型数控机床生产

近日,中东地区的一位重要客户在广东育菁装备有限公司的热情接待下,深入了解了该公司生产的桌面型数控机床。这次会面不仅加强了双方在业务领域的交流,也为中国与中东地区的经济合作描绘出更美好的前景。 在育菁装备公司各部门主要负责人及工作…

[Java]线程详解

Java线程 一、线程介绍 程序 是为完成特定任务、用某种语言编写的一组指令的集合(简单来说就是写的代码)。 进程 进程是指运行中的程序,比如我们使用的QQ,就启动了一个进程,操作系统会对该进程分配内存空间。当我…

使用不平衡数据集练习机器学习

一、介绍 在当今世界,机器学习和人工智能几乎被广泛应用于每个领域,以提高绩效和结果。但如果没有数据,它们还有用吗?答案是否定的。机器学习算法严重依赖我们提供给它们的数据。我们提供给算法的数据质量在很大程度上决定了机器学…

LangChain 11实现思维树Implementing the Tree of Thoughts in LangChain’s Chain

思维之树( Tree of Thoughts ToT)是一个算法,它结合了普林斯顿大学和谷歌DeepMind在本文中提出的大型语言模型(LLMs)和启发式搜索。看起来这个算法正在被实现到谷歌正在开发的多模式生成AI Gemini中。 现在&#xff0…

vue2-009——mixin混入

一、基础使用案例 1.1、定义混合 1.2、引入混合 1.2.1、局部混入 1.2.2、全局引入 二、注意点 1、组件和混合有同名变量时,以组件的变量为主 2、组件和混合有同名生命周期钩子时,两者都会生效

c盘清理——常用方法和工具整理

背景 最近c盘满了,只剩下1-2G,周末有空清理一下。对这块不太熟悉,下面只是把今天网上看到的比较好用的工具整理一下。 使用工具 磁盘大小查看工具——TreeSize(收费) 之前都是右键一个个看每个文件的大小&#xff0…

Flutter桌面应用开发之毛玻璃效果

目录 效果实现方案依赖库支持平台实现步骤注意事项话题扩展 毛玻璃效果:毛玻璃效果是一种模糊化的视觉效果,常用于图像处理和界面设计中。它可以通过在图像或界面元素上应用高斯模糊来实现。使用毛玻璃效果可以增加图像或界面元素的柔和感,同…

什么是 Node.js?

在 Node.js 出现之前,最常见的 JavaScript 运行时环境是浏览器,也叫做 JavaScript 的宿主环境。浏览器为 JavaScript 提供了 DOM API,能够让 JavaScript 操作浏览器环境(JS 环境)。 2009 年初 Node.js 出现了&#xf…

USB简介系列-02

系列文章目录 USB简介之二 文章目录 系列文章目录USB数据流一、USB总线二、USB收发器三、USB速率识别三、USB总线状态总结USB数据流 本部分讨论USB低速和全速模式下的数据流。 一、USB总线 想象一下USB主机根集器下级联了集线器和设备的设置,如下图示。我们需要记住的是,在…

FFmpeg零基础学习(二)——视频文件信息获取

目录 前言正文一、获取宽高信息1、核心代码2、AVFormatContext3、avformat_alloc_context4、avformat_open_input5、avformat_find_stream_info6、av_dump_format7、av_find_best_stream End、遇到的问题1、Qt Debug模式avformat_alloc_context 无法分配对象,而Rele…

go对rabbitmq基本操作

一、安装rabbitmq 1、直接使用docker拉取镜像 docker pull rabbitmq:3.82、启动容器 docker run \-e RABBITMQ_DEFAULT_USERadmin \-e RABBITMQ_DEFAULT_PASS123456 \-v mq-plugins:/plugins \--name rabbit01 \--hostname rabbit01 --restartalways \-p 15672:15672 \-p 5672:…

为什么高斯核是实现尺度空间变换的唯一变换核,并且是唯一的线性核?再研究

请先看,我们前面一篇,尺度为什么是sigma。 下面要说的是,我们研究的是:g(x,y,sigma)和g(x,y,k*sigma)的关系 而不是:I(x,y)和g(x,y,sigma)之间的关系 也不…

十分钟让你搞懂JVM中的GC垃圾回收机制(分代回收)

文章目录 0. 为什么要有垃圾回收?1. 垃圾回收哪个内存区域?2. 如何找到垃圾(死亡对象的判断)2.1 引用计数法2.2 可达性分析法2.3 两种算法的差别 3. 如何清理垃圾(死亡对象的回收)3.1 标记-清楚法3.2 复制法3.3 标记-整理法 4. JVM使用的回收方法4.1 什么是分代回收4.2 哪些对…

数据结构 / day04 作业

1. 单链表任意位置删除, 单链表任意位置修改, 单链表任意位置查找, 单链表任意元素查找, 单链表任意元素修改, 单链表任意元素删除, 单链表逆置 // main.c#include "head.h"int main(int argc, const char *argv[]) {Linklist headNULL; //head 是头指针// printf(&q…

基于opencv+ImageAI+tensorflow的智能动漫人物识别系统——深度学习算法应用(含python、JS、模型源码)+数据集(四)

目录 前言总体设计系统整体结构图系统流程图 运行环境爬虫模型训练实际应用 模块实现1. 数据准备1)爬虫下载原始图片2)手动筛选图片 2. 数据处理3. 模型训练及保存4. 模型测试1)前端2)后端 系统测试1. 测试效果2. 模型应用1&#…

极兔快递查询,极兔快递单号查询,对需要的单号记录进行备注

批量查询极兔快递单号的物流信息,对需要的快递单号记录进行备注。 所需工具: 一个【快递批量查询高手】软件 极兔快递单号若干 操作步骤: 步骤1:运行【快递批量查询高手】软件,并登录 步骤2:点击主界面左…

redis(Remote Dictionary Service) 底层数据结构

redis 底层数据结构 动态字符串SDS 优点 获取字符串长度的时间复杂度O(1) 支持动态扩容,减少内存分配次数 新字符串小于1M – 新空间为扩展后字符串长度的两倍 1 新字符串大于1M – 新空间为扩展后字符串长度 1M 1. 内存预分配 二进制安全(记录了…

java springboot中使用 AOP监听方法执行周期

首先 我们在 pom.xml 中 dependencies标签中加入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency>然后 我们随便创建一个类 编写代码如下 package com.ex…