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

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

背景



Etsy是我们最喜欢的一个从事手工艺品或古董在线市场的科技公司。该公司拥有稳定的技术团队,技术运维由约翰·阿尔斯帕瓦掌舵,其网站偶尔也经历网站中断。


2012年7月30日,发生了这样一件事,员工为支持多字节字符集的语言进行了数据库升级。一切都是按照计划进行的,他们先升级了一个生产数据库。数据库升级,尤其是改变静态数据的编码,存在着数据破坏或丢失的风险。为此,该小组精心制订了一个在一段时间内把剩下的服务器缓慢升级的计划。他们只升级一台服务器,而让其他服务器的升级基本上准备就绪。


微信图片_20220121185843.jpg


Etsy往往有许多变更在排队进入生产环境。网站在夜间备份的时候速度缓慢,更快的备份方案正在排队等待实施的时机。为了推出解决备份问题的修复代码,Etsy的工程师们使用了自动化的工具,以确保服务器的一致性。经过测试后,他们使用该工具将修复的应用版本发布到备份中,在不干扰网站性能的基础上,期待着稍后确认备份的成功。他们当时并不知道部署改进备份的部分也同时升级了数据库的语言。


当意识到大约60%的Etsy的数据库服务器在升级字符集的同时仍然在服务用户时,他们迅速地关闭了网站,以防止数据损坏。回应这一事故的团队由多个部门的人员所组成。正如阿尔斯帕瓦说的那样,“不只是一个团队在响应事故”。在Etsy,很多人参与了24/7值班小组。没有问题管理者存在的必要,因为每个团队拥有自己所研发的服务。在某些情况下,如搜索团队,由来自不同领域的员工组成的敏捷开发团队作为一级响应。搜索团队首先接到警报,在必要的时候,把问题升级到的技术运维。


团队一旦能够确认数据库是正确的而且表现正常,就恢复网站的服务。同时,他们与社区通过EtsyStatus网站(http://etsystatus.com/)沟通。


这个例子显示出敏捷团队(5到12人的跨部门团队,由经理、工程师、QA人员、团队和DevOps人员组成)如何从架构设计开始到生产支持一直拥有自己的产品或服务。



本文将通过探讨功能和系统设计,来解释敏捷组织是如何实现系统相关的设计,以及独立的敏捷团队如何遵循标准。

 


敏捷组织中的架构



在功能型组织里,个人是按照技能、领域或专业组织起来的。然而,几乎每个项目都需要协调整个团队,这意味着跨部门协调。对SaaS提供商尤其如此,因为SaaS的责任不仅是软件开发和测试,还要运维和支持,所以属于公司的技术团队。这导致一定程度的情感型冲突。冲突的程度取决于许多因素,但我们希望尽可能减少这些因素。回想一下,情感型冲突是“坏”的,冲突集中在角色和所有权方面,涉及的问题往往是“谁”拥有或任务应该“如何”做?


这种类型的冲突具有破坏性,会导致团队成员身心疲惫。在身体上,它可以让交感神经系统(与下丘脑激发的打架或逃跑综合征相同的系统)释放压力激素皮质醇、肾上腺素和去甲肾上腺素。在组织上,团队可能会因为争夺产品和服务的所有权,导致封闭的思路和不良的结果。相反,敏捷组织打破功能型组织的斗争,并授权于团队,消除矩阵组织结构所面临的组织边界问题。


image.png



敏捷组织是由5至12人组成,拥有设计、开发、交付和支持面向客户的产品或服务所必需的技能。这些团队是跨部门和自成一体的。他们有权做出自己的决定,而且不需要外界的认可。他们有能力处理产品或服务的全生命周期。当团队以服务为主线跨部门组织起来,同时具有自主权,就可以显著减少情感型冲突。当团队成员拥有共同的目标,并且不再需要争论谁负责什么或谁应该执行某些任务时,团队就会荣辱与共。
每个人都会负责确保所提供的服务符合业务目标。


在SaaS产品服务方面,创新的增加往往是通过度量更快的市场响应时间、更好的产品质量和更高的可用性来确定的。这种创新的驱动力降低了情感型冲突,提高了认知型冲突、多样性和授权管理的水平。敏捷的组织结构提供了所有这些驱动力,其结果往往是创新的显著增加。

 


架构的所有权


创新、更大的自主权和更少的情感型冲突听起来很棒。然而,与更大的权力伴随而来的是更大的责任。这些敏捷团队拥有服务或产品的架构。换句话说,他们不依赖独立的架构团队,而靠自己完成产品的设计和实施。在实践中这是如何实现的呢?




敏捷团队由拥有所需全部技能的人员组成,确保团队能进行产品的自主研发。典型的团队成员包括产品经理、几个软件开发人员、质量保证工程师和DevOps工程师。如果该公司有软件架构师,架构师也被放在敏捷团队里。这样的团队构成应该让你想到第13章的JAD过程。如果敏捷团队设计和研发高可用和可扩展的产品与服务,其成员需要任何完成同样任务的其他团队相同的技能。JAD像一个乐队助理,在以功能为导向的团队里,创建跨领域设计是敏捷团队的内在特质。


image.png


相关文章
|
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
服务架构的演进:从单体到微服务的探索之旅