译: 进化的系统需要进化的系统工程

简介: > By James TurnbullInes Sombra March 20, 2018 > https://www.oreilly.com/ideas/the-evolution-of-systems-requires-an-evolution-of-systems-engineers 在过去的几周,我们一直在反馈从我们第一次站在职场时就在变化的工业技术。我们在寻找在两个不同的但是重叠

By James TurnbullInes Sombra March 20, 2018
https://www.oreilly.com/ideas/the-evolution-of-systems-requires-an-evolution-of-systems-engineers

在过去的几周,我们一直在反馈从我们第一次站在职场时就在变化的工业技术。我们在寻找在两个不同的但是重叠领域的变化:技术的变化与方法学的变化。我们大部分人第一次接触的系统是第一代的CS应用。它与它的上一代系统有很大不同:其通过控制台连接到一个运行在大型机或中型机的中心化应用。工程师像增强服务器一样学习它的客户端逻辑。连接性,传输的数据,安全,延迟与性能,客户端与服务器间的状态同步成为管理系统时需要考虑的问题。

复杂性的提高需要其对应的管理这些系统的方法与技能的提高。新类型的系统意味着新技能,理解新工具,框架,与编程语言。我们可以发现现在很多以前集中在一个角色的技能开始分散:前端工程师,后端工程师,数据科学家,设计师,UX/UI专家,还有其他专家。我们可以发现这个阶段建立了很多孤岛功能并且在转换这些孤岛间的复杂性。DevOps与SRE社区在试图消灭以上的孤岛。

从第一代CS系统,我们可以看到很大的变化。大部分是由于技术对于做生意至关重要-对所有行业的任何生意都是这样。这与客户要求快速在不同地理区域的设备上部署结合。举个例子,从街角录像带店租赁录像进化为在Netflix与Hulu上的流媒体。我们期望分发内容的延迟从小时或分钟降低到秒。我们期望内容分发可以24 7 365 天在我们所有地区的设备上:从我们的家和办公室到移动中。我们作为客户,不需要关心基础设施或系统达到此目的的复杂性:我们只想看新赛季的比赛。

每次进化都需要我们打造与管理所需的技术需要的技术,系统,技能变化。在大多数时候,这些变化引入了更多的复杂性:我们曾经管理CS系统需要的技能与知识与现代分布式系统需要的弹性,低延迟,高可用的需求有很大不同。所以,我们需要知道哪些我们之前不知道的呢?

重定义最小可用产品

作为从业者,我们要做得更好。由于可用性与弹性已经是主要考虑的问题,应用程序的最小可用产品需要被重定义。好的设计目标现在需要把包括基本的对于运维性,安全,性能与可观察性的架构目标。每个工程师,从在React组件上工作的前端工程师到在构建一个分布式数据集的后端工程师,需要考虑他们系统的小部分是如何影响整个系统的。

用户对性能的需要已经对计算模型与状态管理策略产生了新的限制。计算模型开始转向Serverless与边缘计算架构,期望能降低用户延迟。这是我们学到的新一课:计算节点越靠近用户越有效率。

对于状态管理也是这样。应用正在从最开始的分布式状态,共享存储,甚至数据迁移从中心存储向边缘或云计算升级。接近最终用户可以保证更快速的决策,但大大增加我们应用的复杂性。

每一处约束都代表工程师需要理解他们自己维护的部分与其他部分的变化可能对宏观系统造成的影响。当这些内容由于复杂性或缺乏对系统的深刻理解不能在心里建模掌握时,就需要用程序的方式来建模,如观察,插桩,追踪,测试。

我们现在已经不能使用简单的方式来监测故障或使用简单的方式来调试故障。复杂架构与分布式的应用,看起来很适合用探针,但可能对终端用户无法实现良好的性能。就算在观测事件与指标,由于不同系统间的相关性与平衡性,而且计算延迟在分布式系统中也不够精确,我们很难用传统方式获得一张全图。

应用的instrumentation在开发过程中已经是一个必选项而不是一种事后行为了。每个工程师都需要考虑如何清楚的表示他们系统的状态,性能与可观测性。这需要工程师学习与适应新技术来交付这些新的能力。

进化的技术生态

新的框架,架构,过程,一个成长的工具生态帮我们完成这些挑战。他们有些还处于孵化阶段,但会快速变成熟。我们已经看到了这种变革:只花了四年容器已经成为了主流技术,并且我们正在致力于使用类似kubernetes工具来支持复杂应用级别的抽象。部署上也有类似的变更正在发生,serverless,边缘计算技术,安全,性能与系统可观测性。

最后,没有变化能存在在人与组织之外。我们需要开发必须的领导技能去构建跨功能团队,并保证够构建这些系统所需的快速迭代。我们需要继续投入在DevOps与SRE社区来打破估到,无缝改造团队并提高开发效率。围绕快速交付高质量,安全与高性能应用的团队组织可以创造高创新性的产品与组织。

对于刚开始或正在路上的组织和行业从业者, O'Reilly's Velocity会议有一系列计划来帮助公司处理这些现代复杂性。来自于Google,Netflix,Microsoft,Amazon,Twitter,Nordstorm,Slack,Fastly的开发者与工程师会来分享他们的在构建,伸缩,加固分布式系统的成功与失败的经验。你会有机会学习,社交,欢笑,并与观众和行业领袖进行分享。

目录
相关文章
|
23天前
|
人工智能 自然语言处理 自动驾驶
AutoGLM的一小步,人机交互进化的一大步
55年前,阿姆斯特朗登月时说:“这是个人的一小步,却是人类的一大步。”如今,这句话被用来形容智谱的AutoGLM。11月29日,智谱发布了AutoGLM Web、GLM-PC等产品,标志着AI从对话机器人进化为能自主执行复杂任务的智能体。AutoGLM能跨应用操作、执行超长任务,甚至支持“无人驾驶”上网,预示着人机交互新时代的到来。
|
7月前
拥抱不确定性:在技术实践中培养适应性思维
【5月更文挑战第23天】 在快速变化的技术世界里,不确定性已成为常态。本文旨在探讨如何在技术领域中培养适应性思维,以应对不断变化的环境。通过分享个人经验和对现有文献的分析,我们提出了一套策略和方法,帮助技术人员提高灵活性,更好地适应未来的发展。
|
3月前
|
机器学习/深度学习 物联网 大数据
软件测试的演变与未来:从传统方法到自动化革命
在数字化时代的浪潮下,软件测试作为保障软件质量的重要环节,其方法和工具经历了翻天覆地的变化。本文将带领读者穿梭时光隧道,探索软件测试的发展历程,从手工测试的繁琐与局限性,到自动化测试的高效与精准,再到未来可能迎来的智能化与集成化趋势。通过深入浅出的分析,我们将揭示如何通过不断进化的软件测试技术,提升软件开发的效率和质量,确保在这个快速变化的时代中,软件产品能够稳健前行。
|
4月前
|
机器学习/深度学习 边缘计算 人工智能
软件测试的演化之路:从手动到智能化
【8月更文挑战第6天】在数字化浪潮不断推进的今天,软件测试作为保障软件质量的重要环节,经历了从原始的手动测试到现在的智能化测试的转变。本文将探讨这一演变过程,分析其背后的驱动力和未来趋势,以及这些变化给软件产业带来的深远影响。
|
7月前
|
敏捷开发 持续交付 项目管理
【软件工程】走近演化过程模型:软件开发的不断进化之路
【软件工程】走近演化过程模型:软件开发的不断进化之路
|
6月前
|
机器学习/深度学习 人工智能 jenkins
从传统到自动化:软件测试的进化与实践
在数字化转型的浪潮中,软件测试经历了从手工测试到自动化测试的重大变革。本文将探讨这种转变的背景、具体方法和实践应用,并展望未来可能的发展方向。通过实际案例和技术分析,揭示为何自动化测试成为现代软件开发不可或缺的一部分。
|
7月前
|
机器人
人形机器人Ameca再进化
【2月更文挑战第16天】人形机器人Ameca再进化
72 7
人形机器人Ameca再进化
|
7月前
|
人工智能 量子技术 云计算
拥抱不确定性:技术演进中的适应性思维
在技术的不断迭代与演进中,不确定性是一个常驻的因素。本文通过探讨技术发展过程中的不确定性特征,强调适应性思维的重要性,并提出一系列策略以促进个人和组织在面对技术变革时的心理和技术准备。文章基于实际案例分析,阐述了如何在快速变化的技术领域中保持灵活性和竞争力,并给出了对未来技术趋势预判的见解。
119 4
|
7月前
|
人工智能
拥抱不确定性:在技术迭代中培养适应性
【4月更文挑战第28天】 在快速变化的技术世界中,不确定性成为唯一不变的常态。本文探讨了如何在持续的技术演进过程中,通过主动学习和灵活思维来增强个人的适应能力。文章分析了技术进步带来的挑战和机遇,并提出了具体的策略来帮助技术人员保持竞争力,包括跨学科学习、持续教育和实践反思。
|
7月前
|
人工智能 物联网 区块链
拥抱不确定性:在技术迭代中培养适应性思维
【4月更文挑战第24天】 在快速变化的技术世界中,唯一不变的是变化本身。本文探讨了如何在不断演进的技术环境中发展适应性思维,以应对不确定性和复杂性。通过分析技术的发展趋势、挑战与机遇,提出了一个框架,旨在帮助技术人员和决策者保持敏捷和灵活。文章强调了持续学习、跨学科合作以及实验精神的重要性,并提供了实用的策略来促进个人和组织的适应性成长。