关于使用云提供商和避免供应商锁定存在很多争议。这场辩论往往比实际更具意识形态。
锁定通常是工程师和管理层关心的问题。应该以与选择编程语言或框架相同的方式将其作为应用程序的风险来权衡。编程语言和云提供商的选择是锁定的形式,工程师有责任了解风险并了解风险何时可以接受。
当您选择供应商或技术时,请记住以下几点:
- 锁定是不可避免的。
- 锁定是一种风险,但并不总是很高。
- 不要外包思维。
锁定是不可避免的
在技术上有两种类型的锁定:
技术锁定
在开发堆栈中处理较低的决策
供应商锁定
大多数情况下,处理作为项目一部分使用的服务和软件(供应商锁定还可能包括硬件和操作系统,但我们只关注服务)
技术锁定
开发人员将选择他们熟悉的技术或为正在开发的应用程序提供最大利益的技术。这些技术可以从供应商提供的技术(例如.NET和Oracle数据库)到开源软件(例如Python和PostgreSQL)。
在此级别提供的锁定通常要求符合API或规范,这将影响应用程序的开发。有时候可以选择所选择的技术,但是它们通常具有很高的转换成本,因为技术对应用程序的设计有很大影响。
供应商锁定
供应商,如云提供商,是一种不同形式的锁定。在这种情况下,您正在耗用供应商的资源。这可以是基础设施资源(例如,计算和存储),或者它可以是托管软件(例如,Gmail)。
消耗资源的堆栈越高,应该从消耗的资源(例如Heroku)获得的价值就越高。高层次资源是从底层资源中抽离出来最多的,并使产品的生产速度更快。
锁定是一种风险
技术锁定通常是一次性决定或与供应商达成使用该技术的协议。如果您不再与供应商达成支持协议,则您的软件不会立即中断;它只是变得自我支持。
开源软件可以减少来自技术的锁定量,但并不能消除它。使用开放标准可以进一步减少锁定,但了解开放标准与开放源代码之间的差异很重要。
仅仅因为别人编写代码并不能使其成为标准。同样,专有系统可以形成非官方标准,允许从它们迁移出去(如AWS S3)。
供应商锁定的原因通常不仅仅是技术锁定,而是因为供应商锁定的风险高于技术。如果您不支付供应商,您的申请将停止运行;你不再能够访问你所支付的资源。
如前所述,供应商服务提供更多价值,因为它们允许产品开发不需要所有较低级别的实现。不要避免托管服务来消除风险;你应该像对待其他任何事情一样权衡服务的风险和回报。
如果服务提供标准接口,则风险非常低。界面越是自定义,或者产品越独特,切换的风险就越高。