9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

如何通过设计模式防止无服务器供应商锁定

作者:Vasco Veloso

  • 2022-10-02
    北京
  • 本文字数:1062 字

    阅读完需:约 3 分钟

如何通过设计模式防止无服务器供应商锁定

最近,Gregor Hohpe 发表了一篇文章,建议进行范式转换,以解决无服务器云应用程序的供应商锁定问题。使用模式设计解决方案可以将功能特征与底层云实现解耦,从而更容易避免供应商锁定或采用多云。


尽管人们通常都说云平台服务产品从根本上是相互等价的,但它们之间还是存在足够多的差异,以至于重要的应用场景无法进行直接移植。


因此,在设计系统时,可移植性是一个值得着重考虑的问题,特别是当系统涉及多云部署时。然而,从可移植的角度考虑问题并不件容易的事。


Hohpe 认为其中一个重要的障碍是“心理锁定”。一方面,以往的经验可能会限制一个人的思维模式,导致在采用不同的架构时面临挑战。另一方面,现代云平台倾向于用服务产品来描述解决方案。这样就很难将解决方案转移到不同的平台上。


纯粹的平台服务思维会导致应用程序设计意图丢失,并在思想上将你锁定。


服务映射表太高级了,无法准确地描述可移植性,因为特定的服务功能并非一对一对应的。此外,云服务不一定能够表达解决方案的需求或设计人员的意图。


软件工程领域的一个典型做法是在特定的服务实现之上构建一个可移植的层。Hohpe 指出,这种方法很快就会导致最小公分母效应。这是一个缺点,因为它阻碍了在快速发展的云应用程序领域采用创新技术。


Hohpe 建议,与其从实现时的抽象考虑问题,不如从设计时的抽象考虑问题。作为“与技术无关的设计时词汇表”,设计模式提供了有用的设计时抽象。


将解决方案表示为设计模式可以简化移植到另一个平台的过程。


使用设计模式来表达解决方案,架构师的意图和解决方案的需求都变得显而易见。



图片来源:https://architectelevator.com/cloud/serverless-design-patterns/


任何一个设计模式,例如聚合器、发布和订阅通道、编配器,都可以使用特定于每个云供应商的服务产品来实现。有时候,这些产品可能需要组合起来实现特定的设计模式,但这并不是什么问题。


服务组合将成为实现细节而不是设计选择。


Hohpe 补充说,系统设计需要使用“形成单一词汇表的内聚语言”来表达。可以使用多种模式语言来形成这个词汇表,但有必要对它们所应用的系统有清晰的认识。例如,可以使用企业集成模式来设计数据流,但最好使用面向对象的模式来构建组件。


模式语言通过与服务无关的方式表达开发者的意图。


平台的演进意味着模式需要做出权衡变更。这种演进意味着,例如,无服务器云平台可能倾向于使用不同于旧平台首选的模式。由于被广泛使用,可能会发展出新的模式。


原文链接

Preventing Serverless Vendor Lock-in with Design Patterns


相关阅读:

基于 DDD 的微服务设计和开发实战

数字化时代下的 DDD 新形式

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2022-10-02 09:448381

评论

发布
暂无评论
发现更多内容

面试突击77:Spring 依赖注入有几种?各有什么优缺点?

王磊

Java 常见面试题

加密世界的福音,Galaxy Project上领取专属Zebec OAT

鳄鱼视界

详解CAN总线:高速CAN总线和低速CAN总线的特性

不脱发的程序猿

汽车电子 ISO 11898 高速CAN总线 低速CAN总线 CAN总线

GaussDB(DWS)如何实现实时,批量和交付式查询一站式开发

乌龟哥哥

8月月更

租金、物业费的催收困境,如何解决?

IT资讯搬运工

云原生(二十四) | Kubernetes篇之Kubernetes 配置

Lansonli

云原生 k8s 8月月更

IPv6过渡技术的推进策略

穿过生命散发芬芳

ipv6 8月月更

Kubernetes MetalLB 作为 Load Balancer下

CTO技术共享

Kubernetes薅多云羊毛怎么部署

CTO技术共享

电商行业:全链路监测广告投放效果,用数据驱动业务增长

HMS Core

分析 电商营销

redis持久化

想要飞的猪

程序员过中秋

楠羽

中秋节

头脑风暴:回文子串

HelloWorld杰少

算法 LeetCode 数据结构, 8月月更

开源一夏 | 使用layui框架实战之栅格系统和菜单评分组件运用心得

恒山其若陋兮

开源 8月月更

算法之“杨辉三角”题解

掘金安东尼

算法 前端 8月月更

汽车电子控制系统的构成

不脱发的程序猿

汽车电子 嵌入式软件 汽车电子控制系统

Kubernetes资源编排系列之五: OAM篇

阿里云大数据AI技术

运维 开放应用模型

架构实战营模块五作业

zhihai.tu

[JS真好玩] 我帮掘金找到了一个小Bug,可利用该Bug增加专栏粉丝数

HullQin

CSS JavaScript html 前端 8月月更

Go-Excelize API源码阅读(十九)——SetHeaderFooter

Regan Yue

Go 开源 源码解析 8月日更 8月月更

天翼云通过2022可信云安全首批云工作负载保护平台评估

Geek_2d6073

网站建设流程

源字节1号

网站开发

【算法实践】| 一步步手把手带你实现寻找最小公倍数

迷彩

算法 算法实践 8月月更 最小公倍数

DDD实战(12-终篇):DDD下微服务的“分分合合”及一个倡议

深清秋

DDD 软件架构 8月月更

Kubernetes MetalLB 作为 Load Balancer上

CTO技术共享

详解AUTOSAR:什么是AUTOSAR?(理论篇—1)

不脱发的程序猿

汽车电子 嵌入式开发 AUTOSAR

呐,HTTP接口安全的八种对策送给你了

知识浅谈

HTTP API 8月月更

短视频软件开发:推荐算法没有想象的那么复杂

开源直播系统源码

直播系统 直播系统源码 短视频直播

陈大好:持续创造小而美的产品丨独立开发者 x 开放麦

声网

人工智能

Tomcat 的安装与环境配置

楠羽

开源 #开源

每日一R「13」数据结构(四)闭包

Samson

学习笔记 8月月更 ​Rust

  • 扫码添加小助手
    领取最新资料包
如何通过设计模式防止无服务器供应商锁定_架构_InfoQ精选文章