OpsDev--软件设计从Ops角度出发以规避风险

简介:

DevOps在09年被提出之后,热度一直不减。最近几年,随着容器化、微服务等概念的兴起,DevOps又开始了大规模实践。但是,随着基础设施的增加,软件设计从Ops角度出发,可以更好的规避基础设施变更带来的风险。

从苹果公司开始

开发者、用户、投资者、分析师和竞争对手都渴望在WWDC上学习到苹果公司维持其领导地位的方式。虽然没有令人兴奋的新产品发布,但是贯穿其中很多话题的核心是:用户体验。

和其他手机厂商的发布会不同,苹果公司专注于客户的体验,而不是其产品的功能和特性。当竞争者在吹捧他们新品拥有的高像素相机和处理器核心数量的时候,苹果公司展示iPhone拍摄的优美、富有灵感的照片时,没有提及设备的任何技术细节。

现在,手机已经改变了我们的生活,日常的衣食住行都可以通过手机app来协助完成。但是苹果公司认为智能设备还能使我们的生活更加高效。不同于目前每个app提供独立的功能,苹果公司希望能够将这些服务整合到一起,对于用户来说,他们只需要使用苹果的服务,而无需打开多个app。要实现这样的愿景,产品或者服务都需要有新的设计范式。任何期望通过接入苹果服务以对外提供个性化用户体验的公司,都应该考虑OpsDev而不是DevOps。

进入OpsDev的世界

我们假设一家电器公司制造的智能冰箱,为用户提供以下体验:

当我坐在车里时,智能冰箱通过手机发出提醒:冰箱存货不足,该去买些食品啦。此时,手机自动生成并推荐了三个采购方案。第一个超市不需要绕路,但是没有我喜欢吃的冰淇淋;第二个超市比第一个远10分钟,但是有所有我喜欢吃的所有食物;第三个超市更远,需要多15分钟的路程,但是它除了有所有需要采购的东西,还提供额外优惠券。我点击了其中一个方案,车载导航开始自动规划行车路线,并显示在汽车多媒体系统中。

在不久的将来,很多公司会致力于提供集成的个性化用户体验,因此不同的数据源和服务必须被整合到一起。智能冰箱通过传感器判断冰箱内的存货,超市服务提供其库存和优惠信息,其他还有交通信息、地理位置信息等等。这些数据源由不同的提供商提供,并且保存在不同的数据中心。这些数据的访问,需要特定的授权方式、API和数据处理流程。个性化服务的设计者,必须明确了解每个服务的规约,因为任务信息不能及时正确的获取,都会影响到用户体验。作为零售商,不会希望用户多花了15分钟时间过来,结果却因为需要购买的商品缺货,或者无法使用优惠券而造成损失。

由此可见,个性化软件服务的交付影响了现有的软件设计模式。DevOps克服了传统瀑布流所不能提供的快速交付能力,通过诸如代码审查、编码规范、持续集成等方式解决软件开发遇到的挑战,并且让开发直接参与到了产品上线流程。而OpsDev考虑的方面却不同。由于个性化服务依赖于底层一系列基础设施,一旦我们知道了每个独立的数据源的依赖关系和可用性,首先需要设计出将各个数据源结合在一起的组件。因此,设计者必须从运维的角度来考虑,对每个服务的依赖程度、故障修复、容错等;同时,由于每个服务相对独立由于每个服务相互独立,个性化软件服务的升级频率受其依赖的服务升级频率影响,这也需要从运维的角度考虑向下(向上)兼容。

什么是OpsDev?

OpsDev是在开发行为开始前,就需要了解应用程序依赖的所有组件,并进行建模。此外,对基础设施稳定性的考量、环境建模、安全审计措施都是第一要务。其次,应用程序组件上线后的部署环境需要被建模。再次,将组件部署到生产环境的流程必须尽可能自动化。通过以上步骤,设计和研发团队可以在开发和测试阶段复制应用程序、环境模型和自动化部署流程。这样设计、研发和测试团队可以清楚的知道应用程序在生产环境的约束和参数。在传统的项目模式下,大量时间浪费在完成验证的应用程序部署到生产环境之后才发现的缺陷。

由于部署自动化在设计之初就被考虑到,应用程序可以随时被部署到开发、测试和生产环境。这种方式不仅可以通过自动化流程加快各个环节的部署速度,还可以减少因为手工部署导致的质量问题。部署程序应该可以聚合多个独立开发的模块。每个模块都可以由独立的开发团队进行开发,并且定制适合自己的持续基础、持续交付流程。发布程序需要预先知道每个模块之间的依赖关系,这样可以快速的聚合每个通过持续集成、持续交付的流程的模块,将它们整合之后部署到集成环境或者生产环境。

通过OpsDev方法,发布方式变得更加灵活。整个部署流程被设计的可以插入验证流程。一个典型的持续交付流程可以是:发布程序首先将待发布应用程序部署到集成环境(UAT测试环境、预发布环境)上,然后触发发布前的自动化、手工验证、性能基线验证等一系列验证措施,整个过程通过之后,部署程序再将应用程序发布到生产环境,发布成功之后记录基线信息和本次变更的状态。

总结

对于物联网或者基于用户体验的移动app厂商来说,传统的软件开发流程无法适应它们的产品,因为它们都会对很多SaaS服务有依赖,且应用程序包含很多组件(物联网设备中的app、移动设备中的app、数据中心的后台服务、网页服务等)。像苹果这样鼓励开发者优先思考用户体验,并提供个性化服务的公司,可能会加速思考方式从DevOps向OpsDev的转变。
文章转载自 开源中国社区 [http://www.oschina.net]

相关文章
|
6月前
|
机器学习/深度学习 算法 关系型数据库
强化学习
强化学习(RL)是一种通过智能体与环境交互,以最大化累积奖励为目标的学习方法。核心包括状态、动作、奖励、策略与价值函数,依赖试错和延迟奖励机制。常见算法如Q-learning、PPO、DPO等,广泛应用于游戏、机器人及大模型训练。结合人类反馈(RLHF),可实现对齐人类偏好的智能行为优化。(239字)
|
6月前
|
缓存 监控 测试技术
llama.cpp Server 引入路由模式:多模型热切换与进程隔离机制详解
llama.cpp 于2025年12月11日发布路由模式,支持多模型动态加载与毫秒级切换,无需重启服务。采用多进程隔离架构,兼容OpenAI API,支持自动发现、按需加载、LRU淘汰及手动管理,显著提升本地多模型协作的效率与稳定性,是轻量级推理服务框架的重要升级。
1850 3
llama.cpp Server 引入路由模式:多模型热切换与进程隔离机制详解
|
3月前
|
SQL 人工智能 自然语言处理
别让RAG成为“人工智障”:用Agent Skills做知识库检索,究竟强在哪?
本文剖析传统RAG的三大痛点:检索失误即满盘皆输、长上下文导致信息淹没、静态流程无法适配动态问题;对比引入Anthropic Agent Skills框架的新范式——具备规划、路由与反思能力的“AI研究员”,支持多技能协同、可解释推理与自适应重试。实测显示其在复杂知识任务中相关性、深度与满意度显著提升。
|
12月前
|
存储 监控 安全
《HarmonyOSNext应用埋点黑科技:HiAppEvent全方位事件监控指南》
本文详解HarmonyOS Next的HiAppEvent事件监控系统,涵盖事件打点、类型分类、接口调用与实战案例,助力开发者实现崩溃分析、用户洞察与数据驱动优化。
|
机器学习/深度学习 API
有效的思考:模型思考效率评测
随着大语言模型的迅速发展,模型的推理能力得到了显著提升。特别是长推理模型(Long Reasoning Models),如OpenAI的o1、DeepSeek-R1、QwQ-32B和Kimi K1.5等,因其展现出类似人类的深度思考能力而备受关注。这些模型通过长时间推理(Inference-Time Scaling),能够在解码阶段不断思考并尝试新的思路来得到正确的答案。
722 0
|
10月前
|
SQL 数据采集 数据处理
终于有人把数据架构讲清楚了!
本文深入浅出地解析了数据架构的核心逻辑,涵盖其定义、作用、设计方法及常见误区,助力读者构建贴合业务的数据架构。
|
供应链 项目管理 容器
深入探索 BPMN、CMMN 和 DMN:从定义到应用的全方位解析
在当今快速变化的商业环境中,对象管理组织(OMG)推出了三种强大的建模标准:BPMN(业务流程模型和符号)、CMMN(案例管理模型和符号)和DMN(决策模型和符号)。它们分别适用于结构化流程管理、动态案例处理和规则驱动的决策制定,并能相互协作,覆盖更广泛的业务场景。BPMN通过直观符号绘制固定流程;CMMN灵活管理不确定的案例;DMN以表格形式定义清晰的决策规则。三者结合可优化企业效率与灵活性。 [阅读更多](https://example.com/blog)
深入探索 BPMN、CMMN 和 DMN:从定义到应用的全方位解析
|
数据处理 iOS开发 MacOS
Python 虚拟环境安装使用(Anaconda 实操完整版)
【10月更文挑战第4天】Anaconda 是一个开源的 Python 发行版,集成了常用科学计算与数据处理库,并提供了方便的包管理工具 `conda`。虚拟环境则允许在同一台机器上创建多个独立的 Python 运行环境,避免库版本冲突。通过下载 Anaconda、创建与激活虚拟环境、安装软件包及管理环境,可有效支持 Python 项目开发。
2503 8
|
存储 人工智能 对象存储
一文详解阿里云AI大基建
一文详解阿里云AI大基建
3039 2