从 Etsy 团队看敏捷架构的设计(2)

简介: 从 Etsy 团队看敏捷架构的设计(2)


我们知道经验、技能和关系的多样性,有助于更好地解决问题—架构功能、场景、解决方案、错误修复或提供产品。
最好的解决方案来自于包括多个领域代表的团队,他们利用各自不同的观点和经验来解决这个问题。


如果请软件工程师设计一个门,他或她会马上开始思考门的工作原理,铰链如何运作,门把手如何转动,等等。如果请产品经理设计门,他或她可能开始考虑门应达到的效益,其他竞争对手的门都有什么功能,最后一轮用户测试的结果。如果请系统管理员设计门,他或她会开始思考如何确保安全,如果插销或锁出现常见的故障应该如何恢复。当我们把这些不同的观点都集中起来,就可以设计出一个更强大、更具可扩展性以及更高可用性的产品。


关系的多样性用来衡量团队成员的个人或专业关系网络。这对创新很重要,因为几乎所有的项目都会遇到不同的阻碍。关系广泛的团队能够在项目早期更好地识别潜在的障碍或可能遇到的问题,因为他们可以咨询各种各样团队以外的人。当团队确实遇到了障碍,这种多样化的关系使他们的易于发现和取得资源并绕过障碍。



有限的资源


 

当一个灵活的团队有多样化的技能、广泛的人脉关系以及各种各样的经验借鉴后,团队成员设计、研发、部署和支持高度可靠和可扩展的产品的能力会更强。如果公司不能为每个团队配备一位架构师,或者六个敏捷团队只有两个DevOps工程师会怎么样?


这个问题的不仅出现在资金有限的初创公司,也同样存在于现金充沛的高增长型公司。在第一种情况下,公司无法雇用很多架构师、DevOps工程师和其他想要的专业技术人员。在第二种情况下,公司可能无法如愿吸引和留住许多架构师或DevOps工程师。团队的成长常常是非同步的,先招聘软件开发人员、然后是产品经理、再后是质量保证工程师、DevOps工程师,最后是架构师。填补团队的周期可能花费一年到18个月的时间。没有一家公司会让软件开发人员闲下来等待架构师的加入。但是在这种情况下,团队该怎么做呢?


image.png



当面对有限的人员和资源时,团队通常会试图以现有的有限资源来对付。这种方法可能会为公司带来相当大的风险。试想一下没有足够的产品经理的情景。结果可能是仓促编写的用户场景描述和调度很差的项目优先级,结果导致严重的错误。


敏捷团队的第一步是确保他们有必要的资源来完成项目。


一旦关键资源缺失,这个团队就会处于危险之中。争取必要资源的办法是使用看板来直观地显示研发过程中的资源瓶颈,说明需要资源的业务理由。另一种方法是跨团队共享资源。有限的资源,如DevOps工程师,可以在整个团队共享。这些人应该被分配给多个团队,但不是所有的团队。就像有多个房客但不是所有的房客。例如,如果你有两个DevOps工程师和六个敏捷团队,把DevOps工程师1分配给敏捷团队A、B和C,把DevOps工程师2分配给敏捷团队D、E、F。这样,团队会感到与DevOps工程师有某种程度的关联性。他们开始思考“DevOps工程师1是和我一起配合的人”而不是“我们有两个DevOps工程师的资源池,要找他们帮忙就要提交请求来排队”。看到区别了吗?一方面我们打破了壁垒,另一方面可以确保他们和团队一起成长。

 

标准



在多个团队情况下,如何保持标准,是一个不变的主题。如果我们允许每个敏捷团队自主决定哪种模式、基础库、框架甚至技术,公司如何受益于规模的扩展?工程师如何在团队之间调动的过程中共享知识?在很多情况下,这些问题的答案是“那要看情况”。


这取决于组织、领导和团队成员。让我们看一些不同的方法。


image.png



“规模经济”一词是指企业因其经营的规模而实现的成本优势。基本的概念是,因为固定成本分散在更多的输出单位,每单位的输出成本随规模的增加而减少。这种思想可以追溯到亚当·斯密(1723~1790)和通过分工获取更大的生产效益的概念。


对于工程团队,规模经济来自于诸如有关技术或经营方式的知识共享。如果从项目的角度把软件研发服务的成本分解成固定成本的和可变成本两个部分,我们可以得到如下的结果。固定成本包括软件开发人员的知识和技能。我们在每个迭代为此付出,无论是为一个场景写代码还是为50个场景写代码,成本都一样。每个迭代的代码完成量越多,固定成本的分摊就越小。如果只完成一个场景的代码,这个场景就消耗固定成本的100%,如果我们的写20个场景的代码,每个场景就只负担5%的固定成本。如果每个软件开发团队(敏捷团队)必须是不同的语言、技术或过程的专家,这个知识的固定成本只由负责那些场景的单一代码团队负担。如果所有的团队都可以利用彼此的知识,那么成本就可以由所有的团队来分担。


一些组织认为应该允许团队对所有的事情独立做决定,最好的想法就会渗透到整个团队。其他组织采取不同的方法,把团队成员集中在一起制订出大家要共同遵守的标准。我们先来看看Spotify的数字音乐服务是如何解决敏捷团队的架构设计问题的。然后我们将以此方法与Wooga作对比,Wooga是一个社交游戏公司,其采用的方法稍有不同。


相关文章
|
6月前
|
机器学习/深度学习 存储 人工智能
一阶优化算法启发,北大林宙辰团队提出具有万有逼近性质的神经网络架构的设计方法
【4月更文挑战第19天】北京大学林宙辰团队在深度学习领域取得突破,提出基于一阶优化算法的神经网络设计方法,构建具有万有逼近性质的模型,提升训练速度和泛化能力。该方法利用一阶导数信息,高效处理大规模问题。虽然面临非光滑优化和收敛速度挑战,但团队通过正则化和自适应学习率等策略进行改进,相关研究在多个标准数据集上表现出色。
90 1
|
6月前
|
存储 算法 安全
微信团队分享:来看看微信十年前的IM消息收发架构,你做到了吗
好的架构是迭代出来的,却也少不了良好的设计,本文将带大家回顾微信背后最初的也是最核心的IM消息收发技术架构,愿各位读者能从中获得启发。
229 1
|
Kubernetes 调度 云计算
字节跳动基础架构编排调度团队论文入选云计算领域顶会 SoCC 2023
2023 年 10 月 30 日至 11 月 1 日, SoCC 2023 将在美国加州 Santa Cruz 举行。 字节跳动基础架构 - 编排调度团队的研究成果被 S o CC 2023 接收,并受邀进行现场报告。 SoCC 会议全称 Annual ACM Symposium on Cloud Computing,是 云计算领域顶级会议之一,同时也是 ACM 所有会议当中唯一一个同时被 SIGMOD 和 SIGOPS 赞助的顶会。代表了当前云计算领域在学术界、工业界和开源社区的前沿水平。SoCC 会议伴随着云计算的兴起而成立,至今已经举办到第 14 届。该会议每年吸引全球顶级研究机构和知名
466 0
|
机器学习/深度学习 人工智能 自然语言处理
中山大学团队使用端到端图生成架构进行分子图编辑的逆合成预测
中山大学团队使用端到端图生成架构进行分子图编辑的逆合成预测
173 0
|
监控 安全 架构师
「企业安全架构」EA874:安全架构团队
「企业安全架构」EA874:安全架构团队
|
存储 数据管理 大数据
「企业微服务架构」怎么弥合不同微服务团队之间的差距
「企业微服务架构」怎么弥合不同微服务团队之间的差距
|
机器学习/深度学习 存储 并行计算
CVPR 2023 | 清华黄高团队提出适配边端和云端的即插即用型高效神经网络网络架构——Slide-Transformer
CVPR 2023 | 清华黄高团队提出适配边端和云端的即插即用型高效神经网络网络架构——Slide-Transformer
740 0
|
5天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
3天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
4天前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
14 1
服务架构的演进:从单体到微服务的探索之旅