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

简介: > 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的开发者与工程师会来分享他们的在构建,伸缩,加固分布式系统的成功与失败的经验。你会有机会学习,社交,欢笑,并与观众和行业领袖进行分享。

目录
相关文章
|
10天前
|
机器学习/深度学习 物联网 大数据
软件测试的演变与未来:从传统方法到自动化革命
在数字化时代的浪潮下,软件测试作为保障软件质量的重要环节,其方法和工具经历了翻天覆地的变化。本文将带领读者穿梭时光隧道,探索软件测试的发展历程,从手工测试的繁琐与局限性,到自动化测试的高效与精准,再到未来可能迎来的智能化与集成化趋势。通过深入浅出的分析,我们将揭示如何通过不断进化的软件测试技术,提升软件开发的效率和质量,确保在这个快速变化的时代中,软件产品能够稳健前行。
|
30天前
|
存储 人工智能 Cloud Native
就AI 基础设施的演进与挑战问题之寻求当前场景下的最优解的问题如何解决
就AI 基础设施的演进与挑战问题之寻求当前场景下的最优解的问题如何解决
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
软件测试的演变与未来趋势
【8月更文挑战第5天】在数字时代的浪潮中,软件测试作为确保产品质量的关键步骤,其重要性日益凸显。本文将探讨软件测试从手工到自动化、再到智能化的演变历程,并预测未来的发展趋势。我们将看到,随着技术的不断进步和市场需求的变化,软件测试领域正迎来前所未有的挑战与机遇。
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
人工智能与人性化设计的协同进化
随着人工智能(AI)技术的迅猛发展,我们不仅看到了其在各个领域的广泛应用,更重要的是,它正在逐步融入我们的日常生活,改变着我们与技术的互动方式。这篇文章将探讨人工智能与人性化设计的协同进化,分析两者如何相互促进,共同塑造未来的技术发展方向。
|
3月前
|
机器学习/深度学习 人工智能 jenkins
从传统到自动化:软件测试的进化与实践
在数字化转型的浪潮中,软件测试经历了从手工测试到自动化测试的重大变革。本文将探讨这种转变的背景、具体方法和实践应用,并展望未来可能的发展方向。通过实际案例和技术分析,揭示为何自动化测试成为现代软件开发不可或缺的一部分。
|
4月前
|
机器学习/深度学习 人工智能 自然语言处理
构建未来:人工智能在持续学习系统中的进化之路
【5月更文挑战第15天】 随着技术的不断进步,人工智能(AI)已成为推动现代科技革新的核心动力。特别是在机器学习领域,AI系统的能力正通过持续学习机制得到显著增强。本文深入探讨了AI技术在实现自我进化方面的最新进展,分析了持续学习系统的关键组成部分,包括数据获取、模型适应性以及算法优化等方面。同时,文章还着重讨论了在设计这些系统时所面临的挑战,如数据偏差、计算资源限制和伦理问题,并提出了可能的解决方案。
|
4月前
|
机器学习/深度学习 存储 人工智能
构建未来:人工智能在持续学习系统中的进化
【5月更文挑战第29天】 随着人工智能(AI)技术的蓬勃发展,机器学习模型正变得越来越复杂。然而,真正的智能不仅仅体现在完成任务的能力上,更在于不断学习和适应新环境的能力。本文将探讨如何通过创新的学习算法和系统设计,实现AI的持续学习,并分析这一进化对技术未来的意义。
|
4月前
|
人工智能 量子技术 云计算
拥抱不确定性:技术演进中的适应性思维
在技术的不断迭代与演进中,不确定性是一个常驻的因素。本文通过探讨技术发展过程中的不确定性特征,强调适应性思维的重要性,并提出一系列策略以促进个人和组织在面对技术变革时的心理和技术准备。文章基于实际案例分析,阐述了如何在快速变化的技术领域中保持灵活性和竞争力,并给出了对未来技术趋势预判的见解。
|
运维 分布式计算 监控
蚁群智能进化:文档管理软件中蚁群算法的革命性应用
蚁群算法在文档管理软件中的运用主要体现在以下两个方面: 1. 蚁群算法在异常检测方面的应用:在文档管理软件中,需要实时监测和检测系统中的异常情况,例如突发的网络流量、CPU负载过高等问题。使用蚁群算法可以在复杂的监控数据中,快速地发现异常情况,并提供及时的预警和处理建议……
112 0
|
机器学习/深度学习 传感器 人工智能
第四范式陈雨强:企业智能决策的下一代技术「强化学习 + 环境学习」
第四范式陈雨强:企业智能决策的下一代技术「强化学习 + 环境学习」
182 0